فهرست منبع

解决仓储费不开启审批流更新异常问题

caifc 3 سال پیش
والد
کامیت
1025662c3f

+ 1 - 63
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/service/impl/AuditPathsServiceImpl.java

@@ -378,21 +378,8 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                                 tWarehousebillsitemsMapper.updateItemStorageFeeDeadlineByPId(warehousebillsfees.getfPid(), warehousebillsfees.getfBillingDeadline());
                             }
                         } else if (Objects.equals(auditItems.getActId(), 150L)) {
-                            List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
-                            if (CollectionUtils.isNotEmpty(feesList)) {
-                                // 过滤出明细信息查询是否存在已计算仓储费
-                                List<Long> ids = feesList.stream().map(TWarehousebillsfees::getSrcId).distinct().collect(toList());
-                                if (tWarehousebillsitemsMapper.selectIsCalculateStorageFeesByIds(ids) > 0) {
-                                    throw new WarehouseException("计算费用中存在已计算仓储费信息");
-                                }
-                                // 查出主表数据
-                                TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(auditItems.getBillId());
-                                for (TWarehousebillsfees fees : feesList) {
-                                    storageFeeUpdateItem(warehouseBills, fees);
-                                }
-                            }
+                            tWarehouseBillsService.approvedStorageFee(auditItems.getBillId(), fettle, at.getAuditItem());
                         }
-
                     } else if (auditItems.getActId() >= 210 && auditItems.getActId() <= 230) {
                         // 财务模块
                         if ("T".equals(at.getIffinalItem())) {
@@ -670,52 +657,6 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
     }
 
     /**
-     * 计算仓储费计算更新出库货转信息
-     *
-     * @param warehouseBills 主表信息
-     * @param fees           仓储费信息
-     */
-    private void storageFeeUpdateItem(TWarehouseBills warehouseBills, TWarehousebillsfees fees) {
-        Date chargeDate = DateUtils.addDays(fees.getfBillingDeadline(), 1);
-        // 如果是库存总帐
-        if (WarehouseTypeEnum.KCZZ.getType().equals(fees.getfBilltype())) {
-            TWhgenleg whgenleg = new TWhgenleg();
-            whgenleg.setfId(fees.getSrcId());
-            whgenleg.setfChargedate(chargeDate);
-            tWhgenlegMapper.updateTWhgenleg(whgenleg);
-            // 如果计算之前信息
-            if (!fees.getfBillingDeadline().after(warehouseBills.getUpdateTime())) {
-                // 查询时间区间内的仓储业务明细信息
-                List<String> timeList = new ArrayList<>();
-                timeList.add(DateUtils.dateToString(DateUtils.dateConversionMin(fees.getfBillingDeadline())));
-                timeList.add(DateUtils.dateToString(DateUtils.dateConversionMax(warehouseBills.getUpdateTime())));
-                warehouseBills.setItemBsDateList(timeList);
-                List<TWarehousebillsitems> warehousebillsitemsList = tWarehousebillsitemsMapper.selectListByCorpId(warehouseBills);
-                // 过滤出出库、货转,更新对应仓储费计费日期
-                List<TWarehousebillsitems> itemList = warehousebillsitemsList.stream().filter(li ->
-                        li.getfBilltype().equals(WarehouseTypeEnum.SJCK.getType()) ||
-                                li.getfBilltype().equals(WarehouseTypeEnum.HQZY.getType())).collect(toList());
-                if (CollectionUtils.isNotEmpty(itemList)) {
-                    itemList.forEach(li -> {
-                        li.setfChargedate(chargeDate);
-                        li.setUpdateTime(new Date());
-                        tWarehousebillsitemsMapper.updateTWarehousebillsitems(li);
-                    });
-                }
-            }
-        } else {
-            TWarehousebillsitems billsItem = new TWarehousebillsitems();
-            billsItem.setfId(fees.getSrcId());
-            billsItem.setfChargedate(chargeDate);
-            if ("SJCK".equals(fees.getfBilltype())) {
-                billsItem.setfStorageFeeDeadline(fees.getfBillingDeadline());
-                billsItem.setIsCalculateStorageFees(WarehouseTypeEnum.CALCULATE.getType());
-            }
-            tWarehousebillsitemsMapper.updateTWarehousebillsitems(billsItem);
-        }
-    }
-
-    /**
      * 审批驳回
      *
      * @param auditItems 审核人、单据信息
@@ -735,9 +676,6 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
             tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
             if (Objects.equals(auditItems.getActId(), 150L)) {
                 List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
-                // 查询仓储费计算主表
-                TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(auditItems.getBillId());
-
                 for (TWarehousebillsfees wareItem : feesList) {
                     if (StringUtils.isNull(wareItem.getSrcId())) {
                         continue;

+ 78 - 64
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -3242,55 +3242,6 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
     }
 
     /**
-     * 根据仓库主表id 更新对应明细表状态
-     *
-     * @param fPid 仓库主表id
-     * @return 结果
-     */
-    @Transactional
-    public AjaxResult storageFeeFollow(Long fPid, long fettle) {
-        if (StringUtils.isNull(fPid)) {
-            return AjaxResult.error("仓库更新状态未找到主表信息,请与管理员联系");
-        }
-        int warehouseUpdateResult = tWarehouseBillsMapper.warehouseFollowUpdate(fPid, fettle, new Date());
-        if (warehouseUpdateResult <= 0) {
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return AjaxResult.error("更新库存明细状态失败,请联系管理员");
-        }
-        TWarehousebillsfees warehousebillsfees = new TWarehousebillsfees();
-        warehousebillsfees.setfPid(fPid);
-        List<TWarehousebillsfees> warehousebillsfeesList = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(warehousebillsfees);
-        for (TWarehousebillsfees wareItem : warehousebillsfeesList) {
-            if (StringUtils.isNull(wareItem.getSrcId())) {
-                continue;
-            }
-            if ("KCZZ".equals(wareItem.getfBilltype())) {
-                TWhgenleg tWhgenleg = tWhgenlegMapper.selectTWhgenlegById(wareItem.getSrcId());
-                tWhgenleg.setfChargedate(DateUtils.dateAdd(wareItem.getfBillingDeadline(), 1));
-                int i = tWhgenlegMapper.updateTWhgenleg(tWhgenleg);
-                if (i <= 0) {
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    return AjaxResult.error("更新库存费用状态失败,请联系管理员");
-                }
-            } else {
-                TWarehousebillsitems tWarehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsById(wareItem.getSrcId());
-                tWarehousebillsitems.setfChargedate(DateUtils.dateAdd(wareItem.getfBillingDeadline(), 1));
-                if ("SJCK".equals(wareItem.getfBilltype())) {
-                    tWarehousebillsitems.setfStorageFeeDeadline(wareItem.getfBillingDeadline());
-                }
-                tWarehousebillsitemsMapper.updateTWarehousebillsitems(tWarehousebillsitems);
-            }
-        }
-        int feesUpdateResult = tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(fPid, fettle, new Date());
-        if (feesUpdateResult <= 0) {
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return AjaxResult.error("更新库存费用状态失败,请联系管理员");
-        }
-        return AjaxResult.success();
-    }
-
-
-    /**
      * 入库确认
      *
      * @param warehouseBills      主表
@@ -4905,24 +4856,92 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 auditItems.setTimes(tWarehousebills.getfTimes());
                 AjaxResult approvalFlow = auditItemsService.createApprovalFlow(auditItems);
                 String code = approvalFlow.get("code").toString();
-//                Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
                 if ("500".equals(code)) {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 }
                 return approvalFlow;
             } else {
-                AjaxResult ajaxResult = storageFeeFollow(fPid, 6L);
-                String code = ajaxResult.get("code").toString();
-//                Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
-                if ("500".equals(code)) {
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                }
-                return ajaxResult;
+                approvedStorageFee(fPid, 6L, new Date());
+                return AjaxResult.success();
             }
         }
         return AjaxResult.success(tWarehousebills);
     }
 
+    /**
+     *  计算仓储费审核通过
+     * @param warehouseId   主表id
+     * @param fettle   状态
+     * @param date   审核时间
+     */
+    public void approvedStorageFee(Long warehouseId, Long fettle, Date date) {
+        tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(warehouseId, fettle, date);
+        // 查出主表数据
+        TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(warehouseId);
+        if (Objects.isNull(warehouseBills)) {
+            throw new WarehouseException("未找到仓储信息");
+        }
+        List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(warehouseBills.getfId());
+        if (CollectionUtils.isEmpty(feesList)) {
+            throw new WarehouseException("未找到需要跟新的费用信息");
+        }
+        // 过滤出明细信息查询是否存在已计算仓储费
+        List<Long> ids = feesList.stream().map(TWarehousebillsfees::getSrcId).distinct().collect(toList());
+        if (tWarehousebillsitemsMapper.selectIsCalculateStorageFeesByIds(ids) > 0) {
+            throw new WarehouseException("计算费用中存在已计算仓储费信息");
+        }
+
+        for (TWarehousebillsfees fees : feesList) {
+            storageFeeUpdateItem(warehouseBills, fees);
+        }
+    }
+
+    /**
+     * 计算仓储费计算更新出库货转信息
+     *
+     * @param warehouseBills 主表信息
+     * @param fees           仓储费信息
+     */
+    private void storageFeeUpdateItem(TWarehouseBills warehouseBills, TWarehousebillsfees fees) {
+        Date chargeDate = DateUtils.addDays(fees.getfBillingDeadline(), 1);
+        // 如果是库存总帐
+        if (WarehouseTypeEnum.KCZZ.getType().equals(fees.getfBilltype())) {
+            TWhgenleg whgenleg = new TWhgenleg();
+            whgenleg.setfId(fees.getSrcId());
+            whgenleg.setfChargedate(chargeDate);
+            tWhgenlegMapper.updateTWhgenleg(whgenleg);
+            // 如果计算之前信息
+            if (!fees.getfBillingDeadline().after(warehouseBills.getUpdateTime())) {
+                // 查询时间区间内的仓储业务明细信息
+                List<String> timeList = new ArrayList<>();
+                timeList.add(DateUtils.dateToString(DateUtils.dateConversionMin(fees.getfBillingDeadline())));
+                timeList.add(DateUtils.dateToString(DateUtils.dateConversionMax(warehouseBills.getUpdateTime())));
+                warehouseBills.setItemBsDateList(timeList);
+                List<TWarehousebillsitems> warehousebillsitemsList = tWarehousebillsitemsMapper.selectListByCorpId(warehouseBills);
+                // 过滤出出库、货转,更新对应仓储费计费日期
+                List<TWarehousebillsitems> itemList = warehousebillsitemsList.stream().filter(li ->
+                        li.getfBilltype().equals(WarehouseTypeEnum.SJCK.getType()) ||
+                                li.getfBilltype().equals(WarehouseTypeEnum.HQZY.getType())).collect(toList());
+                if (CollectionUtils.isNotEmpty(itemList)) {
+                    itemList.forEach(li -> {
+                        li.setfChargedate(chargeDate);
+                        li.setUpdateTime(new Date());
+                        tWarehousebillsitemsMapper.updateTWarehousebillsitems(li);
+                    });
+                }
+            }
+        } else {
+            TWarehousebillsitems billsItem = new TWarehousebillsitems();
+            billsItem.setfId(fees.getSrcId());
+            billsItem.setfChargedate(chargeDate);
+            if ("SJCK".equals(fees.getfBilltype())) {
+                billsItem.setfStorageFeeDeadline(fees.getfBillingDeadline());
+                billsItem.setIsCalculateStorageFees(WarehouseTypeEnum.CALCULATE.getType());
+            }
+            tWarehousebillsitemsMapper.updateTWarehousebillsitems(billsItem);
+        }
+    }
+
     @Override
     public AjaxResult insertStorageFeeList(List<StorageChargeInsert> storageChargeInsert, LoginUser loginUser, String billsType) {
         if (CollectionUtils.isEmpty(storageChargeInsert)) {
@@ -5023,13 +5042,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     }
                     return approvalFlow;
                 } else {
-                    AjaxResult ajaxResult = storageFeeFollow(fPid, 6L);
-                    String code = ajaxResult.get("code").toString();
-//                Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
-                    if ("500".equals(code)) {
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-                    return ajaxResult;
+                    approvedStorageFee(fPid, 6L, new Date());
+                    return AjaxResult.success();
                 }
             }
         }