瀏覽代碼

京东退货

yzc 2 年之前
父節點
當前提交
81f5a59cff
共有 20 個文件被更改,包括 831 次插入2 次删除
  1. 77 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdBackController.java
  2. 19 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdBackDetailsController.java
  3. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdBackDetailsDto.java
  4. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdBackDetailsSelectDto.java
  5. 35 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdBackDto.java
  6. 27 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdBackSelectDto.java
  7. 47 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdBack.java
  8. 95 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdBackDetails.java
  9. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdBackDetailsVo.java
  10. 44 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdBackVo.java
  11. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/jd/JdBackDetailsMapper.java
  12. 26 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/jd/JdBackMapper.java
  13. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdBackDetailsService.java
  14. 51 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdBackService.java
  15. 21 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdBackDetailsServiceImpl.java
  16. 263 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdBackServiceImpl.java
  17. 4 0
      hx-victoriatourist/src/main/resources/mapper/jd/JdBackDetailsMapper.xml
  18. 24 0
      hx-victoriatourist/src/main/resources/mapper/jd/JdBackMapper.xml
  19. 6 1
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/emums/InOutType.java
  20. 7 1
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/emums/JournalType.java

+ 77 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdBackController.java

@@ -0,0 +1,77 @@
+package com.fjhx.victoriatourist.controller.jd;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.jd.dto.JdBackDto;
+import com.fjhx.victoriatourist.entity.jd.dto.JdBackSelectDto;
+import com.fjhx.victoriatourist.entity.jd.vo.JdBackVo;
+import com.fjhx.victoriatourist.service.jd.JdBackService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+
+/**
+ * <p>
+ * 京东退货 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-04-18
+ */
+@RestController
+@RequestMapping("/jdBack")
+public class JdBackController {
+
+    @Autowired
+    private JdBackService jdBackService;
+
+    /**
+     * 京东退货分页
+     */
+    @PostMapping("/page")
+    public Page<JdBackVo> page(@RequestBody JdBackSelectDto dto) {
+        return jdBackService.getPage(dto);
+    }
+
+    /**
+     * 京东退货明细
+     */
+    @PostMapping("/detail")
+    public JdBackVo detail(@RequestBody BaseSelectDto dto) {
+        return jdBackService.detail(dto.getId());
+    }
+
+    /**
+     * 京东退货新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody JdBackDto jdBackDto) {
+        jdBackService.add(jdBackDto);
+    }
+
+    /**
+     * 京东退货编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody JdBackDto jdBackDto) {
+        jdBackService.edit(jdBackDto);
+    }
+
+    /**
+     * 京东退货删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        jdBackService.delete(dto.getId());
+    }
+
+    /**
+     * 京东退货Excel导入
+     */
+    @PostMapping("/excelImport")
+    public void excelImport(@RequestParam("file") MultipartFile file, @RequestParam("warehouseId") Long warehouseId) {
+        jdBackService.excelImport(file, warehouseId);
+    }
+
+}

+ 19 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdBackDetailsController.java

@@ -0,0 +1,19 @@
+package com.fjhx.victoriatourist.controller.jd;
+
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * <p>
+ * 京东退货明细 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-18
+ */
+@RestController
+@RequestMapping("/jdBackDetails")
+public class JdBackDetailsController {
+
+
+}

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdBackDetailsDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.entity.jd.dto;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdBackDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 京东退货明细新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-18
+ */
+@Getter
+@Setter
+public class JdBackDetailsDto extends JdBackDetails {
+
+}

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdBackDetailsSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.entity.jd.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 京东退货明细列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-18
+ */
+@Getter
+@Setter
+public class JdBackDetailsSelectDto extends BaseSelectDto {
+
+}

+ 35 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdBackDto.java

@@ -0,0 +1,35 @@
+package com.fjhx.victoriatourist.entity.jd.dto;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdBack;
+import com.fjhx.victoriatourist.entity.jd.po.JdBackDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 京东退货新增编辑入参实体
+ *
+ * @author
+ * @since 2023-04-18
+ */
+@Getter
+@Setter
+public class JdBackDto extends JdBack {
+
+    /**
+     * 物流公司编号
+     */
+    private String logisticsCompanyCode;
+
+    /**
+     * 物流单号
+     */
+    private String logisticsCode;
+
+    /**
+     * 京东退货明细列表
+     */
+    private List<JdBackDetails> jdBackDetailsList;
+
+}

+ 27 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdBackSelectDto.java

@@ -0,0 +1,27 @@
+package com.fjhx.victoriatourist.entity.jd.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 京东退货列表查询入参实体
+ *
+ * @author
+ * @since 2023-04-18
+ */
+@Getter
+@Setter
+public class JdBackSelectDto extends BaseSelectDto {
+
+    /**
+     * 退货来源
+     */
+    private Integer type;
+
+    /**
+     * 退货状态
+     */
+    private Integer status;
+
+}

+ 47 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdBack.java

@@ -0,0 +1,47 @@
+package com.fjhx.victoriatourist.entity.jd.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 京东退货
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-18
+ */
+@Getter
+@Setter
+@TableName("jd_back")
+public class JdBack extends BasePo {
+
+    /**
+     * 来源类型 1手动创建 2批量导入
+     */
+    private Integer type;
+
+    /**
+     * 退货状态 1新建 2运输中 3待质检
+     */
+    private Integer status;
+
+    /**
+     * 运单号
+     */
+    private String waybill;
+
+    /**
+     * 仓库id
+     */
+    private Long warehouseId;
+
+    /**
+     * 批次标记
+     */
+    private Long batchFlag;
+
+}

+ 95 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdBackDetails.java

@@ -0,0 +1,95 @@
+package com.fjhx.victoriatourist.entity.jd.po;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 京东退货明细
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-18
+ */
+@Getter
+@Setter
+@TableName("jd_back_details")
+@ExcelIgnoreUnannotated
+public class JdBackDetails extends BasePo {
+
+    /**
+     * 京东退货id
+     */
+    private Long jdBackId;
+
+    /**
+     * 退货单号
+     */
+    @ExcelProperty("退货单号")
+    private String backCode;
+
+    /**
+     * 申请时间
+     */
+    @ExcelProperty("申请时间")
+    private Date applicationTime;
+
+    /**
+     * 备件条码
+     */
+    @ExcelProperty("备件条码")
+    private String spareParts;
+
+    /**
+     * upc码
+     */
+    @ExcelProperty("UPC码")
+    private String upcCode;
+
+    /**
+     * 商品编号\产品code
+     */
+    @ExcelProperty("商品编号")
+    private String productCode;
+
+    /**
+     * 商品名称
+     */
+    @ExcelProperty("商品名称")
+    private String productName;
+
+    /**
+     * 退货数量
+     */
+    private Long quantity;
+
+    /**
+     * 备件库
+     */
+    @ExcelProperty("备件库")
+    private String sparePartsStore;
+
+    /**
+     * 运单号
+     */
+    @ExcelProperty("运单号")
+    private String waybill;
+
+    /**
+     * 确认到货时间
+     */
+    @ExcelProperty("确认收货时间")
+    private Date arrivalTime;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty("备注")
+    private String remark;
+
+}

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdBackDetailsVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.entity.jd.vo;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdBackDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 京东退货明细列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-18
+ */
+@Getter
+@Setter
+public class JdBackDetailsVo extends JdBackDetails {
+
+}

+ 44 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdBackVo.java

@@ -0,0 +1,44 @@
+package com.fjhx.victoriatourist.entity.jd.vo;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdBack;
+import com.fjhx.victoriatourist.entity.jd.po.JdBackDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 京东退货列表查询返回值实体
+ *
+ * @author
+ * @since 2023-04-18
+ */
+@Getter
+@Setter
+public class JdBackVo extends JdBack {
+    /**
+     * 物流公司编号
+     */
+    private String logisticsCompanyCode;
+
+    /**
+     * 物流公司名称
+     */
+    private String logisticsCompanyName;
+
+    /**
+     * 物流单号
+     */
+    private String logisticsCode;
+
+    /**
+     * 仓库名称
+     */
+    private String warehouseName;
+
+    /**
+     * 京东退货明细列表
+     */
+    private List<JdBackDetails> jdBackDetailsList;
+
+}

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/jd/JdBackDetailsMapper.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.mapper.jd;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdBackDetails;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * <p>
+ * 京东退货明细 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-18
+ */
+public interface JdBackDetailsMapper extends BaseMapper<JdBackDetails> {
+
+}

+ 26 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/jd/JdBackMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.victoriatourist.mapper.jd;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdBack;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.jd.vo.JdBackVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 京东退货 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-18
+ */
+public interface JdBackMapper extends BaseMapper<JdBack> {
+
+    /**
+     * 京东退货分页
+     */
+    Page<JdBackVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<JdBack> wrapper);
+
+}

+ 17 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdBackDetailsService.java

@@ -0,0 +1,17 @@
+package com.fjhx.victoriatourist.service.jd;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdBackDetails;
+import com.ruoyi.common.core.service.BaseService;
+
+
+/**
+ * <p>
+ * 京东退货明细 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-18
+ */
+public interface JdBackDetailsService extends BaseService<JdBackDetails> {
+
+}

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

@@ -0,0 +1,51 @@
+package com.fjhx.victoriatourist.service.jd;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.jd.dto.JdBackDto;
+import com.fjhx.victoriatourist.entity.jd.dto.JdBackSelectDto;
+import com.fjhx.victoriatourist.entity.jd.po.JdBack;
+import com.fjhx.victoriatourist.entity.jd.vo.JdBackVo;
+import com.ruoyi.common.core.service.BaseService;
+import org.springframework.web.multipart.MultipartFile;
+
+
+/**
+ * <p>
+ * 京东退货 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-18
+ */
+public interface JdBackService extends BaseService<JdBack> {
+
+    /**
+     * 京东退货分页
+     */
+    Page<JdBackVo> getPage(JdBackSelectDto dto);
+
+    /**
+     * 京东退货明细
+     */
+    JdBackVo detail(Long id);
+
+    /**
+     * 京东退货新增
+     */
+    void add(JdBackDto jdBackDto);
+
+    /**
+     * 京东退货编辑
+     */
+    void edit(JdBackDto jdBackDto);
+
+    /**
+     * 京东退货删除
+     */
+    void delete(Long id);
+
+    /**
+     * 京东退货EXCEl导入
+     */
+    void excelImport(MultipartFile file, Long warehouseId);
+}

+ 21 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdBackDetailsServiceImpl.java

@@ -0,0 +1,21 @@
+package com.fjhx.victoriatourist.service.jd.impl;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdBackDetails;
+import com.fjhx.victoriatourist.mapper.jd.JdBackDetailsMapper;
+import com.fjhx.victoriatourist.service.jd.JdBackDetailsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 京东退货明细 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-18
+ */
+@Service
+public class JdBackDetailsServiceImpl extends ServiceImpl<JdBackDetailsMapper, JdBackDetails> implements JdBackDetailsService {
+
+}

+ 263 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdBackServiceImpl.java

@@ -0,0 +1,263 @@
+package com.fjhx.victoriatourist.service.jd.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+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.constant.SourceConstant;
+import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.item.util.excel.util.ExcelUtil;
+import com.fjhx.kd100.entity.company.po.CompanyInfo;
+import com.fjhx.kd100.service.company.CompanyInfoService;
+import com.fjhx.victoriatourist.entity.jd.dto.JdBackDto;
+import com.fjhx.victoriatourist.entity.jd.dto.JdBackSelectDto;
+import com.fjhx.victoriatourist.entity.jd.po.JdBack;
+import com.fjhx.victoriatourist.entity.jd.po.JdBackDetails;
+import com.fjhx.victoriatourist.entity.jd.vo.JdBackVo;
+import com.fjhx.victoriatourist.entity.logistics.po.LogisticsInfos;
+import com.fjhx.victoriatourist.mapper.jd.JdBackMapper;
+import com.fjhx.victoriatourist.service.jd.JdBackDetailsService;
+import com.fjhx.victoriatourist.service.jd.JdBackService;
+import com.fjhx.victoriatourist.service.logistics.LogisticsInfosService;
+import com.fjhx.wms.entity.warehouse.po.Warehouse;
+import com.fjhx.wms.service.warehouse.WarehouseService;
+import com.obs.services.internal.ServiceException;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.StringJoiner;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 京东退货 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-18
+ */
+@Service
+public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> implements JdBackService {
+    @Autowired
+    WarehouseService warehouseService;
+    @Autowired
+    CompanyInfoService companyInfoService;
+    @Autowired
+    LogisticsInfosService logisticsInfosService;
+    @Autowired
+    JdBackDetailsService jdBackDetailsService;
+    @Autowired
+    ProductInfoService productInfoService;
+
+    @Override
+    public Page<JdBackVo> getPage(JdBackSelectDto dto) {
+        IWrapper<JdBack> wrapper = getWrapper();
+        wrapper.like(JdBackVo::getLogisticsCode, dto.getKeyword());
+        wrapper.eq(JdBackVo::getType,dto.getType());
+        wrapper.eq(JdBackVo::getStatus,dto.getStatus());
+        wrapper.orderByDesc("jb", JdBack::getId);
+        Page<JdBackVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<JdBackVo> records = page.getRecords();
+        if (ObjectUtil.isEmpty(records)) {
+            return page;
+        }
+        //赋值仓库名称
+        warehouseService.attributeAssign(records, JdBackVo::getWarehouseId, (item, warehouse) -> {
+            item.setWarehouseName(warehouse.getName());
+        });
+        //赋值物流公司名称
+        List<String> companyCode = records.stream().map(JdBackVo::getLogisticsCompanyCode).collect(Collectors.toList());
+        List<CompanyInfo> companyInfoList = companyInfoService.list(q -> q.in(CompanyInfo::getCode, companyCode));
+        Map<String, String> companyInfoMap = companyInfoList.stream().collect(Collectors.toMap(CompanyInfo::getCode, CompanyInfo::getName));
+        for (JdBackVo record : records) {
+            record.setLogisticsCompanyName(companyInfoMap.get(record.getLogisticsCompanyCode()));
+        }
+        return page;
+    }
+
+    @Override
+    public JdBackVo detail(Long id) {
+        JdBack JdBack = this.getById(id);
+        JdBackVo result = BeanUtil.toBean(JdBack, JdBackVo.class);
+        //赋值物流信息
+        LogisticsInfos logisticsInfos = logisticsInfosService.getOne(q -> q.eq(LogisticsInfos::getBusinessId, result.getId()));
+        if(ObjectUtil.isNotEmpty(logisticsInfos)) {
+            result.setLogisticsCompanyCode(logisticsInfos.getLogisticsCompanyCode());
+            result.setLogisticsCode(logisticsInfos.getCode());
+        }
+        //赋值仓库名称
+        Warehouse warehouse = warehouseService.getById(result.getWarehouseId());
+        if(ObjectUtil.isNotEmpty(warehouse)){
+            result.setWarehouseName(warehouse.getName());
+        }
+        //赋值物流公司名称
+        CompanyInfo companyInfo = companyInfoService.getOne(q -> q.eq(CompanyInfo::getCode, result.getLogisticsCompanyCode()));
+        if(ObjectUtil.isNotEmpty(companyInfo)){
+            result.setLogisticsCompanyName(companyInfo.getName());
+        }
+        //赋值退货明细
+        List<JdBackDetails> jdBackDetailsList = jdBackDetailsService.list(q -> q.eq(JdBackDetails::getJdBackId, id));
+        result.setJdBackDetailsList(jdBackDetailsList);
+        return result;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(JdBackDto jdBackDto) {
+        jdBackDto.setType(1);
+        jdBackDto.setStatus(1);
+        this.save(jdBackDto);
+        //创建物流信息
+        LogisticsInfos logisticsInfos = new LogisticsInfos();
+        logisticsInfos.setLogisticsStatus(4);
+        logisticsInfos.setStatus(0);
+        logisticsInfos.setInStockStatus(10);
+        logisticsInfos.setBusinessId(jdBackDto.getId());
+        logisticsInfos.setWarehouseId(jdBackDto.getWarehouseId());
+        logisticsInfos.setLogisticsCompanyCode(jdBackDto.getLogisticsCompanyCode());
+        logisticsInfos.setCode(jdBackDto.getLogisticsCode());
+        logisticsInfosService.save(logisticsInfos);
+        //创建退货明细
+        List<JdBackDetails> jdBackDetailsList = jdBackDto.getJdBackDetailsList();
+        if(ObjectUtil.isNotEmpty(jdBackDetailsList)) {
+            for (JdBackDetails jdBackDetails : jdBackDetailsList) {
+                jdBackDetails.setJdBackId(jdBackDto.getId());
+            }
+            jdBackDetailsService.saveBatch(jdBackDetailsList);
+        }
+
+//        //创建质检信息
+//        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);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(JdBackDto jdBackDto) {
+        this.updateById(jdBackDto);
+        //更新物流信息
+        LogisticsInfos logisticsInfos = logisticsInfosService.getOne(q -> q.eq(LogisticsInfos::getBusinessId, jdBackDto.getId()));
+        logisticsInfos.setLogisticsCompanyCode(jdBackDto.getLogisticsCompanyCode());
+        logisticsInfos.setCode(jdBackDto.getLogisticsCode());
+        logisticsInfosService.updateById(logisticsInfos);
+        //更新退货明细
+        List<JdBackDetails> jdBackDetailsList = jdBackDto.getJdBackDetailsList();
+        if(ObjectUtil.isEmpty(jdBackDetailsList)){
+            return;
+        }
+        //处理删除部分
+        List<Long> jdBackDetailsIds = jdBackDetailsList.stream().filter(item -> item.getId() != null).map(JdBackDetails::getId).collect(Collectors.toList());
+        jdBackDetailsService.remove(q->q.eq(JdBackDetails::getJdBackId,jdBackDto.getId()).notIn(JdBackDetails::getId,jdBackDetailsIds));
+        //处理新增部分
+        for (JdBackDetails jdBackDetails : jdBackDetailsList) {
+            jdBackDetails.setJdBackId(jdBackDto.getId());
+        }
+        jdBackDetailsService.saveOrUpdateBatch(jdBackDetailsList);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+    @DSTransactional
+    @Override
+    public void excelImport(MultipartFile file, Long warehouseId) {
+        long batchFlag = IdWorker.getId();
+
+        // 读取excel数据
+        List<JdBackDetails> jdBackDetailsList = ExcelUtil.read(file, JdBackDetails.class);
+
+        if (jdBackDetailsList.size() == 0) {
+            return;
+        }
+
+        List<String> productCodeString = jdBackDetailsList.stream().map(JdBackDetails::getProductCode).distinct().collect(Collectors.toList());
+        List<String> list = productInfoService.listObject(ProductInfo::getCode, q -> q.in(ProductInfo::getCode, productCodeString));
+        StringJoiner stringJoiner = new StringJoiner(",");
+        if (list.size() < productCodeString.size()) {
+            productCodeString.forEach(item -> {
+                if (!list.contains(item)) {
+                    stringJoiner.add(item);
+                }
+            });
+            throw new ServiceException("物品编码不存在:" + stringJoiner);
+        }
+
+
+        // 按运单号分组
+        Map<String, List<JdBackDetails>> byWaybillMap = jdBackDetailsList.stream()
+                .collect(Collectors.groupingBy(JdBackDetails::getWaybill));
+
+        List<JdBack> jdBackList = new ArrayList<>();
+        byWaybillMap.forEach((k, v) -> {
+            Long id = IdWorker.getId();
+
+            JdBack jdBack = new JdBack();
+            jdBack.setId(id);
+            jdBack.setWaybill(k);
+            jdBack.setWarehouseId(warehouseId);
+            jdBack.setBatchFlag(batchFlag);
+            jdBack.setType(2);//设置类型批量导入
+            jdBack.setStatus(3);//设置状态待质检
+            jdBackList.add(jdBack);
+
+            v.forEach(item -> item.setJdBackId(id));
+
+        });
+
+//        Map<Long, List<JdBackDetails>> collect = jdBackDetailsList.stream().collect(Collectors.groupingBy(JdBackDetails::getJdBackId));
+//        List<QualityInfo> qualityInfoList = new ArrayList<>();
+//        for (Map.Entry<Long, List<JdBackDetails>> entry : collect.entrySet()) {
+//            // 添加质检
+//            QualityInfo qualityInfo = new QualityInfo();
+//            qualityInfo.setType(2);
+//            qualityInfo.setCode(CodeEnum.QUALITY.getCode());
+//            qualityInfo.setLogisticsInfoId(entry.getKey());
+//            qualityInfo.setLogisticsInfoCode(entry.getValue().get(0).getBackCode());
+//            qualityInfo.setStatus(QualityStatusEnum.STATUS_1.getKey());
+//            qualityInfo.setResultType(StatusConstant.YES);
+//            qualityInfoList.add(qualityInfo);
+//        }
+//        qualityInfoService.saveBatch(qualityInfoList);
+
+        //根据运单号生成物流信息
+        //根据运单号分组
+        List<LogisticsInfos> logisticsInfoList = new ArrayList<>();
+        Map<String, List<JdBackDetails>> collect1s = jdBackDetailsList.stream().collect(Collectors.groupingBy(JdBackDetails::getWaybill));
+        for (Map.Entry<String, List<JdBackDetails>> entry : collect1s.entrySet()) {
+            JdBackDetails jdBackDetails = entry.getValue().get(0);
+            LogisticsInfos logisticsInfo = new LogisticsInfos();
+            logisticsInfo.setBusinessId(jdBackDetails.getJdBackId());
+            logisticsInfo.setBusinessCode(jdBackDetails.getBackCode());
+            logisticsInfo.setBusinessType(4);//设置类型为京东退货
+            logisticsInfo.setCode(jdBackDetails.getWaybill());
+            logisticsInfo.setInStockStatus(10);
+            logisticsInfo.setLogisticsCompanyCode("jingdongkuaiyun");//物流公司编码
+            logisticsInfo.setWarehouseId(warehouseId);
+            logisticsInfoList.add(logisticsInfo);
+        }
+        logisticsInfosService.saveBatch(logisticsInfoList);
+
+        saveBatch(jdBackList);
+        jdBackDetailsService.saveBatch(jdBackDetailsList);
+    }
+
+}

+ 4 - 0
hx-victoriatourist/src/main/resources/mapper/jd/JdBackDetailsMapper.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.victoriatourist.mapper.jd.JdBackDetailsMapper">
+</mapper>

+ 24 - 0
hx-victoriatourist/src/main/resources/mapper/jd/JdBackMapper.xml

@@ -0,0 +1,24 @@
+<?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.victoriatourist.mapper.jd.JdBackMapper">
+    <select id="getPage" resultType="com.fjhx.victoriatourist.entity.jd.vo.JdBackVo">
+        SELECT
+            jb.id,
+            jb.type,
+            jb.`status`,
+            jb.waybill,
+            jb.warehouse_id,
+            jb.batch_flag,
+            jb.create_user,
+            jb.create_time,
+            jb.update_user,
+            jb.update_time,
+            li.logistics_company_code,
+            li.`code` logistics_code
+        FROM
+            jd_back jb
+                JOIN logistics_infos li ON li.business_id = jb.id
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 6 - 1
hx-wms/src/main/java/com/fjhx/wms/entity/stock/emums/InOutType.java

@@ -10,6 +10,11 @@ public enum InOutType {
     /**
      * 出库
      */
-    OUT
+    OUT,
+
+    /**
+     * 调仓
+     */
+    ADJUSTING
 
 }

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

@@ -6,11 +6,17 @@ import lombok.Getter;
 @AllArgsConstructor
 @Getter
 public enum JournalType {
+//    操作类型 1手动入库 2手动出库 3调仓 4待入库入库 5待出库出库
 
     COMBINATION_IN(InOutType.IN, 6, "组合入库", "group_record_details"),
     COMBINATION_OUT(InOutType.OUT, 7, "组合出库", "group_record_details"),
     SPLIT_IN(InOutType.IN, 8, "组合拆分入库", "group_record_details"),
-    SPLIT_OUT(InOutType.OUT, 9, "组合拆分出库", "group_record_details");
+    SPLIT_OUT(InOutType.OUT, 9, "组合拆分出库", "group_record_details"),
+    MANUAL_IN(InOutType.IN, 1, "手动入库", ""),
+    MANUAL_OUT(InOutType.OUT, 2, "手动出库", ""),
+    ADJUSTING(InOutType.ADJUSTING, 3, "调仓", ""),
+    STOCK_WAIT_IN(InOutType.IN, 4, "待入库入库", "stock_wait"),
+    STOCK_WAIT_OUT(InOutType.OUT, 5, "待出库入库", "stock_wait");
 
     /**
      * 出入库类型