Prechádzať zdrojové kódy

feat: export plan info

shc 9 mesiacov pred
rodič
commit
177d6c3c7c

+ 35 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/model/excel/PlanInfoExportModel.java

@@ -0,0 +1,35 @@
+package com.qunzhixinxi.hnqz.admin.api.model.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+/**
+ * 服务计划导出模型
+ *
+ * @author jimmy
+ * @date 2024-10-10 11:49
+ */
+@Data
+public class PlanInfoExportModel {
+
+    @ExcelProperty("计划名称")
+    private String planName;
+
+    @ExcelProperty("产品名称")
+    private String skuName;
+
+    @ExcelProperty("计划类型")
+    private String planType;
+
+    @ExcelProperty("计划值")
+    private String planScore;
+
+    @ExcelProperty("所属年度")
+    private String year;
+
+    @ExcelProperty(value = "所属季度")
+    private String quarter;
+
+    @ExcelProperty(value = "承接对象")
+    private String consignee;
+}

+ 9 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysImplementPlanController.java

@@ -4,10 +4,12 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.tree.Tree;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.pig4cloud.plugin.excel.annotation.RequestExcel;
+import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
 import com.qunzhixinxi.hnqz.admin.api.constant.UpmsState;
 import com.qunzhixinxi.hnqz.admin.api.constant.UpmsType;
 import com.qunzhixinxi.hnqz.admin.api.dto.SysImplementPlanDTO;
 import com.qunzhixinxi.hnqz.admin.api.dto.SysImplementPlanDetailsDTO;
+import com.qunzhixinxi.hnqz.admin.api.model.excel.PlanInfoExportModel;
 import com.qunzhixinxi.hnqz.admin.api.vo.SysImplementPlanVO;
 import com.qunzhixinxi.hnqz.admin.manager.SysImplementPlanManager;
 import com.qunzhixinxi.hnqz.common.core.util.R;
@@ -50,6 +52,13 @@ public class SysImplementPlanController {
     }
 
 
+    @ResponseExcel(sheet = "目标(计划)信息")
+    @GetMapping(value = "/plan/info/export")
+    public List<PlanInfoExportModel> exportPlan(@Validated SysImplementPlanDTO.OnPage query)   {
+        return implementPlanManager.exportPlan(query, SecurityUtils.getUser());
+    }
+
+
     @SysLog(value = "创建执行计划")
     @PostMapping(value = "/plan/create")
     public R<Boolean> createPlan(@Validated @RequestBody SysImplementPlanDTO.OnCreate resource) {

+ 90 - 14
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysImplementPlanManager.java

@@ -1,6 +1,7 @@
 package com.qunzhixinxi.hnqz.admin.manager;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.lang.tree.TreeNode;
@@ -26,6 +27,7 @@ import com.qunzhixinxi.hnqz.admin.api.entity.SysImplementPlan;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysPlanPkg;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmTaskType;
+import com.qunzhixinxi.hnqz.admin.api.model.excel.PlanInfoExportModel;
 import com.qunzhixinxi.hnqz.admin.api.vo.SysImplementPlanVO;
 import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
 import com.qunzhixinxi.hnqz.admin.service.SysEnterpriseAreaService;
@@ -132,17 +134,7 @@ public class SysImplementPlanManager {
     }
 
 
-    /**
-     * 获取计划分页
-     *
-     * @param query    查询条件
-     * @param operator 操作人
-     * @return 分页结果
-     */
-    public Page<?> pagePlans(SysImplementPlanDTO.OnPage query, HnqzUser operator) {
-
-        int entLevel = roleService.getEntLevel();
-
+    private Page<SysImplementPlan> toBasePage(int entLevel, SysImplementPlanDTO.OnPage query, HnqzUser operator) {
 
         // 获取根目录分页
         Page<SysImplementPlan> page = this.getPage(operator, entLevel, query.getCurrent(), query.getSize(), query.getPlanName(),
@@ -174,6 +166,11 @@ public class SysImplementPlanManager {
             }
         }
 
+        return page;
+    }
+
+    private List<TreeNode<Integer>> toTreeNode(List<SysImplementPlan> records) {
+
         // 获取承接人ID
         Set<Integer> consigneeIds = records.stream().mapToInt(SysImplementPlan::getConsigneeId).boxed().collect(Collectors.toSet());
 
@@ -188,9 +185,31 @@ public class SysImplementPlanManager {
 
 
         // 封装返回结果
-        Page<Tree<Integer>> newPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
-        List<TreeNode<Integer>> toPages = getToPages(records, consigneeMap, skuMap);
+        return getToPages(records, consigneeMap, skuMap);
+    }
+
+
+    /**
+     * 获取计划分页
+     *
+     * @param query    查询条件
+     * @param operator 操作人
+     * @return 分页结果
+     */
+    public Page<?> pagePlans(SysImplementPlanDTO.OnPage query, HnqzUser operator) {
+
+        int entLevel = roleService.getEntLevel();
+
+        Page<SysImplementPlan> page = toBasePage(entLevel, query, operator);
+
+        List<SysImplementPlan> records = page.getRecords();
+        if (CollUtil.isEmpty(records)) {
+            return page;
+        }
+        List<TreeNode<Integer>> toPages = toTreeNode(records);
 
+        // 封装返回结果
+        Page<Tree<Integer>> newPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
         List<Tree<Integer>> builds = new ArrayList<>();
         // 事业部 || 区域 || 平台
         if (entLevel == 0 || entLevel == 1 || entLevel == -1) {
@@ -212,6 +231,8 @@ public class SysImplementPlanManager {
         return newPage;
     }
 
+    xxx
+
     private List<TreeNode<Integer>> getToPages(List<SysImplementPlan> records, Map<Integer, SysDept> consigneeMap, Map<Integer, Map<String, String>> skuMap) {
         return records.stream().map(record -> {
             SysImplementPlanVO.ToPage p = BeanUtil.copyProperties(record, SysImplementPlanVO.ToPage.class);
@@ -299,7 +320,7 @@ public class SysImplementPlanManager {
 
             Set<Long> visibleEntIds = new HashSet<>();
             // 订单查询
-            if (Objects.nonNull(consigneeId)){
+            if (Objects.nonNull(consigneeId)) {
                 visibleEntIds.add(Long.valueOf(consigneeId));
             }
             // 先定区域内的信息
@@ -883,4 +904,59 @@ public class SysImplementPlanManager {
 
         return errorlist;
     }
+
+
+    public List<PlanInfoExportModel> exportPlan(SysImplementPlanDTO.OnPage query, HnqzUser operator) {
+
+
+        int entLevel = roleService.getEntLevel();
+
+        Page<SysImplementPlan> page = toBasePage(entLevel, query, operator);
+
+        List<SysImplementPlan> records = page.getRecords();
+
+        if (CollUtil.isEmpty(records)) {
+            throw new BizException("未查询到数据");
+        }
+
+        List<TreeNode<Integer>> toPages = toTreeNode(records);
+
+
+        List<PlanInfoExportModel> collect = toPages.stream().map(item -> {
+
+            PlanInfoExportModel model = new PlanInfoExportModel();
+            model.setPlanName((String) item.getName());
+
+            Map<String, Object> extra = item.getExtra();
+
+            SysImplementPlanVO.ToPage toPage = BeanUtil.mapToBean(extra, SysImplementPlanVO.ToPage.class, true, CopyOptions.create());
+
+            Map<String, Object> skuInfo = toPage.getSkuInfo();
+            model.setSkuName(skuInfo.get("skuName").toString());
+            Map<String, Object> consignee = toPage.getConsigneeInfo();
+            model.setConsignee(consignee.get("consigneeName").toString());
+
+            UpmsType.ImplementPlanType planType = toPage.getPlanType();
+            model.setPlanType(planType.getDesc());
+            model.setPlanScore(toPage.getPlanScore().toString());
+
+            LocalDate planIssue = toPage.getPlanIssue();
+
+            model.setYear(String.valueOf(planIssue.getYear()));
+
+            String qtr;
+            if (UpmsType.ImplementPlanType.QRT.equals(planType)) {
+                int monthValue = planIssue.getMonthValue();
+                qtr = String.valueOf((monthValue + 2) / 3);
+            } else {
+                qtr = "";
+            }
+            model.setQuarter(qtr);
+
+            return model;
+
+        }).collect(Collectors.toList());
+
+        return collect;
+    }
 }