yzc 2 سال پیش
والد
کامیت
bff7206f6a

+ 4 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/jd/JdBackDetails.java

@@ -9,6 +9,7 @@ import com.fjhx.base.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -91,6 +92,9 @@ public class JdBackDetails extends BaseEntity {
     @ExcelProperty("备注")
     private String remark;
 
+    /**退货数量*/
+    private BigDecimal quantity;
+
     /**
      * 逻辑删除 0未删除 1已删除
      */

+ 10 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/jd/JdBackVo.java

@@ -1,9 +1,13 @@
 package com.fjhx.params.jd;
 
 import com.fjhx.entity.jd.JdBack;
+import com.fjhx.entity.product.ProductInfo;
+import com.fjhx.params.product.ProductInfoVo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 京东退货
  *
@@ -17,4 +21,10 @@ public class JdBackVo extends JdBack {
     /**物流id*/
     private String logisticsId;
 
+    /**产品列表*/
+    private List<ProductInfoVo> list;
+
+    /**物流公司编号*/
+    private String logisticsCompanyCode;
+
 }

+ 4 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/product/ProductInfoVo.java

@@ -6,6 +6,7 @@ import com.fjhx.entity.product.ProductInfo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -26,4 +27,7 @@ public class ProductInfoVo extends ProductInfo {
      */
     private List<FileInfo> fileInfoList;
 
+    /**产品数量*/
+    private BigDecimal quantity;
+
 }

+ 10 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/jd/NewJdBackController.java

@@ -72,5 +72,15 @@ public class NewJdBackController {
         return R.success();
     }
 
+    /**
+     * 京东新键退货
+     */
+    @PostMapping("/addBack")
+    public R addBack(@RequestBody JdBackVo jdBackVo) {
+        jdBackService.addBack(jdBackVo);
+        return R.success();
+    }
+
+
 }
 

+ 2 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/jd/JdBackMapper.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fjhx.entity.logistics.LogisticsInfo;
 import com.fjhx.entity.product.ProductInfo;
 import com.fjhx.params.jd.JdBackEx;
+import com.fjhx.params.product.ProductInfoVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -23,6 +24,6 @@ public interface JdBackMapper extends BaseMapper<JdBack> {
 
     Page<JdBackEx> getPage(@Param("page") Page<Object> page, @Param("ew") QueryWrapper<Object> wrapper1);
 
-    List<ProductInfo> getProductInfoByLogisticsInfoId(@Param("LogisticsInfoId") String LogisticsInfoId);
+    List<ProductInfoVo> getProductInfoByLogisticsInfoId(@Param("LogisticsInfoId") String LogisticsInfoId);
 
 }

+ 3 - 2
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/jd/JdBackMapper.xml

@@ -19,9 +19,10 @@
                  join quality_info qi on qi.logistics_info_id = jb.id
             ${ew.customSqlSegment}
     </select>
-    <select id="getProductInfoByLogisticsInfoId" resultType="com.fjhx.entity.product.ProductInfo">
+    <select id="getProductInfoByLogisticsInfoId" resultType="com.fjhx.params.product.ProductInfoVo">
         SELECT
-            product_info.id
+            product_info.id,
+            jd_back_details.quantity
         FROM
             logistics_info
                 JOIN jd_back_details ON jd_back_details.jd_back_id = logistics_info.business_id

+ 1 - 2
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsInfoMapper.xml

@@ -71,8 +71,7 @@
         FROM
             jd_back
                 JOIN warehouse ON jd_back.warehouse_id = warehouse.id
-                JOIN jd_back_details ON jd_back_details.jd_back_id = jd_back.id
-                JOIN logistics_info ON jd_back.waybill = logistics_info.`code`
+                JOIN logistics_info ON jd_back.id = logistics_info.business_id
                 JOIN logistics_company ON logistics_info.logistics_company_code = logistics_company.`code`
             ${ew.customSqlSegment}
         UNION ALL

+ 2 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/jd/JdBackService.java

@@ -24,6 +24,8 @@ public interface JdBackService extends BaseService<JdBack> {
 
     void add(JdBackVo jdBackVo);
 
+    void addBack(JdBackVo jdBackVo);
+
     void edit(JdBackVo jdBackVo);
 
     void delete(JdBackVo jdBackVo);

+ 74 - 13
hx-service/victoriatourist/src/main/java/com/fjhx/service/jd/impl/JdBackServiceImpl.java

@@ -17,6 +17,7 @@ import com.fjhx.mapper.jd.JdBackMapper;
 import com.fjhx.params.jd.JdBackEx;
 import com.fjhx.params.jd.JdBackPageDto;
 import com.fjhx.params.jd.JdBackVo;
+import com.fjhx.params.product.ProductInfoVo;
 import com.fjhx.service.jd.JdBackDetailsService;
 import com.fjhx.service.jd.JdBackService;
 import com.fjhx.service.logistics.LogisticsInfoService;
@@ -25,6 +26,7 @@ import com.fjhx.service.quality.QualityInfoService;
 import com.fjhx.service.stock.StockService;
 import com.fjhx.service.warehouse.WarehouseService;
 import com.fjhx.uitl.code.CodeEnum;
+import com.fjhx.uitl.kd100.KD100Util;
 import com.fjhx.utils.Assert;
 import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.log.exception.ServiceException;
@@ -39,6 +41,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.StringJoiner;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * <p>
@@ -72,22 +75,33 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
     @Override
     public void add(JdBackVo jdBackVo) {
         //根据物流id查询退货商品列表
-        List<ProductInfo> productInfos = baseMapper.getProductInfoByLogisticsInfoId(jdBackVo.getLogisticsId());
+        List<ProductInfoVo> productInfos = baseMapper.getProductInfoByLogisticsInfoId(jdBackVo.getLogisticsId());
         List<Long> productInfoIds = productInfos.stream().map(ProductInfo::getId).distinct().collect(Collectors.toList());
+
         //根据商品id和仓库id查出所有商品库存信息
-        Stock stock = stockService.getOne(q -> q.eq(Stock::getGoodsId, productInfoIds.get(0)).eq(Stock::getWarehouseId, jdBackVo.getWarehouseId()));
-        if(ObjectUtil.isEmpty(stock)){
-            stock=new Stock();
-            stock.setGoodsId(productInfos.get(0).getId());
-            stock.setQuantity(stock.getQuantity());
-            stock.setDefectiveQuantity(BigDecimal.ZERO);
-            stock.setWarehouseId(jdBackVo.getWarehouseId());
-            stockService.save(stock);
-        }else {
-            //增加库存
-            stock.setQuantity(stock.getQuantity().add(BigDecimal.ONE));
-            stockService.updateById(stock);
+        List<Stock> stocks = stockService.list(q -> q.in(Stock::getGoodsId, productInfoIds).eq(Stock::getWarehouseId, jdBackVo.getWarehouseId()));
+        Map<Long, List<Stock>> stockMap = stocks.stream().collect(Collectors.groupingBy(Stock::getGoodsId));
+
+        List<Stock> stockLists = new ArrayList<>();
+        for (ProductInfoVo productInfoVo : productInfos) {
+            List<Stock> stockList = stockMap.get(productInfoVo.getId());
+            if (ObjectUtil.isEmpty(stockList)) {
+                Stock stock = new Stock();
+                stock.setGoodsId(productInfoVo.getId());
+                stock.setQuantity(productInfoVo.getQuantity());
+                stock.setDefectiveQuantity(BigDecimal.ZERO);
+                stock.setWarehouseId(jdBackVo.getWarehouseId());
+                stockLists.add(stock);
+            } else {
+                Stock stock = stockList.get(0);
+                //增加库存
+                stock.setQuantity(stock.getQuantity().add(productInfoVo.getQuantity()));
+                stockLists.add(stock);
+            }
         }
+        stockService.saveOrUpdateBatch(stockLists);
+
+
         //更新入库状态
         LogisticsInfo logisticsInfo = logisticsInfoService.getById(jdBackVo.getLogisticsId());
         logisticsInfo.setInStockStatus(30);
@@ -95,6 +109,53 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void addBack(JdBackVo jdBackVo) {
+        //创建京东退货信息
+        save(jdBackVo);
+        //创建退货明细
+        List<ProductInfoVo> productInfoVoList = jdBackVo.getList();
+        //根据id获取商品信息
+        List<Long> productIds = productInfoVoList.stream().map(ProductInfoVo::getId).distinct().collect(Collectors.toList());
+        List<ProductInfo> productInfos = productInfoService.listByIds(productIds);
+        Map<Long, List<ProductInfo>> productInfosMap = productInfos.stream().collect(Collectors.groupingBy(ProductInfo::getId));
+        List<JdBackDetails> jdBackDetailsList = new ArrayList<>();
+        for (ProductInfoVo productInfoVo : productInfoVoList) {
+            JdBackDetails jdBackDetails = new JdBackDetails();
+            jdBackDetails.setJdBackId(jdBackVo.getId());
+            //根据id设置退货产品信息
+            ProductInfo byId = productInfosMap.get(productInfoVo.getId()).get(0);
+            jdBackDetails.setProductCode(byId.getCode());
+            jdBackDetails.setProductName(byId.getName());
+            jdBackDetails.setQuantity(productInfoVo.getQuantity());
+            jdBackDetailsList.add(jdBackDetails);
+        }
+        //创建物流信息
+        LogisticsInfo logisticsInfo = new LogisticsInfo();
+        logisticsInfo.setBusinessId(jdBackVo.getId());
+        logisticsInfo.setBusinessType(4);
+        logisticsInfo.setWarehouseId(jdBackVo.getWarehouseId());
+        logisticsInfo.setStatus(0);
+        logisticsInfo.setInStockStatus(10);
+        logisticsInfo.setCode(jdBackVo.getWaybill());
+        logisticsInfo.setLogisticsCompanyCode(jdBackVo.getLogisticsCompanyCode());
+        logisticsInfoService.save(logisticsInfo);
+
+        //创建质检信息
+        QualityInfo qualityInfo = new QualityInfo();
+        qualityInfo.setType(2);
+        qualityInfo.setCode(CodeEnum.QUALITY.getCode());
+        qualityInfo.setLogisticsInfoId(jdBackVo.getId());
+//        qualityInfo.setLogisticsInfoCode(entry.getValue().get(0).getBackCode());
+        qualityInfo.setStatus(QualityStatusEnum.STATUS_1.getKey());
+        qualityInfo.setResultType(StatusConstant.YES);
+        qualityInfoService.save(qualityInfo);
+
+        //保存退货明细
+        jdBackDetailsService.saveBatch(jdBackDetailsList);
+    }
+
+    @Override
     public void edit(JdBackVo jdBackVo) {
         updateById(jdBackVo);
     }

+ 1 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockCombinationServiceImpl.java

@@ -133,7 +133,7 @@ public class StockCombinationServiceImpl extends ServiceImpl<StockCombinationMap
         // 赋值库存变更参数
         StockChangeDto stockChangeDto0 = new StockChangeDto();
         stockChangeDto0.setDefaultBusinessId(IdWorker.getId());
-        stockChangeDto0.setDefaultWarehouseId(stockSplit.getSourceWarehouseId());
+        stockChangeDto0.setDefaultWarehouseId(stockSplit.getSplitWarehouseId());
         stockChangeDto0.setTypeEnum(InTypeEnum.COMBINATION);
         stockChangeDto0.setChangeDetailsList(stockChangeDetailsDtoList);
         // 保存变更明细

+ 9 - 10
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockServiceImpl.java

@@ -97,8 +97,8 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         IWrapper<Object> wrapper = IWrapper.getWrapper(condition);
 
         wrapper.keyword(
-                        new KeywordData("p", ProductInfo::getCode),
-                        new KeywordData("p", ProductInfo::getName))
+                        new KeywordData("pi", ProductInfo::getCode),
+                        new KeywordData("pi", ProductInfo::getName))
                 .groupBy("pi.id");
 
         return baseMapper.pageByProduct(condition.getPage(), wrapper);
@@ -218,17 +218,16 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         // 遍历库存
         for (Stock oldStock : list) {
             Stock newStock = map.get(oldStock.getGoodsId().toString() + oldStock.getWarehouseId().toString());
-            newStock.setId(oldStock.getId());
 
             // 入库逻辑
             if (typeEnum instanceof InTypeEnum) {
                 // 采购入库,统计锁定库存
                 if (typeEnum.equals(InTypeEnum.PURCHASE)) {
-                    newStock.setFrozenQuantity(oldStock.getFrozenQuantity().add(newStock.getFrozenQuantity()));
+                    oldStock.setFrozenQuantity(oldStock.getFrozenQuantity().add(newStock.getFrozenQuantity()));
                 }
                 // 其他入库,统计库存
                 else {
-                    newStock.setQuantity(oldStock.getQuantity().add(newStock.getQuantity()));
+                    oldStock.setQuantity(oldStock.getQuantity().add(newStock.getQuantity()));
                 }
             }
             // 出库逻辑
@@ -236,18 +235,18 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 // 质检不合格出库,统计锁定库存
                 if (typeEnum.equals(OutTypeEnum.UNQUALIFIED_QUALITY_INSPECTION)) {
                     BigDecimal subtract = oldStock.getFrozenQuantity().subtract(newStock.getFrozenQuantity());
-                    Assert.eqTrue(subtract.compareTo(BigDecimal.ZERO) > 0, "产品锁定库存不足,出库失败");
-                    newStock.setFrozenQuantity(subtract);
+                    Assert.eqTrue(subtract.compareTo(BigDecimal.ZERO) >= 0, "产品锁定库存不足,出库失败");
+                    oldStock.setFrozenQuantity(subtract);
                 }
                 // 其他出库,统计库存
                 else {
                     BigDecimal subtract = oldStock.getQuantity().subtract(newStock.getQuantity());
-                    Assert.eqTrue(subtract.compareTo(BigDecimal.ZERO) > 0, "产品库存不足,出库失败");
-                    newStock.setQuantity(subtract);
+                    Assert.eqTrue(subtract.compareTo(BigDecimal.ZERO) >= 0, "产品库存不足,出库失败");
+                    oldStock.setQuantity(subtract);
                 }
             }
         }
-        saveOrUpdateBatch(map.values());
+        saveOrUpdateBatch(list);
     }
 
 }