Sfoglia il codice sorgente

退货流程 重新发起 驳回

yzc 1 anno fa
parent
commit
9c058e9764

+ 46 - 8
hx-purchase/src/main/java/com/fjhx/purchase/flow/SalesReturnFlow.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.enums.FlowStatusEnum;
 import com.fjhx.purchase.entity.sales.enums.SalesReturnDetailStatusEnum;
@@ -22,7 +24,9 @@ import com.fjhx.wms.entity.stock.po.StockWait;
 import com.fjhx.wms.entity.stock.po.StockWaitDetails;
 import com.fjhx.wms.service.stock.StockWaitDetailsService;
 import com.fjhx.wms.service.stock.StockWaitService;
+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;
 
@@ -46,6 +50,11 @@ public class SalesReturnFlow extends FlowDelegate {
     @Autowired
     private CodingRuleService codingRuleService;
 
+    @Autowired
+    private SalesReturnService salesReturnService;
+    @Autowired
+    private SalesReturnDetailService salesReturnDetailService;
+
     @Override
     public String getFlowKey() {
         return "sales_return_flow";
@@ -61,20 +70,36 @@ public class SalesReturnFlow extends FlowDelegate {
      */
     @Override
     public Long start(Long flowId, JSONObject submitData) {
-        SalesReturnService salesReturnService = SpringUtil.getBean(SalesReturnService.class);
-        SalesReturnDetailService salesReturnDetailService = SpringUtil.getBean(SalesReturnDetailService.class);
+
         SalesReturn salesReturn = submitData.toJavaObject(SalesReturn.class);
-//        salesReturn.setCode(CodeEnum.SALES_RETURN.getCode());
-        salesReturn.setCode(codingRuleService.createCode(CodingRuleEnum.SALES_RETURN.getKey(),null));
-        salesReturnService.save(salesReturn);
+        salesReturn.setCode(codingRuleService.createCode(CodingRuleEnum.SALES_RETURN.getKey(), null));
+        salesReturn = commStart(salesReturn, 0);
+
+        return salesReturn.getId();
+    }
+
+    /**
+     * 开始公共代码抽取
+     *
+     * @param opType 操作类型 0直接发起 1重新发起
+     */
+    private SalesReturn commStart(SalesReturn salesReturn, Integer opType) {
+        if (opType == 1) {
+            Assert.notEmpty(salesReturn.getId(), "采购付款id不能为空");
+        }
+        salesReturnService.saveOrUpdate(salesReturn);
         List<SalesReturnDetail> salesReturnDetailList = salesReturn.getSalesReturnDetailList();
         if (CollectionUtils.isNotEmpty(salesReturnDetailList)) {
+            if (opType == 1) {
+                //先删除被删除的产品
+                salesReturnDetailService.editLinked(salesReturnDetailList, SalesReturnDetail::getSalesReturnId, salesReturn.getId());
+            }
             for (SalesReturnDetail s : salesReturnDetailList) {
                 s.setSalesReturnId(salesReturn.getId());
             }
-            salesReturnDetailService.saveBatch(salesReturnDetailList);
+            salesReturnDetailService.saveOrUpdateBatch(salesReturnDetailList);
         }
-        return salesReturn.getId();
+        return salesReturn;
     }
 
     /**
@@ -126,7 +151,20 @@ public class SalesReturnFlow extends FlowDelegate {
 
     @Override
     public void defaultMethod(Long flowId, Long businessId, FlowStatusEnum flowStatusEnum, JSONObject submitData) {
-
+        //重新发起
+        if (FlowStatusEnum.READY_START.equals(flowStatusEnum)) {
+            SalesReturn salesReturn = submitData.toJavaObject(SalesReturn.class);
+            commStart(salesReturn, 1);
+        }
+        //驳回
+        if (FlowStatusEnum.REJECT.equals(flowStatusEnum)) {
+            salesReturnService.update(q -> q
+                    .eq(SalesReturn::getId, businessId)
+                    .set(SalesReturn::getStatus, FlowStatusEnum1.REJECT.getKey())
+                    .set(BasePo::getUpdateTime, new Date())
+                    .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+            );
+        }
     }
 
 }