|
@@ -0,0 +1,112 @@
|
|
|
+package com.fjhx.purchase.flow;
|
|
|
+
|
|
|
+import cn.hutool.extra.spring.SpringUtil;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.fjhx.common.constant.SourceConstant;
|
|
|
+import com.fjhx.flow.core.FlowDelegate;
|
|
|
+import com.fjhx.purchase.entity.purchase.enums.PurchaseDetailStatusEnum;
|
|
|
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
|
|
|
+import com.fjhx.purchase.entity.sales.enums.SalesReturnDetailStatusEnum;
|
|
|
+import com.fjhx.purchase.entity.sales.enums.SalesReturnStatusEnum;
|
|
|
+import com.fjhx.purchase.entity.sales.po.SalesReturn;
|
|
|
+import com.fjhx.purchase.entity.sales.po.SalesReturnDetail;
|
|
|
+import com.fjhx.purchase.service.sales.SalesReturnDetailService;
|
|
|
+import com.fjhx.purchase.service.sales.SalesReturnService;
|
|
|
+import com.fjhx.purchase.util.code.CodeEnum;
|
|
|
+import com.fjhx.wms.entity.stock.po.StockWait;
|
|
|
+import com.fjhx.wms.service.stock.StockWaitService;
|
|
|
+import com.obs.services.internal.ServiceException;
|
|
|
+import io.seata.spring.annotation.GlobalTransactional;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 退货流程
|
|
|
+ * @Author:caozj
|
|
|
+ * @DATE:2023/4/3 17:38
|
|
|
+ */
|
|
|
+@DS(SourceConstant.PURCHASE)
|
|
|
+@Component
|
|
|
+public class SalesReturnFlow extends FlowDelegate {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getFlowKey() {
|
|
|
+ return "sales_return_flow";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发起流程
|
|
|
+ * @param flowId 流程ID
|
|
|
+ * @param submitData 申购数据
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ 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());
|
|
|
+ salesReturnService.save(salesReturn);
|
|
|
+ List<SalesReturnDetail> salesReturnDetailList = salesReturn.getSalesReturnDetailList();
|
|
|
+ if(CollectionUtils.isNotEmpty(salesReturnDetailList)){
|
|
|
+ for(SalesReturnDetail s : salesReturnDetailList){
|
|
|
+ s.setSalesReturnId(salesReturn.getId());
|
|
|
+ }
|
|
|
+ salesReturnDetailService.saveBatch(salesReturnDetailList);
|
|
|
+ }
|
|
|
+ return salesReturn.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 结束流程
|
|
|
+ * @param flowId 流程ID
|
|
|
+ * @param businessId 业务ID
|
|
|
+ * @param submitData 数据
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @GlobalTransactional
|
|
|
+ public void end(Long flowId, Long businessId, JSONObject submitData) {
|
|
|
+ SalesReturnService salesReturnService = SpringUtil.getBean(SalesReturnService.class);
|
|
|
+ SalesReturnDetailService salesReturnDetailService = SpringUtil.getBean(SalesReturnDetailService.class);
|
|
|
+ StockWaitService stockWaitService = SpringUtil.getBean(StockWaitService.class);
|
|
|
+ //通过业务ID查询退货数据
|
|
|
+ SalesReturn salesReturn = salesReturnService.getById(businessId);
|
|
|
+ if(ObjectUtils.isEmpty(salesReturn)){
|
|
|
+ throw new ServiceException("退货单单不存在");
|
|
|
+ }
|
|
|
+ //修改退货状态为待退货
|
|
|
+ salesReturn.setStatus(SalesReturnStatusEnum.PASS.getKey());
|
|
|
+ salesReturn.setApprovedDate(new Date());
|
|
|
+ salesReturnService.updateById(salesReturn);
|
|
|
+ //修改退货明细状态为待退货
|
|
|
+ SalesReturnDetail detail = new SalesReturnDetail();
|
|
|
+ detail.setStatus(SalesReturnDetailStatusEnum.STATUS_20.getKey());
|
|
|
+ salesReturnDetailService.update(detail,Wrappers.<SalesReturnDetail>query()
|
|
|
+ .lambda().eq(SalesReturnDetail::getSalesReturnId,salesReturn.getId()));
|
|
|
+ List<SalesReturnDetail> salesReturnDetailList = salesReturnDetailService.list(Wrappers.<SalesReturnDetail>query()
|
|
|
+ .lambda().eq(SalesReturnDetail::getSalesReturnId,salesReturn.getId()));
|
|
|
+ //添加一份待出库数据
|
|
|
+ List<StockWait> stockWaitList = new ArrayList<>();
|
|
|
+ for(SalesReturnDetail s:salesReturnDetailList){
|
|
|
+ StockWait stockWait = new StockWait();
|
|
|
+ stockWait.setProductId(s.getBussinessId());
|
|
|
+ stockWait.setBusinessId(s.getId());//到货明细ID
|
|
|
+ stockWait.setType(2);//入库
|
|
|
+ stockWait.setStatus(0);//待入库
|
|
|
+ stockWait.setBusinessType(4);//退货出库
|
|
|
+ stockWait.setQuantity(s.getCount());
|
|
|
+ stockWaitList.add(stockWait);
|
|
|
+ }
|
|
|
+ stockWaitService.saveBatch(stockWaitList);
|
|
|
+ }
|
|
|
+}
|