yzc 1 жил өмнө
parent
commit
21cb8f25af

+ 19 - 0
hx-jxst/src/main/java/com/fjhx/jxst/controller/after/AfterSalesMaterialsController.java

@@ -0,0 +1,19 @@
+package com.fjhx.jxst.controller.after;
+
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * <p>
+ * 售后跟进物料表 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-07
+ */
+@RestController
+@RequestMapping("/afterSalesMaterials")
+public class AfterSalesMaterialsController {
+
+
+}

+ 17 - 0
hx-jxst/src/main/java/com/fjhx/jxst/entity/after/dto/AfterSalesMaterialsDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.jxst.entity.after.dto;
+
+import com.fjhx.jxst.entity.after.po.AfterSalesMaterials;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 售后跟进物料表新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-12-07
+ */
+@Getter
+@Setter
+public class AfterSalesMaterialsDto extends AfterSalesMaterials {
+
+}

+ 17 - 0
hx-jxst/src/main/java/com/fjhx/jxst/entity/after/dto/AfterSalesMaterialsSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.jxst.entity.after.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 售后跟进物料表列表查询入参实体
+ *
+ * @author 
+ * @since 2023-12-07
+ */
+@Getter
+@Setter
+public class AfterSalesMaterialsSelectDto extends BaseSelectDto {
+
+}

+ 7 - 0
hx-jxst/src/main/java/com/fjhx/jxst/entity/after/dto/AfterSalesRecordDto.java

@@ -1,6 +1,8 @@
 package com.fjhx.jxst.entity.after.dto;
 
 import com.fjhx.file.entity.ObsFile;
+import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.jxst.entity.after.po.AfterSalesMaterials;
 import com.fjhx.jxst.entity.after.po.AfterSalesRecord;
 import com.fjhx.jxst.entity.after.po.AfterSalesRecordDetail;
 import lombok.Getter;
@@ -28,4 +30,9 @@ public class AfterSalesRecordDto extends AfterSalesRecord {
      */
     private List<ObsFile> fileList;
 
+    /**
+     * 售后处理需要 物料列表
+     */
+    private List<AfterSalesMaterials> afterSalesMaterialsList;
+
 }

+ 38 - 0
hx-jxst/src/main/java/com/fjhx/jxst/entity/after/po/AfterSalesMaterials.java

@@ -0,0 +1,38 @@
+package com.fjhx.jxst.entity.after.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 售后跟进物料表
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-07
+ */
+@Getter
+@Setter
+@TableName("after_sales_materials")
+public class AfterSalesMaterials extends BasePo {
+
+    /**
+     * 售后记录id
+     */
+    private Long afterSalesRecordId;
+
+    /**
+     * 物料id
+     */
+    private Long productId;
+
+    /**
+     * 售后数量
+     */
+    private BigDecimal quantity;
+
+}

+ 17 - 0
hx-jxst/src/main/java/com/fjhx/jxst/entity/after/vo/AfterSalesMaterialsVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.jxst.entity.after.vo;
+
+import com.fjhx.jxst.entity.after.po.AfterSalesMaterials;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 售后跟进物料表列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-12-07
+ */
+@Getter
+@Setter
+public class AfterSalesMaterialsVo extends AfterSalesMaterials {
+
+}

+ 17 - 0
hx-jxst/src/main/java/com/fjhx/jxst/mapper/after/AfterSalesMaterialsMapper.java

@@ -0,0 +1,17 @@
+package com.fjhx.jxst.mapper.after;
+
+import com.fjhx.jxst.entity.after.po.AfterSalesMaterials;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * <p>
+ * 售后跟进物料表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-07
+ */
+public interface AfterSalesMaterialsMapper extends BaseMapper<AfterSalesMaterials> {
+
+}

+ 17 - 0
hx-jxst/src/main/java/com/fjhx/jxst/service/after/AfterSalesMaterialsService.java

@@ -0,0 +1,17 @@
+package com.fjhx.jxst.service.after;
+
+import com.fjhx.jxst.entity.after.po.AfterSalesMaterials;
+import com.ruoyi.common.core.service.BaseService;
+
+
+/**
+ * <p>
+ * 售后跟进物料表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-07
+ */
+public interface AfterSalesMaterialsService extends BaseService<AfterSalesMaterials> {
+
+}

+ 21 - 0
hx-jxst/src/main/java/com/fjhx/jxst/service/after/impl/AfterSalesMaterialsServiceImpl.java

@@ -0,0 +1,21 @@
+package com.fjhx.jxst.service.after.impl;
+
+import com.fjhx.jxst.entity.after.po.AfterSalesMaterials;
+import com.fjhx.jxst.mapper.after.AfterSalesMaterialsMapper;
+import com.fjhx.jxst.service.after.AfterSalesMaterialsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 售后跟进物料表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-07
+ */
+@Service
+public class AfterSalesMaterialsServiceImpl extends ServiceImpl<AfterSalesMaterialsMapper, AfterSalesMaterials> implements AfterSalesMaterialsService {
+
+}

+ 41 - 4
hx-jxst/src/main/java/com/fjhx/jxst/service/after/impl/AfterSalesRecordServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.enums.CodingRuleEnum;
+import com.fjhx.common.enums.TaskDetailsStockStatus;
 import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.common.utils.Assert;
 import com.fjhx.file.utils.ObsFileUtil;
@@ -14,10 +15,12 @@ import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.jxst.entity.after.dto.AfterSalesRecordDetailDto;
 import com.fjhx.jxst.entity.after.dto.AfterSalesRecordDto;
 import com.fjhx.jxst.entity.after.dto.AfterSalesRecordSelectDto;
+import com.fjhx.jxst.entity.after.po.AfterSalesMaterials;
 import com.fjhx.jxst.entity.after.po.AfterSalesRecord;
 import com.fjhx.jxst.entity.after.po.AfterSalesRecordDetail;
 import com.fjhx.jxst.entity.after.vo.AfterSalesRecordVo;
 import com.fjhx.jxst.mapper.after.AfterSalesRecordMapper;
+import com.fjhx.jxst.service.after.AfterSalesMaterialsService;
 import com.fjhx.jxst.service.after.AfterSalesRecordDetailService;
 import com.fjhx.jxst.service.after.AfterSalesRecordService;
 import com.fjhx.jxst.utils.CodeEnum;
@@ -33,15 +36,23 @@ import com.fjhx.mes.service.bom.BomInfoService;
 import com.fjhx.mes.service.production.ProductionTaskDetailService;
 import com.fjhx.mes.service.work.WorkOrderBomService;
 import com.fjhx.mes.service.work.WorkOrderService;
+import com.fjhx.wms.entity.stock.emums.StockWaitType;
+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.exception.ServiceException;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 
 /**
@@ -64,13 +75,15 @@ public class AfterSalesRecordServiceImpl extends ServiceImpl<AfterSalesRecordMap
     @Autowired
     private WorkOrderBomService workOrderBomService;
     @Autowired
-    private BomInfoService bomInfoService;
-    @Autowired
-    private BomDetailService bomDetailService;
-    @Autowired
     private AfterSalesRecordDetailService afterSalesRecordDetailService;
     @Autowired
     private CodingRuleService codingRuleService;
+    @Autowired
+    private AfterSalesMaterialsService afterSalesMaterialsService;
+    @Autowired
+    private StockWaitService stockWaitService;
+    @Autowired
+    private StockWaitDetailsService stockWaitDetailsService;
 
     @Override
     public Page<AfterSalesRecordVo> getPage(AfterSalesRecordSelectDto dto) {
@@ -189,6 +202,30 @@ public class AfterSalesRecordServiceImpl extends ServiceImpl<AfterSalesRecordMap
         }
         List<AfterSalesRecordDetail> afterSalesRecordDetails = BeanUtil.copyToList(afterSalesRecordDetailList, AfterSalesRecordDetail.class);
         afterSalesRecordDetailService.saveBatch(afterSalesRecordDetails);
+
+        //保存售后跟进申请的物料
+        List<AfterSalesMaterials> afterSalesMaterialsList = afterSalesRecordDto.getAfterSalesMaterialsList();
+        afterSalesMaterialsList.forEach(item->item.setAfterSalesRecordId(afterSalesRecordDto.getId()));
+        afterSalesMaterialsService.saveBatch(afterSalesMaterialsList);
+
+        //生成售后物料待出库数据
+        StockWait stockWait = new StockWait();
+        stockWait.setType(2);
+        stockWait.setStatus(0);
+        stockWait.setBusinessId(afterSalesRecordDto.getId());
+        stockWait.setBusinessType(StockWaitType.AFTER_SALES_MATERIAL_OUT.getDetailType());
+        stockWaitService.save(stockWait);
+
+        List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
+        for (AfterSalesMaterials afterSalesMaterials : afterSalesMaterialsList) {
+            StockWaitDetails stockWaitDetails = new StockWaitDetails();
+            stockWaitDetails.setStockWaitId(stockWait.getId());
+            stockWaitDetails.setProductId(afterSalesMaterials.getProductId());
+            stockWaitDetails.setQuantity(afterSalesMaterials.getQuantity());
+            stockWaitDetails.setBusinessDetailsId(afterSalesMaterials.getId());
+            stockWaitDetailsList.add(stockWaitDetails);
+        }
+        stockWaitDetailsService.saveBatch(stockWaitDetailsList);
     }
 
 }

+ 4 - 0
hx-jxst/src/main/resources/mapper/after/AfterSalesMaterialsMapper.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.jxst.mapper.after.AfterSalesMaterialsMapper">
+</mapper>

+ 3 - 1
hx-wms/src/main/java/com/fjhx/wms/entity/stock/emums/JournalType.java

@@ -31,7 +31,9 @@ public enum JournalType {
     WORD_ORDER_OUT(InOutType.OUT, 21, "工单出库待出库出库", "work_order"),
     STOCK_CHECK_IN(InOutType.IN, 22, "库存盘点修正入库", "stock_check"),
     STOCK_CHECK_OUT(InOutType.OUT, 23, "库存盘点修正出库", "stock_check"),
-    CONTRACT_SALE_OUT(InOutType.OUT, 24, "合同销售出库", "")
+    CONTRACT_SALE_OUT(InOutType.OUT, 24, "合同销售出库", ""),
+    AFTER_SALES_MATERIAL_OUT(InOutType.OUT, 25, "售后物料出库", "after_sales_record"),
+
     ;
 
 

+ 3 - 1
hx-wms/src/main/java/com/fjhx/wms/entity/stock/emums/StockWaitType.java

@@ -18,7 +18,9 @@ public enum StockWaitType {
     SALES_REPLACE_IN(InOutType.IN, 9, "售后换货入库", "after_sales"),
     SALES_REPLACE_OUT(InOutType.OUT, 10, "售后换货出库", "after_sales"),
     WORD_ORDER_OUT(InOutType.OUT, 11, "工单直接出库出库", "work_order"),
-    CONTRACT_SALE_OUT(InOutType.OUT, 12, "合同销售出库", "");
+    CONTRACT_SALE_OUT(InOutType.OUT, 12, "合同销售出库", ""),
+    AFTER_SALES_MATERIAL_OUT(InOutType.OUT, 13, "售后物料出库", "after_sales_record"),
+    ;
 
 
     /**

+ 3 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

@@ -404,6 +404,9 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         } else if (StockWaitType.CONTRACT_SALE_OUT.getDetailType().equals(businessType)) {
             //合同销售出库待出库出库
             return JournalType.CONTRACT_SALE_OUT;
+        } else if (StockWaitType.AFTER_SALES_MATERIAL_OUT.getDetailType().equals(businessType)) {
+            //售后物料待出库出库
+            return JournalType.AFTER_SALES_MATERIAL_OUT;
         } else {
             throw new ServiceException("未知待出入库业务类型");
         }