Selaa lähdekoodia

2022-09-2 添加化学品历史库存快照字段,修改部分bug

zhuchangxue 3 vuotta sitten
vanhempi
commit
4b3f75650d

+ 4 - 0
zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/ActHxpapplyDetail.java

@@ -50,6 +50,10 @@ public class ActHxpapplyDetail extends BaseEntity
     @Excel(name = "本次申购量")
     @ApiModelProperty(value = "本次申购量")
     private BigDecimal applyNum;
+    /** 本次申购剩余可存放量 */
+    @Excel(name = "本次申购剩余可存放量")
+    @ApiModelProperty(value = "本次申购剩余可存放量")
+    private BigDecimal remainingStorage;
     /** 申购状态,1是勾选入库,0是未勾选 */
     @Excel(name = "申购状态,1是勾选入库,0是未勾选")
     @ApiModelProperty(value = "申购状态,1是勾选入库,0是未勾选")

+ 5 - 3
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/ActApplytaskServiceImpl.java

@@ -1,5 +1,6 @@
 package com.zd.chemical.service.impl;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.atomic.LongAdder;
 import java.util.function.Consumer;
@@ -231,15 +232,16 @@ public class ActApplytaskServiceImpl implements IActApplytaskService
         List <ActHxpapplyDetail> actHxpapplyDetails = actHxpapplyDetailMapper.selectActHxpapplyDetailList(actHxpapplyDetail);
 
 //        Map<String, String> collect = new HashMap <>();
-        Map<Long, Long> collect = actApplytaskVo.getActHxpapplyDetailList().stream()
-                .collect(Collectors.toMap(ActHxpapplyDetail::getId,ActHxpapplyDetail::getId));
+        Map<Long, BigDecimal> collect = actApplytaskVo.getActHxpapplyDetailList().stream()
+                .collect(Collectors.toMap(ActHxpapplyDetail::getId,ActHxpapplyDetail::getRemainingStorage));
 //                .forEach(a->{
 //                    collect.put(a.getChemicalId()+"@"+a.getCabinetId(),a.getChemicalId()+"@"+a.getCabinetId());
 //                });
         Consumer <List <ActHxpapplyDetail>> comparator = x->x.stream().forEach(p->{
-            Predicate<Map <Long, Long>> pre = pt -> StringUtils.isNotNull(pt.get(p.getId()));
+            Predicate<Map <Long, BigDecimal>> pre = pt -> StringUtils.isNotNull(pt.get(p.getId()));
             if(pre.test(collect)){
                 p.setTickStatus(1);
+                p.setRemainingStorage(collect.get(p.getId()));
                 actHxpapplyDetailMapper.updateActHxpapplyDetail(p);
             }else{
                 p.setTickStatus(2);

+ 20 - 13
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/ActHxpapplyServiceImpl.java

@@ -73,8 +73,15 @@ public class ActHxpapplyServiceImpl implements IActHxpapplyService
     @Override
     public ActHxpapplyInfoVo selectActHxpapplyById(Long id,Integer tickStatus)
     {
-        ActHxpapplyInfoVo actHxpapplyInfoVo = actHxpapplyMapper.selectActHxpapplyById(id);
+        //todo 利用申请的id,查询出工作流对应的配置节点
+        ActApplytask actApplytask = new ActApplytask();
+        actApplytask.setTaskId(id);
+        List <ActApplytask> actApplytasks = actApplytaskMapper.selectActApplytaskList(actApplytask);
+        Function<List <ActApplytask>,ActApplytask> function = x->x.stream().findFirst().orElse(null);
+        ActApplytask apply = function.apply(actApplytasks);
+        Predicate<List <ActApplytask>> pre = p->p.size()>0;
         //todo 查询申请单相关的化学品详细信息列表
+        ActHxpapplyInfoVo actHxpapplyInfoVo = actHxpapplyMapper.selectActHxpapplyById(id);
         ActHxpapplyDetail actHxpapplyDetail = new ActHxpapplyDetail();
         actHxpapplyDetail.setHxpapplyId(id);
         actHxpapplyDetail.setTickStatus(tickStatus);
@@ -87,20 +94,18 @@ public class ActHxpapplyServiceImpl implements IActHxpapplyService
                     actRestStockVo.setChemicalId(b.getChemicalId());
 //                    Map <String, String> restStock = iActHxpapplyService.getRestStock(actRestStockVo);
 //                    b.setRemainingStorage(restStock.get("restStock"));
-                    getRestStockClassif(actRestStockVo,b,actHxpapplyInfoVo.getUserId());
+                    if(pre.test(actApplytasks)){
+                        getRestStockClassif(actRestStockVo,b,actHxpapplyInfoVo.getUserId(),apply.getApprovalStatus().intValue());
+                    }else{
+                        getRestStockClassif(actRestStockVo,b,actHxpapplyInfoVo.getUserId(),-1);
+                    }
                 });
         List <ActHxpapplyDetailVo> actHxpapplyDetailVos = actHxpapplyDetailMapper.selectApplyDetailList(actHxpapplyDetail);
         consumer.accept(actHxpapplyDetailVos);
         actHxpapplyInfoVo.setActHxpapplyDetailList(actHxpapplyDetailVos);
-        //todo 利用申请的id,查询出工作流对应的配置节点
-        ActApplytask actApplytask = new ActApplytask();
-        actApplytask.setTaskId(id);
-        List <ActApplytask> actApplytasks = actApplytaskMapper.selectActApplytaskList(actApplytask);
+
         //todo 查出工作流子节点
-        Function<List <ActApplytask>,ActApplytask> function = x->x.stream().findFirst().orElse(null);
-        Predicate<List <ActApplytask>> pre = p->p.size()>0;
         if(pre.test(actApplytasks)){
-            ActApplytask apply = function.apply(actApplytasks);
             actHxpapplyInfoVo.setActApplytask(apply);
             actHxpapplyInfoVo.setApprovalStatus(apply.getApprovalStatus());
             ActApplytaskNode actApplytaskNode = new ActApplytaskNode();
@@ -179,7 +184,7 @@ public class ActHxpapplyServiceImpl implements IActHxpapplyService
                     .stream()
                     .filter(b->(b.getCabinetId().longValue()==a.getCabinetId().longValue()&&b.getChemicalId().longValue()==a.getChemicalId().longValue()))
                     .forEach(c->{
-                        a.setRemainingStorage(c.getRestStock()+"g");
+                        a.setRemainingStorage(c.getRestStock());
                     }));
 
         }
@@ -193,7 +198,7 @@ public class ActHxpapplyServiceImpl implements IActHxpapplyService
      * @param actRestStockVo 机柜主键主键
      * @return 化学品申购
      */
-    public void getRestStockClassif(ActRestStockVo actRestStockVo,ActHxpapplyDetailVo b,Long applyUserId)
+    public void getRestStockClassif(ActRestStockVo actRestStockVo,ActHxpapplyDetailVo b,Long applyUserId,int approvalStatus)
     {
         actRestStockVo.setApplyUserId(applyUserId);
         List<ActRestStockVo> restStock = actHxpapplyMapper.getRestStockClassif(actRestStockVo);
@@ -207,7 +212,9 @@ public class ActHxpapplyServiceImpl implements IActHxpapplyService
                     }else if(a.getChemicalId()==3){
                         b.setCabinetStorage(a.getRestStock());
                     }else if(a.getChemicalId()==4){
-                        b.setRemainingStorage(a.getRestStock());
+                        if(approvalStatus!=1){
+                            b.setRemainingStorage(a.getRestStock());
+                        }
                     }
                 });
     }
@@ -529,7 +536,7 @@ public class ActHxpapplyServiceImpl implements IActHxpapplyService
         }else{
             restStock = new HashMap <>();
             restStock.put("chemicalId",actRestStockVo.getChemicalId()+"");
-            restStock.put("restStock","0g");
+            restStock.put("restStock","0");
             return restStock;
         }
     }

+ 5 - 1
zd-modules/zd-chemical/src/main/resources/mapper/chemical/ActHxpapplyDetailMapper.xml

@@ -41,7 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         CONCAT(0,cl.`chemical_unit`) collegeInventory,
         CONCAT(0,cl.`chemical_unit`) subInventory,
         CONCAT(0,cl.`chemical_unit`) cabinetStorage,
-        CONCAT(0,cl.`chemical_unit`) remainingStorage,
+        hd.remaining_storage remainingStorage,
         hd.apply_num applyNum,cl.`chemical_unit` applyUnit,
         hd.tick_status tickStatus,
         (SELECT GROUP_CONCAT(ur.nick_name) FROM sys_user ur WHERE FIND_IN_SET(ur.user_id, s.`safe_user_id`)) AS safeUserNames
@@ -88,6 +88,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <if test="applyNum != null">apply_num,</if>
 
+    <if test="remainingStorage != null">remaining_storage,</if>
+
     <if test="tickStatus != null">tick_status,</if>
 
          </trim>
@@ -97,6 +99,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <if test="chemicalName != null">#{chemicalName},</if>
     <if test="cabinetId != null">#{cabinetId},</if>
     <if test="applyNum != null">#{applyNum},</if>
+    <if test="remainingStorage != null">#{remainingStorage},</if>
     <if test="tickStatus != null">#{tickStatus},</if>
          </trim>
     </insert>
@@ -109,6 +112,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="chemicalName != null">chemical_name = #{chemicalName},</if>
             <if test="cabinetId != null">cabinet_id = #{cabinetId},</if>
             <if test="applyNum != null">apply_num = #{applyNum},</if>
+            <if test="remainingStorage != null">remaining_storage = #{remainingStorage},</if>
             <if test="tickStatus != null">tick_status = #{tickStatus},</if>
         </trim>
         where id = #{id}

+ 6 - 6
zd-modules/zd-chemical/src/main/resources/mapper/chemical/ActHxpapplyMapper.xml

@@ -137,7 +137,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             (SELECT an.apply_user_ids FROM  act_applytask apk,act_applytask_node an WHERE an.applytask_id = apk.id AND apk.id = ak.id AND an.node_status = 0
             AND apk.approval_status=0 ORDER BY an.node_order ASC LIMIT 1) currentApprover,
             (SELECT an.apply_user_ids FROM  act_applytask apk,act_applytask_node an WHERE an.applytask_id = apk.id AND apk.id = ak.id AND (an.node_status = 1 OR an.node_status = 2)
-            AND (apk.approval_status=0 OR apk.approval_status=1) ORDER BY an.node_order DESC LIMIT 1) historyApprover,
+            AND (apk.approval_status=0 OR apk.approval_status=1 OR apk.approval_status=2) ORDER BY an.node_order DESC LIMIT 1) historyApprover,
             ah.user_id userId
             FROM act_hxpapply ah LEFT JOIN sys_user su ON su.user_id = ah.`user_id`
             LEFT JOIN lab_subject st ON st.id = ah.`sub_id`
@@ -234,7 +234,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             (SELECT an.apply_user_ids FROM  act_applytask apk,act_applytask_node an WHERE an.applytask_id = apk.id AND apk.id = ak.id AND an.node_status = 0
             AND apk.approval_status=0 ORDER BY an.node_order ASC LIMIT 1) currentApprover,
             (SELECT an.apply_user_ids FROM  act_applytask apk,act_applytask_node an WHERE an.applytask_id = apk.id AND apk.id = ak.id AND (an.node_status = 1 OR an.node_status = 2)
-            AND (apk.approval_status=0 OR apk.approval_status=1) ORDER BY an.node_order DESC LIMIT 1) historyApprover,
+            AND (apk.approval_status=0 OR apk.approval_status=1 OR apk.approval_status=2) ORDER BY an.node_order DESC LIMIT 1) historyApprover,
             ah.user_id userId
             FROM act_hxpapply ah LEFT JOIN sys_user su ON su.user_id = ah.`user_id`
             LEFT JOIN lab_subject st ON st.id = ah.`sub_id`
@@ -375,8 +375,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="getRestStock" resultType="java.util.Map">
 
-        SELECT x1.chemical_id chemicalId,CASE WHEN CONCAT((IFNULL(x1.applyNum,0)-IFNULL(x2.applyNum,0)),'g')>0
-        THEN CONCAT((IFNULL(x1.applyNum,0)-IFNULL(x2.applyNum,0)),'g') ELSE CONCAT(0,'g') END restStock FROM (
+        SELECT x1.chemical_id chemicalId,CASE WHEN IFNULL(x1.applyNum,0)-IFNULL(x2.applyNum,0)>0
+        THEN IFNULL(x1.applyNum,0)-IFNULL(x2.applyNum,0) ELSE 0 END restStock FROM (
         SELECT hd.`chemical_id`,IFNULL(SUM(hd.`apply_num`),0) applyNum FROM act_hxpapply ah LEFT JOIN act_hxpapply_detail hd ON ah.`id` = hd.`hxpapply_id`
         LEFT JOIN act_applytask ak ON ah.`id` = ak.`task_id`
         LEFT JOIN lab_subject st ON ah.sub_id = st.id
@@ -533,8 +533,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
         UNION ALL
 
-        SELECT 4 chemicalId,CASE WHEN CONCAT((IFNULL(x1.applyNum,0)-IFNULL(x2.applyNum,0)),'g')>0
-        THEN CONCAT((IFNULL(x1.applyNum,0)-IFNULL(x2.applyNum,0)),'g') ELSE CONCAT(0,'g') END restStock FROM (
+        SELECT 4 chemicalId,CASE WHEN IFNULL(x1.applyNum,0)-IFNULL(x2.applyNum,0)>0
+        THEN IFNULL(x1.applyNum,0)-IFNULL(x2.applyNum,0) ELSE 0 END restStock FROM (
             SELECT hd.`chemical_id`,IFNULL(SUM(hd.`apply_num`),0) applyNum FROM act_hxpapply ah LEFT JOIN act_hxpapply_detail hd ON ah.`id` = hd.`hxpapply_id`
             LEFT JOIN act_applytask ak ON ah.`id` = ak.`task_id`
             LEFT JOIN lab_subject st ON ah.sub_id = st.id