Jelajahi Sumber

init: init project step4: biz code support

shc 1 tahun lalu
induk
melakukan
71a7cf73a4

+ 1 - 0
doc/db/6sys_impl_plan.sql

@@ -14,6 +14,7 @@ CREATE TABLE `sys_impl_plan`
     `plan_type`    VARCHAR(32)  NOT NULL COMMENT '计划类型',
     `plan_state`   VARCHAR(32)  NOT NULL COMMENT '计划类型',
     `plan_score`   BIGINT       NOT NULL DEFAULT 0 COMMENT '计划值',
+    `avail_score`  BIGINT       NOT NULL DEFAULT 0 COMMENT '可用值',
     `plan_issue`   DATE         NOT NULL COMMENT '签发时间',
     `plan_expiry`  DATE         NOT NULL COMMENT '截止日期',
     `parent_id`    BIGINT       NOT NULL COMMENT '父ID',

+ 5 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/entity/SysImplementPlan.java

@@ -56,6 +56,11 @@ public class SysImplementPlan implements Serializable {
      */
     private UpmsState.ImplementPlanState planState;
 
+    /**
+     * 可用值
+     */
+    private Long availScore;
+
     /**
      * 计划值
      */

+ 21 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysImplementPlanManager.java

@@ -41,6 +41,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -84,6 +85,16 @@ public class SysImplementPlanManager {
         plan.setCreateTime(now);
         plan.setUpdateTime(now);
 
+        Long availScore;
+        if (resource.getParentId() != 0){
+
+            availScore = implementPlanService.calcAvailScore(resource.getParentId(), resource.getPlanScore());
+
+        } else {
+           availScore = resource.getPlanScore();
+        }
+        plan.setAvailScore(availScore);
+
         return implementPlanService.createPlan(plan);
     }
 
@@ -265,6 +276,16 @@ public class SysImplementPlanManager {
         plan.setUpdateBy(username);
         plan.setUpdateTime(now);
 
+        // 归还父计划的分值
+        if (!result){
+            SysImplementPlan p = implementPlanService.getById(resource.getPlanId());
+            if (p.getParentId() != 0){
+                SysImplementPlan parentPlan = implementPlanService.getById(p.getParentId());
+                parentPlan.setAvailScore(parentPlan.getAvailScore() + p.getPlanScore());
+                implementPlanService.updatePlan(parentPlan);
+            }
+        }
+
 
         return implementPlanService.updatePlan(plan);
     }

+ 8 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SysImplementPlanService.java

@@ -40,4 +40,12 @@ public interface SysImplementPlanService extends IService<SysImplementPlan> {
      */
     void checkState(Integer planId, Boolean res, Collection<UpmsState.ImplementPlanState> implementPlanStates);
 
+    /**
+     * 可用分
+     *
+     * @param planId    计划ID
+     * @param planScore 目标值
+     * @return 可用分
+     */
+    Long calcAvailScore(Long planId, Long planScore);
 }

+ 19 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysImplementPlanServiceImpl.java

@@ -64,6 +64,25 @@ public class SysImplementPlanServiceImpl extends ServiceImpl<SysImplementPlanMap
             throw new BizException("当前计划状态不支持操作");
         }
     }
+
+    /**
+     * 可用分
+     *
+     * @param planId    计划ID
+     * @param planScore 目标值
+     * @return 可用分
+     */
+    @Override
+    public Long calcAvailScore(Long planId, Long planScore) {
+        SysImplementPlan plan = this.getById(planId);
+
+        long availScore = plan.getAvailScore() - planScore;
+
+        if (availScore < 0){
+            throw new BizException("可用值不足");
+        }
+        return availScore;
+    }
 }