Browse Source

服务合同重新发起驳回实现

yzc 1 year ago
parent
commit
5163dc5743

+ 5 - 4
hx-sale/src/main/java/com/fjhx/sale/flow/ContractFlow.java

@@ -13,6 +13,7 @@ import com.fjhx.common.utils.ExchangeRateUtil;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.flow.core.FlowThreadLocalUtil;
+import com.fjhx.flow.enums.FlowStatusEnum;
 import com.fjhx.flow.enums.HandleTypeEnum;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
 import com.fjhx.sale.entity.contract.po.Contract;
@@ -112,13 +113,13 @@ public class ContractFlow extends FlowDelegate {
     }
 
     @Override
-    public void defaultMethod(Long flowId, Long businessId, com.fjhx.flow.enums.FlowStatusEnum flowStatusEnum, JSONObject submitData) {
+    public void defaultMethod(Long flowId, Long businessId, FlowStatusEnum flowStatusEnum, JSONObject submitData) {
         //重新发起
-        if (com.fjhx.flow.enums.FlowStatusEnum.READY_START.equals(flowStatusEnum)) {
+        if (FlowStatusEnum.READY_START.equals(flowStatusEnum)) {
             reStart();
         }
         //驳回
-        if (com.fjhx.flow.enums.FlowStatusEnum.REJECT.equals(flowStatusEnum)) {
+        if (FlowStatusEnum.REJECT.equals(flowStatusEnum)) {
             reject();
         }
 
@@ -280,7 +281,7 @@ public class ContractFlow extends FlowDelegate {
         if (HandleTypeEnum.REJECT.equals(FlowThreadLocalUtil.getHandleTypeEnum())) {
             contractService.update(q -> q
                     .eq(Contract::getId, FlowThreadLocalUtil.getBusinessId())
-                    .set(Contract::getStatus, 20)//20为驳回
+                    .set(Contract::getStatus, FlowStatusEnum1.REJECT.getKey())//20为驳回
                     .set(Contract::getUpdateTime, new Date())
                     .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
             );

+ 80 - 10
hx-sale/src/main/java/com/fjhx/sale/flow/ServiceContractFlow.java

@@ -8,9 +8,12 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 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.flow.core.FlowDelegate;
+import com.fjhx.flow.core.FlowThreadLocalUtil;
 import com.fjhx.flow.enums.FlowStatusEnum;
+import com.fjhx.flow.enums.HandleTypeEnum;
 import com.fjhx.sale.entity.serviceContract.dto.ServiceContractDto;
 import com.fjhx.sale.entity.serviceContract.po.ServiceContract;
 import com.fjhx.sale.entity.serviceContract.po.ServiceContractPay;
@@ -19,10 +22,13 @@ import com.fjhx.sale.enums.ServiceContractEnum;
 import com.fjhx.sale.service.serviceContract.ServiceContractPayService;
 import com.fjhx.sale.service.serviceContract.ServiceContractProductService;
 import com.fjhx.sale.service.serviceContract.ServiceContractService;
+import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -35,6 +41,13 @@ public class ServiceContractFlow extends FlowDelegate {
     @Autowired
     private CodingRuleService codingRuleService;
 
+    @Autowired
+    private ServiceContractService serviceContractService = SpringUtil.getBean(ServiceContractService.class);
+    @Autowired
+    private ServiceContractPayService serviceContractPayService = SpringUtil.getBean(ServiceContractPayService.class);
+    @Autowired
+    private ServiceContractProductService serviceContractProductService = SpringUtil.getBean(ServiceContractProductService.class);
+
     @Override
     public String getFlowKey() {
         return "service_contract_flow";
@@ -42,17 +55,13 @@ public class ServiceContractFlow extends FlowDelegate {
 
     /**
      * 发起流程
-     * @param flowId 流程ID
+     *
+     * @param flowId     流程ID
      * @param submitData 采购付款数据
      * @return
      */
     @Override
     public Long start(Long flowId, JSONObject submitData) {
-
-
-        ServiceContractService serviceContractService = SpringUtil.getBean(ServiceContractService.class);
-        ServiceContractPayService serviceContractPayService = SpringUtil.getBean(ServiceContractPayService.class);
-        ServiceContractProductService serviceContractProductService = SpringUtil.getBean(ServiceContractProductService.class);
         ServiceContractDto contract = submitData.toJavaObject(ServiceContractDto.class);
 
         //赋值城市省份信息
@@ -63,19 +72,19 @@ public class ServiceContractFlow extends FlowDelegate {
         contract.setBuyProvinceId(contract.getProvinceId());
 
         //添加服务合同编码
-        contract.setCode(codingRuleService.createCode(CodingRuleEnum.SERVICE_CONTRACT.getKey(),contract.getBuyCorporationId()));
+        contract.setCode(codingRuleService.createCode(CodingRuleEnum.SERVICE_CONTRACT.getKey(), contract.getBuyCorporationId()));
 //        contract.setCode(CodeEnum.SALE_QUOTATION.getCode());
         //添加服务合同状态
         contract.setStatus(ServiceContractEnum.UNDER_REVIEW.getKey());
         //添加服务合同信息
         serviceContractService.save(contract);
         List<ServiceContractProduct> serviceContractProductList = contract.getServiceContractProductList();
-        if(CollectionUtils.isNotEmpty(serviceContractProductList)){//保存报价产品信息
+        if (CollectionUtils.isNotEmpty(serviceContractProductList)) {//保存报价产品信息
             serviceContractProductList.forEach(serviceContractProduct -> serviceContractProduct.setServiceContractId(contract.getId()));
             serviceContractProductService.saveBatch(serviceContractProductList);
         }
         List<ServiceContractPay> serviceContractPayList = contract.getServiceContractPayList();
-        if(CollectionUtils.isNotEmpty(serviceContractPayList)){//保存报价项目信息
+        if (CollectionUtils.isNotEmpty(serviceContractPayList)) {//保存报价项目信息
             serviceContractPayList.forEach(contractPay -> contractPay.setServiceContractId(contract.getId()));
             serviceContractPayService.saveBatch(serviceContractPayList);
         }
@@ -85,7 +94,8 @@ public class ServiceContractFlow extends FlowDelegate {
 
     /**
      * 结束流程
-     * @param flowId 流程ID
+     *
+     * @param flowId     流程ID
      * @param businessId 业务ID
      * @param submitData 数据
      */
@@ -104,6 +114,66 @@ public class ServiceContractFlow extends FlowDelegate {
 
     @Override
     public void defaultMethod(Long flowId, Long businessId, FlowStatusEnum flowStatusEnum, JSONObject submitData) {
+        //重新发起
+        if (FlowStatusEnum.READY_START.equals(flowStatusEnum)) {
+            reStart(submitData);
+        }
+        //驳回
+        if (FlowStatusEnum.REJECT.equals(flowStatusEnum)) {
+            reject();
+        }
+    }
+
+    /**
+     * 重新发起
+     */
+    private void reStart(JSONObject submitData) {
+        ServiceContractDto contract = submitData.toJavaObject(ServiceContractDto.class);
+
+        //赋值城市省份信息
+        CustomizeAreaUtil.setAreaId(contract);
+
+        contract.setBuyCityId(contract.getCityId());
+        contract.setBuyCountryId(contract.getCountryId());
+        contract.setBuyProvinceId(contract.getProvinceId());
+
+        //添加服务合同状态
+        contract.setStatus(ServiceContractEnum.UNDER_REVIEW.getKey());
+        //添加服务合同信息
+        serviceContractService.updateById(contract);
+
+        //操作报价产品信息
+        List<ServiceContractProduct> serviceContractProductList = contract.getServiceContractProductList();
+        //先处理被删除的数据
+        serviceContractProductService.editLinked(serviceContractProductList, ServiceContractProduct::getServiceContractId, contract.getId());
+        //编辑or添加报价产品信息
+        if (CollectionUtils.isNotEmpty(serviceContractProductList)) {
+            serviceContractProductList.forEach(serviceContractProduct -> serviceContractProduct.setServiceContractId(contract.getId()));
+            serviceContractProductService.saveOrUpdateBatch(serviceContractProductList);
+        }
 
+        //操作报价项目信息
+        List<ServiceContractPay> serviceContractPayList = contract.getServiceContractPayList();
+        //先处理被删除的数据
+        serviceContractPayService.editLinked(serviceContractPayList, ServiceContractPay::getServiceContractId, contract.getId());
+        //编辑or添加报价产品信息
+        if (CollectionUtils.isNotEmpty(serviceContractPayList)) {
+            serviceContractPayList.forEach(contractPay -> contractPay.setServiceContractId(contract.getId()));
+            serviceContractPayService.saveOrUpdateBatch(serviceContractPayList);
+        }
+    }
+
+    /**
+     * 驳回方法
+     */
+    public void reject() {
+        if (HandleTypeEnum.REJECT.equals(FlowThreadLocalUtil.getHandleTypeEnum())) {
+            serviceContractService.update(q -> q
+                    .eq(ServiceContract::getId, FlowThreadLocalUtil.getBusinessId())
+                    .set(ServiceContract::getStatus, FlowStatusEnum1.REJECT.getKey())
+                    .set(BasePo::getUpdateTime, new Date())
+                    .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+            );
+        }
     }
 }