فهرست منبع

1.更改入库、出库、调拨、转货、场地直装时,发起请核、撤销审批、撤销请核、审批驳回、审批通过时会默认重置更改费用明细逻辑。
2.优化删除审批流任务明细从表逻辑

nzf 3 سال پیش
والد
کامیت
a0e9b4673e

+ 5 - 1
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/mapper/AuditItemsDoMapper.java

@@ -19,6 +19,11 @@ public interface AuditItemsDoMapper {
      * 删一条
      */
     int deleteById(Long id);
+
+    /**
+     * 根据父级 id 删除数据
+     */
+    int deleteByFPid(Long fPid);
     /**
      * 查一条
      */
@@ -27,7 +32,6 @@ public interface AuditItemsDoMapper {
      * 根据父级 id 获取数据
      */
     List<Map<String,Object>> selectByFPid(Long fPid);
-
     /**
      * 根据活动号业务ID获取数据
      */

+ 7 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/mapper/AuditItemsMapper.java

@@ -28,6 +28,13 @@ public interface AuditItemsMapper {
     public AuditItems selectAuditItemsById(Long id);
 
     /**
+     * 根据业务 id 获取审批流任务明细
+     * @param billId 业务 id
+     * @return 获取到的审批任务明细数据
+     */
+    List<AuditItems> selectAuditItemsByBillId(Long billId);
+
+    /**
      * 查询审批流任务明细列表
      *
      * @param auditItems 审批流任务明细

+ 62 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/service/impl/AuditItemsAbout.java

@@ -0,0 +1,62 @@
+package com.ruoyi.approvalFlow.service.impl;
+
+import com.ruoyi.approvalFlow.domain.AuditItems;
+import com.ruoyi.approvalFlow.mapper.AuditItemsDoMapper;
+import com.ruoyi.approvalFlow.mapper.AuditItemsMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 审批流相关的操作方法,可以根据自己需求添加方法,避免在多个接口中出现重复的方法定义
+ */
+@Component
+public class AuditItemsAbout {
+    @Autowired
+    private AuditItemsMapper auditItemsMapperOld;
+    private static AuditItemsMapper auditItemsMapper;
+    @Autowired
+    private AuditItemsDoMapper auditItemsDoMapperOld;
+    private static AuditItemsDoMapper auditItemsDoMapper;
+
+    @PostConstruct
+    public void init() {
+        auditItemsMapper = this.auditItemsMapperOld;
+        auditItemsDoMapper = this.auditItemsDoMapperOld;
+    }
+
+    /**
+     * 根据业务 id 连带删除审批流任务明细数据 + 审批流任务明细从表数据
+     * @param billId 业务 id
+     */
+    public static void deleteAuditItemsData(Long billId) {
+        // 发起撤销后 根据 feeId 获取到对应的审批流数据
+        List<AuditItems> auditItems = auditItemsMapper.selectAuditItemsByBillId(billId);
+        // 如果有数据
+        if (auditItems.size()!=0) {
+            for (AuditItems result : auditItems) {
+                // 根据 id 删除对应 审批流数据
+                auditItemsMapper.deleteAuditItemsById(result.getId());
+                // 根据活动号业务 id 删除对应从表数据
+                revokeDeleteAID(result.getActId(),result.getBillId());
+            }
+        }
+    }
+
+    /**
+     * 撤销审批时连带删除审批流任务明细从表对应数据
+     * @param actId 活动号
+     * @param billId 业务id
+     */
+    public static void revokeDeleteAID(Long actId,Long billId) {
+        // 根据审批流任务明细活动号 + 业务id 获取审批流任务明细从表数据
+        List<Map<String,Object>> itemsDos = auditItemsDoMapper.selectByActIdAndBillId(actId,billId);
+        for (Map<String,Object> map : itemsDos) {
+            // 删除审批流任务明细从表
+            auditItemsDoMapper.deleteById(Long.valueOf(map.get("fId").toString()));
+        }
+    }
+}

+ 24 - 21
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/service/impl/AuditPathsServiceImpl.java

@@ -36,6 +36,7 @@ import com.ruoyi.warehouseBusiness.mapper.TWarehousebillsitemsMapper;
 import com.ruoyi.warehouseBusiness.service.impl.TWarehouseAgreementServiceImpl;
 import com.ruoyi.warehouseBusiness.service.impl.TWarehouseBillsServiceImpl;
 import com.ruoyi.warehouseBusiness.service.impl.TWarehousebillsModifyServiceImpl;
+import com.sun.scenario.effect.impl.sw.java.JSWEffectPeer;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -377,7 +378,8 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                         } else {
                             tWarehouseBillsMapper.warehouseFollowUpdate(auditItems.getBillId(), fettle, at.getAuditItem());
                         }
-                        tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, at.getAuditItem());
+                        // 更改 fettle 值为 null 避免下一级审批人审批时,费用明细状态被重置
+                        tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), null, at.getAuditItem());
                         if (Objects.equals(fettle, 6L)) {
                             if (Objects.equals(auditItems.getActId(), 120L)) {
                                 List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
@@ -665,7 +667,8 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                         tWarehouseBills.setfId(auditItems.getBillId());
                         tWarehouseBills.setfBillstatus(fettle);
                         tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
-                        tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
+                        // 场地直装时,避免驳回后费用明细数据被修改,对此将 fettle 改为 null
+                        tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), null, auditItems.getAuditItem());
                     } else if (Objects.equals(auditItems.getActId(), WarehouseActIdEnum.FEE_CHANGES.getActId().longValue())) {
                         // 费用变更审核通过处理
                         if ("T".equals(at.getIffinalItem())) {
@@ -718,7 +721,12 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
             } else {
                 tWarehouseBillsMapper.warehouseApprovalUpdate(auditItems, fettle);
             }
-            tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
+            // tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
+            List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesByPId(auditItems.getBillId());
+            for (TWarehousebillsfees result : tWarehousebillsfees) {
+                // 将 fettle 传值改为 null,避免驳回后出现费用明细被重置
+                tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), null, auditItems.getAuditItem());
+            }
             if (Objects.equals(auditItems.getActId(), 150L)) {
                 List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
                 for (TWarehousebillsfees wareItem : feesList) {
@@ -898,7 +906,13 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
             tWarehouseBills.setfId(auditItems.getBillId());
             tWarehouseBills.setfBillstatus(fettle);
             tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
-            tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
+            List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesByPId(auditItems.getBillId());
+            for (TWarehousebillsfees result : tWarehousebillsfees) {
+                // 将 fettle 传值改为 null,避免驳回后出现费用明细被重置
+                tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), null, auditItems.getAuditItem());
+            }
+            // 注掉旧的接口
+            // tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
         } else if (Objects.equals(auditItems.getActId(), WarehouseActIdEnum.FEE_CHANGES.getActId().longValue())) {
             warehousebillsModifyService.additionalFeeInformation(auditItems.getBillId(), WarehouseTypeEnum.DISMISS);
         }
@@ -987,7 +1001,7 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
             // 下方注掉的接口,在大撤销请核时,会更改费用明细对应的数据状态,暂时废弃
             // tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
             // 撤销审批时删除审批流任务明细从表对应数据
-            revokeDeleteAID(auditItems.getActId(),auditItems.getBillId());
+            AuditItemsAbout.revokeDeleteAID(auditItems.getActId(),auditItems.getBillId());
         } else if (auditItems.getActId() >= 210 && auditItems.getActId() <= 230) {
             fettle = 2L;
             // 查询财务状态
@@ -1004,7 +1018,7 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                 return AjaxResult.error("审批撤销失败: 更新审批状态失败");
             }
             // 撤销审批时删除审批流任务明细从表对应数据
-            revokeDeleteAID(auditItems.getActId(),auditItems.getBillId());
+            AuditItemsAbout.revokeDeleteAID(auditItems.getActId(),auditItems.getBillId());
         } else if (auditItems.getActId() >= 310 && auditItems.getActId() <= 320) {
             fettle = 2L;
             // 查询协议状态
@@ -1175,7 +1189,10 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
             tWarehouseBills.setfId(auditItems.getBillId());
             tWarehouseBills.setfBillstatus(fettle);
             tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
-            tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
+            // 注掉费用明细更改接口,防止在撤销审批时对费用明细数据重置
+            // tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
+            // 撤销审批时删除审批流任务明细从表对应数据
+            AuditItemsAbout.revokeDeleteAID(auditItems.getActId(),auditItems.getBillId());
         } else if (Objects.equals(auditItems.getActId(), WarehouseActIdEnum.FEE_CHANGES.getActId().longValue())) {
             warehousebillsModifyService.withdrawalApprovalById(auditItems.getBillId());
         }
@@ -1190,20 +1207,6 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
     }
 
     /**
-     * 撤销审批时连带删除审批流任务明细从表对应数据
-     * @param actId 活动号
-     * @param billId 业务id
-     */
-    public void revokeDeleteAID(Long actId,Long billId) {
-        // 根据审批流任务明细活动号 + 业务id 获取审批流任务明细从表数据
-        List<Map<String,Object>> itemsDos = auditItemsDoMapper.selectByActIdAndBillId(actId,billId);
-        for (Map<String,Object> map : itemsDos) {
-            // 删除审批流任务明细从表
-            auditItemsDoMapper.deleteById(Long.valueOf(map.get("fId").toString()));
-        }
-    }
-
-    /**
      * 仓库APP查看订单审批流
      *
      * @param auditItems 条件

+ 5 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/finance/service/impl/TFeeServiceImpl.java

@@ -4,6 +4,9 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.ruoyi.approvalFlow.domain.AuditItems;
+import com.ruoyi.approvalFlow.mapper.AuditItemsDoMapper;
+import com.ruoyi.approvalFlow.mapper.AuditItemsMapper;
+import com.ruoyi.approvalFlow.service.impl.AuditItemsAbout;
 import com.ruoyi.approvalFlow.service.impl.AuditItemsServiceImpl;
 import com.ruoyi.basicData.domain.TCorps;
 import com.ruoyi.basicData.domain.TFees;
@@ -1338,6 +1341,8 @@ public class TFeeServiceImpl implements ITFeeService {
         if (fBilltype.equals("DCRevoke")) {
             this.updateMessage(tFee.getfId());
         }
+        // 根据业务财务数据 id 删除对应的审批流数据
+        AuditItemsAbout.deleteAuditItemsData(tFee.getfId());
         return AjaxResult.success();
     }
     public void updateMessage(Long fid) {

+ 7 - 2
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -6,8 +6,10 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.ruoyi.approvalFlow.domain.AuditItems;
+import com.ruoyi.approvalFlow.mapper.AuditItemsDoMapper;
 import com.ruoyi.approvalFlow.mapper.AuditItemsMapper;
 import com.ruoyi.approvalFlow.mapper.AuditItemsUsersMapper;
+import com.ruoyi.approvalFlow.service.impl.AuditItemsAbout;
 import com.ruoyi.approvalFlow.service.impl.AuditItemsServiceImpl;
 import com.ruoyi.basicData.domain.*;
 import com.ruoyi.basicData.mapper.*;
@@ -1513,9 +1515,10 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             for (TWarehousebillsfees wbDr : warehousebillsfeesDrList) {
                 wbDr.setfPid(fPid);
                 wbDr.setfDc("D");
-                if (Objects.isNull(wbDr.getfReviewDate())) {
+                // 防止二次发起请核后费用明细数据请核状态被修改
+                /*if (Objects.isNull(wbDr.getfReviewDate())) {
                     wbDr.setfBillstatus(4L);
-                }
+                }*/
                 wbDr.setfBilltype(billsType);
                 wbDr.setCreateTime(new Date());
                 wbDr.setSrcBillNo(warehouseBills.getfBillno());
@@ -5485,6 +5488,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             }
         }
         tWarehouseBillsMapper.updateTWarehousebills(tWarehousebills);
+        // 根据 fId 删除对应的审批流数据
+        AuditItemsAbout.deleteAuditItemsData(fId);
         return AjaxResult.success(tWarehousebills.getfDateChanged());
     }
 

+ 4 - 0
ruoyi-warehouse/src/main/resources/mapper/approvalFlow/AuditItemsDoMapper.xml

@@ -45,6 +45,10 @@
         delete from audit_items_do where f_id = #{id}
     </delete>
 
+    <delete id="deleteByFPid" parameterType="com.ruoyi.approvalFlow.domain.AuditItemsDo">
+        delete from audit_items_do where f_pid = #{fPid}
+    </delete>
+
     <select id="selectById" parameterType="AuditItemsDo" resultMap="AuditItemsResult">
         SELECT
             f_id,

+ 5 - 0
ruoyi-warehouse/src/main/resources/mapper/approvalFlow/AuditItemsMapper.xml

@@ -82,6 +82,11 @@
         where id = #{id}
     </select>
 
+    <select id="selectAuditItemsByBillId" parameterType="Long" resultMap="AuditItemsResult">
+        <include refid="selectAuditItemsVo"/>
+        where bill_id = #{billId}
+    </select>
+
     <insert id="insertAuditItems" parameterType="AuditItems" useGeneratedKeys="true" keyProperty="id">
         insert into audit_items
         <trim prefix="(" suffix=")" suffixOverrides=",">