瀏覽代碼

no message

FengChaoYu 9 月之前
父節點
當前提交
0bfc7a2ea6

+ 135 - 33
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WebsitPartsSalesOrderLogic.java

@@ -9,7 +9,12 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.manager.bean.PayDetail;
 import com.gree.mall.manager.bean.PayDetail;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
-import com.gree.mall.manager.bean.material.manage.*;
+import com.gree.mall.manager.bean.material.manage.WebsitPartsSalesBean;
+import com.gree.mall.manager.bean.material.manage.WebsitPartsSalesItemBean;
+import com.gree.mall.manager.bean.material.manage.WebsitPartsSalesVO;
+import com.gree.mall.manager.bean.material.manage.WebsitPartsSalesWVO;
+import com.gree.mall.manager.bean.material.stock.WebsitStockDTO;
+import com.gree.mall.manager.bean.material.stock.WorkerStockDTO;
 import com.gree.mall.manager.bean.material.worker.OldRefundManageRecordBean;
 import com.gree.mall.manager.bean.material.worker.OldRefundManageRecordBean;
 import com.gree.mall.manager.commonmapper.MaterialMapper;
 import com.gree.mall.manager.commonmapper.MaterialMapper;
 import com.gree.mall.manager.constant.SybConstants;
 import com.gree.mall.manager.constant.SybConstants;
@@ -19,6 +24,7 @@ import com.gree.mall.manager.enums.material.*;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.AllInPayLogic;
 import com.gree.mall.manager.logic.common.AllInPayLogic;
 import com.gree.mall.manager.logic.common.CommonLogic;
 import com.gree.mall.manager.logic.common.CommonLogic;
+import com.gree.mall.manager.logic.material.stock.MaterialGoodsStockLogic;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
@@ -54,6 +60,7 @@ public class WebsitPartsSalesOrderLogic {
     private final WebsitSalesPayOrderService websitSalesPayOrderService;
     private final WebsitSalesPayOrderService websitSalesPayOrderService;
     private final AdminWebsitPayConfigService adminWebsitPayConfigService;
     private final AdminWebsitPayConfigService adminWebsitPayConfigService;
     private final AllInPayLogic allInPayLogic;
     private final AllInPayLogic allInPayLogic;
+    private final MaterialGoodsStockLogic materialGoodsStockLogic;
 
 
     public IPage<WebsitPartsSalesVO> list(ZfireParamBean zfireParamBean) {
     public IPage<WebsitPartsSalesVO> list(ZfireParamBean zfireParamBean) {
         AdminUserCom adminUser = commonLogic.getAdminUser();
         AdminUserCom adminUser = commonLogic.getAdminUser();
@@ -525,7 +532,7 @@ public class WebsitPartsSalesOrderLogic {
     }
     }
 
 
     @Transactional
     @Transactional
-    public WebsitPartsSalesBean changeCash(String id) {
+    public WebsitPartsSalesBean changeCash(String id) throws Exception {
         WebsitPartsSalesBean partsSalesOrderBean = this.loadSalesOrderById(id);
         WebsitPartsSalesBean partsSalesOrderBean = this.loadSalesOrderById(id);
         AdminWebsit shop = adminWebsitService.getById(partsSalesOrderBean.getWebsitId());
         AdminWebsit shop = adminWebsitService.getById(partsSalesOrderBean.getWebsitId());
         if (!shop.getPartsIsCash()) {
         if (!shop.getPartsIsCash()) {
@@ -547,20 +554,36 @@ public class WebsitPartsSalesOrderLogic {
         return partsSalesOrderBean;
         return partsSalesOrderBean;
     }
     }
 
 
-    private void handleForwardShopAndWorkerStock(WebsitPartsSalesBean partsSalesOrderBean) {
+    private void handleForwardShopAndWorkerStock(WebsitPartsSalesBean partsSalesOrderBean) throws Exception {
         // 扣减网点库存
         // 扣减网点库存
-//        List<ShopStockDTO> shopStockDTOList = this.getShopStock(partsSalesOrderBean, -1);
-//        partsStockLogic.handleShopStock(shopStockDTOList);
-//
-//        if (PartsDeliveryTypeEnum.EXPRESS.getCode().intValue() == partsSalesOrderBean.getDeliveryType()
-//                && PartsSalesOrderTypeEnum.WORKER.getCode().intValue() == partsSalesOrderBean.getOrderType()) {
-//            // 如果是快递并且销售类型为“服务人员”的单,需要增加师傅在途库存
-//            // 增加师傅在途库存
-//            List<WorkerStockDTO> workerStockDTOList = this.getWorkerStock(partsSalesOrderBean,
-//                    PartsRefTypeEnum.SALES.toString(), null, PartsStockPartsAttrEnum.WAY.toString());
-//
-//            partsStockLogic.handleWorkerStock(workerStockDTOList);
-//        }
+        List<WebsitStockDTO> shopStockDTOList = this.getWebsitStock(partsSalesOrderBean, DirectFlagEnum.SUB);
+        materialGoodsStockLogic.handleWebsitStock(shopStockDTOList);
+
+        if (DeliveryTypeEnum.EXPRESS.getValue().equals(partsSalesOrderBean.getDeliveryType())
+                && BuyPeopleEnum.WORKER.getKey().equals(partsSalesOrderBean.getBuyPeople())) {
+            // 如果是快递并且销售类型为“服务人员”的单,需要增加师傅在途库存
+            // 增加师傅在途库存
+            List<WorkerStockDTO> workerStockDTOList = this.getWorkerStock(partsSalesOrderBean,
+                    PartsRefTypeEnum.SALES.getKey(), null, PartsAttrEnum.WAY.getKey());
+
+            materialGoodsStockLogic.handleWorkerStock(workerStockDTOList);
+        }
+    }
+
+    private void handleReverseShopAndWorkerStock(WebsitPartsSalesBean partsSalesOrderBean) throws Exception {
+        //网点库存要加回去
+        List<WebsitStockDTO> shopStockDTOList = this.getWebsitStock(partsSalesOrderBean, DirectFlagEnum.ADD);
+
+        materialGoodsStockLogic.handleWebsitStock(shopStockDTOList);
+
+        if (DeliveryTypeEnum.EXPRESS.getValue().equals(partsSalesOrderBean.getDeliveryType())
+                && BuyPeopleEnum.WORKER.getKey().equals(partsSalesOrderBean.getBuyPeople())) {
+            // 如果是快递并且销售类型为“服务人员”的单,需要减师傅在途库存
+            // 减师傅在途库存
+            List<WorkerStockDTO> workerStockDTOList = this.getWorkerStock(partsSalesOrderBean, PartsRefTypeEnum.SALES.getKey(),
+                    PartsAttrEnum.WAY.getKey(), null);
+            materialGoodsStockLogic.handleWorkerStock(workerStockDTOList);
+        }
     }
     }
 
 
     @Transactional
     @Transactional
@@ -728,7 +751,7 @@ public class WebsitPartsSalesOrderLogic {
         return null;
         return null;
     }
     }
 
 
-    public void cancel(String id) {
+    public void cancel(String id) throws Exception {
         WebsitPartsSalesBean partsSalesOrderBean = loadSalesOrderById(id);
         WebsitPartsSalesBean partsSalesOrderBean = loadSalesOrderById(id);
         if(Objects.isNull(partsSalesOrderBean)) {
         if(Objects.isNull(partsSalesOrderBean)) {
             throw new RemoteServiceException("配件单状态取消失败,没有该配件单号: " + id) ;
             throw new RemoteServiceException("配件单状态取消失败,没有该配件单号: " + id) ;
@@ -763,22 +786,6 @@ public class WebsitPartsSalesOrderLogic {
         websitPartsSalesService.saveOrUpdate(partsSalesOrderBean);
         websitPartsSalesService.saveOrUpdate(partsSalesOrderBean);
     }
     }
 
 
-    private void handleReverseShopAndWorkerStock(WebsitPartsSalesBean partsSalesOrderBean) {
-        //网点库存要加回去
-//        List<ShopStockDTO> shopStockDTOList = this.getShopStock(partsSalesOrderBean, 1);
-//
-//        partsStockLogic.handleShopStock(shopStockDTOList);
-//
-//        if (PartsDeliveryTypeEnum.EXPRESS.getCode().intValue() == partsSalesOrderBean.getDeliveryType()
-//                && PartsSalesOrderTypeEnum.WORKER.getCode().intValue() == partsSalesOrderBean.getOrderType()) {
-//            // 如果是快递并且销售类型为“服务人员”的单,需要减师傅在途库存
-//            // 减师傅在途库存
-//            List<WorkerStockDTO> workerStockDTOList = this.getWorkerStock(partsSalesOrderBean, PartsRefTypeEnum.SALES.toString(),
-//                    PartsStockPartsAttrEnum.WAY.toString(), null);
-//            partsStockLogic.handleWorkerStock(workerStockDTOList);
-//        }
-    }
-
     private void commonRefundAmountMethod(WebsitPartsSalesBean partsSalesOrderBean) {
     private void commonRefundAmountMethod(WebsitPartsSalesBean partsSalesOrderBean) {
         //有支付记录,需要增加退款记录
         //有支付记录,需要增加退款记录
         WebsitPartsRefundRecord partsRefundRecord = new WebsitPartsRefundRecord();
         WebsitPartsRefundRecord partsRefundRecord = new WebsitPartsRefundRecord();
@@ -802,7 +809,7 @@ public class WebsitPartsSalesOrderLogic {
     }
     }
 
 
     @Transactional
     @Transactional
-    public void transNotApply(String id) {
+    public void transNotApply(String id) throws Exception {
         WebsitPartsSalesBean partsSalesOrderBean = loadSalesOrderById(id);
         WebsitPartsSalesBean partsSalesOrderBean = loadSalesOrderById(id);
         if(Objects.isNull(partsSalesOrderBean)) {
         if(Objects.isNull(partsSalesOrderBean)) {
             throw new RemoteServiceException("销售申请单转销售单失败,没有该单号: " + id) ;
             throw new RemoteServiceException("销售申请单转销售单失败,没有该单号: " + id) ;
@@ -831,4 +838,99 @@ public class WebsitPartsSalesOrderLogic {
 
 
         return pay;
         return pay;
     }
     }
+
+    private List<WorkerStockDTO> getWorkerStock(WebsitPartsSalesBean partsSalesOrderBean, String refType, String partsAttr1, String partsAttr2) {
+        if(Collections.isEmpty(partsSalesOrderBean.getItemList())) {
+            return null;
+        }
+        List<WorkerStockDTO> workerStockDTOList = new ArrayList<>();
+
+        for (WebsitPartsSalesItem item : partsSalesOrderBean.getItemList()) {
+            if (StringUtils.isNotBlank(partsAttr1)) {
+                WorkerStockDTO workerStockDTO = new WorkerStockDTO();
+                workerStockDTO.setCompanyWechatId(partsSalesOrderBean.getCompanyWechatId());
+                workerStockDTO.setCompanyWechatName(partsSalesOrderBean.getCompanyWechatName());
+                workerStockDTO.setIdentity(item.getIdentity());
+                workerStockDTO.setWorkerId(partsSalesOrderBean.getWorkerId());
+                workerStockDTO.setWorkerName(partsSalesOrderBean.getWorkerName());
+                workerStockDTO.setWebsitId(partsSalesOrderBean.getWebsitId());
+                workerStockDTO.setWebsitName(partsSalesOrderBean.getWebsitName());
+                workerStockDTO.setSdate(DateUtil.date());
+                workerStockDTO.setPartsWebsitId(item.getPartsWebsitId());
+                workerStockDTO.setGoodsId(item.getPartsNumber());
+                workerStockDTO.setGoodsName(item.getPartsName());
+                workerStockDTO.setMaterialGroupName(item.getMaterialGroupName());
+                workerStockDTO.setPrice(item.getMarketPrice());
+                workerStockDTO.setGoodsStockUnit(item.getGoodsStockUnit());
+                workerStockDTO.setRef(partsSalesOrderBean.getId());
+                workerStockDTO.setRefType(refType);
+                workerStockDTO.setPartsAttr(partsAttr1);
+                workerStockDTO.setChangeQty(item.getQty());
+                workerStockDTO.setDirectFlag(DirectFlagEnum.SUB.getKey());
+                workerStockDTO.setRemark(partsSalesOrderBean.getRemark());
+                workerStockDTO.setOperateBy(partsSalesOrderBean.getWorkerName());
+                workerStockDTO.setOperateTime(DateUtil.date());
+                workerStockDTOList.add(workerStockDTO);
+            }
+            if (StringUtils.isNotBlank(partsAttr2)) {
+                WorkerStockDTO workerStockDTO = new WorkerStockDTO();
+                workerStockDTO.setIdentity(item.getIdentity());
+                workerStockDTO.setWorkerId(partsSalesOrderBean.getWorkerId());
+                workerStockDTO.setWorkerName(partsSalesOrderBean.getWorkerName());
+                workerStockDTO.setWebsitId(partsSalesOrderBean.getWebsitId());
+                workerStockDTO.setWebsitName(partsSalesOrderBean.getWebsitName());
+                workerStockDTO.setSdate(DateUtil.date());
+                workerStockDTO.setPartsWebsitId(item.getPartsWebsitId());
+                workerStockDTO.setGoodsId(item.getPartsNumber());
+                workerStockDTO.setGoodsName(item.getPartsName());
+                workerStockDTO.setMaterialGroupName(item.getMaterialGroupName());
+                workerStockDTO.setPrice(item.getMarketPrice());
+                workerStockDTO.setGoodsStockUnit(item.getGoodsStockUnit());
+                workerStockDTO.setRef(partsSalesOrderBean.getId());
+                workerStockDTO.setRefType(refType);
+                workerStockDTO.setPartsAttr(partsAttr2);
+                workerStockDTO.setChangeQty(item.getQty());
+                workerStockDTO.setDirectFlag(DirectFlagEnum.ADD.getKey());
+                workerStockDTO.setRemark(partsSalesOrderBean.getRemark());
+                workerStockDTO.setOperateBy(partsSalesOrderBean.getWorkerName());
+                workerStockDTO.setOperateTime(DateUtil.date());
+                workerStockDTOList.add(workerStockDTO);
+            }
+        }
+        return workerStockDTOList;
+    }
+
+    private List<WebsitStockDTO> getWebsitStock(WebsitPartsSalesBean partsSalesOrderBean, DirectFlagEnum directFlag) {
+        if(Collections.isEmpty(partsSalesOrderBean.getItemList())) {
+            return null;
+        }
+        List<WebsitStockDTO> websitStockDTOList = new ArrayList<>();
+        for(WebsitPartsSalesItem item : partsSalesOrderBean.getItemList()) {
+            WebsitStockDTO websitStockDTO = new WebsitStockDTO();
+            websitStockDTO.setCompanyWechatId(partsSalesOrderBean.getCompanyWechatId());
+            websitStockDTO.setCompanyWechatName(partsSalesOrderBean.getCompanyWechatName());
+            websitStockDTO.setWebsitId(partsSalesOrderBean.getWebsitId());
+            websitStockDTO.setWebsitName(partsSalesOrderBean.getWebsitName());
+            websitStockDTO.setSdate(new Date());
+            websitStockDTO.setPartsWebsitId(item.getPartsWebsitId());
+            websitStockDTO.setGoodsId(item.getPartsNumber());
+            websitStockDTO.setGoodsName(item.getPartsName());
+            websitStockDTO.setMaterialGroupName(item.getMaterialGroupName());
+            websitStockDTO.setPrice(item.getMarketPrice());
+            websitStockDTO.setGoodsStockUnit(item.getGoodsStockUnit());
+            websitStockDTO.setVoucherNo(partsSalesOrderBean.getId());
+            websitStockDTO.setApplyNo(partsSalesOrderBean.getId());
+            websitStockDTO.setObj(PartsRefTypeEnum.SALES.getKey());
+            websitStockDTO.setPartsAttr(PartsAttrEnum.NEW.getKey());
+            websitStockDTO.setChangeQty(item.getQty());
+            websitStockDTO.setDirectFlag(directFlag.getKey());
+            websitStockDTO.setRemark(partsSalesOrderBean.getRemark());
+            websitStockDTO.setOperateBy(partsSalesOrderBean.getSubmitBy());
+            websitStockDTO.setOperateTime(new Date());
+            websitStockDTO.setStorageId(partsSalesOrderBean.getStorageId());
+            websitStockDTOList.add(websitStockDTO);
+        }
+        return websitStockDTOList;
+    }
+
 }
 }