Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

wxf 2 лет назад
Родитель
Сommit
9fa7945ef3
26 измененных файлов с 829 добавлено и 27 удалено
  1. 26 1
      hx-item/src/main/java/com/fjhx/item/controller/product/ProductInfoController.java
  2. 5 0
      hx-item/src/main/java/com/fjhx/item/entity/product/dto/ProductInfoDto.java
  3. 19 2
      hx-item/src/main/java/com/fjhx/item/service/product/ProductInfoService.java
  4. 25 3
      hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java
  5. 1 1
      hx-oa/src/main/java/com/fjhx/oa/entity/external/po/ExternalAddressBook.java
  6. 1 1
      hx-oa/src/main/java/com/fjhx/oa/entity/internal/po/InternalAddressBook.java
  7. 7 4
      hx-oa/src/main/java/com/fjhx/oa/service/external/impl/ExternalAddressBookServiceImpl.java
  8. 14 11
      hx-oa/src/main/java/com/fjhx/oa/service/internal/impl/InternalAddressBookServiceImpl.java
  9. 73 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdOrderController.java
  10. 37 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/bo/JdOrderExcelImportBo.java
  11. 29 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdOrderDto.java
  12. 22 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdOrderSelectDto.java
  13. 99 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdOrder.java
  14. 62 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdOrderDetails.java
  15. 27 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdOrderDetailsVo.java
  16. 36 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdOrderVo.java
  17. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/jd/JdOrderDetailsMapper.java
  18. 26 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/jd/JdOrderMapper.java
  19. 2 1
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/after/impl/AfterSaleRecordServiceImpl.java
  20. 17 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdOrderDetailsService.java
  21. 42 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdOrderService.java
  22. 3 3
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdBackServiceImpl.java
  23. 21 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderDetailsServiceImpl.java
  24. 188 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java
  25. 4 0
      hx-victoriatourist/src/main/resources/mapper/jd/JdOrderDetailsMapper.xml
  26. 26 0
      hx-victoriatourist/src/main/resources/mapper/jd/JdOrderMapper.xml

+ 26 - 1
hx-item/src/main/java/com/fjhx/item/controller/product/ProductInfoController.java

@@ -38,6 +38,14 @@ public class ProductInfoController {
     }
 
     /**
+     * 产品库分页 维多利亚
+     */
+    @PostMapping("/pageByWdly")
+    public Page<ProductInfoVo> pageByWdly(@RequestBody ProductInfoSelectDto dto) {
+        return productInfoService.getPageByWdly(dto);
+    }
+
+    /**
      * 产品库明细
      */
     @PostMapping("/detail")
@@ -54,6 +62,14 @@ public class ProductInfoController {
     }
 
     /**
+     * 产品库新增 维多利亚
+     */
+    @PostMapping("/addByWdly")
+    public void addByWdly(@RequestBody ProductInfoDto productInfoDto) {
+        productInfoService.addByWdly(productInfoDto);
+    }
+
+    /**
      * 产品库编辑
      */
     @PostMapping("/edit")
@@ -70,8 +86,17 @@ public class ProductInfoController {
     }
 
     @PostMapping("/excelImport")
-    public void issueExcelImport(@RequestParam("file") MultipartFile file){
+    public void issueExcelImport(@RequestParam("file") MultipartFile file) {
         productInfoService.excelImport(file);
     }
 
+    /**
+     * 产品部门移交 维多利亚
+     */
+    @PostMapping("/transfer")
+    public void transfer(@RequestBody ProductInfoDto productInfoDto) {
+        productInfoService.transfer(productInfoDto);
+    }
+
+
 }

+ 5 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/dto/ProductInfoDto.java

@@ -19,4 +19,9 @@ public class ProductInfoDto extends ProductInfo {
 
     private List<ObsFile> fileList;
 
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
 }

+ 19 - 2
hx-item/src/main/java/com/fjhx/item/service/product/ProductInfoService.java

@@ -6,7 +6,6 @@ import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.ruoyi.common.core.service.BaseService;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -28,6 +27,11 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
     Page<ProductInfoVo> getPage(ProductInfoSelectDto dto);
 
     /**
+     * 产品库分页 维多利亚
+     */
+    Page<ProductInfoVo> getPageByWdly(ProductInfoSelectDto dto);
+
+    /**
      * 产品库明细
      */
     ProductInfoVo detail(Long id);
@@ -38,6 +42,11 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
     void add(ProductInfoDto productInfoDto);
 
     /**
+     * 产品库新增 维多利亚
+     */
+    void addByWdly(ProductInfoDto productInfoDto);
+
+    /**
      * 产品库编辑
      */
     void edit(ProductInfoDto productInfoDto);
@@ -49,6 +58,7 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
 
     /**
      * 根据产品IDS获取产品
+     *
      * @param productIds
      * @return
      */
@@ -56,11 +66,18 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
 
     /**
      * 根据产品类型获取产品
+     *
      * @return
      */
     List<ProductInfoVo> getListByProductType(Integer productType);
 
-    /**excel导入*/
+    /**
+     * excel导入
+     */
     void excelImport(MultipartFile file);
 
+    /**
+     * 产品部门移交 维多利亚
+     */
+    void transfer(ProductInfoDto productInfoDto);
 }

+ 25 - 3
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -65,7 +65,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
                 new SqlField("pi", ProductInfo::getCode),
                 new SqlField("pi", ProductInfo::getCustomCode)
         );
-        wrapper.eq("json_unquote(victoriatourist_json ->'$.lifeCycle')",dto.getLifeCycle());
+        wrapper.eq("json_unquote(victoriatourist_json ->'$.lifeCycle')", dto.getLifeCycle());
         Page<ProductInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
 
         List<ProductInfoVo> records = page.getRecords();
@@ -95,6 +95,15 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
             record.setClassifyNameGroup(classifyNameGroup);
 
         }
+
+        return page;
+    }
+
+
+    @Override
+    public Page<ProductInfoVo> getPageByWdly(ProductInfoSelectDto dto) {
+        Page<ProductInfoVo> page = getPage(dto);
+        List<ProductInfoVo> records = page.getRecords();
         //赋值维多利亚扩展部门名称
         List<Long> ids = new ArrayList<>();
         for (ProductInfoVo record : records) {
@@ -126,7 +135,6 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
             json.put("deptName", sysDeptMap.get(json.getLong("deptId")));
             record.setVictoriatouristJson(json.toJSONString());
         }
-
         return page;
     }
 
@@ -146,13 +154,19 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         this.nameDuplication(ProductInfo::getName, productInfoDto.getName(), "产品名称重复");
         this.save(productInfoDto);
         ObsFileUtil.saveFile(productInfoDto.getFileList(), productInfoDto.getId());
+    }
+
+    @DSTransactional
+    @Override
+    public void addByWdly(ProductInfoDto productInfoDto) {
         //处理维多利亚扩展
         String victoriatouristJson = productInfoDto.getVictoriatouristJson();
-        if(ObjectUtil.isNotEmpty(victoriatouristJson)) {
+        if (ObjectUtil.isNotEmpty(victoriatouristJson)) {
             JSONObject json = JSONObject.parseObject(victoriatouristJson);
             json.put("deptId", SecurityUtils.getDeptId());
             productInfoDto.setVictoriatouristJson(json.toJSONString());
         }
+        add(productInfoDto);
     }
 
     @DSTransactional
@@ -200,4 +214,12 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
 //        List<Object> read = ExcelUtil.read(file, Object.class);
     }
 
+    @Override
+    public void transfer(ProductInfoDto productInfoDto) {
+        ProductInfo productInfo = getById(productInfoDto.getId());
+        String victoriatouristJson = productInfo.getVictoriatouristJson();
+        JSONObject json = ObjectUtil.isNotEmpty(victoriatouristJson) ? JSONObject.parseObject(victoriatouristJson) : new JSONObject();
+        json.put("deptId", productInfoDto.getDeptId());
+    }
+
 }

+ 1 - 1
hx-oa/src/main/java/com/fjhx/oa/entity/external/po/ExternalAddressBook.java

@@ -27,7 +27,7 @@ public class ExternalAddressBook extends BasePo {
     /**
      * 联系类型(字典contact_information)
      */
-    private Integer type;
+    private String type;
 
     /**
      * 联系号码

+ 1 - 1
hx-oa/src/main/java/com/fjhx/oa/entity/internal/po/InternalAddressBook.java

@@ -27,7 +27,7 @@ public class InternalAddressBook extends BasePo {
     /**
      * 联系类型(字典contact_information)
      */
-    private Integer type;
+    private String type;
 
     /**
      * 联系号码

+ 7 - 4
hx-oa/src/main/java/com/fjhx/oa/service/external/impl/ExternalAddressBookServiceImpl.java

@@ -59,10 +59,13 @@ public class ExternalAddressBookServiceImpl extends ServiceImpl<ExternalAddressB
         for (ExternalAddressBook externalAddressBook :externalAddressBookList){
             externalAddressBook.setContactsId(externalAddressBookDto.getContactsId());
         }
-        List<Long> externalAddressBookIds = externalAddressBookList.stream().filter(item-> ObjectUtil.isNotEmpty(item.getId())).map(ExternalAddressBook::getId).collect(Collectors.toList());
-        if(ObjectUtil.isNotEmpty(externalAddressBookIds)) {
-            remove(q -> q.notIn(ExternalAddressBook::getId, externalAddressBookIds).eq(ExternalAddressBook::getContactsId, externalAddressBookDto.getContactsId()));
-        }
+//        List<Long> externalAddressBookIds = externalAddressBookList.stream().filter(item-> ObjectUtil.isNotEmpty(item.getId())).map(ExternalAddressBook::getId).collect(Collectors.toList());
+//        if(ObjectUtil.isNotEmpty(externalAddressBookIds)) {
+//            remove(q -> q.notIn(ExternalAddressBook::getId, externalAddressBookIds).eq(ExternalAddressBook::getContactsId, externalAddressBookDto.getContactsId()));
+//        }else{
+//            remove(q -> q.eq(ExternalAddressBook::getContactsId, externalAddressBookDto.getContactsId()));
+//        }
+        this.editLinked(externalAddressBookList,ExternalAddressBook::getContactsId,externalAddressBookDto.getContactsId());
         saveOrUpdateBatch(externalAddressBookList);
     }
 

+ 14 - 11
hx-oa/src/main/java/com/fjhx/oa/service/internal/impl/InternalAddressBookServiceImpl.java

@@ -1,20 +1,19 @@
 package com.fjhx.oa.service.internal.impl;
 
-import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.oa.entity.internal.dto.InternalAddressBookDto;
 import com.fjhx.oa.entity.internal.po.InternalAddressBook;
 import com.fjhx.oa.entity.internal.vo.SysUserVo;
 import com.fjhx.oa.mapper.internal.InternalAddressBookMapper;
 import com.fjhx.oa.service.internal.InternalAddressBookService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.system.service.impl.SysUserServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.fjhx.oa.entity.internal.dto.InternalAddressBookDto;
-import cn.hutool.core.bean.BeanUtil;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
@@ -27,7 +26,7 @@ import java.util.stream.Collectors;
  * 内部通讯录 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-04
  */
 @DS(SourceConstant.OA)
@@ -51,7 +50,7 @@ public class InternalAddressBookServiceImpl extends ServiceImpl<InternalAddressB
         List<Long> userIds = sysUserVoList.stream().map(SysUser::getUserId).collect(Collectors.toList());
         List<InternalAddressBook> list = list(q -> q.in(InternalAddressBook::getUserId, userIds));
         Map<Long, List<InternalAddressBook>> internalAddressBookMap = list.stream().collect(Collectors.groupingBy(InternalAddressBook::getUserId));
-        for (SysUserVo sysUserVo : sysUserVoList){
+        for (SysUserVo sysUserVo : sysUserVoList) {
             List<InternalAddressBook> internalAddressBook = internalAddressBookMap.get(sysUserVo.getUserId());
             sysUserVo.setInternalAddressBookList(internalAddressBook);
         }
@@ -73,13 +72,17 @@ public class InternalAddressBookServiceImpl extends ServiceImpl<InternalAddressB
     @Override
     public void edit(InternalAddressBookDto internalAddressBookDto) {
         List<InternalAddressBook> internalAddressBookList = internalAddressBookDto.getInternalAddressBookList();
-        for (InternalAddressBook internalAddressBook :internalAddressBookList){
+        for (InternalAddressBook internalAddressBook : internalAddressBookList) {
             internalAddressBook.setUserId(internalAddressBookDto.getUserId());
         }
-        List<Long> internalAddressBookIds = internalAddressBookList.stream().filter(item-> ObjectUtil.isNotEmpty(item.getId())).map(InternalAddressBook::getId).collect(Collectors.toList());
-        if(ObjectUtil.isNotEmpty(internalAddressBookIds)) {
-            remove(q -> q.notIn(InternalAddressBook::getId, internalAddressBookIds).eq(InternalAddressBook::getUserId, internalAddressBookDto.getUserId()));
-        }
+//        List<Long> internalAddressBookIds = internalAddressBookList.stream().filter(item-> ObjectUtil.isNotEmpty(item.getId())).map(InternalAddressBook::getId).collect(Collectors.toList());
+//        if(ObjectUtil.isNotEmpty(internalAddressBookIds)) {
+//            remove(q -> q.notIn(InternalAddressBook::getId, internalAddressBookIds).eq(InternalAddressBook::getUserId, internalAddressBookDto.getUserId()));
+//        }else{
+//            //如果传的列表为空直接全部删除
+//            remove(q -> q.eq(InternalAddressBook::getUserId, internalAddressBookDto.getUserId()));
+//        }
+        this.editLinked(internalAddressBookList, InternalAddressBook::getUserId, internalAddressBookDto.getUserId());
         saveOrUpdateBatch(internalAddressBookList);
     }
 

+ 73 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdOrderController.java

@@ -0,0 +1,73 @@
+package com.fjhx.victoriatourist.controller.jd;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.jd.dto.JdOrderDto;
+import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
+import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
+import com.fjhx.victoriatourist.entity.jd.vo.JdOrderVo;
+import com.fjhx.victoriatourist.service.jd.JdOrderService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 京东订单 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-04-20
+ */
+@RestController
+@RequestMapping("/jdOrder")
+public class JdOrderController {
+
+    @Autowired
+    private JdOrderService jdOrderService;
+
+    /**
+     * 京东订单分页
+     */
+    @PostMapping("/page")
+    public Page<JdOrderVo> page(@RequestBody JdOrderSelectDto dto) {
+        return jdOrderService.getPage(dto);
+    }
+
+    /**
+     * 京东订单明细
+     */
+    @PostMapping("/detail")
+    public JdOrderVo detail(@RequestBody BaseSelectDto dto) {
+        return jdOrderService.detail(dto.getId());
+    }
+
+    /**
+     * 京东订单新增
+     */
+    @PostMapping("/add")
+    public void add(@Validated @RequestBody JdOrderDto jdOrderDto) {
+        jdOrderService.add(jdOrderDto);
+    }
+
+    /**
+     * 获取配送中心
+     */
+    @PostMapping("/getDistributionCenter")
+    public List<String> getDistributionCenter() {
+        return jdOrderService.getDistinctList(JdOrder::getDistributionCenter);
+    }
+
+    /**
+     * excel导入
+     */
+    @PostMapping("/excelImport")
+    public void excelImport(@RequestParam("file") MultipartFile file, @RequestParam("customerId") Long customerId) {
+        jdOrderService.excelImport(file, customerId);
+    }
+
+}

+ 37 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/bo/JdOrderExcelImportBo.java

@@ -0,0 +1,37 @@
+package com.fjhx.victoriatourist.entity.jd.bo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+public class JdOrderExcelImportBo {
+
+    @ExcelProperty("采购单号")
+    private String code;
+
+    @ExcelProperty("商品编号")
+    private String productCode;
+
+    @ExcelProperty("配送中心")
+    private String distributionCenter;
+
+    @ExcelProperty("详细地址")
+    private String detailedAddress;
+
+    @ExcelProperty("收货负责人")
+    private String contactPerson;
+
+    @ExcelProperty("收货电话")
+    private String contactNumber;
+
+    @ExcelProperty("采购价格")
+    private BigDecimal price;
+
+    @ExcelProperty("采购数量")
+    private BigDecimal quantity;
+
+}

+ 29 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdOrderDto.java

@@ -0,0 +1,29 @@
+package com.fjhx.victoriatourist.entity.jd.dto;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
+import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 京东订单新增编辑入参实体
+ *
+ * @author
+ * @since 2023-04-20
+ */
+@Getter
+@Setter
+public class JdOrderDto extends JdOrder {
+
+    /**
+     * 京东订单明细
+     */
+    @Valid
+    @NotEmpty(message = "京东订单明细不能为空")
+    private List<JdOrderDetails> jdOrderDetailsList;
+
+}

+ 22 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/dto/JdOrderSelectDto.java

@@ -0,0 +1,22 @@
+package com.fjhx.victoriatourist.entity.jd.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 京东订单列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-20
+ */
+@Getter
+@Setter
+public class JdOrderSelectDto extends BaseSelectDto {
+
+    /**
+     * 状态 1未出库 2部分出库 3已出库
+     */
+    private Integer status;
+
+}

+ 99 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdOrder.java

@@ -0,0 +1,99 @@
+package com.fjhx.victoriatourist.entity.jd.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 京东订单
+ * </p>
+ *
+ * @author
+ * @since 2023-04-20
+ */
+@Getter
+@Setter
+@TableName("jd_order")
+public class JdOrder extends BasePo {
+
+    /**
+     * 订单编号
+     */
+    @NotNull(message = "客户名称不能为空")
+    private String code;
+
+    /**
+     * 客户id
+     */
+    @NotNull(message = "客户id不能为空")
+    private Long customerId;
+
+    /**
+     * 配送中心
+     */
+    @NotBlank(message = "配送中心不能为空")
+    private String distributionCenter;
+
+    /**
+     * 国家
+     */
+    @NotBlank(message = "国家id不能为空")
+    private String countryId;
+
+    /**
+     * 省
+     */
+    @NotBlank(message = "省id不能为空")
+    private String provinceId;
+
+    /**
+     * 市
+     */
+    @NotBlank(message = "市id不能为空")
+    private String cityId;
+
+    /**
+     * 详细地址
+     */
+    @NotBlank(message = "详细地址不能为控股")
+    private String detailedAddress;
+
+    /**
+     * 收件人
+     */
+    @NotBlank(message = "收件人不能为空")
+    private String contactPerson;
+
+    /**
+     * 联系电话
+     */
+    @NotBlank(message = "联系电话不能为空")
+    private String contactNumber;
+
+    /**
+     * 订单金额
+     */
+    private BigDecimal amount;
+
+    /**
+     * 状态 1未出库 2部分出库 3已出库
+     */
+    private Integer status;
+
+    /**
+     * 出库总数量
+     */
+    private BigDecimal quantityDelivered;
+
+    /**
+     * 导入批次标记
+     */
+    private Long batchFlag;
+
+}

+ 62 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdOrderDetails.java

@@ -0,0 +1,62 @@
+package com.fjhx.victoriatourist.entity.jd.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 京东订单明细
+ * </p>
+ *
+ * @author
+ * @since 2023-04-20
+ */
+@Getter
+@Setter
+@TableName("jd_order_details")
+public class JdOrderDetails extends BasePo {
+
+    /**
+     * 京东订单id
+     */
+    private Long jdOrderId;
+
+    /**
+     * 产品id
+     */
+    @NotNull(message = "产品id不能为空")
+    private Long productId;
+
+    /**
+     * 单价
+     */
+    @NotNull(message = "单价不能为空")
+    private BigDecimal price;
+
+    /**
+     * 数量
+     */
+    @NotNull(message = "数量不能为空")
+    private BigDecimal quantity;
+
+    /**
+     * 小计
+     */
+    private BigDecimal subtotal;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 出库数量
+     */
+    private BigDecimal quantityDelivered;
+
+}

+ 27 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdOrderDetailsVo.java

@@ -0,0 +1,27 @@
+package com.fjhx.victoriatourist.entity.jd.vo;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 京东订单明细列表查询返回值实体
+ *
+ * @author
+ * @since 2023-04-20
+ */
+@Getter
+@Setter
+public class JdOrderDetailsVo extends JdOrderDetails {
+
+    /**
+     * 产品编码
+     */
+    private String productCode;
+
+    /**
+     * 产品名称
+     */
+    private String productName;
+
+}

+ 36 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/vo/JdOrderVo.java

@@ -0,0 +1,36 @@
+package com.fjhx.victoriatourist.entity.jd.vo;
+
+import com.fjhx.area.service.ISetAreaName;
+import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 京东订单列表查询返回值实体
+ *
+ * @author
+ * @since 2023-04-20
+ */
+@Getter
+@Setter
+public class JdOrderVo extends JdOrder implements ISetAreaName {
+
+    private String countryName;
+
+    private String provinceName;
+
+    private String cityName;
+
+    /**
+     * 客户名称
+     */
+    private String customerName;
+
+    /**
+     * 京东订单明细
+     */
+    private List<JdOrderDetailsVo> jdOrderDetailsList;
+
+}

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

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

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

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

+ 2 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/after/impl/AfterSaleRecordServiceImpl.java

@@ -102,9 +102,10 @@ public class AfterSaleRecordServiceImpl extends ServiceImpl<AfterSaleRecordMappe
         if (ObjectUtil.isEmpty(id)) {
             throw new ServiceException("id不能为空");
         }
-
         this.updateById(afterSaleRecordDto);
+
         List<AfterSaleDetail> afterSaleDetailList = afterSaleRecordDto.getAfterSaleDetailList();
+        afterSaleDetailList.forEach(item -> item.setAfterSaleRecordId(id));
         afterSaleDetailService.editLinked(afterSaleDetailList, AfterSaleDetail::getAfterSaleRecordId, id);
     }
 

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

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

+ 42 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdOrderService.java

@@ -0,0 +1,42 @@
+package com.fjhx.victoriatourist.service.jd;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.jd.dto.JdOrderDto;
+import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
+import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
+import com.fjhx.victoriatourist.entity.jd.vo.JdOrderVo;
+import com.ruoyi.common.core.service.BaseService;
+import org.springframework.web.multipart.MultipartFile;
+
+
+/**
+ * <p>
+ * 京东订单 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-20
+ */
+public interface JdOrderService extends BaseService<JdOrder> {
+
+    /**
+     * 京东订单分页
+     */
+    Page<JdOrderVo> getPage(JdOrderSelectDto dto);
+
+    /**
+     * 京东订单明细
+     */
+    JdOrderVo detail(Long id);
+
+    /**
+     * 京东订单新增
+     */
+    void add(JdOrderDto jdOrderDto);
+
+    /**
+     * excel导入
+     */
+    void excelImport(MultipartFile file, Long customerId);
+
+}

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

@@ -66,9 +66,9 @@ public class JdBackServiceImpl extends ServiceImpl<JdBackMapper, JdBack> impleme
     @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.like("jb",JdBackVo::getLogisticsCode, dto.getKeyword());
+        wrapper.eq("jb",JdBackVo::getType, dto.getType());
+        wrapper.eq("jb",JdBackVo::getStatus, dto.getStatus());
         wrapper.orderByDesc("jb", JdBack::getId);
         Page<JdBackVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<JdBackVo> records = page.getRecords();

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

@@ -0,0 +1,21 @@
+package com.fjhx.victoriatourist.service.jd.impl;
+
+import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
+import com.fjhx.victoriatourist.mapper.jd.JdOrderDetailsMapper;
+import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 京东订单明细 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-20
+ */
+@Service
+public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper, JdOrderDetails> implements JdOrderDetailsService {
+
+}

+ 188 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -0,0 +1,188 @@
+package com.fjhx.victoriatourist.service.jd.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+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.area.utils.AreaUtil;
+import com.fjhx.customer.service.customer.CustomerService;
+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.victoriatourist.entity.jd.bo.JdOrderExcelImportBo;
+import com.fjhx.victoriatourist.entity.jd.dto.JdOrderDto;
+import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
+import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
+import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
+import com.fjhx.victoriatourist.entity.jd.vo.JdOrderDetailsVo;
+import com.fjhx.victoriatourist.entity.jd.vo.JdOrderVo;
+import com.fjhx.victoriatourist.mapper.jd.JdOrderMapper;
+import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
+import com.fjhx.victoriatourist.service.jd.JdOrderService;
+import com.ruoyi.common.core.domain.BaseIdPo;
+import com.ruoyi.common.exception.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.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 京东订单 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-04-20
+ */
+@Service
+public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> implements JdOrderService {
+
+    @Autowired
+    private CustomerService customerService;
+
+    @Autowired
+    private JdOrderDetailsService jdOrderDetailsService;
+
+    @Autowired
+    private ProductInfoService productInfoService;
+
+    @Override
+    public Page<JdOrderVo> getPage(JdOrderSelectDto dto) {
+        IWrapper<JdOrder> wrapper = getWrapper();
+        wrapper.eq("jo", JdOrder::getStatus, dto.getStatus());
+        wrapper.orderByDesc("jo", JdOrder::getId);
+
+        Page<JdOrderVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<JdOrderVo> records = page.getRecords();
+        if (records.size() == 0) {
+            return page;
+        }
+
+        // 赋值国省市
+        AreaUtil.setAreaName(records);
+
+        // 赋值客户名称
+        customerService.attributeAssign(records, JdOrder::getCustomerId, (item, customer) -> {
+            item.setCustomerName(customer.getName());
+        });
+
+        return page;
+    }
+
+    @Override
+    public JdOrderVo detail(Long id) {
+        JdOrder JdOrder = this.getById(id);
+        JdOrderVo result = BeanUtil.toBean(JdOrder, JdOrderVo.class);
+
+        List<JdOrderDetails> jdOrderDetailsList = jdOrderDetailsService.list(q -> q.eq(JdOrderDetails::getJdOrderId, id));
+        List<JdOrderDetailsVo> jdOrderDetailsVoList = BeanUtil.copyToList(jdOrderDetailsList, JdOrderDetailsVo.class);
+        productInfoService.attributeAssign(jdOrderDetailsVoList, JdOrderDetails::getProductId, (item, product) -> {
+            item.setProductCode(product.getCode());
+            item.setProductName(product.getName());
+        });
+
+        result.setJdOrderDetailsList(jdOrderDetailsVoList);
+        return result;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(JdOrderDto jdOrderDto) {
+
+        // 订单id
+        long jdOrderId = IdWorker.getId();
+
+        // 订单金额
+        BigDecimal amount = BigDecimal.ZERO;
+
+        List<JdOrderDetails> jdOrderDetailsList = jdOrderDto.getJdOrderDetailsList();
+
+        for (JdOrderDetails jdOrderDetails : jdOrderDetailsList) {
+            jdOrderDetails.setJdOrderId(jdOrderId);
+            jdOrderDetails.setSubtotal(jdOrderDetails.getPrice().multiply(jdOrderDetails.getQuantity()));
+            jdOrderDetails.setQuantityDelivered(BigDecimal.ZERO);
+            amount = amount.add(jdOrderDetails.getSubtotal());
+        }
+
+        jdOrderDto.setId(jdOrderId);
+        // 未出库
+        jdOrderDto.setStatus(1);
+        // 订单金额
+        jdOrderDto.setAmount(amount);
+        jdOrderDto.setQuantityDelivered(BigDecimal.ZERO);
+
+        this.save(jdOrderDto);
+        this.jdOrderDetailsService.saveBatch(jdOrderDetailsList);
+    }
+
+    @DSTransactional
+    @Override
+    public void excelImport(MultipartFile file, Long customerId) {
+        List<JdOrderExcelImportBo> boList = ExcelUtil.read(file, JdOrderExcelImportBo.class);
+
+        List<String> productCodeList = boList.stream().map(JdOrderExcelImportBo::getProductCode)
+                .filter(Objects::nonNull).distinct().collect(Collectors.toList());
+
+        // 验证产品编号是否存在
+        List<ProductInfo> productInfoList = productInfoService.list(q -> q.in(ProductInfo::getCode, productCodeList));
+        if (productInfoList.size() != productCodeList.size()) {
+            List<String> itemCodeList = productInfoList.stream().map(ProductInfo::getCode).collect(Collectors.toList());
+            String nonCodeStr = productCodeList.stream().filter(item -> !itemCodeList.contains(item)).collect(Collectors.joining(","));
+            throw new ServiceException("未知产品编号:" + nonCodeStr);
+        }
+
+        // 产品编号、产品id map
+        Map<String, Long> productCodeIdMap = productInfoList.stream().collect(Collectors.toMap(ProductInfo::getCode, BaseIdPo::getId));
+
+        // 订单编号、订单信息 map
+        HashMap<String, JdOrder> orderCodeIdMap = new LinkedHashMap<>();
+        List<JdOrderDetails> orderDetailsList = new ArrayList<>();
+
+        long batchFlag = IdWorker.getId();
+
+        for (JdOrderExcelImportBo bo : boList) {
+            // 订单id
+            JdOrder jdOrder = orderCodeIdMap.computeIfAbsent(bo.getCode(), code -> {
+                Long id = IdWorker.getId();
+
+                JdOrder item = new JdOrder();
+                item.setId(id);
+                item.setCode(bo.getCode());
+                item.setCustomerId(customerId);
+                item.setDistributionCenter(bo.getDistributionCenter());
+                item.setDetailedAddress(bo.getDetailedAddress());
+                item.setContactPerson(bo.getContactPerson());
+                item.setContactNumber(bo.getContactNumber());
+                item.setAmount(BigDecimal.ZERO);
+                item.setStatus(1);
+                item.setQuantityDelivered(BigDecimal.ZERO);
+                item.setBatchFlag(batchFlag);
+                return item;
+            });
+
+            BigDecimal subtotal = bo.getQuantity().multiply(bo.getPrice());
+            jdOrder.setAmount(jdOrder.getAmount().add(subtotal));
+
+            JdOrderDetails jdOrderDetails = new JdOrderDetails();
+            jdOrderDetails.setId(IdWorker.getId());
+            jdOrderDetails.setJdOrderId(jdOrder.getId());
+            jdOrderDetails.setProductId(productCodeIdMap.get(bo.getProductCode()));
+            jdOrderDetails.setPrice(bo.getPrice());
+            jdOrderDetails.setQuantity(bo.getQuantity());
+            jdOrderDetails.setSubtotal(subtotal);
+            jdOrderDetails.setQuantityDelivered(BigDecimal.ZERO);
+            orderDetailsList.add(jdOrderDetails);
+        }
+
+        this.saveBatch(orderCodeIdMap.values());
+        this.jdOrderDetailsService.saveBatch(orderDetailsList);
+    }
+
+}

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

+ 26 - 0
hx-victoriatourist/src/main/resources/mapper/jd/JdOrderMapper.xml

@@ -0,0 +1,26 @@
+<?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.JdOrderMapper">
+    <select id="getPage" resultType="com.fjhx.victoriatourist.entity.jd.vo.JdOrderVo">
+        select
+            jo.id,
+            jo.code,
+            jo.customer_id,
+            jo.distribution_center,
+            jo.country_id,
+            jo.province_id,
+            jo.city_id,
+            jo.detailed_address,
+            jo.contact_person,
+            jo.contact_number,
+            jo.amount,
+            jo.status,
+            jo.create_user,
+            jo.create_time,
+            jo.update_user,
+            jo.update_time
+        from jd_order jo
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>