Przeglądaj źródła

feat: 编辑计划 2

shc 8 miesięcy temu
rodzic
commit
08c65463fe

+ 62 - 5
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysImplementPlanManager.java

@@ -56,7 +56,6 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -261,6 +260,9 @@ public class SysImplementPlanManager {
     }
 
     private List<TreeNode<Integer>> getToPages(List<SysImplementPlan> records, Map<Integer, SysDept> consigneeMap, Map<Integer, Map<String, String>> skuMap) {
+
+        Map<Integer, SysImplementPlan> planId2PlanMap = records.stream().collect(Collectors.toMap(SysImplementPlan::getPlanId, Function.identity(), (v1, v2) -> v1));
+
         return records.stream().map(record -> {
             SysImplementPlanVO.ToPage p = BeanUtil.copyProperties(record, SysImplementPlanVO.ToPage.class);
 
@@ -304,6 +306,28 @@ public class SysImplementPlanManager {
             treeNode.setName(p.getPlanName());
             treeNode.setWeight(p.getPlanId());
             Map<String, Object> extra = BeanUtil.beanToMap(p);
+            // 获取当前包的父级包
+            Integer parentId = record.getParentId();
+
+            long parentPlanScore;
+            long parentPlanAvailScore;
+            if (parentId == 0) {
+                parentPlanScore = record.getPlanScore();
+                parentPlanAvailScore = record.getAvailScore();
+            } else {
+                SysImplementPlan plan = planId2PlanMap.get(record.getParentId());
+                if (plan == null) {
+                    parentPlanScore = 0L;
+                    parentPlanAvailScore = 0L;
+                } else {
+                    parentPlanScore = plan.getPlanScore();
+                    parentPlanAvailScore = plan.getAvailScore();
+                }
+
+            }
+
+            extra.put("parentPlanScore", parentPlanScore);
+            extra.put("parentPlanAvailScore", parentPlanAvailScore);
             treeNode.setExtra(extra);
 
             return treeNode;
@@ -1366,9 +1390,28 @@ public class SysImplementPlanManager {
 
         SysImplementPlan plan = implementPlanService.getById(resource.getPlanId());
 
-        // if (UpmsState.ImplementPlanState.PASSED.equals(plan.getPlanState())) {
-        //     throw new BizException("当前执行计划已经审核通过了,不能修改");
-        // }
+        // 年度计划,只要是状态不为通过,就可以编辑
+        if (UpmsType.ImplementPlanType.ANN.equals(plan.getPlanType())) {
+            if (UpmsState.ImplementPlanState.PASSED.equals(plan.getPlanState())) {
+                throw new BizException("当前执行计划已经审核通过了,不能修改");
+            }
+        }
+        // 季度计划
+        else {
+
+            // 其他下发的包 非通过才能编辑
+            if (plan.getParentId() != 0 && UpmsState.ImplementPlanState.PASSED.equals(plan.getPlanState())) {
+                throw new BizException("当前执行计划已经审核通过了,不能修改");
+            }
+            // 运营发放的,只要没有分解的就可以
+            else {
+                int count = implementPlanService.count(Wrappers.<SysImplementPlan>lambdaQuery().eq(SysImplementPlan::getParentId, resource.getPlanId()));
+
+                if (count > 0) {
+                    throw new BizException("当前执行计划已经分发通过了,不能修改");
+                }
+            }
+        }
 
 
         boolean dump = implementPlanService.dupName(resource.getPlanName(), user.getDeptId(), Collections.singletonList(resource.getPlanId()));
@@ -1388,9 +1431,23 @@ public class SysImplementPlanManager {
             targetState = currentState;
         }
 
+        updated.setAvailScore(resource.getPlanScore());
         updated.setPlanState(targetState);
         updated.setUpdateBy(user.getUsername());
         updated.setUpdateTime(LocalDateTime.now());
-        return implementPlanService.updatePlan(updated);
+        implementPlanService.updatePlan(updated);
+
+        // 更新父级包信息
+        if (plan.getParentId() != 0) {
+
+            implementPlanService.update(Wrappers.<SysImplementPlan>lambdaUpdate()
+                    .eq(SysImplementPlan::getPlanId, plan.getParentId())
+                    .setSql("avail_score = avail_score +" + plan.getPlanScore() + "-" + resource.getPlanScore())
+                    .set(SysImplementPlan::getUpdateTime, LocalDateTime.now())
+                    .set(SysImplementPlan::getUpdateBy, user.getUsername()));
+
+        }
+
+        return true;
     }
 }