浏览代码

申购流程 重新发起 驳回

yzc 1 年之前
父节点
当前提交
9f08fa3db1
共有 1 个文件被更改,包括 46 次插入10 次删除
  1. 46 10
      hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java

+ 46 - 10
hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java

@@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 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.enums.FlowStatusEnum;
 import com.fjhx.purchase.entity.subscribe.enums.SubscribeDetailStatusEnum;
@@ -57,23 +59,19 @@ public class SubscribeFlow extends FlowDelegate {
     public Long start(Long flowId, JSONObject submitData) {
 
         Subscribe subscribe = submitData.toJavaObject(Subscribe.class);
-        subscribe.setCode(codingRuleService.createCode(CodingRuleEnum.SUBSCRIBE.getKey(),null));
-        subscribe.setSubcribeStatus(SubscribeStatusEnum.UNDER_REVIEW.getKey());
+        subscribe.setCode(codingRuleService.createCode(CodingRuleEnum.SUBSCRIBE.getKey(), null));
         subscribe.setFlowId(flowId);
-        subscribeService.save(subscribe);
 
-        List<SubscribeDetail> SubscribeDetails = subscribe.getSubscribeDetailList();
-        if(CollectionUtils.isNotEmpty(SubscribeDetails)){
-            SubscribeDetails.forEach(item -> item.setSubscribeId(subscribe.getId()));
-            subscribeDetailService.saveBatch(SubscribeDetails);
-        }
+        //调用公共代码
+        subscribe = commStart(subscribe, 0);
 
         return subscribe.getId();
     }
 
     /**
      * 结束流程
-     * @param flowId 流程ID
+     *
+     * @param flowId     流程ID
      * @param businessId 业务ID
      * @param submitData 数据
      */
@@ -103,7 +101,45 @@ public class SubscribeFlow extends FlowDelegate {
 
     @Override
     public void defaultMethod(Long flowId, Long businessId, FlowStatusEnum flowStatusEnum, JSONObject submitData) {
-
+        //重新发起
+        if (FlowStatusEnum.READY_START.equals(flowStatusEnum)) {
+            // 获取提交数据
+            Subscribe subscribe = submitData.toJavaObject(Subscribe.class);
+            commStart(subscribe, 1);
+        }
+        //驳回
+        if (FlowStatusEnum.REJECT.equals(flowStatusEnum)) {
+            subscribeService.update(q -> q
+                    .eq(Subscribe::getId, businessId)
+                    .set(Subscribe::getSubcribeStatus, FlowStatusEnum1.REJECT.getKey())//20为驳回
+                    .set(BasePo::getUpdateTime, new Date())
+                    .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+            );
+        }
     }
 
+
+    /**
+     * 开始公共代码抽取
+     *
+     * @param opType 操作类型 0直接发起 1重新发起
+     */
+    private Subscribe commStart(Subscribe subscribe, Integer opType) {
+        if (opType == 1) {
+            Assert.notEmpty(subscribe.getId(), "申购id不能为空");
+        }
+        subscribe.setSubcribeStatus(SubscribeStatusEnum.UNDER_REVIEW.getKey());
+        subscribeService.saveOrUpdate(subscribe);
+
+        List<SubscribeDetail> SubscribeDetails = subscribe.getSubscribeDetailList();
+        if (CollectionUtils.isNotEmpty(SubscribeDetails)) {
+            if (opType == 1) {
+                //先删除被删除的产品
+                subscribeDetailService.editLinked(SubscribeDetails, SubscribeDetail::getSubscribeId, subscribe.getId());
+            }
+            SubscribeDetails.forEach(item -> item.setSubscribeId(subscribe.getId()));
+            subscribeDetailService.saveOrUpdateBatch(SubscribeDetails);
+        }
+        return subscribe;
+    }
 }