Selaa lähdekoodia

采购流程 重新发起 驳回

yzc 1 vuosi sitten
vanhempi
commit
32c9b67ee9
1 muutettua tiedostoa jossa 78 lisäystä ja 38 poistoa
  1. 78 38
      hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlow.java

+ 78 - 38
hx-sale/src/main/java/com/fjhx/sale/flow/PurchaseFlow.java

@@ -8,7 +8,9 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.enums.FlowStatusEnum1;
 import com.fjhx.common.service.coding.CodingRuleService;
+import com.fjhx.common.utils.Assert;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.flow.core.FlowThreadLocalUtil;
 import com.fjhx.flow.enums.FlowStatusEnum;
@@ -86,45 +88,13 @@ public class PurchaseFlow extends FlowDelegate {
     public Long start(Long flowId, JSONObject submitData) {
         DynamicDataSourceContextHolder.push(SourceConstant.PURCHASE);
         PurchaseVo purchase = submitData.toJavaObject(PurchaseVo.class);
-//        purchase.setCode(CodeEnum.PURCHASE.getCode());
         purchase.setCode(codingRuleService.createCode(CodingRuleEnum.PURCHASE.getKey(), null));
-        purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
         purchase.setFlowId(flowId);
-        purchaseService.save(purchase);
-        List<PurchaseDetail> purchaseDetailList = purchase.getPurchaseDetailList();
-        if (CollectionUtils.isNotEmpty(purchaseDetailList)) {
-            for (PurchaseDetail s : purchaseDetailList) {
-                s.setPurchaseId(purchase.getId());
-            }
-            purchaseDetailService.saveBatch(purchaseDetailList);
-            //修改申购明细的采购状态
-            for (PurchaseDetail purchaseDetail : purchaseDetailList) {
-                //如果来源是申购
-                if (ObjectUtils.isEmpty(purchaseDetail.getDataResource())) {
-                    //计算已经采购的数量
-                    List<PurchaseDetail> purchaseDetails = purchaseDetailService.list(q -> q
-                            .eq(PurchaseDetail::getSubscribeDetailId, purchaseDetail.getSubscribeDetailId())
-                    );
-                    BigDecimal pdCount = purchaseDetails.stream().map(PurchaseDetail::getCount).reduce(BigDecimal.ZERO, BigDecimal::add);
-                    SubscribeDetail subscribeDetail = subscribeDetailService.getById(purchaseDetail.getSubscribeDetailId());
-                    if (pdCount.compareTo(subscribeDetail.getCount()) >= 0) {
-                        //修改为已采购
-                        subscribeDetail.setStatus(SubscribeDetailStatusEnum.PURCHASED.getKey());
-                    } else {
-                        //修改为部分采购
-                        subscribeDetail.setStatus(SubscribeDetailStatusEnum.LITT_PAID_AMOUNT.getKey());
-                    }
-                    subscribeDetailService.updateById(subscribeDetail);
-                }
-            }
 
-        }
-        //保存其他费用信息
-        List<PurchaseOtherFee> otherFeeList = purchase.getOtherFeeList();
-        if (ObjectUtils.isNotEmpty(otherFeeList)) {
-            otherFeeList.forEach(item -> item.setPurchaseId(purchase.getId()));
-            purchaseOtherFeeService.saveBatch(otherFeeList);
-        }
+        //调用公共代码
+        purchase = commStart(purchase, 0);
+
+
         DynamicDataSourceContextHolder.poll();
         return purchase.getId();
     }
@@ -190,7 +160,77 @@ public class PurchaseFlow extends FlowDelegate {
 
     @Override
     public void defaultMethod(Long flowId, Long businessId, FlowStatusEnum flowStatusEnum, JSONObject submitData) {
+        //重新发起
+        if (FlowStatusEnum.READY_START.equals(flowStatusEnum)) {
+            // 获取提交数据
+            DynamicDataSourceContextHolder.push(SourceConstant.PURCHASE);
+            PurchaseVo purchase = submitData.toJavaObject(PurchaseVo.class);
+            commStart(purchase, 1);
+            DynamicDataSourceContextHolder.poll();
+        }
+        //驳回
+        if (FlowStatusEnum.REJECT.equals(flowStatusEnum)) {
+            reject();
+        }
+    }
+
+    /**
+     * 开始公共代码抽取
+     *
+     * @param opType 操作类型 0直接发起 1重新发起
+     */
+    private PurchaseVo commStart(PurchaseVo purchase, Integer opType) {
+        if (opType == 1) {
+            Assert.notEmpty(purchase.getId(), "采购id不能为空");
+        }
+        purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
+        purchaseService.saveOrUpdate(purchase);
+        List<PurchaseDetail> purchaseDetailList = purchase.getPurchaseDetailList();
+        if (CollectionUtils.isNotEmpty(purchaseDetailList)) {
+            if (opType == 1) {
+                //先删除被删除的产品
+                purchaseDetailService.editLinked(purchaseDetailList, PurchaseDetail::getPurchaseId, purchase.getId());
+            }
+            for (PurchaseDetail s : purchaseDetailList) {
+                s.setPurchaseId(purchase.getId());
+            }
+            purchaseDetailService.saveOrUpdateBatch(purchaseDetailList);
+
+            //修改申购明细的采购状态
+            for (PurchaseDetail purchaseDetail : purchaseDetailList) {
+                //如果来源是申购
+                if (ObjectUtils.isEmpty(purchaseDetail.getDataResource())) {
+                    //计算已经采购的数量
+                    List<PurchaseDetail> purchaseDetails = purchaseDetailService.list(q -> q
+                            .eq(PurchaseDetail::getSubscribeDetailId, purchaseDetail.getSubscribeDetailId())
+                    );
+                    BigDecimal pdCount = purchaseDetails.stream().map(PurchaseDetail::getCount).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    SubscribeDetail subscribeDetail = subscribeDetailService.getById(purchaseDetail.getSubscribeDetailId());
+                    if (pdCount.compareTo(subscribeDetail.getCount()) >= 0) {
+                        //修改为已采购
+                        subscribeDetail.setStatus(SubscribeDetailStatusEnum.PURCHASED.getKey());
+                    } else {
+                        //修改为部分采购
+                        subscribeDetail.setStatus(SubscribeDetailStatusEnum.LITT_PAID_AMOUNT.getKey());
+                    }
+                    subscribeDetailService.updateById(subscribeDetail);
+                }
+            }
+
+        }
+
+        //保存其他费用信息
+        List<PurchaseOtherFee> otherFeeList = purchase.getOtherFeeList();
+        if (ObjectUtils.isNotEmpty(otherFeeList)) {
+            if (opType == 1) {
+                //先删除被删除的产品
+                purchaseOtherFeeService.editLinked(otherFeeList, PurchaseOtherFee::getPurchaseId, purchase.getId());
+            }
+            otherFeeList.forEach(item -> item.setPurchaseId(purchase.getId()));
+            purchaseOtherFeeService.saveOrUpdateBatch(otherFeeList);
+        }
 
+        return purchase;
     }
 
     /**
@@ -200,8 +240,8 @@ public class PurchaseFlow extends FlowDelegate {
         if (HandleTypeEnum.REJECT.equals(FlowThreadLocalUtil.getHandleTypeEnum())) {
             purchaseService.update(q -> q
                     .eq(Purchase::getId, FlowThreadLocalUtil.getBusinessId())
-                    .set(Purchase::getPurchaseStatus, 20)
-                    .set(Purchase::getUpdateTime, new Date())
+                    .set(Purchase::getPurchaseStatus, FlowStatusEnum1.REJECT.getKey())
+                    .set(BasePo::getUpdateTime, new Date())
                     .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
             );
         }