Browse Source

1.优化改动入库、出库、调拨、转货、场地直装时,发起请核、撤销审批、撤销请核、审批驳回、审批通过时会默认重置更改费用明细逻辑
2.由于导入库存时出现结余数量、结余毛重、结余净重为负数,调整出库时导入库存逻辑
3.完善发起对账后,撤销审批,审批驳回,撤销对账->时钱回不来的逻辑

nzf 3 years ago
parent
commit
ae0495134d

+ 38 - 56
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/service/impl/AuditPathsServiceImpl.java

@@ -378,16 +378,7 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                         } else {
                             tWarehouseBillsMapper.warehouseFollowUpdate(auditItems.getBillId(), fettle, at.getAuditItem());
                         }
-                        // 根据传入的业务编号 id 获取仓库费用明细数据
-                        List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesByPId(auditItems.getBillId());
-                        for (TWarehousebillsfees result : tWarehousebillsfees) {
-                            if (result.getfBillstatus() == 6) { // 判断状态
-                                fettle = result.getfBillstatus();
-                                break;
-                            }
-                        }
-                        // 更改 fettle 值为 null 避免下一级审批人审批时,费用明细状态被重置
-                        tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, at.getAuditItem());
+                        getfBillStatus(auditItems,at);
                         if (Objects.equals(fettle, 6L)) {
                             if (Objects.equals(auditItems.getActId(), 120L)) {
                                 List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
@@ -419,12 +410,12 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                         if ("T".equals(at.getIffinalItem())) {
                             fettle = 6L;
                             // 更新费用明细
-                            AjaxResult ajaxResult = tFeeServiceImpl.billsfeesFollow(auditItems.getBillId());
+                            /*AjaxResult ajaxResult = tFeeServiceImpl.billsfeesFollow(auditItems.getBillId());
                             String code = ajaxResult.get("code").toString();
                             if ("500".equals(code)) {
                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                 return ajaxResult;
-                            }
+                            }*/
                         } else if ("F".equals(at.getIffinalItem())) {
                             fettle = 5L;
                         }
@@ -675,15 +666,7 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                         tWarehouseBills.setfId(auditItems.getBillId());
                         tWarehouseBills.setfBillstatus(fettle);
                         tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
-                        // 加一个判断,当审批通过时,做数据判断
-                        List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
-                        for (TWarehousebillsfees result : tWarehousebillsfees) {
-                            if (result.getfBillstatus() == 6) { // 如果结果为 6 ,设置 fettle 值
-                                fettle = result.getfBillstatus();
-                                break;
-                            }
-                        }
-                        tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
+                        getfBillStatus(auditItems,at);
                     } else if (Objects.equals(auditItems.getActId(), WarehouseActIdEnum.FEE_CHANGES.getActId().longValue())) {
                         // 费用变更审核通过处理
                         if ("T".equals(at.getIffinalItem())) {
@@ -720,6 +703,23 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
     }
 
     /**
+     * 获取费用明细数据,并保持费用明细请核状态不改动
+     * @param auditItems 审批流
+     * @param at 审批流
+     */
+    public void getfBillStatus(AuditItems auditItems,AuditItems at) {
+        List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
+        for (TWarehousebillsfees result : tWarehousebillsfees) {
+            if (StringUtils.isNotNull(at.getAuditItem())) {
+                result.setfReviewDate(at.getAuditItem());
+            }
+            if (result.getfBillstatus() != 6) { // 判断状态
+                tWarehousebillsfeesMapper.updateTWarehousebillsfees(result);
+            }
+        }
+    }
+
+    /**
      * 审批驳回
      *
      * @param auditItems 审核人、单据信息
@@ -736,16 +736,7 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
             } else {
                 tWarehouseBillsMapper.warehouseApprovalUpdate(auditItems, fettle);
             }
-
-            List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesByPId(auditItems.getBillId());
-            for (TWarehousebillsfees result : tWarehousebillsfees) {
-                if (result.getfBillstatus() == 6L) {
-                    fettle = result.getfBillstatus();
-                    break;
-                }
-            }
-            // 将 fettle 传值改为 null,避免驳回后出现费用明细被重置
-            tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
+            getfBillStatus(auditItems,auditItems);
             if (Objects.equals(auditItems.getActId(), 150L)) {
                 List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
                 for (TWarehousebillsfees wareItem : feesList) {
@@ -925,15 +916,7 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
             tWarehouseBills.setfId(auditItems.getBillId());
             tWarehouseBills.setfBillstatus(fettle);
             tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
-
-            List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
-            for (TWarehousebillsfees result : tWarehousebillsfees) {
-                if (result.getfBillstatus() == 6L) {
-                    fettle = result.getfBillstatus();
-                    break;
-                }
-            }
-            tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
+            getfBillStatus(auditItems,auditItems);
         } else if (Objects.equals(auditItems.getActId(), WarehouseActIdEnum.FEE_CHANGES.getActId().longValue())) {
             warehousebillsModifyService.additionalFeeInformation(auditItems.getBillId(), WarehouseTypeEnum.DISMISS);
         }
@@ -1019,18 +1002,17 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                 }
             }
             tWarehouseBillsMapper.warehouseApprovalUpdate(auditItems, fettle);
-            List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesByPId(auditItems.getBillId());
-            for (TWarehousebillsfees result : tWarehousebillsfees) {
-                if (result.getfBillstatus() == 6L) {
-                    fettle = result.getfBillstatus();
-                    break;
-                }
-            }
-            tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
+            getfBillStatus(auditItems,auditItems);
             // 撤销审批时删除审批流任务明细从表对应数据
             AuditItemsAbout.revokeDeleteAID(auditItems.getActId(),auditItems.getBillId());
         } else if (auditItems.getActId() >= 210 && auditItems.getActId() <= 230) {
             fettle = 2L;
+            String fBillType = null;
+            if (auditItems.getActId() == 210) {
+                fBillType = "DZRevoke";
+            } else if (auditItems.getActId() == 220 || auditItems.getActId() == 230) {
+                fBillType = "DCRevoke";
+            }
             // 查询财务状态
             TFee tFee = tFeeMapper.selectTFeeById(auditItems.getBillId());
             if (!"4".equals(tFee.getfBillstatus())) {
@@ -1044,6 +1026,13 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return AjaxResult.error("审批撤销失败: 更新审批状态失败");
             }
+            // 更新费用明细
+            AjaxResult result = tFeeServiceImpl.updateDSFMoney(auditItems.getBillId(),fBillType);
+            String message = result.get("code").toString();
+            if ("500".equals(message)) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return result;
+            }
             // 撤销审批时删除审批流任务明细从表对应数据
             AuditItemsAbout.revokeDeleteAID(auditItems.getActId(),auditItems.getBillId());
         } else if (auditItems.getActId() >= 310 && auditItems.getActId() <= 320) {
@@ -1216,14 +1205,7 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
             tWarehouseBills.setfId(auditItems.getBillId());
             tWarehouseBills.setfBillstatus(fettle);
             tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
-            List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
-            for (TWarehousebillsfees result : tWarehousebillsfees) {
-                if (result.getfBillstatus() == 6L) {
-                    fettle = result.getfBillstatus();
-                    break;
-                }
-            }
-            tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
+            getfBillStatus(auditItems,auditItems);
             // 撤销审批时删除审批流任务明细从表对应数据
             AuditItemsAbout.revokeDeleteAID(auditItems.getActId(),auditItems.getBillId());
         } else if (Objects.equals(auditItems.getActId(), WarehouseActIdEnum.FEE_CHANGES.getActId().longValue())) {

+ 18 - 27
ruoyi-warehouse/src/main/java/com/ruoyi/finance/service/impl/TFeeServiceImpl.java

@@ -809,7 +809,7 @@ public class TFeeServiceImpl implements ITFeeService {
             tFeeMapper.updateTFee(tFee);
         }
         // 删除从表
-        //tFeeDoMapper.deleteByFPid(tFee.getfId());
+        tFeeDoMapper.deleteByFPid(tFee.getfId());
         messageMap.put("tFee", tFee);
         // 声明业务编号 list
         List<String> fSrcBillnos = new ArrayList<>();
@@ -818,32 +818,20 @@ public class TFeeServiceImpl implements ITFeeService {
             JSONArray jsonDrArray = JSONArray.parseArray(tfeeDo);
             List<TFeeDo> tFeeDoList = JSONObject.parseArray(jsonDrArray.toJSONString(), TFeeDo.class);
             for (TFeeDo tFeeDo : tFeeDoList) {
-                if (StringUtils.isNull(tFeeDo.getfId())) { // 走新建
-                    Map<String, Object> map = this.judgeMoney(tFeeDo.getfSrcid(), tFeeDo.getfAmt(), fBilltype, tFeeDo.getfFeeid());
-                    if (!(Boolean) map.get("flag")) {
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return AjaxResult.error(map.get("message").toString());
-                    }
-                    tFeeDo.setfPid(tFee.getfId());
-                    tFeeDo.setCreateBy(loginUser.getUser().getUserName());
-                    tFeeDo.setCreateTime(new Date());
-                    tFeeDo.setfStatus(billstatus);
-                    if (StringUtils.isNotNull(tFeeDo.getfSrcBillno())) {
-                        // 装载业务编号
-                        fSrcBillnos.add(tFeeDo.getfSrcBillno());
-                    }
-                    tFeeDoMapper.insertTFeeDo(tFeeDo);
-                } else { // 走修改
-                    // 根据传递的 tFeeDo的 id 获取到该条数据,避免直接传递是数据直接覆盖
-                    TFeeDo tfDo = tFeeDoMapper.selectTFeeDoById(tFeeDo.getfId());
-                    if (StringUtils.isNotNull(tfDo.getfSrcBillno())){
-                        // 装载业务编号
-                        fSrcBillnos.add(tfDo.getfSrcBillno());
-                    }
-                    tfDo.setUpdateBy(loginUser.getUser().getUserName());
-                    tfDo.setUpdateTime(new Date());
-                    tFeeDoMapper.updateTFeeDo(tfDo);
+                Map<String, Object> map = this.judgeMoney(tFeeDo.getfSrcid(), tFeeDo.getfAmt(), fBilltype, tFeeDo.getfFeeid());
+                if (!(Boolean) map.get("flag")) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return AjaxResult.error(map.get("message").toString());
                 }
+                tFeeDo.setfPid(tFee.getfId());
+                tFeeDo.setCreateBy(loginUser.getUser().getUserName());
+                tFeeDo.setCreateTime(new Date());
+                tFeeDo.setfStatus(billstatus);
+                if (StringUtils.isNotNull(tFeeDo.getfBillno())) {
+                    // 装载业务编号
+                    fSrcBillnos.add(tFeeDo.getfBillno());
+                }
+                tFeeDoMapper.insertTFeeDo(tFeeDo);
             }
         }
         // 点击对账、收费、付费提交审核时去掉费用
@@ -1250,7 +1238,6 @@ public class TFeeServiceImpl implements ITFeeService {
         if (StringUtils.isNull(fPid)) {
             return AjaxResult.error("费用明细更新状态未找到主表信息,请与管理员联系");
         }
-        TFee tFee = tFeeMapper.selectTFeeById(fPid);
         // 获取从表数据
         TFeeDo tFeeDo = new TFeeDo();
         tFeeDo.setfPid(fPid);
@@ -1341,6 +1328,10 @@ public class TFeeServiceImpl implements ITFeeService {
         if (fBilltype.equals("DCRevoke")) {
             this.updateMessage(tFee.getfId());
         }
+        // 撤销对账时更改费用明细数据
+        if (fBilltype.equals("DZRevoke")) {
+            this.updateDSFMoney(tFee.getfId(),fBilltype);
+        }
         // 根据业务财务数据 id 删除对应的审批流数据
         AuditItemsAbout.deleteAuditItemsData(tFee.getfId());
         return AjaxResult.success();

+ 3 - 6
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -5422,16 +5422,13 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         tWarehousebills.setfQty(itemInFo.getfQty());
         tWarehousebills.setfNetweight(itemInFo.getfNetweight());
         tWarehousebills.setfGrossweight(itemInFo.getfGrossweight());
-        // 定义 fettle
-        Long fettle = 2L;
+        // 根据主表 id 获取费用明细数据
         List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(tWarehousebills.getfId());
         for (TWarehousebillsfees result : tWarehousebillsfees) {
-            if (result.getfBillstatus() == 6) { // 如果获取的数据中 状态 为 6
-                fettle = result.getfBillstatus(); // 赋值
-                break;
+            if (result.getfBillstatus() != 6) { // 如果获取的数据中 状态 为 6
+                tWarehousebillsfeesMapper.updateTWarehousebillsfees(result);
             }
         }
-        tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(tWarehousebills.getfId(), fettle, new Date());
         // 判断是否出库
         if (tWarehousebills.getfBilltype().equals(WarehouseTypeEnum.SJCK.getType())) {
             cancellationInStockFee(tWarehousebills);

+ 3 - 3
ruoyi-warehouse/src/main/resources/mapper/reportManagement/TWhgenlegMapper.xml

@@ -705,9 +705,9 @@
             AND dict.dict_type = 'storage_type'
             AND dict1.dict_type = 'data_trademodes'
             AND leg.f_qtyD != 0
-            AND (leg.f_qtyblc > 0 OR leg.f_grossweightblc > 0 OR leg.f_netweightblc > 0)
-            AND leg.f_grossweightD &gt;= 0
-            AND leg.f_netweightD &gt;= 0
+            AND leg.f_qtyblc &gt; 0
+            AND leg.f_grossweightblc &gt; 0
+            AND leg.f_netweightblc &gt; 0
             <if test="fOriginalbillno != null  and fOriginalbillno != ''">and leg.f_originalbillno = #{fOriginalbillno}</if>
             <if test="fPreqty != null ">and leg.f_preqty = #{fPreqty}</if>
             <if test="fCorpid != null ">and leg.f_corpid = #{fCorpid}</if>