浏览代码

维多利亚

24282 2 年之前
父节点
当前提交
4494f8ce4e
共有 15 个文件被更改,包括 270 次插入53 次删除
  1. 13 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/logistics/LogisticsDetails.java
  2. 26 5
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/logistics/LogisticsInfo.java
  3. 4 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/quality/QualityInfo.java
  4. 6 3
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/enums/stock/InTypeEnum.java
  5. 23 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/logistics/JdBackAddDto.java
  6. 29 0
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/logistics/JdBackController.java
  7. 3 0
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/logistics/LogisticsInfoController.java
  8. 9 10
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/order/OrderSalesController.java
  9. 54 4
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/thirdpartypush/ThirdPartyPushController.java
  10. 12 4
      hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/LogisticsInfoService.java
  11. 83 4
      hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/impl/LogisticsInfoServiceImpl.java
  12. 4 7
      hx-service/victoriatourist/src/main/java/com/fjhx/service/quality/QualityInfoService.java
  13. 0 15
      hx-service/victoriatourist/src/main/java/com/fjhx/service/quality/impl/QualityInfoServiceImpl.java
  14. 3 0
      hx-service/victoriatourist/src/main/java/com/fjhx/uitl/code/CodeEnum.java
  15. 1 1
      hx-service/victoriatourist/src/main/java/com/fjhx/uitl/kd100/KD100Util.java

+ 13 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/logistics/LogisticsDetails.java

@@ -7,6 +7,7 @@ import com.fjhx.base.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 
 /**
@@ -45,14 +46,26 @@ public class LogisticsDetails extends BaseEntity {
     /**
      * 发货数量
      */
+    @NotNull(message = "京东退货数量不能为空")
     private BigDecimal shipmentQuantity;
 
     /**
+     * 京东退货产品id
+     */
+    @NotNull(message = "京东退货产品id不能为空")
+    private Long jdBackProductId;
+
+    /**
      * 入库数量
      */
     private BigDecimal receiptQuantity;
 
     /**
+     * 备注
+     */
+    private String remark;
+
+    /**
      * 逻辑删除 0未删除 1已删除
      */
     @TableField(fill = FieldFill.INSERT)

+ 26 - 5
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/logistics/LogisticsInfo.java

@@ -8,6 +8,7 @@ import com.fjhx.entity.FileInfo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import javax.validation.constraints.NotNull;
 import java.util.List;
 
 /**
@@ -28,27 +29,47 @@ public class LogisticsInfo extends BaseEntity {
     private Long businessId;
 
     /**
-     * 业务类型(1采购出货 2京东订单出货 3销售订单出库 4京东退货)
+     * 业务类型
+     * 1采购进货(入库) businessId:purchase_id
+     * 2京东订单出货(出库) businessId:order_info_id
+     * 3销售订单出货(出库) businessId:order_info_id
+     * 4京东退货(入库) businessId:null
      */
     private Integer businessType;
 
     /**
      * 仓库id
      */
+    @NotNull(message = "仓库id不能为空")
     private Long warehouseId;
 
     /**
-     * 物流单
+     * 京东退货编
      */
-    private String code;
+    private String jdBackCode;
 
     /**
-     * 采购出货完成状态:0、未完成 / 未到货;1、已完成 / 已到货
+     * 京东退货状态 1新建 2运输中 3待质检 4已完成
+     */
+    private Integer jdBackStatus;
+
+    /**
+     * 京东退货 关联京东订单id
+     */
+    private Long jdBackOrderId;
+
+    /**
+     * 采购进货完成状态:0、未完成 / 未到货;1、已完成 / 已到货
      */
     private Integer status;
 
     /**
-     * 采购出货入库状态:10、未入库;20、部分入库;30、已入库
+     * 物流单号
+     */
+    private String code;
+
+    /**
+     * 采购进货入库状态:10、未入库;20、部分入库;30、已入库
      */
     private Integer inStockStatus;
 

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

@@ -19,6 +19,10 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class QualityInfo extends BaseEntity {
 
+    /**
+     * 类型 1采购到货质检  2京东退货质检
+     */
+    private Integer type;
 
     /**
      * 质检单号

+ 6 - 3
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/enums/stock/InTypeEnum.java

@@ -12,18 +12,21 @@ import java.util.Map;
  */
 @Getter
 public enum InTypeEnum {
-    // business_id = logistics_detailsid
+    // business_id = logistics_details_id
     PURCHASE(1, "采购入库"),
 
     // business_id = 自定义id
     MANUAL(2, "手动入库"),
 
-    // business_id = stock_transferid
+    // business_id = stock_transfer_id
     TRANSFER(7, "调仓入库"),
 
-    // business_id = stock_combinationid
+    // business_id = stock_combination_id
     COMBINATION(9, "组合入库"),
 
+    // business_id = logistics_info_id
+    JD_BACK(10,"京东退货入库"),
+
     ;
 
     private final int key;

+ 23 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/logistics/JdBackAddDto.java

@@ -0,0 +1,23 @@
+package com.fjhx.params.logistics;
+
+import com.fjhx.entity.logistics.LogisticsDetails;
+import com.fjhx.entity.logistics.LogisticsInfo;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+@Getter
+@Setter
+public class JdBackAddDto extends LogisticsInfo {
+
+    /**
+     * 明细
+     */
+    @NotEmpty(message = "京东退货明细不能为空")
+    @Valid
+    private List<LogisticsDetails> logisticsDetailsList;
+
+}

+ 29 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/logistics/JdBackController.java

@@ -0,0 +1,29 @@
+package com.fjhx.controller.logistics;
+
+import com.fjhx.params.logistics.JdBackAddDto;
+import com.fjhx.service.logistics.LogisticsInfoService;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 京东退货
+ */
+@RestController
+@RequestMapping("/jdBack")
+public class JdBackController {
+
+    @Autowired
+    private LogisticsInfoService logisticsInfoService;
+
+    @PostMapping("/add")
+    public R page(@RequestBody JdBackAddDto dto) {
+        logisticsInfoService.jdBackAdd(dto);
+        return R.success();
+    }
+
+
+}

+ 3 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/logistics/LogisticsInfoController.java

@@ -108,5 +108,8 @@ public class LogisticsInfoController {
         return R.success(result);
     }
 
+
+
+
 }
 

+ 9 - 10
hx-service/victoriatourist/src/main/java/com/fjhx/controller/order/OrderSalesController.java

@@ -62,16 +62,6 @@ public class OrderSalesController {
     }
 
     /**
-     * 销售出库
-     */
-    @PostMapping("/issue")
-    public R issue(@RequestBody IssueDto issueDto) {
-        issueDto.setOutTypeEnum(OutTypeEnum.PURCHASE);
-        orderDetailsService.issue(issueDto);
-        return R.success();
-    }
-
-    /**
      * 根据客户id查询订单
      */
     @PostMapping("/getOrderByCustomerId")
@@ -89,6 +79,15 @@ public class OrderSalesController {
         return R.success(orderInfoEx);
     }
 
+    /**
+     * 销售出库
+     */
+    @PostMapping("/issue")
+    public R issue(@RequestBody IssueDto issueDto) {
+        issueDto.setOutTypeEnum(OutTypeEnum.PURCHASE);
+        orderDetailsService.issue(issueDto);
+        return R.success();
+    }
 
 }
 

+ 54 - 4
hx-service/victoriatourist/src/main/java/com/fjhx/controller/thirdpartypush/ThirdPartyPushController.java

@@ -1,15 +1,22 @@
 package com.fjhx.controller.thirdpartypush;
 
 import com.alibaba.fastjson.JSONObject;
+import com.fjhx.constants.logistics.LogisticsConstant;
+import com.fjhx.entity.logistics.LogisticsDetails;
+import com.fjhx.entity.logistics.LogisticsInfo;
+import com.fjhx.service.logistics.LogisticsDetailsService;
 import com.fjhx.service.logistics.LogisticsInfoService;
 import com.fjhx.uitl.kd100.KD100Util;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  * <p>
  * 第三方推送 前端控制器
@@ -26,25 +33,68 @@ public class ThirdPartyPushController {
     @Autowired
     private LogisticsInfoService logisticsInfoService;
 
+    @Autowired
+    private LogisticsDetailsService logisticsDetailsService;
+
     /**
      * kd100回调
      *
      * @param data 物流信息
      */
     @PostMapping("/kd100")
-    public JSONObject kd100(@RequestBody String data) {
+    @Transactional(rollbackFor = Exception.class)
+    public synchronized JSONObject kd100(@RequestBody String data) {
         // 解析回调参数
         JSONObject result = KD100Util.parsePushData(data);
 
         log.error("快递100回调:" + result.toJSONString());
 
-        // 更新物流信息
-        logisticsInfoService.updateStatusByCode(result.getString("nu"), result.getInteger("state"));
-
         JSONObject returnResult = new JSONObject();
         returnResult.put("result", true);
         returnResult.put("returnCode", 200);
         returnResult.put("message", "成功");
+
+        // 快递公司编码
+        String com = result.getString("com");
+        // 	单号
+        String nu = result.getString("nu");
+        // 物流状态
+        Integer state = result.getInteger("state");
+
+        // 查询快递信息
+        List<LogisticsInfo> list = logisticsInfoService.list(
+                q -> q.eq(LogisticsInfo::getCode, nu).eq(LogisticsInfo::getLogisticsCompanyCode, com));
+
+        if (list.size() == 0) {
+            return returnResult;
+        }
+
+        for (LogisticsInfo logisticsInfo : list) {
+
+            if (LogisticsConstant.KD100Status.STATUS_3.equals(state)) {
+                switch (logisticsInfo.getBusinessType()) {
+                    case 1:
+                    case 2:
+                    case 3:
+                        // 修改采购进货完成状态
+                        logisticsInfo.setStatus(LogisticsConstant.Status.STATUS_1);
+                        break;
+                    case 4:
+                        // 质检状态改为待质检
+                        logisticsInfo.setJdBackStatus(3);
+
+                        // 添加质检记录
+                        List<LogisticsDetails> logisticsDetailsList = logisticsDetailsService.
+                                list(q -> q.eq(LogisticsDetails::getLogisticsInfoId, logisticsInfo.getId()));
+                        logisticsInfoService.addJdBackQuality(logisticsDetailsList, logisticsInfo.getWarehouseId(), logisticsInfo.getId());
+                        break;
+                }
+            }
+
+            logisticsInfo.setLogisticsStatus(state);
+            logisticsInfoService.updateById(logisticsInfo);
+        }
+
         return returnResult;
     }
 

+ 12 - 4
hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/LogisticsInfoService.java

@@ -2,11 +2,9 @@ package com.fjhx.service.logistics;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.base.BaseService;
+import com.fjhx.entity.logistics.LogisticsDetails;
 import com.fjhx.entity.logistics.LogisticsInfo;
-import com.fjhx.params.logistics.DataInfoPageDto;
-import com.fjhx.params.logistics.DataInfoPageVo;
-import com.fjhx.params.logistics.DeliverDetailsVo;
-import com.fjhx.params.logistics.LogisticsInfoVo;
+import com.fjhx.params.logistics.*;
 import com.fjhx.params.stock.InStockAdd;
 
 import java.util.List;
@@ -86,4 +84,14 @@ public interface LogisticsInfoService extends BaseService<LogisticsInfo> {
      */
     Page<DataInfoPageVo> dataInfoPage(DataInfoPageDto dto);
 
+    /**
+     * 京东退货添加
+     */
+    void jdBackAdd(JdBackAddDto dto);
+
+    /**
+     * 京东退货添加到货质检
+     */
+    void addJdBackQuality(List<LogisticsDetails> logisticsDetailsList, Long warehouseId, Long logisticsInfoId);
+
 }

+ 83 - 4
hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/impl/LogisticsInfoServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fjhx.service.logistics.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+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.base.BaseIdEntity;
@@ -18,10 +19,7 @@ import com.fjhx.enums.purchase.PurchaseStatusEnum;
 import com.fjhx.enums.stock.InTypeEnum;
 import com.fjhx.enums.stock.QualityStatusEnum;
 import com.fjhx.mapper.logistics.LogisticsInfoMapper;
-import com.fjhx.params.logistics.DataInfoPageDto;
-import com.fjhx.params.logistics.DataInfoPageVo;
-import com.fjhx.params.logistics.DeliverDetailsVo;
-import com.fjhx.params.logistics.LogisticsInfoVo;
+import com.fjhx.params.logistics.*;
 import com.fjhx.params.stock.InStockAdd;
 import com.fjhx.params.stock.StockChangeDto;
 import com.fjhx.service.apply.ApplyPurchaseService;
@@ -374,6 +372,7 @@ public class LogisticsInfoServiceImpl extends ServiceImpl<LogisticsInfoMapper, L
 
         // 添加质检
         QualityInfo qualityInfo = new QualityInfo();
+        qualityInfo.setType(1);
         qualityInfo.setCode(CodeEnum.QUALITY.getCode());
         qualityInfo.setLogisticsInfoId(logisticsInfoId);
         qualityInfo.setLogisticsInfoCode(logisticsInfo.getCode());
@@ -404,4 +403,84 @@ public class LogisticsInfoServiceImpl extends ServiceImpl<LogisticsInfoMapper, L
         return baseMapper.dataInfoPage(dto.getPage(), wrapper);
     }
 
+    @Override
+    public void jdBackAdd(JdBackAddDto dto) {
+
+        List<LogisticsDetails> logisticsDetailsList = dto.getLogisticsDetailsList();
+        Assert.notEmpty(logisticsDetailsList, "京东退货明细不能为空");
+
+        String code = dto.getCode();
+        String logisticsCompanyCode = dto.getLogisticsCompanyCode();
+
+        Integer state = null;
+        if (ObjectUtil.isAllNotEmpty(code, logisticsCompanyCode)) {
+            state = KD100Util.getStateAndMonitor(logisticsCompanyCode, code);
+        }
+
+        synchronized (this) {
+            String jdBackCode = CodeEnum.JD_BACK.getCode();
+
+            long id = IdWorker.getId();
+
+            int jdBackStatus = 1;
+            if (state != null) {
+                if (LogisticsConstant.KD100Status.STATUS_3.equals(state)) {
+                    addJdBackQuality(logisticsDetailsList, dto.getWarehouseId(), id);
+                    jdBackStatus = 3;
+                } else {
+                    jdBackStatus = 2;
+                }
+            }
+
+            LogisticsInfo logisticsInfo = new LogisticsInfo();
+            logisticsInfo.setId(id);
+            logisticsInfo.setBusinessId(null);
+            logisticsInfo.setBusinessType(4);
+            logisticsInfo.setWarehouseId(dto.getWarehouseId());
+            logisticsInfo.setJdBackCode(jdBackCode);
+            logisticsInfo.setJdBackStatus(jdBackStatus);
+            logisticsInfo.setJdBackOrderId(dto.getJdBackOrderId());
+            logisticsInfo.setCode(code);
+            logisticsInfo.setLogisticsCompanyCode(logisticsCompanyCode);
+            logisticsInfo.setLogisticsStatus(state);
+
+            for (LogisticsDetails logisticsDetails : logisticsDetailsList) {
+                logisticsDetails.setLogisticsInfoId(id);
+                logisticsDetails.setLogisticsInfoCode(code);
+                logisticsDetails.setReceiptQuantity(BigDecimal.ZERO);
+            }
+
+            save(logisticsInfo);
+            logisticsDetailsService.saveBatch(logisticsDetailsList);
+        }
+
+    }
+
+    @Override
+    public void addJdBackQuality(List<LogisticsDetails> logisticsDetailsList, Long warehouseId, Long logisticsInfoId) {
+        // 添加质检
+        QualityInfo qualityInfo = new QualityInfo();
+        qualityInfo.setType(2);
+        qualityInfo.setCode(CodeEnum.QUALITY.getCode());
+        qualityInfo.setStatus(QualityStatusEnum.STATUS_1.getKey());
+        qualityInfo.setResultType(StatusConstant.YES);
+        qualityInfoService.save(qualityInfo);
+
+        // 添加质检明细
+        List<QualityDetails> qualityDetailsList = logisticsDetailsList.stream().map(item -> {
+            QualityDetails qualityDetails = new QualityDetails();
+            qualityDetails.setQualityInfoId(qualityInfo.getId());
+            qualityDetails.setLogisticsDetailsId(logisticsInfoId);
+            qualityDetails.setProductInfoId(item.getJdBackProductId());
+            qualityDetails.setWarehouseId(warehouseId);
+            qualityDetails.setTotalQuantity(item.getShipmentQuantity());
+            qualityDetails.setQualifiedQuantity(BigDecimal.ZERO);
+            qualityDetails.setDisqualificationQuantity(BigDecimal.ZERO);
+            return qualityDetails;
+        }).collect(Collectors.toList());
+
+        qualityDetailsService.saveBatch(qualityDetailsList);
+    }
+
+
 }

+ 4 - 7
hx-service/victoriatourist/src/main/java/com/fjhx/service/quality/QualityInfoService.java

@@ -3,7 +3,10 @@ package com.fjhx.service.quality;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.base.BaseService;
 import com.fjhx.entity.quality.QualityInfo;
-import com.fjhx.params.quality.*;
+import com.fjhx.params.quality.GetDetailsListDto;
+import com.fjhx.params.quality.QualityDetailsVo;
+import com.fjhx.params.quality.QualityInfoPageDto;
+import com.fjhx.params.quality.QualityInfoPageVo;
 
 import java.util.List;
 
@@ -19,12 +22,6 @@ public interface QualityInfoService extends BaseService<QualityInfo> {
 
     Page<QualityInfoPageVo> getPage(QualityInfoPageDto dto);
 
-    void add(QualityInfoVo qualityInfoVo);
-
-    void edit(QualityInfoVo qualityInfoVo);
-
-    void delete(QualityInfoVo qualityInfoVo);
-
     List<QualityDetailsVo> getDetailsList(GetDetailsListDto dto);
 
 }

+ 0 - 15
hx-service/victoriatourist/src/main/java/com/fjhx/service/quality/impl/QualityInfoServiceImpl.java

@@ -63,21 +63,6 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
     }
 
     @Override
-    public void add(QualityInfoVo qualityInfoVo) {
-        save(qualityInfoVo);
-    }
-
-    @Override
-    public void edit(QualityInfoVo qualityInfoVo) {
-        updateById(qualityInfoVo);
-    }
-
-    @Override
-    public void delete(QualityInfoVo qualityInfoVo) {
-        removeById(qualityInfoVo.getId());
-    }
-
-    @Override
     public List<QualityDetailsVo> getDetailsList(GetDetailsListDto dto) {
         List<QualityDetails> list = qualityDetailsService.list(q -> q.eq(QualityDetails::getQualityInfoId, dto.getQualityInfoId()));
 

+ 3 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/uitl/code/CodeEnum.java

@@ -9,6 +9,7 @@ import com.fjhx.service.apply.ApplyPurchaseService;
 import com.fjhx.service.check.CheckInfoService;
 import com.fjhx.service.customer.CustomerInfoService;
 import com.fjhx.service.form.FormOverflowLossService;
+import com.fjhx.service.logistics.LogisticsInfoService;
 import com.fjhx.service.order.OrderInfoService;
 import com.fjhx.service.product.ProductInfoService;
 import com.fjhx.service.product.ProductSpuService;
@@ -45,6 +46,8 @@ public enum CodeEnum {
     ORDER_SALES("SO", null, "code", 5, OrderInfoService.class),
     // 京东订单
     ORDER_JD("JD", null, "code", 5, OrderInfoService.class),
+    // 京东退货单号
+    JD_BACK("JB", null, "jdBackCode", 5, LogisticsInfoService.class),
 
     // 销售出库流水单号
     S_OUT_JOURNAL("SO", "yyyyMM-", "code", 5, StockJournalService.class),

+ 1 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/uitl/kd100/KD100Util.java

@@ -80,10 +80,10 @@ public class KD100Util {
                 // 如果不是已签收状态,则开启订阅(物流状态跟踪并推送)
                 KD100Util.subscribe(com, num);
             }
+            return state;
         } else {
             throw new ServiceException("快递100异常:" + message);
         }
-        return result.getState();
     }
 
     /**