소스 검색

维多利亚

24282 2 년 전
부모
커밋
7d76f0adf2

+ 5 - 0
hx-common/common-tool/src/main/java/com/fjhx/base/BaseSelectDto.java

@@ -17,6 +17,11 @@ public class BaseSelectDto implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**
+     * 查询id
+     */
+    private Long id;
+
+    /**
      * 页数
      */
     private Integer pageNum;

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

@@ -59,6 +59,11 @@ public class LogisticsInfo extends BaseEntity {
     private Long jdBackOrderId;
 
     /**
+     * 京东退货 关联京东订单code
+     */
+    private Long jdBackOrderCode;
+
+    /**
      * 采购进货完成状态:0、未完成 / 未到货;1、已完成 / 已到货
      */
     private Integer status;

+ 5 - 5
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/product/ProductInfo.java

@@ -33,6 +33,11 @@ public class ProductInfo extends BaseEntity {
     private String code;
 
     /**
+     * 产品名称
+     */
+    private String name;
+
+    /**
      * spuId
      */
     private Long productSpuId;
@@ -43,11 +48,6 @@ public class ProductInfo extends BaseEntity {
     private Long deptId;
 
     /**
-     * 产品名称
-     */
-    private String name;
-
-    /**
      * 产品分类
      */
     private Long classifyId;

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

@@ -0,0 +1,15 @@
+package com.fjhx.params.logistics;
+
+import com.fjhx.entity.logistics.LogisticsInfo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class JdBackDetailsVo extends LogisticsInfo {
+
+    private List<LogisticsDetailsEx> logisticsDetailsList;
+
+}

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

@@ -0,0 +1,13 @@
+package com.fjhx.params.logistics;
+
+import com.fjhx.base.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class JdBackPageDto extends BaseSelectDto {
+
+
+
+}

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

@@ -0,0 +1,84 @@
+package com.fjhx.params.logistics;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+@Getter
+@Setter
+public class JdBackPageVo {
+
+    /**
+     * 订单编号
+     *
+     * @table logistics_info
+     * @field id
+     */
+    private Long id;
+
+    /**
+     * 订单编号
+     *
+     * @table logistics_info
+     * @field jd_back_order_code
+     */
+    private String jdBackOrderCode;
+
+    /**
+     * 退货时间
+     *
+     * @table logistics_info
+     * @field create_time
+     */
+    private Date createTime;
+
+    /**
+     * 京东退货状态 1新建 2运输中 3待质检 4已完成
+     *
+     * @table logistics_info
+     * @field jd_back_status
+     */
+    private Integer jdBackStatus;
+
+    /**
+     * 物流单号
+     *
+     * @table logistics_info
+     * @field code
+     */
+    private String code;
+
+    /**
+     * 物流公司编码
+     *
+     * @table logistics_info
+     * @field logistics_company_code
+     */
+    private String logisticsCompanyCode;
+
+    /**
+     * 仓库id
+     *
+     * @table warehouse
+     * @field id
+     */
+    private Long warehouseId;
+
+    /**
+     * 仓库名称
+     *
+     * @table warehouse
+     * @field name
+     */
+    private String warehouseName;
+
+    /**
+     * 物流公司名称
+     *
+     * @table logistics_company
+     * @field name
+     */
+    private String companyName;
+
+}

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

@@ -14,4 +14,24 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class LogisticsDetailsEx extends LogisticsDetails {
 
+    /**
+     * 产品编码
+     */
+    private String productCode;
+
+    /**
+     * 产品名称
+     */
+    private String productName;
+
+    /**
+     * 产品分类
+     */
+    private Long classifyId;
+
+    /**
+     * 产品分类
+     */
+    private String classifyName;
+
 }

+ 45 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/controller/logistics/JdBackController.java

@@ -1,9 +1,15 @@
 package com.fjhx.controller.logistics;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.BaseSelectDto;
 import com.fjhx.params.logistics.JdBackAddDto;
+import com.fjhx.params.logistics.JdBackDetailsVo;
+import com.fjhx.params.logistics.JdBackPageDto;
+import com.fjhx.params.logistics.JdBackPageVo;
 import com.fjhx.service.logistics.LogisticsInfoService;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -19,11 +25,49 @@ public class JdBackController {
     @Autowired
     private LogisticsInfoService logisticsInfoService;
 
+    /**
+     * 京东退货分页
+     */
+    @PostMapping("/page")
+    public R page(@RequestBody JdBackPageDto dto) {
+        Page<JdBackPageVo> result = logisticsInfoService.jdBackPage(dto);
+        return R.success(result);
+    }
+
+    /**
+     * 京东退货明细
+     */
+    @PostMapping("/details")
+    public R details(@RequestBody BaseSelectDto dto) {
+        JdBackDetailsVo result = logisticsInfoService.jdBackDetails(dto.getId());
+        return R.success(result);
+    }
+
+    /**
+     * 京东退货添加
+     */
     @PostMapping("/add")
-    public R page(@RequestBody JdBackAddDto dto) {
+    public R add(@Validated @RequestBody JdBackAddDto dto) {
         logisticsInfoService.jdBackAdd(dto);
         return R.success();
     }
 
+    /**
+     * 京东退货添加
+     */
+    @PostMapping("/edit")
+    public R edit(@Validated @RequestBody JdBackAddDto dto) {
+        logisticsInfoService.jdBackEdit(dto);
+        return R.success();
+    }
+
+    /**
+     * 京东退货添加
+     */
+    @PostMapping("/delete")
+    public R delete(@Validated @RequestBody BaseSelectDto dto) {
+        logisticsInfoService.jdBackDelete(dto.getId());
+        return R.success();
+    }
 
 }

+ 3 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/logistics/LogisticsInfoMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.logistics.LogisticsInfo;
 import com.fjhx.params.logistics.DataInfoPageVo;
+import com.fjhx.params.logistics.JdBackPageVo;
 import com.fjhx.utils.wrapperUtil.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -28,4 +29,6 @@ public interface LogisticsInfoMapper extends BaseMapper<LogisticsInfo> {
 
     Page<DataInfoPageVo> dataInfoPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
 
+    Page<JdBackPageVo> jdBackPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
+
 }

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

@@ -38,4 +38,20 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="jdBackPage" resultType="com.fjhx.params.logistics.JdBackPageVo">
+        select li.id,
+               li.jd_back_order_code,
+               li.create_time,
+               li.jd_back_status,
+               w.name  warehouseName,
+               w.id    warehouseId,
+               li.code,
+               li.logistics_company_code,
+               lc.name companyName
+        from logistics_info li
+                 left join warehouse w on li.warehouse_id = w.id
+                 left join logistics_company lc on li.logistics_company_code = lc.code
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 20 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/LogisticsInfoService.java

@@ -85,11 +85,31 @@ public interface LogisticsInfoService extends BaseService<LogisticsInfo> {
     Page<DataInfoPageVo> dataInfoPage(DataInfoPageDto dto);
 
     /**
+     * 京东退货分页
+     */
+    Page<JdBackPageVo> jdBackPage(JdBackPageDto dto);
+
+    /**
+     * 京东退货明细
+     */
+    JdBackDetailsVo jdBackDetails(Long id);
+
+    /**
      * 京东退货添加
      */
     void jdBackAdd(JdBackAddDto dto);
 
     /**
+     * 京东退货编辑
+     */
+    void jdBackEdit(JdBackAddDto dto);
+
+    /**
+     * 删除京东退货
+     */
+    void jdBackDelete(Long id);
+
+    /**
      * 京东退货添加到货质检
      */
     void addJdBackQuality(List<LogisticsDetails> logisticsDetailsList, Long warehouseId, Long logisticsInfoId);

+ 105 - 13
hx-service/victoriatourist/src/main/java/com/fjhx/service/logistics/impl/LogisticsInfoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fjhx.service.logistics.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -23,6 +24,7 @@ import com.fjhx.params.logistics.*;
 import com.fjhx.params.stock.InStockAdd;
 import com.fjhx.params.stock.StockChangeDto;
 import com.fjhx.service.apply.ApplyPurchaseService;
+import com.fjhx.service.classify.ClassifyService;
 import com.fjhx.service.logistics.LogisticsDetailsService;
 import com.fjhx.service.logistics.LogisticsInfoService;
 import com.fjhx.service.product.ProductInfoService;
@@ -82,6 +84,9 @@ public class LogisticsInfoServiceImpl extends ServiceImpl<LogisticsInfoMapper, L
     @Autowired
     private QualityDetailsService qualityDetailsService;
 
+    @Autowired
+    private ClassifyService classifyService;
+
     @Override
     public Page<LogisticsInfo> getPage(Map<String, Object> condition) {
 
@@ -404,6 +409,42 @@ public class LogisticsInfoServiceImpl extends ServiceImpl<LogisticsInfoMapper, L
     }
 
     @Override
+    public Page<JdBackPageVo> jdBackPage(JdBackPageDto dto) {
+        IWrapper<Object> wrapper = IWrapper.getWrapper(dto)
+                .keyword(new KeywordData("pi", ProductInfo::getName),
+                        new KeywordData("pi", ProductInfo::getCode),
+                        new KeywordData("li", LogisticsInfo::getJdBackOrderId));
+
+        return baseMapper.jdBackPage(dto.getPage(), wrapper);
+    }
+
+    @Override
+    public JdBackDetailsVo jdBackDetails(Long id) {
+
+        LogisticsInfo logisticsInfo = getById(id);
+
+        List<LogisticsDetails> list = logisticsDetailsService.list(q -> q.eq(LogisticsDetails::getLogisticsInfoId, id));
+        List<LogisticsDetailsEx> logisticsDetailsExList = BeanUtil.copyToList(list, LogisticsDetailsEx.class);
+
+        // 赋值产品编码、名称
+        productInfoService.attributeAssign(logisticsDetailsExList, LogisticsDetails::getJdBackProductId, (item, productInfo) -> {
+            item.setProductName(productInfo.getName());
+            item.setProductCode(productInfo.getCode());
+            item.setClassifyId(productInfo.getClassifyId());
+        });
+
+        // 赋值产品分类
+        classifyService.attributeAssign(logisticsDetailsExList, LogisticsDetailsEx::getClassifyId, (item, classify) -> {
+            item.setClassifyName(classify.getName());
+        });
+
+        JdBackDetailsVo jdBackDetailsVo = BeanUtil.toBean(logisticsInfo, JdBackDetailsVo.class);
+        jdBackDetailsVo.setLogisticsDetailsList(logisticsDetailsExList);
+        return jdBackDetailsVo;
+    }
+
+    @Transactional(rollbackFor = {Exception.class})
+    @Override
     public void jdBackAdd(JdBackAddDto dto) {
 
         List<LogisticsDetails> logisticsDetailsList = dto.getLogisticsDetailsList();
@@ -432,17 +473,12 @@ public class LogisticsInfoServiceImpl extends ServiceImpl<LogisticsInfoMapper, L
                 }
             }
 
-            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);
+            dto.setId(id);
+            dto.setBusinessId(null);
+            dto.setBusinessType(4);
+            dto.setJdBackCode(jdBackCode);
+            dto.setJdBackStatus(jdBackStatus);
+            dto.setLogisticsStatus(state);
 
             for (LogisticsDetails logisticsDetails : logisticsDetailsList) {
                 logisticsDetails.setLogisticsInfoId(id);
@@ -450,12 +486,68 @@ public class LogisticsInfoServiceImpl extends ServiceImpl<LogisticsInfoMapper, L
                 logisticsDetails.setReceiptQuantity(BigDecimal.ZERO);
             }
 
-            save(logisticsInfo);
+            save(dto);
             logisticsDetailsService.saveBatch(logisticsDetailsList);
         }
 
     }
 
+    @Transactional(rollbackFor = {Exception.class})
+    @Override
+    public void jdBackEdit(JdBackAddDto dto) {
+
+        List<LogisticsDetails> logisticsDetailsList = dto.getLogisticsDetailsList();
+        Assert.notEmpty(logisticsDetailsList, "京东退货明细不能为空");
+
+        LogisticsInfo logisticsInfo = getById(dto.getId());
+        Assert.eqTrue(ObjectUtil.isAllNotEmpty(logisticsInfo.getCode(), logisticsInfo.getLogisticsCompanyCode()), "退货已发起,无法编辑");
+
+        String code = dto.getCode();
+        String logisticsCompanyCode = dto.getLogisticsCompanyCode();
+        Integer state = null;
+        if (ObjectUtil.isAllNotEmpty(code, logisticsCompanyCode)) {
+            state = KD100Util.getStateAndMonitor(logisticsCompanyCode, code);
+        }
+
+        synchronized (this) {
+
+            int jdBackStatus = 1;
+            if (state != null) {
+                if (LogisticsConstant.KD100Status.STATUS_3.equals(state)) {
+                    addJdBackQuality(logisticsDetailsList, dto.getWarehouseId(), dto.getId());
+                    jdBackStatus = 3;
+                } else {
+                    jdBackStatus = 2;
+                }
+            }
+            dto.setJdBackStatus(jdBackStatus);
+            dto.setLogisticsStatus(state);
+
+            for (LogisticsDetails logisticsDetails : logisticsDetailsList) {
+                logisticsDetails.setLogisticsInfoId(dto.getId());
+                logisticsDetails.setLogisticsInfoCode(code);
+                logisticsDetails.setReceiptQuantity(BigDecimal.ZERO);
+            }
+
+            updateById(dto);
+            List<Long> notDeleteId = logisticsDetailsList.stream().map(BaseIdEntity::getId).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
+            if (notDeleteId.size() > 0) {
+                logisticsDetailsService.remove(q -> q.eq(LogisticsDetails::getLogisticsInfoId, dto.getId()).notIn(BaseIdEntity::getId, notDeleteId));
+            }
+            logisticsDetailsService.saveOrUpdateBatch(logisticsDetailsList);
+        }
+
+    }
+
+    @Override
+    public void jdBackDelete(Long id) {
+        LogisticsInfo logisticsInfo = getById(id);
+        Assert.eqTrue(ObjectUtil.isAllNotEmpty(logisticsInfo.getCode(), logisticsInfo.getLogisticsCompanyCode()), "退货已发起,无法删除");
+
+        removeById(id);
+        logisticsDetailsService.remove(LogisticsDetails::getLogisticsInfoId, id);
+    }
+
     @Override
     public void addJdBackQuality(List<LogisticsDetails> logisticsDetailsList, Long warehouseId, Long logisticsInfoId) {
         // 添加质检
@@ -480,7 +572,7 @@ public class LogisticsInfoServiceImpl extends ServiceImpl<LogisticsInfoMapper, L
         }).collect(Collectors.toList());
 
         qualityDetailsService.saveBatch(qualityDetailsList);
-    }
 
+    }
 
 }

+ 2 - 2
hx-service/victoriatourist/src/main/java/com/fjhx/task/ScheduleTaskController.java

@@ -30,7 +30,7 @@ public class ScheduleTaskController {
     /**
      * 定时查询快递
      */
-    @Scheduled(cron = "0 0 0/2 * * ?")
+    @Scheduled(cron = "0 0 1 * * ?")
     private void stockAcceptActionTask() {
         if (BladeApplication.isLocalDev()) {
             return;
@@ -38,7 +38,7 @@ public class ScheduleTaskController {
 
         List<LogisticsInfo> list = logisticsInfoService.list(q -> q
                 .eq(LogisticsInfo::getLogisticsStatus, LogisticsConstant.KD100Status.STATUS_N)
-                .le(BaseEntity::getCreateTime, DateUtil.offsetDay(new Date(), 1))
+                .ge(BaseEntity::getCreateTime, DateUtil.offsetDay(new Date(), -1))
         );
 
         if (list.size() == 0) {

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

@@ -47,7 +47,7 @@ public enum CodeEnum {
     // 京东订单
     ORDER_JD("JD", null, "code", 5, OrderInfoService.class),
     // 京东退货单号
-    JD_BACK("JB", null, "jdBackCode", 5, LogisticsInfoService.class),
+    JD_BACK("JB", null, "jd_back_code", 5, LogisticsInfoService.class),
 
     // 销售出库流水单号
     S_OUT_JOURNAL("SO", "yyyyMM-", "code", 5, StockJournalService.class),