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

Merge remote-tracking branch 'origin/dev' into dev

zk 2 лет назад
Родитель
Сommit
bbf7523303
43 измененных файлов с 1447 добавлено и 383 удалено
  1. 5 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java
  2. 2 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/EntTypeEnum.java
  3. 0 206
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/TradeOrderUpdateParam.java
  4. 40 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java
  5. 82 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/AddressInfoDetail.java
  6. 41 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/ContractInfo.java
  7. 95 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/GoodsInfoDetailRes.java
  8. 152 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/OrderDetailRes.java
  9. 47 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/UnitInfoDetailRes.java
  10. 33 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/UpdateOrderAmountParam.java
  11. 3 2
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dao/KwcContractLogisticsMapper.java
  12. 111 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/dto/res/QueryListResDto.java
  13. 0 1
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/QueryListReqVo.java
  14. 51 7
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java
  15. 25 9
      sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractLogisticsMapper.xml
  16. 13 1
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmAddressController.java
  17. 0 2
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/AddressQueryReqVo.java
  18. 1 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/IdsReqVo.java
  19. 32 0
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java
  20. 19 20
      sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java
  21. 73 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java
  22. 33 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/BatchDeleteParam.java
  23. 2 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/GoodsInfo.java
  24. 27 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/AddressInfoDetailRes.java
  25. 35 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/GoodsInfoDetailRes.java
  26. 57 20
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderDetailRes.java
  27. 23 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/UnitInfoDetailRes.java
  28. 30 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderAddressService.java
  29. 30 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderContractService.java
  30. 16 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderGoodsService.java
  31. 146 40
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  32. 46 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderUnitService.java
  33. 51 6
      sckw-modules/sckw-report/src/main/java/com/sckw/report/consumer/SckwBusSumConsumer.java
  34. 1 1
      sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwOrderController.java
  35. 36 26
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java
  36. 29 14
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListStatisticParam.java
  37. 12 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java
  38. 1 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsUserController.java
  39. 2 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsEnterpriseDao.java
  40. 29 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/FindListReqVo.java
  41. 5 5
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java
  42. 5 3
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java
  43. 6 15
      sckw-modules/sckw-system/src/main/resources/mapper/KwsEnterpriseDao.xml

+ 5 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java

@@ -56,7 +56,11 @@ public enum DictEnum {
     PRODUCT_NAME_TYPE_0("product_name_type", "0", "毛石"),
     GOODS_STATUS_0("goods_status", "0", "已保存"),
     GOODS_STATUS_1("goods_status", "1", "已上架"),
-    GOODS_STATUS_2("goods_status", "2", "已下架");
+    GOODS_STATUS_2("goods_status", "2", "已下架"),
+    CHARGING_TYPE_1("charging_type", "1", "按装货量") ,
+    CHARGING_TYPE_2("charging_type", "2", "按卸货量") ,
+    CHARGING_TYPE_3("charging_type", "3", "按车次");
+
     private final String type;
     private final String value;
     private final String label;

+ 2 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/EntTypeEnum.java

@@ -14,9 +14,9 @@ public enum EntTypeEnum {
     SUPPLIER(1, "供应商"),
     //采购商
     PURCHASER(2, "采购商"),
-    //4PL物流
+    //4PL物流  托运
     LOGISTICS3(3, "4PL物流"),
-    //3PL物流
+    //3PL物流  承运
     LOGISTICS4(4, "3PL物流");
 
     private final int code;

+ 0 - 206
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/TradeOrderUpdateParam.java

@@ -1,206 +0,0 @@
-package com.sckw.mongo.model;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-import lombok.experimental.Accessors;
-import org.springframework.util.StringUtils;
-
-import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.util.Date;
-import java.util.Objects;
-
-/**
- * @author zk
- * @desc MongoDB-交易订单信息
- * @date 2023/7/8
- */
-
-@Getter
-@Setter
-@ToString
-@Accessors(chain = true)
-public class TradeOrderUpdateParam {
-
-    /**
-     * 订单主键
-     */
-    private Long tOrderId;
-
-    /**
-     * 订单成交数量
-     */
-    private BigDecimal amount;
-
-    /**
-     * 订单成交单价
-     */
-    private BigDecimal unitPrice;
-
-    /**
-     * 订单金额
-     */
-    private BigDecimal price;
-
-    /**
-     * 订单开始日期
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
-    private LocalDate startTime;
-
-    /**
-     * 订单结束日期
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
-    private LocalDate endTime;
-
-    /**
-     * 订单交易方式(预付款、货到付款)
-     */
-    private String trading;
-
-    /**
-     * 订单提货方式(采方自提、供应配送)
-     */
-    private String pickupType;
-
-    /**
-     * 订单交付类型(签发交付、签收交付)
-     */
-    private String deliveryType;
-
-    /**
-     * 订单已委托量
-     */
-    private BigDecimal entrustAmount;
-
-    /**
-     * 订单实际交付量
-     */
-    private BigDecimal actualAmount;
-
-    /**
-     * 状态
-     */
-    private Integer status;
-
-    /**
-     * 订单备注
-     */
-    private String remark;
-
-    /**
-     * 合同主键
-     */
-    private Long contractId;
-
-    /**
-     * 合同编号
-     */
-    private String contractNo;
-
-    /**
-     * 合同mc
-     */
-    private String contractName;
-
-    /**
-     * 合同签约方式
-     */
-    private String contractSigningWay;
-
-    /**
-     * 更新人主键id
-     */
-    private Long updateBy;
-
-    /**
-     * 更新人姓名
-     */
-    private String updateByName;
-
-    /**
-     * 更新时间
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private Date updateTime;
-
-    /**
-     * 是否删除(0未删除,1删除)
-     */
-    private Integer delFlag;
-
-    /**
-     * @desc: 参数转换
-     * @author: yzc
-     * @date: 2023-07-17 9:16
-     * @Param param:
-     * @Param order:
-     * @return: com.sckw.mongo.model.SckwTradeOrder
-     */
-    public void convertSckwTradeOrder(TradeOrderUpdateParam param, SckwTradeOrder order) {
-        if (Objects.nonNull(param.getAmount())) {
-            order.setAmount(param.getAmount());
-        }
-        if (Objects.nonNull(param.getUnitPrice())) {
-            order.setUnitPrice(param.getUnitPrice());
-        }
-        if (Objects.nonNull(param.getPrice())) {
-            order.setPrice(param.getPrice());
-        }
-        if (Objects.nonNull(param.getStartTime())) {
-            order.setStartTime(param.getStartTime());
-        }
-        if (Objects.nonNull(param.getEndTime())) {
-            order.setEndTime(param.getEndTime());
-        }
-        if (StringUtils.hasText(param.getTrading())) {
-            order.setTrading(param.getTrading());
-        }
-        if (StringUtils.hasText(param.getPickupType())) {
-            order.setPickupType(param.getPickupType());
-        }
-        if (StringUtils.hasText(param.getDeliveryType())) {
-            order.setDeliveryType(param.getDeliveryType());
-        }
-        if (Objects.nonNull(param.getEntrustAmount())) {
-            order.setEntrustAmount(param.getEntrustAmount());
-        }
-        if (Objects.nonNull(param.getActualAmount())) {
-            order.setActualAmount(param.getActualAmount());
-        }
-        if (Objects.nonNull(param.getStatus())) {
-            order.setStatus(param.getStatus());
-        }
-        if (StringUtils.hasText(param.getRemark())) {
-            order.setRemark(param.getRemark());
-        }
-        if (Objects.nonNull(param.getContractId())) {
-            order.setContractId(param.getContractId());
-        }
-        if (StringUtils.hasText(param.getContractNo())) {
-            order.setContractNo(param.getContractNo());
-        }
-        if (StringUtils.hasText(param.getContractName())) {
-            order.setContractName(param.getContractName());
-        }
-        if (StringUtils.hasText(param.getContractSigningWay())) {
-            order.setContractSigningWay(param.getContractSigningWay());
-        }
-        if (Objects.nonNull(param.getUpdateBy())) {
-            order.setUpdateBy(param.getUpdateBy());
-        }
-        if (StringUtils.hasText(param.getUpdateByName())) {
-            order.setUpdateByName(param.getUpdateByName());
-        }
-        if (Objects.nonNull(param.getUpdateTime())) {
-            order.setUpdateTime(param.getUpdateTime());
-        }
-        if (Objects.nonNull(param.getDelFlag())) {
-            order.setDelFlag(param.getDelFlag());
-        }
-    }
-
-}

+ 40 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java

@@ -0,0 +1,40 @@
+package com.sckw.order.api.dubbo;
+
+import com.sckw.order.api.model.OrderDetailRes;
+import com.sckw.order.api.model.UpdateOrderAmountParam;
+
+/**
+ * @desc: 贸易订单信息相关dubbo
+ * @author: yzc
+ * @date: 2023-07-18 18:18
+ */
+public interface TradeOrderInfoService {
+
+    /**
+     * @desc: 获取订单详情
+     * @author: yzc
+     * @date: 2023-07-18 18:25
+     * @Param tOrderId:
+     * @return: com.sckw.order.api.model.OrderDetailRes
+     */
+    OrderDetailRes getOrderDetailById(Long tOrderId);
+
+    /**
+     * @desc: 更新订单状态
+     * @author: yzc
+     * @date: 2023-07-18 18:31
+     * @Param tOrderId:
+     * @Param status:
+     * @return: void
+     */
+    void updateOrderStatus(Long tOrderId, Integer status);
+
+    /**
+     * @desc: 更新订单委托量、已履约量
+     * @author: yzc
+     * @date: 2023-07-18 18:34
+     * @Param param:
+     * @return: void
+     */
+    void updateOrderAmount(UpdateOrderAmountParam param);
+}

+ 82 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/AddressInfoDetail.java

@@ -0,0 +1,82 @@
+package com.sckw.order.api.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @desc: 地址信息详情
+ * @author: yzc
+ * @date: 2023-07-18 11:10
+ */
+@Getter
+@Setter
+@ToString
+public class AddressInfoDetail {
+
+    /**
+     * 地址类型label
+     */
+    private String addressTypeLabel;
+
+    /**
+     * 地址类型label
+     */
+    private String typeLabel;
+
+
+    /**
+     * 地址类型(1装货地址、2卸货地址)
+     */
+    private String addressType;
+
+    /**
+     * 地址名称
+     */
+    private String name;
+
+    /**
+     * 地址类型
+     */
+    private String type;
+
+    /**
+     * 联系人姓名
+     */
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 所在地区
+     */
+    private Integer cityCode;
+
+    /**
+     * 所属区域名称
+     */
+    private String cityName;
+
+    /**
+     * 详细地址
+     */
+    private String detailAddress;
+
+    /**
+     * 纬度
+     */
+    private String lat;
+
+    /**
+     * 经度
+     */
+    private String lng;
+
+    /**
+     * 电子围栏
+     */
+    private String fence;
+}

+ 41 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/ContractInfo.java

@@ -0,0 +1,41 @@
+package com.sckw.order.api.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @desc: 合同信息
+ * @author: yzc
+ * @date: 2023-07-12 11:00
+ */
+@Getter
+@Setter
+@ToString
+public class ContractInfo {
+
+    /**
+     * 合同id
+     */
+    private Long contractId;
+
+    /**
+     * 合同编号
+     */
+    private String contractNo;
+
+    /**
+     * 合同名称
+     */
+    private String contractName;
+
+    /**
+     * 合同签约方式
+     */
+    private String contractSigningWay;
+
+    /**
+     * 合同状态
+     */
+    private String contractStatus;
+}

+ 95 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/GoodsInfoDetailRes.java

@@ -0,0 +1,95 @@
+package com.sckw.order.api.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+
+/**
+ * @desc: 商品信息详情响应
+ * @author: yzc
+ * @date: 2023-07-18 11:09
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class GoodsInfoDetailRes {
+
+    /**
+     * 商品类型label
+     */
+    private String goodsTypeLabel;
+
+    /**
+     * 商品单位label
+     */
+    private String goodsUnitLabel;
+
+    /**
+     * 商品发票税率label
+     */
+    private String goodsTaxRateLabel;
+
+    /**
+     * 商品id
+     */
+    private Long goodsId;
+
+    /**
+     * 商品编号
+     */
+    private String goodsCode;
+
+    /**
+     * 商品名称
+     */
+    private String goodsName;
+
+    /**
+     * 商品类型
+     */
+    private String goodsType;
+
+    /**
+     * 商品发票税率(%)
+     */
+    private BigDecimal goodsTaxRate;
+
+    /**
+     * 商品尺寸大小
+     */
+    private String goodsSpec;
+
+    /**
+     * 单位(吨、方、箱、件)
+     */
+    private String unit;
+    /**
+     * 价格段id
+     */
+    private Long priceRangeId;
+
+    /**
+     * 订单成交单价
+     */
+    private BigDecimal unitPrice;
+
+    /**
+     * 商品skuId
+     */
+    private Long skuId;
+
+    /**
+     * 收款单位id
+     */
+    private Long collectionUnitId;
+
+    /**
+     * 收款单位名称
+     */
+    private String collectionUnit;
+
+}

+ 152 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/OrderDetailRes.java

@@ -0,0 +1,152 @@
+package com.sckw.order.api.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * @desc: 订单详情响应参数
+ * @author: yzc
+ * @date: 2023-07-07 15:35
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class OrderDetailRes {
+
+    /**
+     * 订单id
+     */
+    private Long id;
+
+    /**
+     * 企业id
+     */
+    private Long entId;
+
+    /**
+     * 企业名称
+     */
+    private String firmName;
+
+    /**
+     * 订单编号
+     */
+    private String tOrderNo;
+
+    /**
+     * 订单总量
+     */
+    private BigDecimal amount;
+
+    /**
+     * 订单金额
+     */
+    private BigDecimal price;
+
+    /**
+     * 交易方式(预付款、货到付款)
+     */
+    private String trading;
+
+    /**
+     * 交易方式label
+     */
+    private String tradingLabel;
+
+    /**
+     * 提货方式(采方自提、供应配送)
+     */
+    private String pickupType;
+
+    /**
+     * 提货方式label
+     */
+    private String pickupTypeLabel;
+
+    /**
+     * 交付类型(签发交付、签收交付)
+     */
+    private String deliveryType;
+
+    /**
+     * 交付类型label
+     */
+    private String deliveryTypeLabel;
+
+    /**
+     * 开始日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate startTime;
+
+    /**
+     * 结束日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate endTime;
+
+    /**
+     * 已委托量
+     */
+    private BigDecimal entrustAmount;
+
+    /**
+     * 实际交付量
+     */
+    private BigDecimal actualAmount;
+
+    /**
+     * 订单创建来源类型(采购下单/销售代客下单)
+     */
+    private String source;
+
+    /**
+     * 订单创建来源label
+     */
+    private String sourceLabel;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 订单状态
+     */
+    private Integer status;
+
+    /**
+     * 订单状态label
+     */
+    private String statusLabel;
+
+    /**
+     * 商品信息
+     */
+    private GoodsInfoDetailRes goodsInfo;
+
+
+    /**
+     * 单位信息
+     */
+    private List<UnitInfoDetailRes> unitInfo;
+
+    /**
+     * 地址信息
+     */
+    private List<AddressInfoDetail> addressInfo;
+
+    /**
+     * 合同信息
+     */
+    private ContractInfo contractInfo;
+
+}

+ 47 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/UnitInfoDetailRes.java

@@ -0,0 +1,47 @@
+package com.sckw.order.api.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @desc: 单位信息详情
+ * @author: yzc
+ * @date: 2023-07-18 11:10
+ */
+@Getter
+@Setter
+@ToString
+public class UnitInfoDetailRes {
+
+    /**
+     * 单位类型label
+     */
+    private String unitTypeLabel;
+
+    /**
+     * 单位类型(1销售单位、2采购单位)
+     */
+    private String unitType;
+
+    /**
+     * 企业id
+     */
+    private Long entId;
+
+    /**
+     * 企业名称
+     */
+    private String firmName;
+
+    /**
+     * 联系人姓名
+     */
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+}

+ 33 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/UpdateOrderAmountParam.java

@@ -0,0 +1,33 @@
+package com.sckw.order.api.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.math.BigDecimal;
+
+/**
+ * @desc: 更新订单委托量、已履约量
+ * @author: yzc
+ * @date: 2023-07-18 18:33
+ */
+@Getter
+@Setter
+@ToString
+public class UpdateOrderAmountParam {
+
+    /**
+     * 订单id
+     */
+    private Long tOrderId;
+
+    /**
+     * 已委托量
+     */
+    private BigDecimal entrustAmount;
+
+    /**
+     * 实际交付量
+     */
+    private BigDecimal actualAmount;
+}

+ 3 - 2
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/dao/KwcContractLogisticsMapper.java

@@ -2,6 +2,7 @@ package com.sckw.contract.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.contract.model.dto.req.QueryListReqDto;
+import com.sckw.contract.model.dto.res.QueryListResDto;
 import com.sckw.contract.model.entity.KwcContractLogistics;
 import com.sckw.contract.model.vo.req.QueryListReqVo;
 import com.sckw.contract.model.vo.res.QueryListResVo;
@@ -23,9 +24,9 @@ public interface KwcContractLogisticsMapper extends BaseMapper<KwcContractLogist
      * @param: reqVo
      * @author: czh
      * @date 2023/7/17
-     * @return QueryListResVo
+     * @return QueryListResDto
      */
-    List<QueryListResVo> queryList(QueryListReqDto reqVo);
+    List<QueryListResDto> queryList(QueryListReqDto reqVo);
 }
 
 

+ 111 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/dto/res/QueryListResDto.java

@@ -0,0 +1,111 @@
+package com.sckw.contract.model.dto.res;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author czh
+ * @desc 查询返参
+ * @date 2023/7/18
+ */
+@Data
+public class QueryListResDto {
+
+    /**
+     * 合同总量
+     */
+    private BigDecimal amount;
+
+    /**
+     * 计费方式(按装货量、按卸货量、按车次)
+     */
+    private Integer charging;
+
+    /**
+     * 合同名
+     */
+    private String contactName;
+
+    /**
+     * 合同号
+     */
+    private String contractNo;
+
+    /**
+     * 发起人id
+     */
+    private Long initiateBy;
+
+    /**
+     * 发起时间
+     */
+    private Date initiateTime;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 起始时间
+     */
+    private Date startTime;
+
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+
+    /**
+     * 合同id
+     */
+    private Long id;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 签约方式
+     */
+    private String signingWay;
+
+    /**
+     * 签约时间
+     */
+    private Date signTime;
+
+    /**
+     * 合同状态
+     */
+    private Integer status;
+
+    /**
+     * 单位类型(3托运商,4承运商)
+     */
+    private Integer unitType;
+
+    /**
+     * 企业id
+     */
+    private Long entId;
+
+    /**
+     * 企业名
+     */
+    private String entName;
+
+    /**
+     * 对方企业id
+     */
+    private Long targetEntId;
+
+    /**
+     * 对方企业名
+     */
+    private String targetEntName;
+
+}

+ 0 - 1
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/QueryListReqVo.java

@@ -6,7 +6,6 @@ import lombok.Data;
 import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
-import java.util.List;
 
 @Data
 public class QueryListReqVo extends PageRequest implements Serializable {

+ 51 - 7
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java

@@ -1,5 +1,7 @@
 package com.sckw.contract.service;
 
+import java.util.Date;
+
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.*;
@@ -9,6 +11,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.sckw.contract.dao.KwcContractLogisticsMapper;
 import com.sckw.contract.model.dto.req.QueryListReqDto;
+import com.sckw.contract.model.dto.res.QueryListResDto;
 import com.sckw.contract.model.entity.KwcContractLogistics;
 import com.sckw.contract.model.entity.KwcContractLogisticsGoods;
 import com.sckw.contract.model.entity.KwcContractLogisticsUnit;
@@ -19,6 +22,7 @@ import com.sckw.contract.model.vo.res.ContractLogisticsDetailResVo;
 import com.sckw.contract.model.vo.res.LogisticsBaseInfoResVo;
 import com.sckw.contract.model.vo.res.LogisticsGoodsInfoResVo;
 import com.sckw.contract.model.vo.res.QueryListResVo;
+import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
@@ -37,6 +41,7 @@ import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.excel.utils.EasyExcelUtil;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -146,9 +151,9 @@ public class KwcContractLogisticsService {
     }
 
     /**
+     * @param id 主键
      * @return ContractLogisticsDetailResVo
      * @desc 合同详情
-     * @param  id 主键
      * @author czh
      * @date 2023/7/16
      */
@@ -360,29 +365,68 @@ public class KwcContractLogisticsService {
     }
 
     /**
+     * @return PageResult
      * @desc: 分页查询
-     * @param:  reqVo
+     * @param: reqVo
      * @author: czh
      * @date 2023/7/17
-     * @return PageResult
      */
     public PageResult queryListByPage(QueryListReqVo reqVo) {
         PageHelper.startPage(reqVo.getPage(), reqVo.getPageSize());
         QueryListReqDto queryListReqDto = new QueryListReqDto();
         BeanUtils.copyProperties(reqVo, queryListReqDto);
-        List<QueryListResVo> list = kwcContractLogisticsMapper.queryList(queryListReqDto);
+        queryListReqDto.setEntId(LoginUserHolder.getEntId());
+        List<QueryListResVo> list = getQueryListResVos(queryListReqDto);
         return PageHelperUtil.getPageResult(new PageInfo<>(list));
     }
 
+
+    /**
+     * @param queryListReqDto 入参
+     * @return QueryListResVo
+     * @desc: 抽取公共部分
+     * @author: czh
+     * @date: 2023/7/18
+     */
+    private List<QueryListResVo> getQueryListResVos(QueryListReqDto queryListReqDto) {
+        List<QueryListResDto> queryListResDtos = kwcContractLogisticsMapper.queryList(queryListReqDto);
+        Map<Long, UserCacheResDto> longUserCacheResDtoMap = new HashMap<>();
+        List<Long> initiateByList = queryListResDtos.stream().map(QueryListResDto::getInitiateBy).toList();
+        if (CollectionUtils.isNotEmpty(initiateByList)) {
+            longUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(initiateByList);
+        }
+
+        List<QueryListResVo> list = new ArrayList<>();
+        for (QueryListResDto queryListResDto : queryListResDtos) {
+            QueryListResVo queryListResVo = new QueryListResVo();
+            queryListResVo.setCheckedEntName(queryListResDto.getUnitType().compareTo(EntTypeEnum.LOGISTICS3.getCode()) == 0 ? queryListResDto.getEntName() : queryListResDto.getTargetEntName());
+            queryListResVo.setCarrierEntName(queryListResDto.getUnitType().compareTo(EntTypeEnum.LOGISTICS3.getCode()) == 0 ? queryListResDto.getTargetEntName() : queryListResDto.getEntName());
+
+            UserCacheResDto userCacheResDto = longUserCacheResDtoMap.get(queryListResDto.getInitiateBy());
+            if (Objects.nonNull(userCacheResDto)) {
+                queryListResVo.setInitiateName(userCacheResDto.getName());
+                queryListResVo.setInitiateEntName(Objects.isNull(userCacheResDto.getEntInfo()) ? "" : userCacheResDto.getEntInfo().getFirmName());
+            }
+            queryListResVo.setChargingName(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(), String.valueOf(queryListResDto.getCharging())));
+            queryListResVo.setStatusName(ContractStatusEnum.getName(queryListResDto.getStatus()).getName());
+
+            // todo
+            queryListResVo.setPerformedAmount(new BigDecimal("0"));
+            list.add(queryListResVo);
+        }
+        return list;
+    }
+
     public void export(QueryListReqVo reqVo) {
         QueryListReqDto queryListReqDto = new QueryListReqDto();
         BeanUtils.copyProperties(reqVo, queryListReqDto);
-
+        queryListReqDto.setEntId(LoginUserHolder.getEntId());
         if (StringUtils.isNotBlank(reqVo.getIds())) {
             List<Long> idList = Arrays.stream(reqVo.getIds().split(Global.COMMA)).map(Long::parseLong).toList();
             queryListReqDto.setIdList(idList);
         }
-        List<QueryListResVo> queryListResVos = kwcContractLogisticsMapper.queryList(queryListReqDto);
+
+        List<QueryListResVo> queryListResVos = getQueryListResVos(queryListReqDto);
         try {
             EasyExcelUtil.writeSingleExcel("物流合同.xlsx", "sheet1", queryListResVos, QueryListResVo.class);
         } catch (IOException e) {
@@ -404,7 +448,7 @@ public class KwcContractLogisticsService {
         queryListReqDto.setEntId(entId);
         queryListReqDto.setStatus(ContractStatusEnum.SIGNED.getCode());
         queryListReqDto.setEntType(EntTypeEnum.LOGISTICS3.getCode());
-        return kwcContractLogisticsMapper.queryList(queryListReqDto);
+        return getQueryListResVos(queryListReqDto);
     }
 
 }

+ 25 - 9
sckw-modules/sckw-contract/src/main/resources/mapper/KwcContractLogisticsMapper.xml

@@ -40,18 +40,34 @@
         del_flag
     </sql>
 
-    <select id="queryList" resultType="com.sckw.contract.model.vo.res.QueryListResVo">
-        select distinct a.*
+    <select id="queryList" resultType="com.sckw.contract.model.dto.res.QueryListResDto">
+        select a.amount,
+                a.charging,
+                a.name contactName,
+                a.contract_no,
+                c.create_by initiateBy,
+                c.create_time initiateTime,
+                a.create_time,
+                a.start_time,
+                a.end_time,
+                a.id,
+                a.remark,
+                a.signing_way,
+                d.create_time signTime,
+                a.status,
+                b.unit_type,
+                b.ent_id,
+                b.firm_name entName,
+                e.ent_id targetEntId,
+                e.firm_name targetEntName
           from kwc_contract_logistics a
-          left join kwc_contract_logistics_unit b on a.id = b.contract_id
+          left join kwc_contract_logistics_unit b on a.id = b.contract_id and b.unit_type = #{entType}
+          left join kwc_contract_logistics_track c on a.id = c.contract_id and c.del_flag = 0 and c.type = 1
+          left join kwc_contract_logistics_track d on a.id = d.contract_id and d.del_flag = 0 and d.type = 0
+          left join kwc_contract_logistics_unit e on a.id = b.contract_id and b.unit_type != #{entType}
         where a.del_flag = 0
           and b.del_flag = 0
-          <if test="entType != null">
-              and b.unit_type = #{entType}
-          </if>
-          <if test="entId != null">
-              and b.ent_id = #{entId}
-          </if>
+          and b.ent_id = #{entId}
           <if test="startTime != null">
               and a.create_time >= #{startTime}
           </if>

+ 13 - 1
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmAddressController.java

@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
  * @date 2023/7/10
  */
 @RestController
-@RequestMapping("/address")
+@RequestMapping("/kwmAddress")
 public class KwmAddressController {
 
     @Autowired
@@ -101,4 +101,16 @@ public class KwmAddressController {
         kwmAddressService.export(reqVo);
     }
 
+    /**
+     * @desc: 查企业下的地址
+     * @param: reqVo 企业id
+     * @author: czh
+     * @date 2023/7/18
+     * @return HttpResult
+     */
+    @PostMapping("queryByEnt")
+    public HttpResult queryByEnt(@RequestBody IdsReqVo reqVo) throws SystemException {
+        return HttpResult.ok(kwmAddressService.queryByEnt(reqVo.getId()));
+    }
+
 }

+ 0 - 2
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/AddressQueryReqVo.java

@@ -33,13 +33,11 @@ public class AddressQueryReqVo extends PageRequest implements Serializable {
     /**
      * 创建开始时间(时间戳)
      */
-    @NotNull(message = "开始时间不能为空")
     private Date startTime;
 
     /**
      * 创建结束时间(时间戳)
      */
-    @NotNull(message = "结束时间不能为空")
     private Date endTime;
 
     /**

+ 1 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/IdsReqVo.java

@@ -23,4 +23,5 @@ public class IdsReqVo implements Serializable {
     @NotBlank(message = "id不能为空")
     private String ids;
 
+    private Long id;
 }

+ 32 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java

@@ -24,6 +24,7 @@ import com.sckw.manage.model.vo.res.AddressQueryResVo;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -77,6 +78,19 @@ public class KwmAddressService {
             return Collections.emptyList();
         }
 
+        List<AddressQueryResVo> list = getAddressQueryResVo(kwmAddresses);
+        return list;
+    }
+
+
+    /**
+     * @desc: 转换成vo
+     * @param: kwmAddresses 实体
+     * @author: czh
+     * @date 2023/7/18
+     * @return AddressQueryResVo
+     */
+    private List<AddressQueryResVo> getAddressQueryResVo(List<KwmAddress> kwmAddresses) {
         List<AddressQueryResVo> list = new ArrayList<>();
         List<Long> userIds = kwmAddresses.stream().map(KwmAddress::getCreateBy).distinct().toList();
         List<Long> types = kwmAddresses.stream().map(KwmAddress::getType).distinct().toList();
@@ -205,4 +219,22 @@ public class KwmAddressService {
             throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_014);
         }
     }
+
+    /**
+     * @desc: 查企业下的地址
+     * @param: reqVo 企业id
+     * @author: czh
+     * @date 2023/7/18
+     * @return AddressQueryResVo
+     */
+    public List<AddressQueryResVo> queryByEnt(Long id) {
+        LambdaQueryWrapper<KwmAddress> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwmAddress::getEntId, id);
+        wrapper.eq(KwmAddress::getDelFlag, Global.NO);
+        List<KwmAddress> kwmAddresses = kwmAddressMapper.selectList(wrapper);
+        if (CollectionUtils.isEmpty(kwmAddresses)) {
+            return Collections.emptyList();
+        }
+        return getAddressQueryResVo(kwmAddresses);
+    }
 }

+ 19 - 20
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java

@@ -9,8 +9,6 @@ import org.springframework.http.MediaType;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-
 /**
  * @desc: 贸易订单相关
  * @author: yzc
@@ -80,6 +78,18 @@ public class KwoTradeOrderController {
         return HttpResult.ok("代客下单提交成功");
     }
 
+    /**
+     * @desc: 订单详情
+     * @author: yzc
+     * @date: 2023-07-07 15:30
+     * @Param id:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @GetMapping("/detail")
+    public HttpResult detail(@RequestParam Long id) {
+        return HttpResult.ok(kwoTradeOrderService.detail(id));
+    }
+
     /**
      * @desc: 修改订单
      * @author: yzc
@@ -131,7 +141,7 @@ public class KwoTradeOrderController {
      */
     @GetMapping("/rejectReason")
     public HttpResult rejectReason(@RequestParam Long id) {
-        return HttpResult.ok(kwoTradeOrderService.rejectReason(id));
+        return HttpResult.ok("驳回订单原因查询成功", kwoTradeOrderService.rejectReason(id));
     }
 
     /**
@@ -141,6 +151,7 @@ public class KwoTradeOrderController {
      * @Param completeOrderParam:
      * @return: com.sckw.core.web.response.HttpResult
      */
+    @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/completeOrder", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult completeOrder(@RequestBody @Validated CompleteOrderParam completeOrderParam) {
         kwoTradeOrderService.completeOrder(completeOrderParam);
@@ -148,29 +159,17 @@ public class KwoTradeOrderController {
     }
 
 
-    /**
-     * @desc: 订单列表导出
-     * @author: yzc
-     * @date: 2023-07-12 17:32
-     * @Param completeOrderParam:
-     * @return: com.sckw.core.web.response.HttpResult
-     */
-    @PostMapping(value = "/export", produces = MediaType.APPLICATION_JSON_VALUE)
-    public HttpResult export(@RequestBody @Validated CompleteOrderParam completeOrderParam) {
-        kwoTradeOrderService.export(completeOrderParam);
-        return HttpResult.ok("订单完结成功");
-    }
-
     /**
      * @desc: 批量删除
      * @author: yzc
      * @date: 2023-07-12 17:34
-     * @Param ids:
+     * @Param param:
      * @return: com.sckw.core.web.response.HttpResult
      */
-    @GetMapping("/batchDelete")
-    public HttpResult batchDelete(@RequestParam List<Long> ids) {
-        kwoTradeOrderService.batchDelete(ids);
+    @GlobalTransactional(name = "default_tx_group")
+    @PostMapping(value = "/batchDelete", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult batchDelete(@RequestBody @Validated BatchDeleteParam param) {
+        kwoTradeOrderService.batchDelete(param);
         return HttpResult.ok("订单批量删除成功");
     }
 

+ 73 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java

@@ -0,0 +1,73 @@
+package com.sckw.order.dubbo;
+
+import com.alibaba.fastjson2.JSON;
+import com.sckw.core.exception.BusinessException;
+import com.sckw.core.utils.BeanUtils;
+import com.sckw.order.api.dubbo.TradeOrderInfoService;
+import com.sckw.order.api.model.OrderDetailRes;
+import com.sckw.order.api.model.UpdateOrderAmountParam;
+import com.sckw.order.model.KwoTradeOrder;
+import com.sckw.order.serivce.KwoTradeOrderService;
+import com.sckw.order.serivce.KwoTradeOrderTrackService;
+import com.sckw.stream.model.SckwBusSum;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.stream.function.StreamBridge;
+
+import java.util.Objects;
+
+/**
+ * @desc: 订单dubbo实现
+ * @author: yzc
+ * @date: 2023-07-18 18:26
+ */
+@DubboService(group = "design", version = "2.0.0")
+@Slf4j
+public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
+
+    @Autowired
+    private KwoTradeOrderService kwoTradeOrderService;
+    @Autowired
+    private StreamBridge streamBridge;
+    @Autowired
+    private KwoTradeOrderTrackService kwoTradeOrderTrackService;
+
+
+    @Override
+    public OrderDetailRes getOrderDetailById(Long tOrderId) {
+        return BeanUtils.copyProperties(kwoTradeOrderService.detail(tOrderId), OrderDetailRes.class);
+    }
+
+    @Override
+    public void updateOrderStatus(Long tOrderId, Integer status) {
+        KwoTradeOrder order = kwoTradeOrderService.getById(tOrderId);
+        if (Objects.isNull(order)) {
+            throw new BusinessException("订单不存在!");
+        }
+    }
+
+    @Override
+    public void updateOrderAmount(UpdateOrderAmountParam param) {
+        KwoTradeOrder order = kwoTradeOrderService.getById(param.getTOrderId());
+        if (Objects.isNull(order)) {
+            throw new BusinessException("订单不存在!");
+        }
+    }
+
+    /**
+     * @desc: mq保存mongodb
+     * @author: yzc
+     * @date: 2023-07-17 8:43
+     * @Param method:
+     * @Param order:
+     * @return: void
+     */
+    private void saveMongoDb(Integer method, Object order) {
+        SckwBusSum busSum = new SckwBusSum();
+        busSum.setBusSumType("tradeOrder");
+        busSum.setMethod(method);
+        busSum.setObject(order);
+        streamBridge.send("sckw-busSum", JSON.toJSONString(busSum));
+    }
+}

+ 33 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/BatchDeleteParam.java

@@ -0,0 +1,33 @@
+package com.sckw.order.model.vo.req;
+
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.util.List;
+
+/**
+ * @desc: 批量删除请求参数
+ * @author: yzc
+ * @date: 2023-07-18 15:05
+ */
+@Getter
+@Setter
+@ToString
+public class BatchDeleteParam {
+
+    @NotEmpty(message = "订单id集合不能为空")
+    private List<Long> ids;
+
+    /**
+     * 订单类型(1采购订单、2销售订单)
+     */
+    @Min(value = 1, message = "非法订单类型")
+    @Max(value = 2, message = "非法订单类型")
+    @NotNull(message = "订单类型不能为空")
+    private Integer orderType;
+}

+ 2 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/GoodsInfo.java

@@ -5,6 +5,7 @@ import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
+import lombok.experimental.Accessors;
 
 import java.math.BigDecimal;
 
@@ -16,6 +17,7 @@ import java.math.BigDecimal;
 @Getter
 @Setter
 @ToString
+@Accessors(chain = true)
 public class GoodsInfo {
     /**
      * 商品id

+ 27 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/AddressInfoDetailRes.java

@@ -0,0 +1,27 @@
+package com.sckw.order.model.vo.res;
+
+import com.sckw.order.model.vo.req.AddressInfo;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @desc: 地址信息详情
+ * @author: yzc
+ * @date: 2023-07-18 11:10
+ */
+@Getter
+@Setter
+@ToString
+public class AddressInfoDetailRes extends AddressInfo {
+
+    /**
+     * 地址类型label
+     */
+    private String addressTypeLabel;
+
+    /**
+     * 地址类型label
+     */
+    private String typeLabel;
+}

+ 35 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/GoodsInfoDetailRes.java

@@ -0,0 +1,35 @@
+package com.sckw.order.model.vo.res;
+
+import com.sckw.order.model.vo.req.GoodsInfo;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+/**
+ * @desc: 商品信息详情响应
+ * @author: yzc
+ * @date: 2023-07-18 11:09
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class GoodsInfoDetailRes extends GoodsInfo {
+
+    /**
+     * 商品类型label
+     */
+    private String goodsTypeLabel;
+
+    /**
+     * 商品单位label
+     */
+    private String goodsUnitLabel;
+
+    /**
+     * 商品发票税率label
+     */
+    private String goodsTaxRateLabel;
+
+}

+ 57 - 20
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderDetailRes.java

@@ -1,10 +1,7 @@
 package com.sckw.order.model.vo.res;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.sckw.order.model.vo.req.AddressInfo;
 import com.sckw.order.model.vo.req.ContractInfo;
-import com.sckw.order.model.vo.req.GoodsInfo;
-import com.sckw.order.model.vo.req.UnitInfo;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
@@ -30,6 +27,16 @@ public class OrderDetailRes {
      */
     private Long id;
 
+    /**
+     * 企业id
+     */
+    private Long entId;
+
+    /**
+     * 企业名称
+     */
+    private String firmName;
+
     /**
      * 订单编号
      */
@@ -46,39 +53,34 @@ public class OrderDetailRes {
     private BigDecimal price;
 
     /**
-     * 商品信息
-     */
-    private GoodsInfo goodsInfo;
-
-    /**
-     * 单位信息
+     * 交易方式(预付款、货到付款)
      */
-    private List<UnitInfo> unitInfo;
+    private String trading;
 
     /**
-     * 地址信息
+     * 交易方式label
      */
-    private List<AddressInfo> addressInfo;
+    private String tradingLabel;
 
     /**
-     * 合同信息
+     * 提货方式(采方自提、供应配送)
      */
-    private ContractInfo contractInfo;
+    private String pickupType;
 
     /**
-     * 交易方式(预付款、货到付款)
+     * 提货方式label
      */
-    private String trading;
+    private String pickupTypeLabel;
 
     /**
-     * 提货方式(采方自提、供应配送
+     * 交付类型(签发交付、签收交付
      */
-    private String pickupType;
+    private String deliveryType;
 
     /**
-     * 交付类型(签发交付、签收交付)
+     * 交付类型label
      */
-    private String deliveryType;
+    private String deliveryTypeLabel;
 
     /**
      * 开始日期
@@ -107,10 +109,45 @@ public class OrderDetailRes {
      */
     private String source;
 
+    /**
+     * 订单创建来源label
+     */
+    private String sourceLabel;
+
     /**
      * 备注
      */
     private String remark;
 
+    /**
+     * 订单状态
+     */
+    private Integer status;
+
+    /**
+     * 订单状态label
+     */
+    private String statusLabel;
+
+    /**
+     * 商品信息
+     */
+    private GoodsInfoDetailRes goodsInfo;
+
+
+    /**
+     * 单位信息
+     */
+    private List<UnitInfoDetailRes> unitInfo;
+
+    /**
+     * 地址信息
+     */
+    private List<AddressInfoDetailRes> addressInfo;
+
+    /**
+     * 合同信息
+     */
+    private ContractInfo contractInfo;
 
 }

+ 23 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/UnitInfoDetailRes.java

@@ -0,0 +1,23 @@
+package com.sckw.order.model.vo.res;
+
+import com.sckw.order.model.vo.req.UnitInfo;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @desc: 单位信息详情
+ * @author: yzc
+ * @date: 2023-07-18 11:10
+ */
+@Getter
+@Setter
+@ToString
+public class UnitInfoDetailRes extends UnitInfo {
+
+    /**
+     * 单位类型label
+     */
+    private String unitTypeLabel;
+
+}

+ 30 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderAddressService.java

@@ -1,7 +1,9 @@
 package com.sckw.order.serivce;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.core.model.constant.Global;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.order.dao.KwoTradeOrderAddressMapper;
 import com.sckw.order.model.KwoTradeOrderAddress;
 import lombok.RequiredArgsConstructor;
@@ -46,4 +48,32 @@ public class KwoTradeOrderAddressService {
                 .set(KwoTradeOrderAddress::getDelFlag, Global.YES);
         kwoTradeOrderAddressMapper.update(null, wrapper);
     }
+
+    /**
+     * @desc: 根据orderId获取
+     * @author: yzc
+     * @date: 2023-07-18 11:24
+     * @Param torderId:
+     * @return: java.util.List<com.sckw.order.model.KwoTradeOrderAddress>
+     */
+    public List<KwoTradeOrderAddress> getByOrderId(Long torderId) {
+        LambdaQueryWrapper<KwoTradeOrderAddress> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwoTradeOrderAddress::getTOrderId, torderId).eq(KwoTradeOrderAddress::getDelFlag, Global.NO);
+        List<KwoTradeOrderAddress> list = kwoTradeOrderAddressMapper.selectList(wrapper);
+        return CollectionUtils.emptyIfNull(list);
+    }
+
+    /**
+     * @desc: 根据orderIds删除
+     * @author: yzc
+     * @date: 2023-07-18 16:50
+     * @Param orderIds:
+     * @return: void
+     */
+    public void delByOrderIds(List<Long> orderIds) {
+        LambdaUpdateWrapper<KwoTradeOrderAddress> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.in(KwoTradeOrderAddress::getTOrderId, orderIds).eq(KwoTradeOrderAddress::getDelFlag, Global.NO)
+                .set(KwoTradeOrderAddress::getDelFlag, Global.YES);
+        kwoTradeOrderAddressMapper.update(null, wrapper);
+    }
 }

+ 30 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderContractService.java

@@ -1,5 +1,6 @@
 package com.sckw.order.serivce;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.core.model.constant.Global;
 import com.sckw.order.dao.KwoTradeOrderContractMapper;
@@ -8,6 +9,8 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @desc: 合同信息service
  * @author: yzc
@@ -44,4 +47,31 @@ public class KwoTradeOrderContractService {
                 .set(KwoTradeOrderContract::getDelFlag, Global.YES);
         kwoTradeOrderContractMapper.update(null, wrapper);
     }
+
+    /**
+     * @desc: 根据orderId获取
+     * @author: yzc
+     * @date: 2023-07-18 11:25
+     * @Param orderId:
+     * @return: com.sckw.order.model.KwoTradeOrderContract
+     */
+    public KwoTradeOrderContract getByOrderId(Long orderId) {
+        LambdaQueryWrapper<KwoTradeOrderContract> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwoTradeOrderContract::getTOrderId, orderId).eq(KwoTradeOrderContract::getDelFlag, Global.NO).last("LIMIT 1");
+        return kwoTradeOrderContractMapper.selectOne(wrapper);
+    }
+
+    /**
+     * @desc: 根据orderIds删除
+     * @author: yzc
+     * @date: 2023-07-18 16:51
+     * @Param orderIds:
+     * @return: void
+     */
+    public void delByOrderIds(List<Long> orderIds) {
+        LambdaUpdateWrapper<KwoTradeOrderContract> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.in(KwoTradeOrderContract::getTOrderId, orderIds).eq(KwoTradeOrderContract::getDelFlag, Global.NO)
+                .set(KwoTradeOrderContract::getDelFlag, Global.YES);
+        kwoTradeOrderContractMapper.update(null, wrapper);
+    }
 }

+ 16 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderGoodsService.java

@@ -9,6 +9,8 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @desc: 交易订单商品信息service
  * @author: yzc
@@ -58,4 +60,18 @@ public class KwoTradeOrderGoodsService {
                 .set(KwoTradeOrderGoods::getDelFlag, Global.YES);
         kwoTradeOrderGoodsMapper.update(null, wrapper);
     }
+
+    /**
+     * @desc: 根据orderIds删除
+     * @author: yzc
+     * @date: 2023-07-18 16:48
+     * @Param orderIds:
+     * @return: void
+     */
+    public void delByOrderIds(List<Long> orderIds) {
+        LambdaUpdateWrapper<KwoTradeOrderGoods> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.in(KwoTradeOrderGoods::getTOrderId, orderIds).eq(KwoTradeOrderGoods::getDelFlag, Global.NO)
+                .set(KwoTradeOrderGoods::getDelFlag, Global.YES);
+        kwoTradeOrderGoodsMapper.update(null, wrapper);
+    }
 }

+ 146 - 40
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -2,7 +2,9 @@ package com.sckw.order.serivce;
 
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.core.common.enums.enums.DictEnum;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.BeanUtils;
@@ -11,15 +13,18 @@ import com.sckw.core.utils.OrderGenerateUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.mongo.model.SckwTradeOrder;
-import com.sckw.mongo.model.TradeOrderUpdateParam;
 import com.sckw.order.dao.KwoTradeOrderMapper;
 import com.sckw.order.model.*;
 import com.sckw.order.model.vo.req.*;
+import com.sckw.order.model.vo.res.AddressInfoDetailRes;
+import com.sckw.order.model.vo.res.GoodsInfoDetailRes;
 import com.sckw.order.model.vo.res.OrderDetailRes;
+import com.sckw.order.model.vo.res.UnitInfoDetailRes;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.product.api.model.KwpGoods;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
+import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -28,10 +33,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * @desc: 交易订单(采购订单/销售订单)service
@@ -91,11 +93,8 @@ public class KwoTradeOrderService {
         Long id = tradeOrder.getId();
         String tOrderNo = tradeOrder.getTOrderNo();
         SckwTradeOrder order = new SckwTradeOrder();
-        //todo: 当前线程获取企业名称
         //提前填充这些参数防止初始创建mongodb集合没有这些字段
-        order.setFirmName(String.valueOf(LoginUserHolder.getEntId())).setTOrderId(id).setDeliveryType("").setProjectName("")
-                .setEntrustAmount(BigDecimal.ZERO).setActualAmount(BigDecimal.ZERO).setContractId(0L).setContractNo("")
-                .setContractName("").setContractSigningWay("").setCreateByName(LoginUserHolder.getUserName())
+        order.setFirmName(LoginUserHolder.getEntName()).setTOrderId(id).setCreateByName(LoginUserHolder.getUserName())
                 .setUpdateByName(LoginUserHolder.getUserName());
         BeanUtils.copyProperties(tradeOrder, order);
         //商品信息
@@ -113,11 +112,10 @@ public class KwoTradeOrderService {
         if (CollectionUtils.isNotEmpty(unitInfos)) {
             List<KwoTradeOrderUnit> list = new ArrayList<>(unitInfos.size());
             List<Long> entIds = unitInfos.stream().map(UnitInfo::getEntId).distinct().toList();
-            //todo: 获取一级企业信息
+            Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
             unitInfos.forEach(e -> {
                 KwoTradeOrderUnit unit = BeanUtils.copyProperties(e, KwoTradeOrderUnit.class);
-                unit.setTOrderId(id).setTOrderNo(tOrderNo)
-                        .setTopEntId(e.getEntId());
+                unit.setTOrderId(id).setTOrderNo(tOrderNo).setTopEntId(entMap.get(e.getEntId()).getId());
                 list.add(unit);
                 if (Objects.equals(e.getUnitType(), DictEnum.TORDER_UNIT_TYPE_1.getValue())) {
                     order.setSupplyEntId(e.getEntId()).setSupplyTopEntId(e.getEntId()).setSupplyFirmName(e.getFirmName())
@@ -211,12 +209,13 @@ public class KwoTradeOrderService {
      * @return: void
      */
     public void addPurchaseOrderSubmit(PurchaseOrderParam param) {
-        orderCheck(param.getGoodsInfo().getGoodsId(), param.getTrading(), param.getPrice(), param.getAmount(), param.getGoodsInfo().getUnitPrice());
+        orderCheck(param.getGoodsInfo().getGoodsId(), param.getTrading(), param.getPrice(), param.getAmount(), param.getGoodsInfo().getUnitPrice(), false);
         KwoTradeOrder order = BeanUtils.copyProperties(param, KwoTradeOrder.class);
         order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(OrderGenerateUtils.generateOrderNo(ORDER_NO_PREFIX))
                 .setUnit(param.getGoodsInfo().getUnit()).setSource(DictEnum.TORDER_SOURCE_1.getValue())
                 .setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_1.getValue()));
         kwoTradeOrderMapper.insert(order);
+        //扣减库存
         goodsInfoService.updateGoodsAmount(param.getGoodsInfo().getGoodsId(), param.getAmount());
         addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
     }
@@ -232,9 +231,8 @@ public class KwoTradeOrderService {
      * @Param unitPrice: 成交价格
      * @return: void
      */
-    private void orderCheck(Long goodId, String trading, BigDecimal price, BigDecimal amount, BigDecimal unitPrice) {
-        BigDecimal multiply = amount.multiply(unitPrice);
-        if (price.compareTo(amount.multiply(unitPrice)) != 0) {
+    private void orderCheck(Long goodId, String trading, BigDecimal price, BigDecimal amount, BigDecimal unitPrice, Boolean isAcceptanceOrder) {
+        if (!isAcceptanceOrder && price.compareTo(amount.multiply(unitPrice)) != 0) {
             throw new BusinessException("订单总金额不等于商品单价*订单总量!");
         }
         //todo: 则先校验是否存在对供应企业的预付钱包 ;【预计采购金额】是否大于预付清单的【可用预付】金额
@@ -242,10 +240,9 @@ public class KwoTradeOrderService {
         if (Objects.isNull(goods) || !Objects.equals(goods.getStatus(), 1)) {
             throw new BusinessException("商品不存在或已下架!");
         }
-        if (Objects.equals(trading, DictEnum.TRADE_TYPE_0.getValue())) {
-            if (price.compareTo(goods.getAdvancePrice()) < 0) {
-                throw new BusinessException("采购订单金额不能小于商品最低预付款限额!");
-            }
+        //受理订单不校验预付款限额
+        if (!isAcceptanceOrder && Objects.equals(trading, DictEnum.TRADE_TYPE_0.getValue()) && price.compareTo(goods.getAdvancePrice()) < 0) {
+            throw new BusinessException("采购订单金额不能小于商品最低预付款限额!");
         }
         if (goods.getAmount().compareTo(amount) < 0) {
             throw new BusinessException("商品库存量小于采购数量!");
@@ -261,7 +258,7 @@ public class KwoTradeOrderService {
      */
     @Transactional(rollbackFor = Exception.class)
     public void addValetOrderSubmit(ValetOrderParam param) {
-        orderCheck(param.getGoodsInfo().getGoodsId(), param.getTrading(), param.getPrice(), param.getAmount(), param.getGoodsInfo().getUnitPrice());
+        orderCheck(param.getGoodsInfo().getGoodsId(), param.getTrading(), param.getPrice(), param.getAmount(), param.getGoodsInfo().getUnitPrice(), false);
         KwoTradeOrder order = BeanUtils.copyProperties(param, KwoTradeOrder.class);
         order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(OrderGenerateUtils.generateOrderNo(ORDER_NO_PREFIX))
                 .setUnit(param.getGoodsInfo().getUnit()).setSource(DictEnum.TORDER_SOURCE_2.getValue());
@@ -274,6 +271,7 @@ public class KwoTradeOrderService {
             throw new BusinessException("Invalid contract status");
         }
         kwoTradeOrderMapper.insert(order);
+        //扣减库存
         goodsInfoService.updateGoodsAmount(param.getGoodsInfo().getGoodsId(), param.getAmount());
         addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
     }
@@ -286,16 +284,65 @@ public class KwoTradeOrderService {
      * @return: com.sckw.order.model.vo.res.OrderDetail
      */
     public OrderDetailRes detail(Long id) {
-        if (kwoTradeOrderUnitService.entMatch(id, LoginUserHolder.getEntId(), null)) {
-            throw new BusinessException("无权限查看数据!");
-        }
         KwoTradeOrder order = getById(id);
         if (Objects.isNull(order)) {
             throw new BusinessException("不存在该订单!");
         }
-        OrderDetailRes orderDetail = BeanUtils.copyProperties(order, OrderDetailRes.class);
-        KwoTradeOrderGoods tradeOrderGoods = kwoTradeOrderGoodsService.getByOrderId(id);
-        return orderDetail;
+        //订单基本信息
+        OrderDetailRes detail = BeanUtils.copyProperties(order, OrderDetailRes.class);
+        EntCacheResDto ent = remoteSystemService.queryEntCacheById(detail.getEntId());
+        detail.setFirmName(Objects.isNull(ent) ? null : ent.getFirmName())
+                .setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), detail.getTrading()))
+                .setPickupTypeLabel(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), detail.getPickupType()))
+                .setDeliveryTypeLabel(DictEnum.getLabel(DictTypeEnum.DELIVERY_TYPE.getType(), detail.getDeliveryType()))
+                .setSourceLabel(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), detail.getSource()))
+                .setStatusLabel(DictEnum.getLabel(DictTypeEnum.TORDER_STATUS.getType(), String.valueOf(detail.getStatus())));
+        //商品信息
+        KwoTradeOrderGoods orderGoods = kwoTradeOrderGoodsService.getByOrderId(id);
+        if (Objects.nonNull(orderGoods)) {
+            KwpGoods goods = goodsInfoService.getGoodsById(orderGoods.getGoodsId());
+            if (Objects.nonNull(goods)) {
+                EntCacheResDto entCache = remoteSystemService.queryEntCacheById(goods.getEntId());
+                GoodsInfoDetailRes goodsDetail = new GoodsInfoDetailRes();
+                goodsDetail.setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), goods.getGoodsType()))
+                        .setGoodsUnitLabel(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(), goods.getUnit()))
+                        .setGoodsTaxRateLabel(DictEnum.getLabel(DictTypeEnum.TAX_RATE.getType(), String.valueOf(goods.getTaxRate())))
+                        .setGoodsId(goods.getId()).setGoodsCode(goods.getCode()).setGoodsName(goods.getName())
+                        .setGoodsType(goods.getGoodsType()).setGoodsTaxRate(goods.getTaxRate()).setGoodsSpec(goods.getSpec())
+                        .setUnit(goods.getUnit()).setPriceRangeId(orderGoods.getPriceRangeId()).setUnitPrice(orderGoods.getUnitPrice())
+                        .setSkuId(orderGoods.getSkuId()).setCollectionUnitId(goods.getEntId()).setCollectionUnitId(goods.getEntId())
+                        .setCollectionUnit(Objects.isNull(entCache) ? null : entCache.getFirmName());
+                detail.setGoodsInfo(goodsDetail);
+            }
+        }
+
+        //单位信息
+        List<KwoTradeOrderUnit> units = kwoTradeOrderUnitService.getByOrderId(id);
+        if (CollectionUtils.isNotEmpty(units)) {
+            List<UnitInfoDetailRes> unitInfos = BeanUtils.copyToList(units, UnitInfoDetailRes.class);
+            unitInfos.forEach(e -> {
+                e.setUnitTypeLabel(DictEnum.getLabel(DictTypeEnum.TORDER_UNIT_TYPE.getType(), e.getUnitType()));
+            });
+            detail.setUnitInfo(unitInfos);
+        }
+        //地址信息
+        List<KwoTradeOrderAddress> addressList = kwoTradeOrderAddressService.getByOrderId(id);
+        if (CollectionUtils.isNotEmpty(addressList)) {
+            List<AddressInfoDetailRes> addressInfoDetails = BeanUtils.copyToList(addressList, AddressInfoDetailRes.class);
+            addressInfoDetails.forEach(e -> {
+                e.setAddressTypeLabel(DictEnum.getLabel(DictTypeEnum.TORDER_ADDRESS_TYPE.getType(), e.getAddressType()));
+                e.setTypeLabel(DictEnum.getLabel(DictTypeEnum.ADDRESS_TYPE.getType(), e.getType()));
+            });
+            detail.setAddressInfo(addressInfoDetails);
+        }
+        //合同信息
+        KwoTradeOrderContract contract = kwoTradeOrderContractService.getByOrderId(id);
+        if (Objects.nonNull(contract)) {
+            ContractInfo contractInfo = BeanUtils.copyProperties(contract, ContractInfo.class);
+            //todo:获取合同信息
+            detail.setContractInfo(contractInfo);
+        }
+        return detail;
     }
 
     /**
@@ -336,7 +383,9 @@ public class KwoTradeOrderService {
                     throw new BusinessException("Invalid contract status");
                 }
             }
-            orderCheck(param.getGoodsInfo().getGoodsId(), param.getTrading(), param.getPrice(), param.getAmount(), param.getGoodsInfo().getUnitPrice());
+            orderCheck(param.getGoodsInfo().getGoodsId(), param.getTrading(), param.getPrice(), param.getAmount(), param.getGoodsInfo().getUnitPrice(), false);
+            //扣减库存
+            goodsInfoService.updateGoodsAmount(param.getGoodsInfo().getGoodsId(), param.getAmount());
         }
         order.setAmount(param.getAmount()).setUnit(Objects.isNull(param.getGoodsInfo()) ? null : param.getGoodsInfo().getUnit())
                 .setPrice(param.getPrice()).setTrading(param.getTrading()).setPickupType(param.getPickupType())
@@ -344,6 +393,7 @@ public class KwoTradeOrderService {
                 .setRemark(param.getRemark());
         kwoTradeOrderMapper.updateById(order);
         ValetOrderParam valetOrderParam = BeanUtils.copyProperties(param, ValetOrderParam.class);
+
         addOtherOrderInfo(order, valetOrderParam, true);
     }
 
@@ -494,6 +544,9 @@ public class KwoTradeOrderService {
      * @return: void
      */
     public void acceptanceOrder(AcceptanceOrderParam param) {
+        if (param.getPrice().compareTo(param.getUnitPrice().multiply(param.getAmount())) != 0) {
+            throw new BusinessException("订单总金额不等于商品单价*订单总量!");
+        }
         KwoTradeOrder order = getById(param.getId());
         if (Objects.isNull(order)) {
             throw new BusinessException("Order not found");
@@ -508,7 +561,9 @@ public class KwoTradeOrderService {
         if (Objects.isNull(goods)) {
             throw new BusinessException("订单商品信息异常!");
         }
-        orderCheck(goods.getGoodsId(), param.getTrading(), param.getPrice(), param.getAmount(), param.getUnitPrice());
+        //受理订单总量-原订单总量=订单变化量
+        BigDecimal amount = param.getAmount().subtract(order.getAmount());
+        orderCheck(goods.getGoodsId(), param.getTrading(), param.getPrice(), amount, param.getUnitPrice(), true);
         //更新订单信息
         BeanUtils.copyProperties(param, order);
         String contractStatus = param.getContractInfo().getContractStatus();
@@ -527,10 +582,14 @@ public class KwoTradeOrderService {
         kwoTradeOrderContractService.insert(contract);
         //订单状态记录
         KwoTradeOrderTrack track = new KwoTradeOrderTrack();
-        track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo());
+        track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setStatus(order.getStatus());
         kwoTradeOrderTrackService.insert(track);
+        //更新库存
+        if (amount.compareTo(BigDecimal.ZERO) != 0) {
+            goodsInfoService.updateGoodsAmount(goods.getGoodsId(), amount);
+        }
         //更新mongodb
-        TradeOrderUpdateParam updateParam = BeanUtils.copyProperties(param, TradeOrderUpdateParam.class);
+        SckwTradeOrder updateParam = BeanUtils.copyProperties(param, SckwTradeOrder.class);
         updateParam.setTOrderId(param.getId()).setStatus(order.getStatus()).setContractId(contractInfo.getContractId())
                 .setContractNo(contractInfo.getContractNo()).setContractName(contractInfo.getContractName())
                 .setContractSigningWay(contractInfo.getContractSigningWay()).setUpdateBy(LoginUserHolder.getUserId())
@@ -561,13 +620,13 @@ public class KwoTradeOrderService {
         kwoTradeOrderMapper.updateById(order);
         //订单状态记录
         KwoTradeOrderTrack track = new KwoTradeOrderTrack();
-        track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setRemark(param.getRemark());
+        track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setRemark(param.getRemark()).setStatus(order.getStatus());
         kwoTradeOrderTrackService.insert(track);
         //释放商品库存
         KwoTradeOrderGoods goods = kwoTradeOrderGoodsService.getByOrderId(order.getId());
-        goodsInfoService.updateGoodsAmount(goods.getGoodsId(),order.getAmount());
+        goodsInfoService.updateGoodsAmount(goods.getGoodsId(), order.getAmount().negate());
         //mongodb更新订单状态
-        TradeOrderUpdateParam updateParam = new TradeOrderUpdateParam();
+        SckwTradeOrder updateParam = new SckwTradeOrder();
         updateParam.setTOrderId(order.getId()).setStatus(order.getStatus()).setUpdateBy(LoginUserHolder.getUserId())
                 .setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
         saveMongoDb(3, updateParam);
@@ -601,16 +660,63 @@ public class KwoTradeOrderService {
      * @return: void
      */
     public void completeOrder(CompleteOrderParam param) {
+        KwoTradeOrder order = getById(param.getId());
+        if (Objects.isNull(order)) {
+            throw new BusinessException("Order not found");
+        }
+        if (!Objects.equals(String.valueOf(order.getStatus()), DictEnum.TORDER_STATUS_4.getValue())) {
+            throw new BusinessException("执行中的订单才能完结订单!");
+        }
+        if (kwoTradeOrderUnitService.entMatch(param.getId(),LoginUserHolder.getEntId(),DictEnum.TORDER_UNIT_TYPE_2.getValue())){
+            throw new BusinessException("无订单操作权限!");
+        }
+        KwoTradeOrderGoods goods = kwoTradeOrderGoodsService.getByOrderId(param.getId());
+        if (Objects.isNull(goods)) {
+            throw new BusinessException("商品信息异常!");
+        }
+        order.setActualAmount(param.getActualAmount()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
+        kwoTradeOrderMapper.updateById(order);
+        //订单状态记录
+        KwoTradeOrderTrack track = new KwoTradeOrderTrack();
+        track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setRemark(param.getRemark()).setStatus(order.getStatus());
+        kwoTradeOrderTrackService.insert(track);
+        //更新库存
+        BigDecimal amount = param.getActualAmount().subtract(order.getAmount());
+        goodsInfoService.updateGoodsAmount(goods.getGoodsId(), amount);
+        //mongodb更新订单状态
+        SckwTradeOrder updateParam = new SckwTradeOrder();
+        updateParam.setTOrderId(order.getId()).setStatus(order.getStatus()).setUpdateBy(LoginUserHolder.getUserId())
+                .setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
+        saveMongoDb(3, updateParam);
 
     }
 
 
-    public void export(CompleteOrderParam param) {
-
-    }
-
-    public void batchDelete(List<Long> ids) {
-
+    /**
+     * @desc: 批量删除
+     * @author: yzc
+     * @date: 2023-07-17 20:35
+     * @Param param:
+     * @return: void
+     */
+    public void batchDelete(BatchDeleteParam param) {
+        List<Long> ids = param.getIds();
+        LambdaQueryWrapper<KwoTradeOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(KwoTradeOrder::getId, ids).ne(KwoTradeOrder::getStatus, 0).eq(KwoTradeOrder::getDelFlag, Global.NO);
+        List<KwoTradeOrder> list = kwoTradeOrderMapper.selectList(wrapper);
+        if (CollectionUtils.isNotEmpty(list)) {
+            throw new BusinessException("删除操作仅针对“已保存”状态的订单");
+        }
+        if (kwoTradeOrderUnitService.entBatchMatch(ids, LoginUserHolder.getEntId(), String.valueOf(param.getOrderType()))) {
+            throw new BusinessException("无订单操作权限!");
+        }
+        LambdaUpdateWrapper<KwoTradeOrder> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.set(KwoTradeOrder::getDelFlag, Global.YES).in(KwoTradeOrder::getId, ids);
+        kwoTradeOrderMapper.update(null, updateWrapper);
+        kwoTradeOrderGoodsService.delByOrderIds(ids);
+        kwoTradeOrderUnitService.delByOrderIds(ids);
+        kwoTradeOrderAddressService.delByOrderIds(ids);
+        kwoTradeOrderContractService.delByOrderIds(ids);
     }
 
     /**

+ 46 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderUnitService.java

@@ -3,6 +3,7 @@ package com.sckw.order.serivce;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.core.model.constant.Global;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.order.dao.KwoTradeOrderUnitMapper;
 import com.sckw.order.model.KwoTradeOrderUnit;
@@ -53,6 +54,23 @@ public class KwoTradeOrderUnitService {
         return Objects.isNull(kwoTradeOrderUnitMapper.selectOne(wrapper));
     }
 
+    /**
+     * @desc: 批量匹配
+     * @author: yzc
+     * @date: 2023-07-18 16:46
+     * @Param orderIds:
+     * @Param entId:
+     * @Param unitType:
+     * @return: java.lang.Boolean
+     */
+    public Boolean entBatchMatch(List<Long> orderIds, Long entId, String unitType) {
+        LambdaQueryWrapper<KwoTradeOrderUnit> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwoTradeOrderUnit::getTopEntId, entId).in(KwoTradeOrderUnit::getTOrderId, orderIds)
+                .eq(KwoTradeOrderUnit::getUnitType, unitType).eq(KwoTradeOrderUnit::getDelFlag, Global.NO);
+        List<KwoTradeOrderUnit> list = kwoTradeOrderUnitMapper.selectList(wrapper);
+        return CollectionUtils.isEmpty(list) || orderIds.size() != list.size();
+    }
+
     /**
      * @desc: 根据orderId删除
      * @author: yzc
@@ -66,4 +84,32 @@ public class KwoTradeOrderUnitService {
                 .set(KwoTradeOrderUnit::getDelFlag, Global.YES);
         kwoTradeOrderUnitMapper.update(null, wrapper);
     }
+
+    /**
+     * @desc: 根据orderId获取
+     * @author: yzc
+     * @date: 2023-07-18 11:23
+     * @Param torderId:
+     * @return: java.util.List<com.sckw.order.model.KwoTradeOrderUnit>
+     */
+    public List<KwoTradeOrderUnit> getByOrderId(Long torderId) {
+        LambdaQueryWrapper<KwoTradeOrderUnit> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwoTradeOrderUnit::getTOrderId, torderId).eq(KwoTradeOrderUnit::getDelFlag, Global.NO);
+        List<KwoTradeOrderUnit> list = kwoTradeOrderUnitMapper.selectList(wrapper);
+        return CollectionUtils.emptyIfNull(list);
+    }
+
+    /**
+     * @desc: 根据orderIds删除
+     * @author: yzc
+     * @date: 2023-07-18 16:49
+     * @Param orderIds:
+     * @return: void
+     */
+    public void delByOrderIds(List<Long> orderIds) {
+        LambdaUpdateWrapper<KwoTradeOrderUnit> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.in(KwoTradeOrderUnit::getTOrderId, orderIds).eq(KwoTradeOrderUnit::getDelFlag, Global.NO)
+                .set(KwoTradeOrderUnit::getDelFlag, Global.YES);
+        kwoTradeOrderUnitMapper.update(null, wrapper);
+    }
 }

+ 51 - 6
sckw-modules/sckw-report/src/main/java/com/sckw/report/consumer/SckwBusSumConsumer.java

@@ -8,7 +8,6 @@ import com.sckw.core.utils.StringUtils;
 import com.sckw.mongo.model.SckwLogisticsOrder;
 import com.sckw.mongo.model.SckwTradeOrder;
 import com.sckw.mongo.model.SckwWaybillOrder;
-import com.sckw.mongo.model.TradeOrderUpdateParam;
 import com.sckw.report.dao.SckwLogisticsOrderRepository;
 import com.sckw.report.dao.SckwTradeOrderRepository;
 import com.sckw.report.dao.SckwWaybillOrderRepository;
@@ -18,7 +17,14 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.data.annotation.Transient;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.core.query.Update;
+import org.springframework.util.ReflectionUtils;
 
+import java.lang.reflect.Modifier;
 import java.util.Optional;
 import java.util.function.Consumer;
 
@@ -37,6 +43,8 @@ public class SckwBusSumConsumer {
     SckwLogisticsOrderRepository logisticsOrderRepository;
     @Autowired
     SckwWaybillOrderRepository waybillOrderRepository;
+    @Autowired
+    private MongoTemplate mongoTemplate;
 
     /**
      * @desc 消息订阅
@@ -82,12 +90,9 @@ public class SckwBusSumConsumer {
                 BeanUtils.copyPropertiesValue(order, order1);
                 tradeOrderRepository.save(order);
             } else {
-                Optional<SckwTradeOrder> sckwTradeOrder = tradeOrderRepository.findById(order.getTOrderId());
+                Optional<SckwTradeOrder> sckwTradeOrder = tradeOrderRepository.findById(order.get_id());
                 if (sckwTradeOrder.isPresent()) {
-                    SckwTradeOrder tradeOrder = sckwTradeOrder.get();
-                    TradeOrderUpdateParam updateParam = JSONObject.parseObject(JSON.toJSONString(busSum.getObject()), TradeOrderUpdateParam.class);
-                    updateParam.convertSckwTradeOrder(updateParam, tradeOrder);
-                    tradeOrderRepository.save(tradeOrder);
+                    updateById(order, order.get_id(), SckwTradeOrder.class);
                 } else {
                     throw new BusinessException("更新交易订单失败,订单:" + order.getTOrderId() + "不存在");
                 }
@@ -127,4 +132,44 @@ public class SckwBusSumConsumer {
         }
     }
 
+
+    /**
+     * @desc: 根据id非空更新
+     * @author: yzc
+     * @date: 2023-07-19 8:58
+     * @Param obj:
+     * @Param clazz:
+     * @Param id:
+     * @return: void
+     */
+    private void updateById(Object obj, Long id, Class<?> clazz) {
+        // 生成 Update 条件
+        final Update update = new Update();
+        // 反射遍历 entity 对象,将非空字段设置到 Update 中
+        ReflectionUtils.doWithFields(clazz, field -> {
+            // 排除指定条件
+            if ("_id".equals(field.getName()) // 排除 id 字段,因为作为查询主键
+                    || field.getAnnotation(Transient.class) != null // 排除 @Transient 注解的字段,因为非存储字段
+                    || Modifier.isStatic(field.getModifiers())) { // 排除静态字段
+                return;
+            }
+            // 设置字段可反射
+            if (!field.isAccessible()) {
+                field.setAccessible(true);
+            }
+            // 排除字段为空的情况
+            if (field.get(obj) == null) {
+                return;
+            }
+            // 设置更新条件
+            update.set(field.getName(), field.get(obj));
+        });
+        // 防御,避免有业务传递空的 Update 对象
+        if (update.getUpdateObject().isEmpty()) {
+            return;
+        }
+        // 执行更新
+        mongoTemplate.updateFirst(new Query(Criteria.where("_id").is(id)), update, clazz);
+    }
+
 }

+ 1 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/controller/KwOrderController.java

@@ -73,7 +73,7 @@ public class KwOrderController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @PostMapping(value = "/tradeOrderExport", produces = MediaType.APPLICATION_JSON_VALUE)
-    public HttpResult export(@RequestBody TradeOrderListExportParam params) {
+    public HttpResult export(@RequestBody @Validated TradeOrderListExportParam params) {
         HttpServletResponse response = RequestHolder.getResponse();
         List<TradeOrderListExport> list = orderService.export(params);
         if (CollectionUtils.isNotEmpty(list)) {

+ 36 - 26
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -76,12 +76,13 @@ public class KwOrderService {
         List<OrderListRes> result = new ArrayList<>();
         list.forEach(e -> {
             OrderListRes order = BeanUtils.copyProperties(e, OrderListRes.class);
-                    order.setStatus(DictEnum.getLabel(DictTypeEnum.TORDER_STATUS.getType(), String.valueOf(e.getStatus())))
-                            .setTrading(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
-                            .setDeliveryType(DictEnum.getLabel(DictTypeEnum.DELIVERY_TYPE.getType(), e.getDeliveryType()))
-                            .setPickupType(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), e.getPickupType()))
-                            .setConsignmentStatus(Objects.equals(e.getAmount(), e.getEntrustAmount()) ? "待托运" : "已托运")
-                            .setSource(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), e.getSource()));
+            order.setStatus(DictEnum.getLabel(DictTypeEnum.TORDER_STATUS.getType(), String.valueOf(e.getStatus())))
+                    .setTrading(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
+                    .setDeliveryType(DictEnum.getLabel(DictTypeEnum.DELIVERY_TYPE.getType(), e.getDeliveryType()))
+                    .setPickupType(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), e.getPickupType()))
+                    .setConsignmentStatus(Objects.isNull(e.getEntrustAmount()) || e.getEntrustAmount().compareTo(e.getAmount()) < 0 ? "待托运" : "已托运")
+                    .setSource(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), e.getSource()));
+            result.add(order);
         });
         return PageResult.build(params.getPage(), params.getPageSize(), count, result);
     }
@@ -99,27 +100,35 @@ public class KwOrderService {
         Criteria criteria = new Criteria();
         criteria.and("delFlag").is(0);
         //销售订单
-        if (Objects.equals(params.getOrderType(), 1)) {
+        if (Objects.equals(params.getOrderType(), 2)) {
             criteria.and("supplyTopEntId").is(entId);
         } else {
             //采购订单
             criteria.and("procureTopEntId").is(entId);
         }
         //交易方式
-        if (CollectionUtils.isNotEmpty(params.getTradings())) {
-            criteria.and("trading").in(params.getTradings());
+        if (StringUtils.isNotBlank(params.getTrading())) {
+            criteria.and("trading").is(params.getTrading());
         }
         //提货方式
-        if (CollectionUtils.isNotEmpty(params.getPickupTypes())) {
-            criteria.and("pickupType").in(params.getPickupTypes());
+        if (StringUtils.isNotBlank(params.getPickupType())) {
+            criteria.and("pickupType").is(params.getPickupType());
         }
         //交付类型
-        if (CollectionUtils.isNotEmpty(params.getDeliveryTypes())) {
-            criteria.and("deliveryType").in(params.getDeliveryTypes());
+        if (StringUtils.isNotBlank(params.getDeliveryType())) {
+            criteria.and("deliveryType").is(params.getDeliveryType());
         }
         //下单方式
-        if (CollectionUtils.isNotEmpty(params.getSources())) {
-            criteria.and("source").in(params.getSources());
+        if (StringUtils.isNotBlank(params.getSource())) {
+            criteria.and("source").is(params.getSource());
+        }
+        //采购企业
+        if (Objects.nonNull(params.getProcureEntId())) {
+            criteria.and("procureEntId").is(params.getProcureEntId());
+        }
+        //商品税率
+        if (Objects.nonNull(params.getGoodsTaxRate())) {
+            criteria.and("goodsTaxRate").is(params.getGoodsTaxRate());
         }
         //日期范围
         if (Objects.nonNull(params.getStartCreateTime()) && Objects.nonNull(params.getEndCreateTime())) {
@@ -131,6 +140,11 @@ public class KwOrderService {
             criteria.and("createTime").lte(params.getEndCreateTime());
         }
         List<Criteria> orCriteriaList = new ArrayList<>();
+        //商品名称
+        if (StringUtils.isNotBlank(params.getGoodsName())) {
+            Pattern pattern = Pattern.compile("^.*" + params.getGoodsName() + ".*$", Pattern.CASE_INSENSITIVE);
+            orCriteriaList.add(Criteria.where("goodsName").regex(pattern));
+        }
         //关键字模糊匹配
         if (StringUtils.isNotBlank(params.getKeywords())) {
             Pattern pattern = Pattern.compile("^.*" + params.getKeywords() + ".*$", Pattern.CASE_INSENSITIVE);
@@ -140,17 +154,13 @@ public class KwOrderService {
             orCriteriaList.add(Criteria.where("goodsName").regex(pattern));
         }
         //装卸货地址
-        if (CollectionUtils.isNotEmpty(params.getShippingAddressCodes())) {
-            params.getShippingAddressCodes().forEach(c -> {
-                Pattern pattern = Pattern.compile("^" + c.substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE);
-                orCriteriaList.add(Criteria.where("loadCityCode").regex(pattern));
-            });
+        if (StringUtils.isNotBlank(params.getShippingAddressCode())) {
+            Pattern pattern = Pattern.compile("^" + params.getShippingAddressCode().substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE);
+            orCriteriaList.add(Criteria.where("loadCityCode").regex(pattern));
         }
-        if (CollectionUtils.isNotEmpty(params.getUnloadingAddressCodes())) {
-            params.getUnloadingAddressCodes().forEach(c -> {
-                Pattern pattern = Pattern.compile("^" + c.substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE);
-                orCriteriaList.add(Criteria.where("unloadCityCode").regex(pattern));
-            });
+        if (StringUtils.isNotBlank(params.getUnloadingAddressCode())) {
+            Pattern pattern = Pattern.compile("^" + params.getUnloadingAddressCode().substring(0, 4) + ".*$", Pattern.CASE_INSENSITIVE);
+            orCriteriaList.add(Criteria.where("unloadCityCode").regex(pattern));
         }
         if (CollectionUtils.isNotEmpty(orCriteriaList)) {
             criteria.orOperator(orCriteriaList);
@@ -202,7 +212,7 @@ public class KwOrderService {
             criteria.and("tOrderId").in(params.getIds()).and("delFlag").is(0);
             query.addCriteria(criteria);
             //销售订单
-            if (Objects.equals(params.getOrderType(), 1)) {
+            if (Objects.equals(params.getOrderType(), 2)) {
                 criteria.and("supplyTopEntId").is(entId);
             } else {
                 //采购订单

+ 29 - 14
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListStatisticParam.java

@@ -8,8 +8,8 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
+import java.math.BigDecimal;
 import java.util.Date;
-import java.util.List;
 
 /**
  * @desc: 订单列表统计请求参数
@@ -22,7 +22,7 @@ import java.util.List;
 public class TradeOrderListStatisticParam {
 
     /**
-     * 订单类型(1销售订单、2采购订单)
+     * 订单类型(2销售订单、1采购订单)
      */
     @Min(value = 1, message = "非法订单类型")
     @Max(value = 2, message = "非法订单类型")
@@ -45,33 +45,48 @@ public class TradeOrderListStatisticParam {
     private Date endCreateTime;
 
     /**
-     * 装货地址code集合
+     * 装货地址code
      */
-    private List<String> shippingAddressCodes;
+    private String shippingAddressCode;
 
     /**
-     * 装货地址code集合
+     * 装货地址code
      */
-    private List<String> unloadingAddressCodes;
+    private String unloadingAddressCode;
 
     /**
-     * 交易方式(预付款、货到付款)集合
+     * 交易方式(预付款、货到付款)
      */
-    private List<String> tradings;
+    private String trading;
 
     /**
-     * 提货方式(采方自提、供应配送)集合
+     * 提货方式(采方自提、供应配送)
      */
-    private List<String> pickupTypes;
+    private String pickupType;
 
     /**
-     * 交付类型(签发交付、签收交付)集合
+     * 交付类型(签发交付、签收交付)
      */
-    private List<String> deliveryTypes;
+    private String deliveryType;
 
     /**
-     * 下单方式(0自主下单/1代客下单)集合
+     * 下单方式(0自主下单/1代客下单)
      */
-    private List<String> sources;
+    private String source;
+
+    /**
+     * 采购单位id
+     */
+    private Long procureEntId;
+
+    /**
+     * 商品税率
+     */
+    private BigDecimal goodsTaxRate;
+
+    /**
+     * 商品名称
+     */
+    private String goodsName;
 
 }

+ 12 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java

@@ -201,4 +201,16 @@ public class KwsEnterpriseController {
         return null;
     }
 
+
+    /**
+     * @desc: 查企业下的员工
+     * @param: reqVo 企业id
+     * @author: czh
+     * @date 2023/7/18
+     * @return HttpResult
+     */
+    @PostMapping("findEntUser")
+    public HttpResult findEntUser(@RequestBody IdReqVo reqVo) {
+        return HttpResult.ok(kwsEntService.findEntUser(reqVo.getId()));
+    }
 }

+ 1 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsUserController.java

@@ -8,6 +8,7 @@ import com.sckw.core.model.page.PageResult;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.system.model.KwsUser;
+import com.sckw.system.model.vo.req.IdReqVo;
 import com.sckw.system.model.vo.req.QueryEntUserReqVo;
 import com.sckw.system.model.vo.req.ResetPasswordReqVo;
 import com.sckw.system.model.vo.req.UserAddReqVo;
@@ -159,7 +160,6 @@ public class KwsUserController {
         return HttpResult.ok(HttpStatus.MSG_005);
     }
 
-
     @PostMapping("testEdit")
     public HttpResult testEdit() {
         return HttpResult.ok(kwsUserService.test());

+ 2 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsEnterpriseDao.java

@@ -7,6 +7,7 @@ import com.sckw.system.model.pojo.FindEntUserPojo;
 import com.sckw.system.model.pojo.FindManagePojo;
 import com.sckw.system.model.pojo.FindPojoParam;
 import com.sckw.system.model.vo.req.EntFindPageReqVo;
+import com.sckw.system.model.vo.res.FindListReqVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -63,7 +64,7 @@ public interface KwsEnterpriseDao {
      * @param params
      * @return
      */
-    List<KwsEnterprise> findList(EntFindPageReqVo params);
+    List<KwsEnterprise> findList(FindListReqVo params);
 
     /**
      * 查询

+ 29 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/res/FindListReqVo.java

@@ -0,0 +1,29 @@
+package com.sckw.system.model.vo.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+public class FindListReqVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 8883696139247219895L;
+
+    /**
+     * 企业类型
+     */
+    private Integer entType;
+
+    /**
+     * 审批状态
+     */
+    private Integer approval;
+
+    /**
+     * 企业名
+     */
+    private String entName;
+
+}

+ 5 - 5
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java

@@ -25,10 +25,7 @@ import com.sckw.system.model.pojo.FindEntUserPojo;
 import com.sckw.system.model.pojo.FindManagePojo;
 import com.sckw.system.model.pojo.FindPojoParam;
 import com.sckw.system.model.vo.req.*;
-import com.sckw.system.model.vo.res.CertificateResVo;
-import com.sckw.system.model.vo.res.EntDetailResVo;
-import com.sckw.system.model.vo.res.EntFindPageResVo;
-import com.sckw.system.model.vo.res.FindListGroupResVo;
+import com.sckw.system.model.vo.res.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -263,7 +260,7 @@ public class KwsEnterpriseService {
      * @author: czh
      * @date: 2023/6/9
      */
-    public List<KwsEnterprise> findList(EntFindPageReqVo reqVo) {
+    public List<KwsEnterprise> findList(FindListReqVo reqVo) {
         return kwsEnterpriseDao.findList(reqVo);
     }
 
@@ -635,4 +632,7 @@ public class KwsEnterpriseService {
         return entDetailResVo;
     }
 
+    public List<FindEntUserPojo> findEntUser(long id) {
+        return kwsEnterpriseDao.findUserByEntIds(Collections.singletonList(id));
+    }
 }

+ 5 - 3
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java

@@ -15,6 +15,7 @@ import com.sckw.system.dubbo.RemoteSystemServiceImpl;
 import com.sckw.system.model.*;
 import com.sckw.system.model.pojo.FindEntListPojo;
 import com.sckw.system.model.vo.req.*;
+import com.sckw.system.model.vo.res.FindListReqVo;
 import com.sckw.system.model.vo.res.KwsUserResVo;
 import lombok.extern.slf4j.Slf4j;
 import org.checkerframework.checker.units.qual.K;
@@ -105,9 +106,9 @@ public class KwsUserService {
      */
     @Transactional(rollbackFor = {})
     public RegisterResDto register(RegisterReqDto reqDto) throws SystemException {
-        EntFindPageReqVo entFindPageReqVo = new EntFindPageReqVo();
-        entFindPageReqVo.setFirmName(reqDto.getEntName());
-        List<KwsEnterprise> list = kwsEnterpriseDao.findList(entFindPageReqVo);
+        FindListReqVo findListReqVo = new FindListReqVo();
+        findListReqVo.setEntName(reqDto.getEntName());
+        List<KwsEnterprise> list = kwsEnterpriseDao.findList(findListReqVo);
         if (!CollectionUtils.isEmpty(list)) {
             throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.ENT_EXISTS);
         }
@@ -581,4 +582,5 @@ public class KwsUserService {
         remoteSystemService.queryEntTreeByIds(Collections.singletonList(Long.parseLong("156382319450525696")));
         return "";
     }
+
 }

+ 6 - 15
sckw-modules/sckw-system/src/main/resources/mapper/KwsEnterpriseDao.xml

@@ -144,23 +144,14 @@
     select a.*
       from kws_enterprise a
     where a.del_flag = 0
-    <if test="firmName != null and firmName != ''">
-      and a.firm_name = #{firmName}
-    </if>
-    <if test="contacts != null and contacts != ''">
-      and a.contacts = #{contacts}
-    </if>
-    <if test="phone != null and phone != ''">
-      and a.phone = #{phone}
-    </if>
-    <if test="legalName != null and legalName != ''">
-      and a.legal_name = #{legalName}
-    </if>
-    <if test="legalPhone != null and legalPhone != ''">
-      and a.legal_phone = #{legalPhone}
-    </if>
     <if test="approval != null">
       and a.approval = #{approval}
+    </if>
+      <if test="entName != null and entName != ''">
+        and a.firm_name = #{entName}
+      </if>
+    <if test="entType != null">
+      and exists (select 1 from kws_ent_type b where a.id = b.ent_id and b.type = #{entType})
     </if>
     order by a.create_time
   </select>