Browse Source

维多利亚

home 2 years ago
parent
commit
a46a751217
41 changed files with 994 additions and 283 deletions
  1. 1 1
      hx-common/code-generator/src/main/java/com/fjhx/modular/Victoriatourist.java
  2. 10 0
      hx-common/common-tool/src/main/java/com/fjhx/base/BaseService.java
  3. 5 0
      hx-service-api/victoriatourist-api/pom.xml
  4. 8 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/constants/ExcelImportBusinessType.java
  5. 8 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/constants/SystemConfigKeyConstant.java
  6. 104 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/order/OrderJd.java
  7. 72 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/order/OrderJdDetails.java
  8. 10 5
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/system/SystemConfig.java
  9. 7 3
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/excel/BaseExcelVo.java
  10. 0 17
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/excel/ExcelImportFailLineEx.java
  11. 0 17
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/excel/ExcelImportFailLineVo.java
  12. 5 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/excel/ExcelProcessingProgress.java
  13. 17 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/order/OrderJdDetailsEx.java
  14. 17 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/order/OrderJdDetailsVo.java
  15. 29 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/order/OrderJdEx.java
  16. 39 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/order/OrderJdExcelVo.java
  17. 25 0
      hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/order/OrderJdVo.java
  18. 0 5
      hx-service/victoriatourist/pom.xml
  19. 1 1
      hx-service/victoriatourist/src/main/java/com/fjhx/config/LogicDeleteInterceptor.java
  20. 1 1
      hx-service/victoriatourist/src/main/java/com/fjhx/config/MybatisConfig.java
  21. 0 56
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/excel/ExcelImportFailLineController.java
  22. 14 4
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/excel/ExcelImportLogController.java
  23. 60 0
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/order/OrderJdController.java
  24. 56 0
      hx-service/victoriatourist/src/main/java/com/fjhx/controller/order/OrderJdDetailsController.java
  25. 6 1
      hx-service/victoriatourist/src/main/java/com/fjhx/listener/EasyExcelListener.java
  26. 0 16
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/excel/ExcelImportFailLineMapper.java
  27. 16 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/order/OrderJdDetailsMapper.java
  28. 1 1
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/order/OrderJdDetailsMapper.xml
  29. 21 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/order/OrderJdMapper.java
  30. 26 0
      hx-service/victoriatourist/src/main/java/com/fjhx/mapper/order/OrderJdMapper.xml
  31. 0 28
      hx-service/victoriatourist/src/main/java/com/fjhx/service/excel/ExcelImportFailLineService.java
  32. 16 5
      hx-service/victoriatourist/src/main/java/com/fjhx/service/excel/ExcelImportLogService.java
  33. 0 48
      hx-service/victoriatourist/src/main/java/com/fjhx/service/excel/impl/ExcelImportFailLineServiceImpl.java
  34. 45 40
      hx-service/victoriatourist/src/main/java/com/fjhx/service/excel/impl/ExcelImportLogServiceImpl.java
  35. 28 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/order/OrderJdDetailsService.java
  36. 32 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/order/OrderJdService.java
  37. 48 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/order/impl/OrderJdDetailsServiceImpl.java
  38. 251 0
      hx-service/victoriatourist/src/main/java/com/fjhx/service/order/impl/OrderJdServiceImpl.java
  39. 3 9
      hx-service/victoriatourist/src/main/java/com/fjhx/service/system/SystemConfigService.java
  40. 8 24
      hx-service/victoriatourist/src/main/java/com/fjhx/service/system/impl/SystemConfigServiceImpl.java
  41. 4 1
      hx-service/victoriatourist/src/main/java/com/fjhx/uitl/code/CodeEnum.java

+ 1 - 1
hx-common/code-generator/src/main/java/com/fjhx/modular/Victoriatourist.java

@@ -12,7 +12,7 @@ public class Victoriatourist {
         CodeGenerator.MODULAR_NAME = "victoriatourist";
 
         // 需要生成的表名称,多表用,隔开
-        CodeGenerator.INCLUDE = "system_config";
+        CodeGenerator.INCLUDE = "order_jd_details";
 
         // mysql连接
         CodeGenerator.MYSQL_URL = "36.134.91.96:17330";

+ 10 - 0
hx-common/common-tool/src/main/java/com/fjhx/base/BaseService.java

@@ -118,6 +118,16 @@ public interface BaseService<T> extends IService<T> {
                 .stream().map(mapper).filter(Objects::nonNull).distinct().collect(Collectors.toList());
     }
 
+    default <K, V> Map<K, V> getKV(SFunction<T, K> kFun, SFunction<T, V> vFun, Consumer<LambdaQueryWrapper<T>> consumer) {
+        return list(Wrappers.<T>lambdaQuery().select(kFun, vFun).func(consumer))
+                .stream().collect(Collectors.toMap(kFun, vFun, (v1, v2) -> v2));
+    }
+
+    default <K> Map<K, T> getKEntity(SFunction<T, K> kFun, Consumer<LambdaQueryWrapper<T>> consumer) {
+        return list(Wrappers.<T>lambdaQuery().func(consumer))
+                .stream().collect(Collectors.toMap(kFun, item -> item, (v1, v2) -> v2));
+    }
+
     default boolean update(Consumer<LambdaUpdateWrapper<T>> consumer) {
         return update(Wrappers.<T>lambdaUpdate().func(consumer));
     }

+ 5 - 0
hx-service-api/victoriatourist-api/pom.xml

@@ -28,6 +28,11 @@
             <artifactId>common-client-util</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-starter-excel</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 8 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/constants/ExcelImportBusinessType.java

@@ -0,0 +1,8 @@
+package com.fjhx.constants;
+
+public interface ExcelImportBusinessType {
+
+    // 京东订单导入
+    Integer JD_ORDER = 1;
+
+}

+ 8 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/constants/SystemConfigKeyConstant.java

@@ -0,0 +1,8 @@
+package com.fjhx.constants;
+
+public interface SystemConfigKeyConstant {
+
+    // 京东客户id
+    String CUSTOMER_CUSTOMER_ID = "customer_customer_id";
+
+}

+ 104 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/order/OrderJd.java

@@ -0,0 +1,104 @@
+package com.fjhx.entity.order;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 销售订单
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class OrderJd extends BaseEntity {
+
+
+    /**
+     * 客户id
+     */
+    private Long customerInfoId;
+
+    /**
+     * 编号
+     */
+    private String code;
+
+    /**
+     * 订单金额
+     */
+    private BigDecimal amountMoney;
+
+    /**
+     * 下单时间
+     */
+    private Date orderTime;
+
+    /**
+     * 订单状态 1进行中 2已完成 3已取消
+     */
+    private Integer status;
+
+    /**
+     * 国家
+     */
+    private String countryId;
+
+    /**
+     * 省
+     */
+    private String provinceId;
+
+    /**
+     * 市
+     */
+    private String cityId;
+
+    /**
+     * 详细地址
+     */
+    private String detailedAddress;
+
+    /**
+     * 联系人
+     */
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 联系电话前缀类型
+     */
+    private Integer phonePrefixType;
+
+    /**
+     * 导入excel关联id
+     */
+    private Long excelImportId;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+
+}

+ 72 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/order/OrderJdDetails.java

@@ -0,0 +1,72 @@
+package com.fjhx.entity.order;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 销售订单明细表
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class OrderJdDetails extends BaseEntity {
+
+
+    /**
+     * 京东订单id
+     */
+    private Long orderJdId;
+
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 单价
+     */
+    private BigDecimal price;
+
+    /**
+     * 未出库数量
+     */
+    private BigDecimal notIssuedQuantity;
+
+    /**
+     * 版本号
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Version
+    private Integer version;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+
+}

+ 10 - 5
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/system/SystemConfig.java

@@ -1,11 +1,10 @@
 package com.fjhx.entity.system;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.Version;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.fjhx.base.BaseEntity;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
 
 /**
  * <p>
@@ -16,9 +15,15 @@ import lombok.EqualsAndHashCode;
  * @since 2022-12-08
  */
 @Data
-@EqualsAndHashCode(callSuper = true)
-public class SystemConfig extends BaseEntity {
+public class SystemConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
 
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
 
     /**
      * 参数说明

+ 7 - 3
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/excel/BaseExcelVo.java

@@ -1,16 +1,20 @@
 package com.fjhx.params.excel;
 
-import lombok.Data;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import lombok.Getter;
+import lombok.Setter;
 
 import java.io.Serializable;
 
-@Data
+@Getter
+@Setter
+@ExcelIgnoreUnannotated
 public class BaseExcelVo implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
     /**
-     * 行
+     * 行
      */
     Integer lineNumber;
 

+ 0 - 17
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/excel/ExcelImportFailLineEx.java

@@ -1,17 +0,0 @@
-package com.fjhx.params.excel;
-
-import com.fjhx.entity.excel.ExcelImportFailLine;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 
- *
- * @author ${author}
- * @since 2022-12-07
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class ExcelImportFailLineEx extends ExcelImportFailLine {
-
-}

+ 0 - 17
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/excel/ExcelImportFailLineVo.java

@@ -1,17 +0,0 @@
-package com.fjhx.params.excel;
-
-import com.fjhx.entity.excel.ExcelImportFailLine;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 
- *
- * @author ${author}
- * @since 2022-12-07
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class ExcelImportFailLineVo extends ExcelImportFailLine {
-
-}

+ 5 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/excel/ExcelProcessingProgress.java

@@ -15,4 +15,9 @@ public class ExcelProcessingProgress {
      */
     Integer percentage;
 
+    /**
+     * 异常提示
+     */
+    String errorMsg;
+
 }

+ 17 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/order/OrderJdDetailsEx.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.order;
+
+import com.fjhx.entity.order.OrderJdDetails;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 销售订单明细表
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class OrderJdDetailsEx extends OrderJdDetails {
+
+}

+ 17 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/order/OrderJdDetailsVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.order;
+
+import com.fjhx.entity.order.OrderJdDetails;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 销售订单明细表
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class OrderJdDetailsVo extends OrderJdDetails {
+
+}

+ 29 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/order/OrderJdEx.java

@@ -0,0 +1,29 @@
+package com.fjhx.params.order;
+
+import com.fjhx.entity.order.OrderJd;
+import com.fjhx.utils.RegionClientUtil;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 销售订单
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class OrderJdEx extends OrderJd implements RegionClientUtil.region {
+
+    /**
+     * 客户名称
+     */
+    private String customerName;
+
+    private String countryName;
+
+    private String provinceName;
+
+    private String cityName;
+
+}

+ 39 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/order/OrderJdExcelVo.java

@@ -0,0 +1,39 @@
+package com.fjhx.params.order;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fjhx.params.excel.BaseExcelVo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class OrderJdExcelVo extends BaseExcelVo {
+
+    @ExcelProperty("采购单号")
+    private String code;
+
+    @ExcelProperty("商品编号")
+    private String productCode;
+
+    @ExcelProperty("详细地址")
+    private String detailedAddress;
+
+    @ExcelProperty("收货负责人")
+    private String contacts;
+
+    @ExcelProperty("收货电话")
+    private String phone;
+
+    @ExcelProperty("采购价格")
+    private BigDecimal price;
+
+    @ExcelProperty("采购数量")
+    private BigDecimal quantity;
+
+    @ExcelProperty("订购时间")
+    private Date orderTime;
+
+}

+ 25 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/order/OrderJdVo.java

@@ -0,0 +1,25 @@
+package com.fjhx.params.order;
+
+import com.fjhx.entity.order.OrderJd;
+import com.fjhx.entity.order.OrderJdDetails;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 销售订单
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class OrderJdVo extends OrderJd {
+
+    /**
+     * 订单明细
+     */
+    private List<OrderJdDetails> orderJdDetailsList;
+
+}

+ 0 - 5
hx-service/victoriatourist/pom.xml

@@ -44,11 +44,6 @@
             <version>1.0.11</version>
         </dependency>
 
-        <dependency>
-            <groupId>org.springblade</groupId>
-            <artifactId>blade-starter-excel</artifactId>
-        </dependency>
-
     </dependencies>
 
 </project>

+ 1 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/config/LogicDeleteInterceptor.java

@@ -38,7 +38,7 @@ public class LogicDeleteInterceptor implements InnerInterceptor {
     /**
      * 不要拼接逻辑删除的表
      */
-    private static final List<String> delFlagTableNameList = Arrays.asList();
+    private static final List<String> delFlagTableNameList = Arrays.asList("system_config");
 
     @SneakyThrows
     @Override

+ 1 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/config/MybatisConfig.java

@@ -21,7 +21,7 @@ public class MybatisConfig {
     /**
      * 排除租户表集合
      */
-    private static final List<String> excludeTenantTableName = Arrays.asList("logistics_company");
+    private static final List<String> excludeTenantTableName = Arrays.asList("logistics_company", "system_config");
 
     /**
      * 租户插件

+ 0 - 56
hx-service/victoriatourist/src/main/java/com/fjhx/controller/excel/ExcelImportFailLineController.java

@@ -1,56 +0,0 @@
-package com.fjhx.controller.excel;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.springblade.core.tool.api.R;
-import com.fjhx.entity.excel.ExcelImportFailLine;
-import com.fjhx.params.excel.ExcelImportFailLineVo;
-import com.fjhx.service.excel.ExcelImportFailLineService;
-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;
-
-import java.util.Map;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author ${author}
- * @since 2022-12-07
- */
-@RestController
-@RequestMapping("/excelImportFailLine")
-public class ExcelImportFailLineController {
-
-    @Autowired
-    private ExcelImportFailLineService excelImportFailLineService;
-
-    @PostMapping("/page")
-    public R page(@RequestBody Map<String, Object> condition){
-        Page<ExcelImportFailLine> result = excelImportFailLineService.getPage(condition);
-        return R.success(result);
-    }
-
-    @PostMapping("/add")
-    public R add(@RequestBody ExcelImportFailLineVo excelImportFailLineVo){
-        excelImportFailLineService.add(excelImportFailLineVo);
-        return R.success();
-    }
-
-    @PostMapping("/edit")
-    public R edit(@RequestBody ExcelImportFailLineVo excelImportFailLineVo){
-        excelImportFailLineService.edit(excelImportFailLineVo);
-        return R.success();
-    }
-
-    @PostMapping("/delete")
-    public R delete(@RequestBody ExcelImportFailLineVo excelImportFailLineVo){
-        excelImportFailLineService.delete(excelImportFailLineVo);
-        return R.success();
-    }
-
-}
-

+ 14 - 4
hx-service/victoriatourist/src/main/java/com/fjhx/controller/excel/ExcelImportLogController.java

@@ -1,7 +1,7 @@
 package com.fjhx.controller.excel;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.entity.excel.ExcelImportLog;
+import com.alibaba.fastjson.JSONObject;
+import com.fjhx.params.excel.ExcelProcessingProgress;
 import com.fjhx.service.excel.ExcelImportLogService;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -10,8 +10,6 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Map;
-
 /**
  * <p>
  * 前端控制器
@@ -27,5 +25,17 @@ public class ExcelImportLogController {
     @Autowired
     private ExcelImportLogService excelImportLogService;
 
+    @PostMapping("readRate")
+    public R readRate(@RequestBody JSONObject json) {
+        ExcelProcessingProgress readRate = excelImportLogService.getReadRate(json.getLong("flag"));
+        return R.data(readRate);
+    }
+
+    @PostMapping("stop")
+    public R stop(@RequestBody JSONObject json) {
+        excelImportLogService.stopRead(json.getLong("flag"));
+        return R.success();
+    }
+
 }
 

+ 60 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/order/OrderJdController.java

@@ -0,0 +1,60 @@
+package com.fjhx.controller.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.params.order.OrderJdEx;
+import com.fjhx.params.order.OrderJdVo;
+import com.fjhx.service.order.OrderJdService;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 销售订单 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+@RestController
+@RequestMapping("/orderJd")
+public class OrderJdController {
+
+    @Autowired
+    private OrderJdService orderJdService;
+
+    @PostMapping("/page")
+    public R page(@RequestBody Map<String, Object> condition) {
+        Page<OrderJdEx> result = orderJdService.getPage(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody OrderJdVo orderJdVo) {
+        orderJdService.add(orderJdVo);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody OrderJdVo orderJdVo) {
+        orderJdService.edit(orderJdVo);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody OrderJdVo orderJdVo) {
+        orderJdService.delete(orderJdVo);
+        return R.success();
+    }
+
+    @PostMapping("/excelImport")
+    public R excelImport(@RequestParam("file") MultipartFile file) {
+        Long flag = orderJdService.excelImport(file);
+        return R.data(flag);
+    }
+
+}
+

+ 56 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/controller/order/OrderJdDetailsController.java

@@ -0,0 +1,56 @@
+package com.fjhx.controller.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springblade.core.tool.api.R;
+import com.fjhx.entity.order.OrderJdDetails;
+import com.fjhx.params.order.OrderJdDetailsVo;
+import com.fjhx.service.order.OrderJdDetailsService;
+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;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 销售订单明细表 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+@RestController
+@RequestMapping("/orderJdDetails")
+public class OrderJdDetailsController {
+
+    @Autowired
+    private OrderJdDetailsService orderJdDetailsService;
+
+    @PostMapping("/page")
+    public R page(@RequestBody Map<String, Object> condition){
+        Page<OrderJdDetails> result = orderJdDetailsService.getPage(condition);
+        return R.success(result);
+    }
+
+    @PostMapping("/add")
+    public R add(@RequestBody OrderJdDetailsVo orderJdDetailsVo){
+        orderJdDetailsService.add(orderJdDetailsVo);
+        return R.success();
+    }
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody OrderJdDetailsVo orderJdDetailsVo){
+        orderJdDetailsService.edit(orderJdDetailsVo);
+        return R.success();
+    }
+
+    @PostMapping("/delete")
+    public R delete(@RequestBody OrderJdDetailsVo orderJdDetailsVo){
+        orderJdDetailsService.delete(orderJdDetailsVo);
+        return R.success();
+    }
+
+}
+

+ 6 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/listener/EasyExcelListener.java

@@ -27,10 +27,11 @@ public class EasyExcelListener<T extends BaseExcelVo> extends AnalysisEventListe
     @Override
     public void invoke(T data, AnalysisContext context) {
         data.setLineNumber(lineNumber++);
+
         list.add(data);
         if (list.size() >= pageSize) {
             if (totalLine == null) {
-                totalLine = context.readSheetHolder().getApproximateTotalRowNumber();
+                totalLine = context.readSheetHolder().getApproximateTotalRowNumber() - 1;
             }
             radeLine += list.size();
             handleDataFun.execute(list, totalLine, radeLine);
@@ -41,6 +42,10 @@ public class EasyExcelListener<T extends BaseExcelVo> extends AnalysisEventListe
     @Override
     public void doAfterAllAnalysed(AnalysisContext context) {
         if (list.size() > 0) {
+            if (totalLine == null) {
+                totalLine = context.readSheetHolder().getApproximateTotalRowNumber() - 1;
+            }
+            radeLine += list.size();
             handleDataFun.execute(list, totalLine, radeLine);
         }
     }

+ 0 - 16
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/excel/ExcelImportFailLineMapper.java

@@ -1,16 +0,0 @@
-package com.fjhx.mapper.excel;
-
-import com.fjhx.entity.excel.ExcelImportFailLine;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- *  Mapper 接口
- * </p>
- *
- * @author ${author}
- * @since 2022-12-07
- */
-public interface ExcelImportFailLineMapper extends BaseMapper<ExcelImportFailLine> {
-
-}

+ 16 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/order/OrderJdDetailsMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper.order;
+
+import com.fjhx.entity.order.OrderJdDetails;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 销售订单明细表 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+public interface OrderJdDetailsMapper extends BaseMapper<OrderJdDetails> {
+
+}

+ 1 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/excel/ExcelImportFailLineMapper.xml → hx-service/victoriatourist/src/main/java/com/fjhx/mapper/order/OrderJdDetailsMapper.xml

@@ -1,5 +1,5 @@
 <?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.mapper.excel.ExcelImportFailLineMapper">
+<mapper namespace="com.fjhx.mapper.order.OrderJdDetailsMapper">
 
 </mapper>

+ 21 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/order/OrderJdMapper.java

@@ -0,0 +1,21 @@
+package com.fjhx.mapper.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.order.OrderJd;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.params.order.OrderJdEx;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+
+/**
+ * <p>
+ * 销售订单 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+public interface OrderJdMapper extends BaseMapper<OrderJd> {
+
+    Page<OrderJdEx> getPage(Page<OrderJd> page, IWrapper<Object> wrapper);
+
+}

+ 26 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/order/OrderJdMapper.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.mapper.order.OrderJdMapper">
+
+    <select id="getPage" resultType="com.fjhx.params.order.OrderJdEx">
+        select oj.id,
+               oj.customer_info_id,
+               oj.code,
+               oj.amount_money,
+               oj.order_time,
+               oj.status,
+               oj.country_id,
+               oj.province_id,
+               oj.city_id,
+               oj.detailed_address,
+               oj.contacts,
+               oj.phone,
+               oj.phone_prefix_type,
+               oj.remark,
+               ci.name customerName
+        from order_jd oj
+                 left join customer_info ci on oj.customer_info_id = ci.id
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 0 - 28
hx-service/victoriatourist/src/main/java/com/fjhx/service/excel/ExcelImportFailLineService.java

@@ -1,28 +0,0 @@
-package com.fjhx.service.excel;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.entity.excel.ExcelImportFailLine;
-import com.fjhx.params.excel.ExcelImportFailLineVo;
-import com.fjhx.base.BaseService;
-
-import java.util.Map;
-
-/**
- * <p>
- *  服务类
- * </p>
- *
- * @author ${author}
- * @since 2022-12-07
- */
-public interface ExcelImportFailLineService extends BaseService<ExcelImportFailLine> {
-
-    Page<ExcelImportFailLine> getPage(Map<String, Object> condition);
-
-    void add(ExcelImportFailLineVo excelImportFailLineVo);
-
-    void edit(ExcelImportFailLineVo excelImportFailLineVo);
-
-    void delete(ExcelImportFailLineVo excelImportFailLineVo);
-
-}

+ 16 - 5
hx-service/victoriatourist/src/main/java/com/fjhx/service/excel/ExcelImportLogService.java

@@ -22,6 +22,7 @@ public interface ExcelImportLogService extends BaseService<ExcelImportLog> {
     /**
      * 异步分批处理excel数据
      *
+     * @param pageSize     当次导入数量
      * @param flag         缓存标记
      * @param file         excel文件
      * @param cls          转换对象
@@ -30,7 +31,7 @@ public interface ExcelImportLogService extends BaseService<ExcelImportLog> {
      * @param errorFun     发生异常处理方法
      * @param <T>          对象类型
      */
-    <T extends BaseExcelVo> void asyncRead(Long flag, MultipartFile file, Class<T> cls, Integer businessType,
+    <T extends BaseExcelVo> void asyncRead(int pageSize, Long flag, MultipartFile file, Class<T> cls, Integer businessType,
                                            Consumer<List<T>> handleFun, Runnable errorFun);
 
     /**
@@ -48,11 +49,21 @@ public interface ExcelImportLogService extends BaseService<ExcelImportLog> {
     void stopRead(Long flag);
 
     /**
-     * 记录异常行数据
+     * 保存导入记录
      *
-     * @param flag 缓存标记
-     * @param list 异常数据
+     * @param flag         导入标记
+     * @param businessType 业务类型
+     * @param file         文件
+     */
+    void saveLog(Long flag, Integer businessType, MultipartFile file);
+
+    /**
+     * 更新导入记录
+     *
+     * @param start  开始导入时间戳
+     * @param flag   标记
+     * @param status 状态
      */
-    void readErrorData(Long flag, List<? extends BaseExcelVo> list);
+    void editLog(Long start, Long flag, Integer status);
 
 }

+ 0 - 48
hx-service/victoriatourist/src/main/java/com/fjhx/service/excel/impl/ExcelImportFailLineServiceImpl.java

@@ -1,48 +0,0 @@
-package com.fjhx.service.excel.impl;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.entity.excel.ExcelImportFailLine;
-import com.fjhx.params.excel.ExcelImportFailLineVo;
-import com.fjhx.mapper.excel.ExcelImportFailLineMapper;
-import com.fjhx.service.excel.ExcelImportFailLineService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fjhx.utils.wrapperUtil.IWrapper;
-import org.springframework.stereotype.Service;
-
-import java.util.Map;
-
-/**
- * <p>
- *  服务实现类
- * </p>
- *
- * @author ${author}
- * @since 2022-12-07
- */
-@Service
-public class ExcelImportFailLineServiceImpl extends ServiceImpl<ExcelImportFailLineMapper, ExcelImportFailLine> implements ExcelImportFailLineService {
-
-    @Override
-    public Page<ExcelImportFailLine> getPage(Map<String, Object> condition) {
-
-        IWrapper<ExcelImportFailLine> wrapper = IWrapper.getWrapper(condition);
-
-        return page(condition, wrapper);
-    }
-
-    @Override
-    public void add(ExcelImportFailLineVo excelImportFailLineVo) {
-        save(excelImportFailLineVo);
-    }
-
-    @Override
-    public void edit(ExcelImportFailLineVo excelImportFailLineVo) {
-        updateById(excelImportFailLineVo);
-    }
-
-    @Override
-    public void delete(ExcelImportFailLineVo excelImportFailLineVo) {
-        removeById(excelImportFailLineVo.getId());
-    }
-
-}

+ 45 - 40
hx-service/victoriatourist/src/main/java/com/fjhx/service/excel/impl/ExcelImportLogServiceImpl.java

@@ -15,6 +15,7 @@ import com.fjhx.params.excel.ExcelProcessingProgress;
 import com.fjhx.service.excel.ExcelImportLogService;
 import org.springblade.core.excel.support.ExcelException;
 import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -50,7 +51,7 @@ public class ExcelImportLogServiceImpl extends ServiceImpl<ExcelImportLogMapper,
     private BladeRedis bladeRedis;
 
     @Override
-    public <T extends BaseExcelVo> void asyncRead(Long flag, MultipartFile file, Class<T> cls, Integer businessType,
+    public <T extends BaseExcelVo> void asyncRead(int pageSize, Long flag, MultipartFile file, Class<T> cls, Integer businessType,
                                                   Consumer<List<T>> handleFun, Runnable errorFun) {
 
         String filename = file.getOriginalFilename();
@@ -86,9 +87,20 @@ public class ExcelImportLogServiceImpl extends ServiceImpl<ExcelImportLogMapper,
                 verificationAndUpdateProgress(flag, 2, 10);
 
                 EasyExcel.read(inputStream, cls, new EasyExcelListener<T>(
-                        500,
+                        pageSize,
                         (list, totalLine, readLine) -> {
-                            handleFun.accept(list);
+
+                            try {
+                                handleFun.accept(list);
+                            } catch (Exception e) {
+                                // 已完成
+                                excelProcessingProgress.setStatus(4);
+                                excelProcessingProgress.setPercentage(0);
+                                excelProcessingProgress.setErrorMsg(e.getMessage());
+                                setProgress(flag, excelProcessingProgress); // 保存
+                                throw e;
+                            }
+
                             if (totalLine == readLine) {
                                 editLog(start, flag, 1);
                                 // 已完成
@@ -110,9 +122,12 @@ public class ExcelImportLogServiceImpl extends ServiceImpl<ExcelImportLogMapper,
                             else {
                                 editLog(start, flag, 2);
                                 verificationAndUpdateProgress(flag, 4, 0);
+                                exception.printStackTrace();
+                                throw new ExcelException("导入异常");
                             }
                         })).doReadAll();
             } catch (Exception e) {
+                e.printStackTrace();
                 log.error(e.getMessage());
             } finally {
                 IoUtil.close(inputStream);
@@ -142,8 +157,34 @@ public class ExcelImportLogServiceImpl extends ServiceImpl<ExcelImportLogMapper,
     }
 
     @Override
-    public void readErrorData(Long flag, List<? extends BaseExcelVo> list) {
+    public void saveLog(Long flag, Integer businessType, MultipartFile file) {
+        // 上传记录记录数据库
+        ExcelImportLog excelImportLog = new ExcelImportLog();
+        excelImportLog.setId(flag);
+        excelImportLog.setBusinessType(businessType);
+        excelImportLog.setStatus(1);
+        excelImportLog.setFileName(file.getOriginalFilename());
+        excelImportLog.setCreateTime(new Date());
+        excelImportLog.setCreateUser(AuthUtil.getUserId());
+        save(excelImportLog);
+    }
+
+    /**
+     * 更新导入记录
+     *
+     * @param start  开始导入时间戳
+     * @param flag   标记
+     * @param status 状态
+     */
+    public void editLog(Long start, Long flag, Integer status) {
+        long end = System.currentTimeMillis();
 
+        update(q -> q
+                .eq(ExcelImportLog::getId, flag)
+                .set(ExcelImportLog::getStatus, status)
+                .set(ExcelImportLog::getExecuteTime, (end - start) / 1000)
+                .set(BaseEntity::getUpdateTime, new Date())
+        );
     }
 
     /**
@@ -174,40 +215,4 @@ public class ExcelImportLogServiceImpl extends ServiceImpl<ExcelImportLogMapper,
         bladeRedis.setEx(VRedisKeyConstant.EXCEL_FLAG_KEY + flag, excelProcessingProgress, 60L * 60 * 12);
     }
 
-    /**
-     * 保存导入记录
-     *
-     * @param flag         导入标记
-     * @param businessType 业务类型
-     * @param file         文件
-     */
-    private void saveLog(Long flag, Integer businessType, MultipartFile file) {
-        // 上传记录记录数据库
-        ExcelImportLog excelImportLog = new ExcelImportLog();
-        excelImportLog.setId(flag);
-        excelImportLog.setBusinessType(businessType);
-        excelImportLog.setStatus(0);
-        excelImportLog.setFileName(file.getOriginalFilename());
-        save(excelImportLog);
-    }
-
-    /**
-     * 更新导入记录
-     *
-     * @param start  开始导入时间戳
-     * @param flag   标记
-     * @param status 状态
-     */
-    private void editLog(Long start, Long flag, Integer status) {
-        long end = System.currentTimeMillis();
-
-        update(q -> q
-                .eq(ExcelImportLog::getId, flag)
-                .set(ExcelImportLog::getStatus, status)
-                .set(ExcelImportLog::getExecuteTime, (end - start) / 1000)
-                .set(BaseEntity::getUpdateTime, new Date())
-        );
-    }
-
-
 }

+ 28 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/order/OrderJdDetailsService.java

@@ -0,0 +1,28 @@
+package com.fjhx.service.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.order.OrderJdDetails;
+import com.fjhx.params.order.OrderJdDetailsVo;
+import com.fjhx.base.BaseService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 销售订单明细表 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+public interface OrderJdDetailsService extends BaseService<OrderJdDetails> {
+
+    Page<OrderJdDetails> getPage(Map<String, Object> condition);
+
+    void add(OrderJdDetailsVo orderJdDetailsVo);
+
+    void edit(OrderJdDetailsVo orderJdDetailsVo);
+
+    void delete(OrderJdDetailsVo orderJdDetailsVo);
+
+}

+ 32 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/order/OrderJdService.java

@@ -0,0 +1,32 @@
+package com.fjhx.service.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.order.OrderJd;
+import com.fjhx.params.order.OrderJdEx;
+import com.fjhx.params.order.OrderJdVo;
+import com.fjhx.base.BaseService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 销售订单 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+public interface OrderJdService extends BaseService<OrderJd> {
+
+    Page<OrderJdEx> getPage(Map<String, Object> condition);
+
+    void add(OrderJdVo orderJdVo);
+
+    void edit(OrderJdVo orderJdVo);
+
+    void delete(OrderJdVo orderJdVo);
+
+    Long excelImport(MultipartFile file);
+
+}

+ 48 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/order/impl/OrderJdDetailsServiceImpl.java

@@ -0,0 +1,48 @@
+package com.fjhx.service.order.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.order.OrderJdDetails;
+import com.fjhx.params.order.OrderJdDetailsVo;
+import com.fjhx.mapper.order.OrderJdDetailsMapper;
+import com.fjhx.service.order.OrderJdDetailsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 销售订单明细表 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-12-08
+ */
+@Service
+public class OrderJdDetailsServiceImpl extends ServiceImpl<OrderJdDetailsMapper, OrderJdDetails> implements OrderJdDetailsService {
+
+    @Override
+    public Page<OrderJdDetails> getPage(Map<String, Object> condition) {
+
+        IWrapper<OrderJdDetails> wrapper = IWrapper.getWrapper(condition);
+
+        return page(condition, wrapper);
+    }
+
+    @Override
+    public void add(OrderJdDetailsVo orderJdDetailsVo) {
+        save(orderJdDetailsVo);
+    }
+
+    @Override
+    public void edit(OrderJdDetailsVo orderJdDetailsVo) {
+        updateById(orderJdDetailsVo);
+    }
+
+    @Override
+    public void delete(OrderJdDetailsVo orderJdDetailsVo) {
+        removeById(orderJdDetailsVo.getId());
+    }
+
+}

+ 251 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/order/impl/OrderJdServiceImpl.java

@@ -0,0 +1,251 @@
+package com.fjhx.service.order.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.BaseEntity;
+import com.fjhx.constants.ExcelImportBusinessType;
+import com.fjhx.constants.SystemConfigKeyConstant;
+import com.fjhx.entity.customer.CustomerInfo;
+import com.fjhx.entity.order.OrderJd;
+import com.fjhx.entity.order.OrderJdDetails;
+import com.fjhx.entity.order.OrderSales;
+import com.fjhx.entity.product.ProductInfo;
+import com.fjhx.mapper.order.OrderJdMapper;
+import com.fjhx.params.order.OrderJdEx;
+import com.fjhx.params.order.OrderJdExcelVo;
+import com.fjhx.params.order.OrderJdVo;
+import com.fjhx.service.excel.ExcelImportLogService;
+import com.fjhx.service.order.OrderJdDetailsService;
+import com.fjhx.service.order.OrderJdService;
+import com.fjhx.service.product.ProductInfoService;
+import com.fjhx.service.system.SystemConfigService;
+import com.fjhx.uitl.code.CodeEnum;
+import com.fjhx.utils.Assert;
+import com.fjhx.utils.RegionClientUtil;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import com.fjhx.utils.wrapperUtil.KeywordData;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.utils.AuthUtil;
+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 ${author}
+ * @since 2022-12-08
+ */
+@Service
+public class OrderJdServiceImpl extends ServiceImpl<OrderJdMapper, OrderJd> implements OrderJdService {
+
+    @Autowired
+    private ExcelImportLogService excelImportLogService;
+
+    @Autowired
+    private ProductInfoService productInfoService;
+
+    @Autowired
+    private OrderJdDetailsService orderJdDetailsService;
+
+    @Autowired
+    private SystemConfigService systemConfigService;
+
+    @Override
+    public Page<OrderJdEx> getPage(Map<String, Object> condition) {
+
+        IWrapper<Object> wrapper = IWrapper.getWrapper(condition)
+                .keyword(new KeywordData("oj", OrderSales::getCode), new KeywordData("ci", CustomerInfo::getName))
+                .eq("oj", OrderJd::getStatus)
+                .like("oj", OrderJd::getCode)
+                .like("ci", CustomerInfo::getName, condition.get("customerName"))
+                .eq("oj", OrderJd::getCountryId)
+                .eq("oj", OrderJd::getProvinceId)
+                .eq("oj", OrderJd::getCityId)
+                .ge("oj", OrderJd::getAmountMoney, condition.get("minAmountMoney"))
+                .le("oj", OrderJd::getAmountMoney, condition.get("maxAmountMoney"));
+
+        Page<OrderJdEx> page = baseMapper.getPage(createPage(condition), wrapper);
+
+        // 赋值国省市
+        RegionClientUtil.setEntityRegionName(page.getRecords());
+
+        return page;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(OrderJdVo orderJdVo) {
+        // 订单明细
+        List<OrderJdDetails> orderJdDetailsList = orderJdVo.getOrderJdDetailsList();
+        Assert.notEmpty(orderJdDetailsList, "订单明细不能为空");
+
+        // 获取京东客户id
+        Long customerCustomerId = systemConfigService.getValue(SystemConfigKeyConstant.CUSTOMER_CUSTOMER_ID, Long.class);
+        orderJdVo.setCustomerInfoId(customerCustomerId);
+
+        // 订单时间
+        orderJdVo.setOrderTime(ObjectUtil.defaultIfNull(orderJdVo.getOrderTime(), new Date()));
+
+        // 统计订单金额
+        BigDecimal amountMoney = orderJdDetailsList.stream()
+                .map(item -> item.getPrice().multiply(item.getQuantity())).reduce(BigDecimal.ZERO, BigDecimal::add);
+        orderJdVo.setAmountMoney(amountMoney);
+
+        synchronized (this) {
+            orderJdVo.setCode(CodeEnum.ORDER_JD.getCode(orderJdVo.getCode()));
+            save(orderJdVo);
+        }
+        // 添加订单明细
+        for (OrderJdDetails orderJdDetails : orderJdDetailsList) {
+            orderJdDetails.setOrderJdId(orderJdVo.getId());
+            orderJdDetails.setNotIssuedQuantity(orderJdDetails.getQuantity());
+        }
+        orderJdDetailsService.saveBatch(orderJdDetailsList);
+    }
+
+    @Override
+    public void edit(OrderJdVo orderJdVo) {
+        updateById(orderJdVo);
+    }
+
+    @Override
+    public void delete(OrderJdVo orderJdVo) {
+        removeById(orderJdVo.getId());
+    }
+
+    @Override
+    public Long excelImport(MultipartFile file) {
+
+        long start = System.currentTimeMillis();
+
+        long flag = IdWorker.getId();
+
+        // 读取excel数据
+        List<OrderJdExcelVo> list = ExcelUtil.read(file, OrderJdExcelVo.class);
+
+        // 获取京东客户id
+        Long customerCustomerId = systemConfigService.getValue(SystemConfigKeyConstant.CUSTOMER_CUSTOMER_ID, Long.class);
+
+        // 验证订单编号是否重复
+        verifyOrderNumber(list);
+
+        // 查询产品编码对应的产品id
+        Map<String, Long> codeIdMap = getCodeIdMap(list);
+
+        // 保存导入记录
+        excelImportLogService.saveLog(flag, ExcelImportBusinessType.JD_ORDER, file);
+
+        // 京东订单表
+        Map<String, OrderJd> map = new HashMap<>();
+
+        // 京东订单明细
+        List<OrderJdDetails> orderJdDetailsList = new ArrayList<>();
+
+        Date date = new Date();
+
+        for (OrderJdExcelVo orderJdExcelVo : list) {
+
+            String code = orderJdExcelVo.getCode();
+            String productCode = orderJdExcelVo.getProductCode();
+            BigDecimal price = orderJdExcelVo.getPrice();
+            BigDecimal quantity = orderJdExcelVo.getQuantity();
+
+            Long productId = codeIdMap.get(productCode);
+            OrderJd orderJd = map.get(code);
+            if (orderJd == null) {
+                orderJd = new OrderJdEx();
+
+                long id = IdWorker.getId();
+                orderJd.setId(id);
+                orderJd.setCustomerInfoId(customerCustomerId);
+                orderJd.setCode(code);
+                orderJd.setAmountMoney(price.multiply(quantity));
+                orderJd.setOrderTime(orderJdExcelVo.getOrderTime());
+                orderJd.setStatus(1);
+                orderJd.setCountryId("China");
+                orderJd.setDetailedAddress(orderJdExcelVo.getDetailedAddress());
+                orderJd.setContacts(orderJdExcelVo.getContacts());
+                orderJd.setPhone(orderJdExcelVo.getPhone());
+                orderJd.setExcelImportId(flag);
+                orderJd.setCreateUser(AuthUtil.getUserId());
+                orderJd.setCreateTime(date);
+                map.put(code, orderJd);
+            } else {
+                orderJd.setAmountMoney(orderJd.getAmountMoney().add(price.multiply(quantity)));
+            }
+
+            OrderJdDetails orderJdDetails = new OrderJdDetails();
+            orderJdDetails.setOrderJdId(orderJd.getId());
+            orderJdDetails.setProductId(productId);
+            orderJdDetails.setQuantity(quantity);
+            orderJdDetails.setPrice(price);
+            orderJdDetails.setNotIssuedQuantity(quantity);
+
+            orderJdDetailsList.add(orderJdDetails);
+        }
+
+        saveBatch(new ArrayList<>(map.values()));
+        orderJdDetailsService.saveBatch(orderJdDetailsList);
+
+        // 保存导入记录
+        excelImportLogService.editLog(start, flag, 1);
+
+        return flag;
+    }
+
+    /**
+     * 验证订单编号是否重复
+     */
+    private void verifyOrderNumber(List<OrderJdExcelVo> list) {
+        List<String> codeList = list.stream().map(OrderJdExcelVo::getCode).distinct().collect(Collectors.toList());
+        List<String> existCodeList = listObj(OrderJd::getCode, q -> q.in(OrderJd::getCode, codeList));
+
+        if (existCodeList.size() > 0) {
+            StringJoiner joiner = new StringJoiner(",");
+            existCodeList.forEach(joiner::add);
+
+            // 保存导入记录
+//            excelImportLogService.editLog(start, flag, 2);
+            throw new ServiceException("存在相同的采购单号:" + joiner);
+        }
+    }
+
+
+    /**
+     * 获取<产品编码,产品id>map
+     */
+    private Map<String, Long> getCodeIdMap(List<OrderJdExcelVo> list) {
+        List<String> productCodeList = list.stream().map(OrderJdExcelVo::getProductCode).distinct().collect(Collectors.toList());
+        Map<String, Long> kv = productInfoService.getKV(
+                ProductInfo::getCode,
+                BaseEntity::getId,
+                q -> q.in(ProductInfo::getCode, productCodeList));
+
+        if (kv.size() != productCodeList.size()) {
+            StringJoiner joiner = new StringJoiner(",");
+
+            for (String productCode : productCodeList) {
+                if (kv.get(productCode) == null) {
+                    joiner.add(productCode);
+                }
+            }
+
+//            // 保存导入记录
+//            excelImportLogService.editLog(start, flag, 2);
+            throw new ServiceException("产品表中未找到对应产品编码:" + joiner);
+        }
+        return kv;
+    }
+
+}

+ 3 - 9
hx-service/victoriatourist/src/main/java/com/fjhx/service/system/SystemConfigService.java

@@ -1,11 +1,7 @@
 package com.fjhx.service.system;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.entity.system.SystemConfig;
-import com.fjhx.params.system.SystemConfigVo;
 import com.fjhx.base.BaseService;
-
-import java.util.Map;
+import com.fjhx.entity.system.SystemConfig;
 
 /**
  * <p>
@@ -17,12 +13,10 @@ import java.util.Map;
  */
 public interface SystemConfigService extends BaseService<SystemConfig> {
 
-    Page<SystemConfig> getPage(Map<String, Object> condition);
+    <T> T getValue(String key, Class<T> cls);
 
-    void add(SystemConfigVo systemConfigVo);
 
-    void edit(SystemConfigVo systemConfigVo);
+    String getValue(String key);
 
-    void delete(SystemConfigVo systemConfigVo);
 
 }

+ 8 - 24
hx-service/victoriatourist/src/main/java/com/fjhx/service/system/impl/SystemConfigServiceImpl.java

@@ -1,16 +1,12 @@
 package com.fjhx.service.system.impl;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.entity.system.SystemConfig;
-import com.fjhx.params.system.SystemConfigVo;
 import com.fjhx.mapper.system.SystemConfigMapper;
 import com.fjhx.service.system.SystemConfigService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fjhx.utils.wrapperUtil.IWrapper;
 import org.springframework.stereotype.Service;
 
-import java.util.Map;
-
 /**
  * <p>
  * 参数配置表 服务实现类
@@ -23,26 +19,14 @@ import java.util.Map;
 public class SystemConfigServiceImpl extends ServiceImpl<SystemConfigMapper, SystemConfig> implements SystemConfigService {
 
     @Override
-    public Page<SystemConfig> getPage(Map<String, Object> condition) {
-
-        IWrapper<SystemConfig> wrapper = IWrapper.getWrapper(condition);
-
-        return page(condition, wrapper);
-    }
-
-    @Override
-    public void add(SystemConfigVo systemConfigVo) {
-        save(systemConfigVo);
-    }
-
-    @Override
-    public void edit(SystemConfigVo systemConfigVo) {
-        updateById(systemConfigVo);
+    public <T> T getValue(String key, Class<T> cls) {
+        return JSONObject.parseObject(getValue(key), cls);
     }
 
     @Override
-    public void delete(SystemConfigVo systemConfigVo) {
-        removeById(systemConfigVo.getId());
+    public String getValue(String key) {
+        SystemConfig config = getOne(q -> q.eq(SystemConfig::getConfigKey, key));
+        if (config == null) return null;
+        return config.getConfigValue();
     }
-
 }

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

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.fjhx.service.apply.ApplyPurchaseService;
 import com.fjhx.service.customer.CustomerInfoService;
 import com.fjhx.service.material.MaterialService;
+import com.fjhx.service.order.OrderJdService;
 import com.fjhx.service.order.OrderSalesService;
 import com.fjhx.service.product.ProductInfoService;
 import com.fjhx.service.product.ProductSpuService;
@@ -40,6 +41,8 @@ public enum CodeEnum {
     CUSTOMER("C", null, "code", 5, CustomerInfoService.class),
     //销售订单
     ORDER_SALES("SO", null, "code", 5, OrderSalesService.class),
+    // 京东订单
+    ORDER_JD("JD", null, "code", 5, OrderJdService.class),
 
     ;
 
@@ -101,7 +104,7 @@ public enum CodeEnum {
     public String getCode(String code) {
         if (ObjectUtil.isNotEmpty(code)) {
             Long count = service.query().eq(codeFieldName, code).count();
-            Assert.eqZero(count, "编码重复");
+            Assert.eqZero(count, "编码已存在");
             return code;
         } else {
             return getCode();