Sfoglia il codice sorgente

2022-09-1 修改剩余库存的计算量。

zhuchangxue 3 anni fa
parent
commit
e975de01a4

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

@@ -87,7 +87,7 @@ public class ActHxpapplyServiceImpl implements IActHxpapplyService
                     actRestStockVo.setChemicalId(b.getChemicalId());
 //                    Map <String, String> restStock = iActHxpapplyService.getRestStock(actRestStockVo);
 //                    b.setRemainingStorage(restStock.get("restStock"));
-                    getRestStockClassif(actRestStockVo,b);
+                    getRestStockClassif(actRestStockVo,b,actHxpapplyInfoVo.getUserId());
                 });
         List <ActHxpapplyDetailVo> actHxpapplyDetailVos = actHxpapplyDetailMapper.selectApplyDetailList(actHxpapplyDetail);
         consumer.accept(actHxpapplyDetailVos);
@@ -193,9 +193,9 @@ public class ActHxpapplyServiceImpl implements IActHxpapplyService
      * @param actRestStockVo 机柜主键主键
      * @return 化学品申购
      */
-    public void getRestStockClassif(ActRestStockVo actRestStockVo,ActHxpapplyDetailVo b)
+    public void getRestStockClassif(ActRestStockVo actRestStockVo,ActHxpapplyDetailVo b,Long applyUserId)
     {
-        actRestStockVo.setApplyUserId(SecurityUtils.getUserId());
+        actRestStockVo.setApplyUserId(applyUserId);
         List<ActRestStockVo> restStock = actHxpapplyMapper.getRestStockClassif(actRestStockVo);
         Optional.ofNullable(restStock).orElseGet(Collections::emptyList)
                 .stream()

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

@@ -402,7 +402,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         GROUP BY hd.`chemical_id`
         )x1 LEFT JOIN
         (
-        SELECT hd.`chemical_id`,SUM(IFNULL(cjc.`chemical_amount`,0)-IFNULL(cjc.`tare`,0)) applyNum FROM act_hxpapply ah LEFT JOIN act_hxpapply_detail hd ON ah.`id` = hd.`hxpapply_id`
+        SELECT t1.`chemical_id`,SUM(IFNULL(t1.`chemical_amount`,0)-IFNULL(t1.`tare`,0)) applyNum from(
+        SELECT DISTINCT cjc.id,hd.`chemical_id`,cjc.chemical_amount,cjc.tare
+        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
         inner join hxp_chemical_join_cabinet cjc on hd.`cabinet_id` = cjc.`cabinet_id` and hd.`chemical_id` = cjc.`chemical_id`
@@ -421,10 +423,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 AND hd.`cabinet_id` = #{cabinetId}
             </if>
             <if test="applyUserId != null ">
-                AND ah.`user_id` = #{applyUserId}
+                AND ah.`user_id` = #{applyUserId}  AND cjc.`user_id` = #{applyUserId}
             </if>
         </where>
-        GROUP BY hd.`chemical_id`
+        )t1
+        GROUP BY t1.`chemical_id`
         )x2 ON x1.chemical_id = x2.chemical_id
 
 
@@ -557,29 +560,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             GROUP BY hd.`chemical_id`
         )x1 LEFT JOIN
         (
-            SELECT hd.`chemical_id`,SUM(IFNULL(cjc.`chemical_amount`,0)-IFNULL(cjc.`tare`,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
-            inner join hxp_chemical_join_cabinet cjc on hd.`cabinet_id` = cjc.`cabinet_id` and hd.`chemical_id` = cjc.`chemical_id`
-            <where>
-                ak.`approval_status`=1 AND hd.`tick_status`=1
-                <if test="deptId != null ">
-                    AND st.dept_id = #{deptId}
-                </if>
-                <if test="subId != null ">
-                    AND ah.sub_id = #{subId}
-                </if>
-                <if test="chemicalId != null ">
-                    AND hd.`chemical_id` = #{chemicalId}
-                </if>
-                <if test="cabinetId != null ">
-                    AND hd.`cabinet_id` = #{cabinetId}
-                </if>
-                <if test="applyUserId != null ">
-                    AND cjc.`user_id` = #{applyUserId}
-                </if>
-            </where>
-            GROUP BY hd.`chemical_id`
+            SELECT t1.`chemical_id`,SUM(IFNULL(t1.`chemical_amount`,0)-IFNULL(t1.`tare`,0)) applyNum FROM(
+                SELECT DISTINCT hd.`chemical_id`,cjc.`chemical_amount`,cjc.`tare`
+                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
+                inner join hxp_chemical_join_cabinet cjc on hd.`cabinet_id` = cjc.`cabinet_id` and hd.`chemical_id` = cjc.`chemical_id`
+                <where>
+                    ak.`approval_status`=1 AND hd.`tick_status`=1
+                    <if test="deptId != null ">
+                        AND st.dept_id = #{deptId}
+                    </if>
+                    <if test="subId != null ">
+                        AND ah.sub_id = #{subId}
+                    </if>
+                    <if test="chemicalId != null ">
+                        AND hd.`chemical_id` = #{chemicalId}
+                    </if>
+                    <if test="cabinetId != null ">
+                        AND hd.`cabinet_id` = #{cabinetId}
+                    </if>
+                    <if test="applyUserId != null ">
+                        AND ah.`user_id` = #{applyUserId} AND cjc.`user_id` = #{applyUserId}
+                    </if>
+                </where>
+            )t1
+            GROUP BY t1.`chemical_id`
         )x2 ON x1.chemical_id = x2.chemical_id
     </select>
 
@@ -651,7 +657,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         GROUP BY hd.`cabinet_id`
         )x1 LEFT JOIN
         (
-        SELECT cjc.`chemical_id`,cjc.`cabinet_id`,SUM(cjc.chemical_amount-cjc.tare) stockNum FROM
+        SELECT t1.`chemical_id`,t1.`cabinet_id`,SUM(t1.chemical_amount-t1.tare) stockNum from(
+        select distinct cjc.id,cjc.`chemical_id`,cjc.`cabinet_id`,cjc.chemical_amount,cjc.tare 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`
         INNER JOIN hxp_chemical_join_cabinet cjc ON hd.`cabinet_id` = cjc.`cabinet_id` AND hd.`chemical_id` = cjc.`chemical_id`
@@ -667,10 +674,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 </foreach>
             </if>
             <if test="applyUserId != null ">
-                AND cjc.`user_id` = #{applyUserId}
+                AND ah.`user_id` = #{applyUserId} AND cjc.`user_id` = #{applyUserId}
             </if>
         </where>
-        GROUP BY cjc.`cabinet_id`
+        )t1
+        GROUP BY t1.`cabinet_id`
         )x2 ON x1.cabinet_id = x2.cabinet_id
     </select>
 
@@ -702,7 +710,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         GROUP BY hd.`chemical_id`,hd.`cabinet_id`
         )x1 LEFT JOIN
         (
-        SELECT cjc.`chemical_id`,cjc.`cabinet_id`,SUM(cjc.chemical_amount-cjc.tare) stockNum FROM
+        SELECT t1.`chemical_id`,t1.`cabinet_id`,SUM(t1.chemical_amount-t1.tare) stockNum FROM(
+        SELECT DISTINCT cjc.id,cjc.`chemical_id`,cjc.`cabinet_id`,cjc.chemical_amount,cjc.tare 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`
         INNER JOIN hxp_chemical_join_cabinet cjc ON hd.`cabinet_id` = cjc.`cabinet_id` AND hd.`chemical_id` = cjc.`chemical_id`
@@ -721,9 +730,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 </foreach>
             </if>
             <if test="applyUserId != null ">
-                AND cjc.`user_id` = #{applyUserId}
+                AND ah.`user_id` = #{applyUserId} AND cjc.`user_id` = #{applyUserId}
             </if>
-        GROUP BY cjc.`chemical_id`,cjc.`cabinet_id`
+        )t1
+        GROUP BY t1.`chemical_id`,t1.`cabinet_id`
         )x2 ON x1.chemical_id = x2.chemical_id AND x1.cabinet_id = x2.cabinet_id
     </select>