Quellcode durchsuchen

2022-09-1 修改可存放量只能是申请人自己查看自己的。

zhuchangxue vor 3 Jahren
Ursprung
Commit
71edd0040b

+ 3 - 0
zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/vo/ActRestStockManySearch.java

@@ -23,4 +23,7 @@ public class ActRestStockManySearch {
 
     @ApiModelProperty(value = "机柜列表id")
     private List <Long> cabinetIds = new ArrayList<>();
+
+    @ApiModelProperty(value = "申请人id")
+    private Long applyUserId;
 }

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

@@ -521,6 +521,7 @@ public class ActHxpapplyServiceImpl implements IActHxpapplyService
     @Override
     public Map <String, String> getRestStock(ActRestStockVo actRestStockVo)
     {
+        actRestStockVo.setApplyUserId(SecurityUtils.getUserId());
         Predicate<Map <String, String>> pre = x->StringUtils.isNotNull(x);
         Map <String, String> restStock = actHxpapplyMapper.getRestStock(actRestStockVo);
         if(pre.test(restStock)){
@@ -550,6 +551,7 @@ public class ActHxpapplyServiceImpl implements IActHxpapplyService
             manyVo.setRestStock("0");
             actRestStockManyVoList.add(manyVo);
         });
+        actRestStockVo.setApplyUserId(SecurityUtils.getUserId());
         List <ActRestStockManyVo> restStockByManyCabinet = actHxpapplyMapper.getRestStockByManyCabinet(actRestStockVo);
         Optional.ofNullable(actRestStockManyVoList).orElseGet(Collections::emptyList)
                 .stream()
@@ -572,6 +574,7 @@ public class ActHxpapplyServiceImpl implements IActHxpapplyService
      */
     public List<ActRestStockManyVo> getRestStockByManyCabinetAndChemical(ActRestStockManySearch actRestStockVo)
     {
+        actRestStockVo.setApplyUserId(SecurityUtils.getUserId());
         List <ActRestStockManyVo> restStockByManyCabinet = actHxpapplyMapper.getRestStockByManyCabinetAndChemical(actRestStockVo);
         return restStockByManyCabinet;
     }

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

@@ -374,7 +374,61 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
     <select id="getRestStock" resultType="java.util.Map">
-        SELECT x1.chemical_id chemicalId,CONCAT((IFNULL(x1.applyNum,0)-IFNULL(x2.stockNum,0)),'g') restStock FROM (
+
+        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 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
+        <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}
+            </if>
+        </where>
+
+        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 ah.`user_id` = #{applyUserId}
+            </if>
+        </where>
+        GROUP BY hd.`chemical_id`
+        )x2 ON x1.chemical_id = x2.chemical_id
+
+
+      <!--  SELECT x1.chemical_id chemicalId,CONCAT((IFNULL(x1.applyNum,0)-IFNULL(x2.stockNum,0)),'g') 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
@@ -416,7 +470,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             </if>
         </where>
         GROUP BY cjc.`chemical_id`
-        )x2 ON x1.chemical_id = x2.chemical_id
+        )x2 ON x1.chemical_id = x2.chemical_id-->
     </select>
 
 
@@ -476,7 +530,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
         UNION ALL
 
-        SELECT 4 chemicalId,CONCAT((IFNULL(x1.applyNum,0)-IFNULL(x2.applyNum,0)),'g') restStock FROM (
+        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 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
@@ -531,7 +586,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
     <select id="getRestStockByManyCabinet" parameterType="com.zd.chemical.domain.vo.ActRestStockManySearch" resultType="com.zd.chemical.domain.vo.ActRestStockManyVo">
-        SELECT x1.cabinet_id cabinetId,CASE WHEN CONCAT((IFNULL(x1.applyNum,0)-IFNULL(x2.stockNum,0)))>0
+        <!--SELECT x1.cabinet_id cabinetId,CASE WHEN CONCAT((IFNULL(x1.applyNum,0)-IFNULL(x2.stockNum,0)))>0
         THEN CONCAT((IFNULL(x1.applyNum,0)-IFNULL(x2.stockNum,0))) ELSE 0 END restStock FROM (
         SELECT hd.`cabinet_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`
@@ -569,6 +624,54 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         GROUP BY cjc.`cabinet_id`
         )x2 ON x1.cabinet_id = x2.cabinet_id
+        -->
+
+        SELECT x1.cabinet_id cabinetId,CASE WHEN CONCAT((IFNULL(x1.applyNum,0)-IFNULL(x2.stockNum,0)))>0
+        THEN CONCAT((IFNULL(x1.applyNum,0)-IFNULL(x2.stockNum,0))) ELSE 0 END restStock FROM (
+        SELECT hd.`cabinet_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
+        <where>
+            ak.`approval_status`=1 AND hd.`tick_status`=1
+            <if test="chemicalId != null ">
+                and hd.`chemical_id` = #{chemicalId}
+            </if>
+
+            <if test="cabinetIds != null ">
+                and hd.`cabinet_id` in
+                <foreach item="id" collection="cabinetIds" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
+            <if test="applyUserId != null ">
+                AND ah.`user_id` = #{applyUserId}
+            </if>
+        </where>
+
+        GROUP BY hd.`cabinet_id`
+        )x1 LEFT JOIN
+        (
+        SELECT cjc.`chemical_id`,cjc.`cabinet_id`,SUM(cjc.chemical_amount-cjc.tare) stockNum 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`
+        <where>
+            ak.`approval_status`=1 AND hd.`tick_status`=1
+            <if test="chemicalId != null ">
+                and cjc.`chemical_id` = #{chemicalId}
+            </if>
+            <if test="cabinetIds != null ">
+                and cjc.`cabinet_id` in
+                <foreach item="id" collection="cabinetIds" open="(" separator="," close=")">
+                    #{id}
+                </foreach>
+            </if>
+            <if test="applyUserId != null ">
+                AND ah.`user_id` = #{applyUserId}
+            </if>
+        </where>
+        GROUP BY cjc.`cabinet_id`
+        )x2 ON x1.cabinet_id = x2.cabinet_id
     </select>
 
 
@@ -593,14 +696,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                     #{id}
                 </foreach>
             </if>
-
+            <if test="applyUserId != null ">
+                AND ah.`user_id` = #{applyUserId}
+            </if>
         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
-        hxp_chemical_join_cabinet cjc
+        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`
         WHERE
-            cjc.`status` IN(0,1)
+            ak.`approval_status`=1 AND hd.`tick_status`=1
             <if test="chemicalIds != null ">
                 AND cjc.`chemical_id` IN
                 <foreach item="id" collection="chemicalIds" open="(" separator="," close=")">
@@ -613,7 +720,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                     #{id}
                 </foreach>
             </if>
-
+            <if test="applyUserId != null ">
+                AND ah.`user_id` = #{applyUserId}
+            </if>
         GROUP BY cjc.`chemical_id`,cjc.`cabinet_id`
         )x2 ON x1.chemical_id = x2.chemical_id AND x1.cabinet_id = x2.cabinet_id
     </select>