Kaynağa Gözat

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

donglang 1 ay önce
ebeveyn
işleme
04ac91e413
25 değiştirilmiş dosya ile 415 ekleme ve 223 silme
  1. 1 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictTypeEnum.java
  2. 1 1
      sckw-gateway/src/main/java/com/sckw/gateway/pojo/HttpStatus.java
  3. 2 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java
  4. 49 0
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/TradeOrderContractVo.java
  5. 22 2
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/param/AddLogisticOrderParam.java
  6. 12 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/RWaybillSubOrderVo.java
  7. 5 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/QueryListResVo.java
  8. 20 5
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractLogisticsService.java
  9. 93 70
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractTradeService.java
  10. 16 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java
  11. 6 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderContractRepository.java
  12. 6 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  13. 17 7
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java
  14. 1 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsRoleDao.java
  15. 13 14
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java
  16. 1 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsRoleService.java
  17. 13 102
      sckw-modules/sckw-system/src/main/resources/mapper/KwsRoleDao.xml
  18. 42 13
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java
  19. 22 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/AddLogisticOrderDTO.java
  20. 22 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderDetailResp.java
  21. 7 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderGoodsRepository.java
  22. 1 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderNodeRepository.java
  23. 4 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtAcceptCarriageOrderService.java
  24. 17 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsConsignmentService.java
  25. 22 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

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

@@ -52,7 +52,7 @@ public enum DictTypeEnum {
     ORDER_SOURCE("order_source", "订单来源"),
     CONSIGNMENT_WAY("consignment_way", "托运方式"),
     SETTLEMENT_WAY(" settlement_way", "结算方式"),
-    LOAD_UNLOAD_WAY("load_unLoad_way", "装卸方式"),
+    LOAD_UNLOAD_WAY("load_unload_way", "装卸方式"),
     ;
 
     private final String type;

+ 1 - 1
sckw-gateway/src/main/java/com/sckw/gateway/pojo/HttpStatus.java

@@ -195,4 +195,4 @@ public class HttpStatus {
     public static final String DICT_EXISTS = "字典键值已存在,不可重复!";
     public static final String PL34 = "3PL和4PL不能同时注册!";
 
-}
+}

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

@@ -160,4 +160,6 @@ public interface TradeOrderInfoService {
     void orderSettle(TradeOrderSettlePara tradeOrderSettlePara);
 
 
+    List<TradeOrderContractVo> queryByTradeContactIds(Set<Long> tradeContractIds);
+
 }

+ 49 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/TradeOrderContractVo.java

@@ -0,0 +1,49 @@
+package com.sckw.order.api.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.sckw.core.model.base.BaseModel;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @desc: 交易订单合同(采购合同/销售合同)
+ * @author: yzc
+ * @date: 2023-06-25 9:31
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class TradeOrderContractVo extends BaseModel implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -3482504164031633290L;
+    /**
+     * 合同id
+     */
+    private Long contractId;
+
+    /**
+     * 合同编号
+     */
+    private String contractNo;
+
+    /**
+     * 订单id(销售订单/采购订单)
+     */
+    @JsonProperty("tOrderId")
+    private Long tOrderId;
+
+    /**
+     * 订单编号(销售订单/采购订单)
+     */
+    @JsonProperty("tOrderNo")
+    private String tOrderNo;
+
+}

+ 22 - 2
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/param/AddLogisticOrderParam.java

@@ -1,6 +1,5 @@
 package com.sckw.transport.api.model.param;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import jakarta.validation.constraints.Max;
 import jakarta.validation.constraints.Min;
 import jakarta.validation.constraints.NotBlank;
@@ -10,7 +9,6 @@ import lombok.Data;
 import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.time.LocalDate;
 import java.util.List;
 
 
@@ -131,6 +129,17 @@ public class AddLogisticOrderParam implements Serializable {
      */
     @NotBlank(message = "装货详细地址不能为空")
     private String loadDetailAddress;
+    /**
+     * 纬度
+     */
+    @NotBlank(message = "纬度不能为空")
+    private String loadLat;
+
+    /**
+     * 经度
+     */
+    @NotBlank(message = "经度不能为空")
+    private String loadLng;
 
     /**
      *卸货地址id
@@ -170,4 +179,15 @@ public class AddLogisticOrderParam implements Serializable {
      */
     @NotBlank(message = "卸货联系电话不能为空")
     private String unloadPhone;
+    /**
+     * 纬度
+     */
+    @NotBlank(message = "纬度不能为空")
+    private String unloadLat;
+
+    /**
+     * 经度
+     */
+    @NotBlank(message = "经度不能为空")
+    private String unloadLng;
 }

+ 12 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/RWaybillSubOrderVo.java

@@ -21,6 +21,7 @@ public class RWaybillSubOrderVo implements Serializable {
      */
     private Long tradeId;
     private List<BillSubOrder> subOrders;
+    private List<LogisticGoodsInfo> logisticGoodsInfos;
 
 
 
@@ -39,6 +40,10 @@ public class RWaybillSubOrderVo implements Serializable {
          * 物流订单id(kwt_logistics_order)
          */
         private Long lOrderId;
+        /**
+         * 商品id
+         */
+        private Long goodId;
 
         /**
          * 物流订单id
@@ -90,4 +95,11 @@ public class RWaybillSubOrderVo implements Serializable {
          */
         private BigDecimal deficitPrice;
     }
+    @Data
+    public static class LogisticGoodsInfo implements Serializable{
+        @Serial
+        private static final long serialVersionUID = -5467651145344958760L;
+        private Long lOrderId;
+        private Long goodsId;
+    }
 }

+ 5 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/QueryListResVo.java

@@ -155,6 +155,11 @@ public class QueryListResVo implements Serializable {
     @Schema(description = "承运单位名")
     private String carrierEntName;
 
+    /**
+     * 发起人id
+     */
+    @Schema(description = "发起人id")
+    private Long initiatorId;
 
     /**
      * 发起人

+ 20 - 5
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractLogisticsService.java

@@ -1366,13 +1366,25 @@ public class KwcContractLogisticsService {
                     .collect(Collectors.toMap(k->k.getContractId() + "-" + k.getUnitType(), Function.identity(),
                             (x, y) -> x));
         }
+        //查询字典
+        List<SysDictResDto> sysDictResDtos = remoteSystemService.queryDictByType(DictTypeEnum.PRODUCT_NAME_TYPE.getType());
+        Map<String, SysDictResDto> dictValueAndDictResDtoMap = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(sysDictResDtos)){
+            //字典value映射字典
+            dictValueAndDictResDtoMap = sysDictResDtos.stream()
+                    .collect(Collectors.toMap(SysDictResDto::getValue, Function.identity()));
 
-        return getQueryLogisticDetailResp(logistics, contractUniTypeAndUnitMap, kwcContractLogisticsGoods);
+        }
+
+        return getQueryLogisticDetailResp(logistics, contractUniTypeAndUnitMap, kwcContractLogisticsGoods,dictValueAndDictResDtoMap);
 
     }
 
     @NotNull
-    private QueryLogisticDetailResp getQueryLogisticDetailResp(KwcContractLogistics logistics, Map<String, KwcContractLogisticsUnit> contractUniTypeAndUnitMap, List<KwcContractLogisticsGoods> kwcContractLogisticsGoods) {
+    private QueryLogisticDetailResp getQueryLogisticDetailResp(KwcContractLogistics logistics,
+                                                               Map<String, KwcContractLogisticsUnit> contractUniTypeAndUnitMap,
+                                                               List<KwcContractLogisticsGoods> kwcContractLogisticsGoods,
+                                                               Map<String, SysDictResDto> dictValueAndDictResDtoMap) {
         QueryLogisticDetailResp queryLogisticListResp = new QueryLogisticDetailResp();
         queryLogisticListResp.setId(logistics.getId());
         queryLogisticListResp.setPid(logistics.getContractPid());
@@ -1418,7 +1430,7 @@ public class KwcContractLogisticsService {
                             .distinct()
                     .collect(Collectors.toList()));
             tradeGoodsInfos = kwcContractLogisticsGoods.stream()
-                    .map(x->getTradeGoodsInfo(x, kwpGoodsMap))
+                    .map(x->getTradeGoodsInfo(x, kwpGoodsMap,dictValueAndDictResDtoMap))
                     .collect(Collectors.toList());
         }
 
@@ -1427,11 +1439,14 @@ public class KwcContractLogisticsService {
         return queryLogisticListResp;
     }
 
-    private static QueryLogisticDetailResp.TradeGoodsInfo getTradeGoodsInfo(KwcContractLogisticsGoods x,Map<Long, KwpGoods> kwpGoodsMap) {
+    private static QueryLogisticDetailResp.TradeGoodsInfo getTradeGoodsInfo(KwcContractLogisticsGoods x,
+                                                                            Map<Long, KwpGoods> kwpGoodsMap,
+                                                                            Map<String, SysDictResDto> dictValueAndDictResDtoMap) {
         QueryLogisticDetailResp.TradeGoodsInfo tradeGoodsInfo = new QueryLogisticDetailResp.TradeGoodsInfo();
         tradeGoodsInfo.setGoodsId(x.getGoodsId());
         KwpGoods kwpGoods = kwpGoodsMap.getOrDefault(x.getGoodsId(), new KwpGoods());
-        tradeGoodsInfo.setGoodsName(kwpGoods.getName()+"/"+kwpGoods.getGoodsType()+"/"+kwpGoods.getSpec());
+        SysDictResDto sysDictResDto = dictValueAndDictResDtoMap.getOrDefault(kwpGoods.getGoodsType(), new SysDictResDto());
+        tradeGoodsInfo.setGoodsName(kwpGoods.getName()+"/"+sysDictResDto.getLabel()+"/"+kwpGoods.getSpec());
         tradeGoodsInfo.setAmount(x.getAmount());
         tradeGoodsInfo.setAmountUnit(x.getUnit());
         tradeGoodsInfo.setPrice(x.getPrice());

+ 93 - 70
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractTradeService.java

@@ -41,6 +41,7 @@ import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
 import com.sckw.order.api.model.ContractSignCompletedParam;
 import com.sckw.order.api.model.OrderDetailVo;
+import com.sckw.order.api.model.TradeOrderContractVo;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.product.api.model.KwpGoods;
 import com.sckw.stream.enums.MessageEnum;
@@ -171,55 +172,7 @@ public class KwcContractTradeService {
         queryTradeReq.setPageSize(reqVo.getPageSize());
 
         List<QueryListResVo> queryListResVoPageDataResult = queryTradeListByPage(queryTradeReq);
-       // List<QueryListResVo> list1 = queryListResVoPageDataResult.getList();
-//        QueryListReqDto queryListReqDto = new QueryListReqDto();
-//        BeanUtils.copyProperties(reqVo, queryListReqDto);
-//        List<Long> allEnt = new ArrayList<>();
-//        if (Objects.isNull(reqVo.getEntId())) {
-//            queryListReqDto.setEntId(LoginUserHolder.getEntId());
-//        }
-//        allEnt.add(queryListReqDto.getEntId());
-//
-//        EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(queryListReqDto.getEntId());
-//        if (Objects.nonNull(entCacheResDto)) {
-//            EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntTreeById(entCacheResDto.getId());
-//            List<EntCacheResDto> child = entCacheResDto1.getChild();
-//            if (CollectionUtils.isNotEmpty(child)) {
-//                allEnt.addAll(child.stream().map(EntCacheResDto::getId).toList());
-//            }
-//        }
-//        queryListReqDto.setAllEnt(allEnt);
-//
-//        if (StringUtils.isNotBlank(reqVo.getKeywords())) {
-//            List<KwsUserResDto> userByName = remoteUserService.getUserByName(reqVo.getKeywords());
-//            if (CollectionUtils.isNotEmpty(userByName)) {
-//                queryListReqDto.setInitiateList(userByName.stream().map(KwsUserResDto::getId).toList());
-//            }
-//        }
-//
-//        List<QueryListResDto> queryListResDtos = kwcContractTradeMapper.queryList1(queryListReqDto);
-//        if (CollectionUtils.isEmpty(queryListResDtos)) {
-//            return PageHelperUtil.getPageResult(new PageInfo<>());
-//        }
-//        //查询公司信息
-//        Set<Long> tradeContractIds = queryListResDtos.stream().map(QueryListResDto::getId).collect(Collectors.toSet());
-//        List<KwcContractTradeUnit> tradeUnits = kwcContractTradeUnitRepository.queryByContractIds(tradeContractIds);
-//        Map<String, KwcContractTradeUnit> contractUnitTypeKeyAndUnitMap = Maps.newHashMap();
-//        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeUnits)){
-//            contractUnitTypeKeyAndUnitMap = tradeUnits.stream()
-//                    .peek(x -> x.setContractIdUniTypeKey(x.getContractId() + "-" + x.getUnitType()))
-//                    .collect(Collectors.toMap(KwcContractTradeUnit::getContractIdUniTypeKey, Function.identity(), (v1
-//                            , v2) -> v1));
-//        }
-//
-//        //查询贸易合同关联商品
-//        List<KwcContractTradeGoods> tradeContractGoods = kwcContractTradeGoodsRepository.queryByContractIds(tradeContractIds);
-//        Map<Long, List<KwcContractTradeGoods>> contractIdGoodsIdKeyAndGoodsMap = Maps.newHashMap();
-//        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeContractGoods)){
-//            contractIdGoodsIdKeyAndGoodsMap =
-//                    tradeContractGoods.stream().collect(Collectors.groupingBy(KwcContractTradeGoods::getContractId));
-//        }
-//        List<QueryListResVo> list = getQueryListResVos(queryListResDtos, contractIdGoodsIdKeyAndGoodsMap,contractUnitTypeKeyAndUnitMap);
+
         return PageHelperUtil.getPageResult(new PageInfo<>(queryListResVoPageDataResult), queryListResVoPageDataResult, reqVo.getPageSize());
     }
 
@@ -324,7 +277,15 @@ public class KwcContractTradeService {
         KwcContractTrade kwcContractTrade = getKwcContractTrade(baseInfo, reqVo.getGoodsInfo(), reqVo.getRemark(), reqVo.getPid());
         long contactId = new IdWorker(1L).nextId();
         kwcContractTrade.setId(contactId);
-        kwcContractTrade.setStatus(ContractStatusEnum.WAIT_APPROVE.getCode());
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(LoginUserHolder.getEntId());
+        if (Objects.nonNull(entCacheResDto) && StringUtils.isNotBlank(entCacheResDto.getEntTypes())) {
+            if (org.apache.commons.lang3.StringUtils.equals(entCacheResDto.getEntTypes(), String.valueOf(EntTypeEnum.SUPPLIER.getCode()))){
+                kwcContractTrade.setStatus(ContractStatusEnum.WAIT_APPROVE.getCode());
+            }else if (org.apache.commons.lang3.StringUtils.equals(entCacheResDto.getEntTypes(), String.valueOf(EntTypeEnum.PURCHASER.getCode()))){
+                kwcContractTrade.setStatus(ContractStatusEnum.SUBMIT.getCode());
+            }
+        }
+
         kwcContractTrade.setSigningUrl(reqVo.getContractFile());
         if (kwcContractTradeMapper.insert(kwcContractTrade) <= 0) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
@@ -781,7 +742,6 @@ public class KwcContractTradeService {
         }
         kwcContractTrade.setAmount(amountTotal);
         kwcContractTrade.setSigningUrl(reqVo.getContractFile());
-        kwcContractTrade.setStatus(ContractStatusEnum.SAVE.getCode());
         kwcContractTrade.setUpdateBy(LoginUserHolder.getUserId());
         kwcContractTrade.setUpdateTime(date);
         if (kwcContractTradeMapper.updateById(kwcContractTrade) <= 0) {
@@ -1368,16 +1328,15 @@ public class KwcContractTradeService {
         updateKwcContractTrade.setId(kwcContractTrade.getId());
         updateKwcContractTrade.setRemark(req.getRemark());
         //审核  审核后变成待签约
-        if (Objects.equals(req.getStatus(), ContractStatusEnum.SUBMIT.getCode()) && Objects.equals(kwcContractTrade.getStatus(), ContractStatusEnum.WAIT_APPROVE.getCode())) {
-            updateKwcContractTrade.setStatus(ContractStatusEnum.SUBMIT.getCode());
-        }
         //审核拒绝 (状态由待审核变成已作废)
         if (Objects.equals(req.getStatus(), ContractStatusEnum.CANNEL.getCode())
                 && Arrays.asList(ContractStatusEnum.WAIT_APPROVE.getCode(), ContractStatusEnum.SUBMIT.getCode()).contains(kwcContractTrade.getStatus())) {
             updateKwcContractTrade.setStatus(ContractStatusEnum.CANNEL.getCode());
         }
-        //签约 (状态由带签约变成签约)
-        if (Objects.equals(req.getStatus(), ContractStatusEnum.SIGNED.getCode()) && Objects.equals(kwcContractTrade.getStatus(), ContractStatusEnum.SUBMIT.getCode())) {
+        //签约 (状态由带签约或者待审核变成签约)
+        if (Objects.equals(req.getStatus(), ContractStatusEnum.SIGNED.getCode()) &&
+                Arrays.asList(ContractStatusEnum.SUBMIT.getCode(), ContractStatusEnum.WAIT_APPROVE.getCode(),ContractStatusEnum.CANNEL.getCode())
+                        .contains(kwcContractTrade.getStatus())) {
             updateKwcContractTrade.setStatus(ContractStatusEnum.SIGNED.getCode());
             updateKwcContractTrade.setSignTime(new Date());
         }
@@ -1431,6 +1390,17 @@ public class KwcContractTradeService {
 
         }
 
+        //查询字典
+        List<SysDictResDto> sysDictResDtos = remoteSystemService.queryDictByType(DictTypeEnum.PRODUCT_NAME_TYPE.getType());
+        Map<String, SysDictResDto> dictValueAndDictResDtoMap = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(sysDictResDtos)){
+            //字典value映射字典
+            dictValueAndDictResDtoMap = sysDictResDtos.stream()
+                    .collect(Collectors.toMap(SysDictResDto::getValue, Function.identity()));
+
+         }
+
+
         ContractDetailResp contractDetailResp = new ContractDetailResp();
         contractDetailResp.setId(kwcContractTrade.getId());
         contractDetailResp.setPid(kwcContractTrade.getContractPid());
@@ -1443,8 +1413,9 @@ public class KwcContractTradeService {
         //标地信息
         if (CollectionUtils.isNotEmpty(tradeGoods)){
             Map<Long, KwpGoods> finalGoodsIdAndGoodsMap = goodsIdAndGoodsMap;
+            Map<String, SysDictResDto> finalDictValueAndDictResDtoMap = dictValueAndDictResDtoMap;
             List<ContractDetailResp.TradeGoodsInfo> tradeGoodsInfos = tradeGoods.stream()
-                    .map(t -> getTradeGoodsInfo(t, finalGoodsIdAndGoodsMap))
+                    .map(t -> getTradeGoodsInfo(t, finalGoodsIdAndGoodsMap, finalDictValueAndDictResDtoMap))
                     .collect(Collectors.toList());
             contractDetailResp.setGoodsInfo(tradeGoodsInfos);
         }
@@ -1456,15 +1427,17 @@ public class KwcContractTradeService {
     }
 
 
-    private static ContractDetailResp.TradeGoodsInfo getTradeGoodsInfo(KwcContractTradeGoods t, Map<Long,
-            KwpGoods> finalGoodsIdAndGoodsMap) {
+    private static ContractDetailResp.TradeGoodsInfo getTradeGoodsInfo(KwcContractTradeGoods t,
+                                                                       Map<Long, KwpGoods> finalGoodsIdAndGoodsMap,
+                                                                       Map<String, SysDictResDto> dictValueAndDictResDtoMap) {
         ContractDetailResp.TradeGoodsInfo tradeGoodsInfo = new ContractDetailResp.TradeGoodsInfo();
         tradeGoodsInfo.setGoodsId(t.getGoodsId());
         KwpGoods goods = finalGoodsIdAndGoodsMap.getOrDefault(t.getGoodsId(), new KwpGoods());
-        tradeGoodsInfo.setGoodsName(goods.getName()+"/"+goods.getGoodsType()+"/"+goods.getSpec());
+        SysDictResDto dictResDto = dictValueAndDictResDtoMap.getOrDefault(goods.getGoodsType(), new SysDictResDto());
+        tradeGoodsInfo.setGoodsName(goods.getName()+"/"+dictResDto.getLabel()+"/"+goods.getSpec());
         tradeGoodsInfo.setAmount(t.getAmount());
         tradeGoodsInfo.setPrice(t.getPrice());
-        tradeGoodsInfo.setUnit(t.getUnit());
+        tradeGoodsInfo.setUnit(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(),t.getUnit()));
         tradeGoodsInfo.setEffectiveStartTime(t.getStartTime());
         tradeGoodsInfo.setEffectiveEntTime(t.getEndTime());
         return tradeGoodsInfo;
@@ -1586,10 +1559,39 @@ public class KwcContractTradeService {
         List<Long> createBys =
                 records.stream().map(KwcContractTrade::getCreateBy).distinct().collect(Collectors.toList());
         Map<Long, UserCacheResDto> longUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(createBys);
+        //根据物流查询贸易订单
+        List<TradeOrderContractVo> tradeOrderContractVos = tradeOrderInfoService.queryByTradeContactIds(tradeContractIds);
+        Map<Long, RWaybillSubOrderVo> tradeOrderIdAndWaybillMap = Maps.newHashMap();
+        Map<Long, TradeOrderContractVo> contractIdAndContractMap = Maps.newHashMap();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeOrderContractVos)){
+            contractIdAndContractMap = tradeOrderContractVos.stream()
+                    .collect(Collectors.toMap(TradeOrderContractVo::getContractId, Function.identity(), (v1, v2) -> v1));
+            //贸易订单id
+            Set<Long> tradeOrderIds = tradeOrderContractVos.stream()
+                    .map(TradeOrderContractVo::getTOrderId)
+                    .collect(Collectors.toSet());
+            //通过贸易订单id查询物流运单
+            List<RWaybillSubOrderVo> rWaybillSubOrderVos = transportRemoteService.queryWaybillOrderByTradeOrderIds(tradeOrderIds);
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(rWaybillSubOrderVos)){
+                tradeOrderIdAndWaybillMap = rWaybillSubOrderVos.stream()
+                        .collect(Collectors.toMap(RWaybillSubOrderVo::getTradeId, Function.identity(), (k1, k2) -> k1));
+            }
+        }
+        //根据合同id查询合同商品
+        List<KwcContractTradeGoods> tradeGoods = kwcContractTradeGoodsRepository.queryByContractIds(tradeContractIds);
+        Map<Long, KwcContractTradeGoods> goodsIdAndGoodsMap = Maps.newHashMap();
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeGoods)){
+            goodsIdAndGoodsMap = tradeGoods.stream().collect(Collectors.toMap(KwcContractTradeGoods::getGoodsId,Function.identity(), (v1, v2) -> v1));
+        }
+
         Map<Long, KwcContractTrade> finalPidIdAndTradeMap = pidIdAndTradeMap;
         Map<String, KwcContractTradeUnit> finalContractUnitTypeKeyAndUnitMap = contractUnitTypeKeyAndUnitMap;
+        Map<Long, RWaybillSubOrderVo> finalTradeOrderIdAndWaybillMap = tradeOrderIdAndWaybillMap;
+        Map<Long, TradeOrderContractVo> finalContractIdAndContractMap = contractIdAndContractMap;
+        Map<Long, KwcContractTradeGoods> finalGoodsIdAndGoodsMap = goodsIdAndGoodsMap;
         List<QueryListResVo> queryListResVos = records.stream()
-                .map(t -> getQueryListResVo(t, finalContractUnitTypeKeyAndUnitMap, finalPidIdAndTradeMap, longUserCacheResDtoMap))
+                .map(t -> getQueryListResVo(t, finalContractUnitTypeKeyAndUnitMap, finalPidIdAndTradeMap, longUserCacheResDtoMap,
+                        finalTradeOrderIdAndWaybillMap, finalContractIdAndContractMap, finalGoodsIdAndGoodsMap))
                 .collect(Collectors.toList());
         if (org.apache.commons.lang3.StringUtils.isNotBlank(req.getPurchaseEntId())){
             queryListResVos = queryListResVos.stream()
@@ -1606,7 +1608,13 @@ public class KwcContractTradeService {
     }
 
     @NotNull
-    private static QueryListResVo getQueryListResVo(KwcContractTrade t, Map<String, KwcContractTradeUnit> finalContractUnitTypeKeyAndUnitMap, Map<Long, KwcContractTrade> finalPidIdAndTradeMap, Map<Long, UserCacheResDto> longUserCacheResDtoMap) {
+    private static QueryListResVo getQueryListResVo(KwcContractTrade t,
+                                                    Map<String, KwcContractTradeUnit> finalContractUnitTypeKeyAndUnitMap,
+                                                    Map<Long, KwcContractTrade> finalPidIdAndTradeMap,
+                                                    Map<Long, UserCacheResDto> longUserCacheResDtoMap,
+                                                    Map<Long, RWaybillSubOrderVo> tradeOrderIdAndWaybillMap,
+                                                    Map<Long, TradeOrderContractVo> contractIdAndContractMap,
+                                                    Map<Long, KwcContractTradeGoods> goodsIdAndGoodsMap) {
         QueryListResVo queryListResVo = new QueryListResVo();
         queryListResVo.setId(t.getId());
         queryListResVo.setStatus(t.getStatus());
@@ -1630,18 +1638,33 @@ public class KwcContractTradeService {
         queryListResVo.setUnloadWayName(DictEnum.getLabel(DictTypeEnum.LOAD_UNLOAD_WAY.getType(),
                 String.valueOf(t.getUnloadWay())));
         queryListResVo.setAmount(t.getAmount());
-        queryListResVo.setPerformedAmount(t.getPerformedAmount());
-
-        // queryListResVo.setPerformedAmountMoney();
+        TradeOrderContractVo tradeOrderContractVo = contractIdAndContractMap.getOrDefault(t.getId(), new TradeOrderContractVo());
+        RWaybillSubOrderVo subOrderVo = tradeOrderIdAndWaybillMap.getOrDefault(tradeOrderContractVo.getTOrderId(), new RWaybillSubOrderVo());
+        List<RWaybillSubOrderVo.BillSubOrder> subOrders = subOrderVo.getSubOrders();
+        BigDecimal unloadQty = BigDecimal.ZERO;
+        BigDecimal performedAmountMoney = BigDecimal.ZERO;
+        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(subOrders)){
+            unloadQty = subOrders.stream()
+                    .map(RWaybillSubOrderVo.BillSubOrder::getUnloadAmount)
+                    .filter(Objects::nonNull)
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            performedAmountMoney = subOrders.stream()
+                    .filter(x -> Objects.nonNull(x.getUnloadAmount()))
+                    .map(x -> {
+                        KwcContractTradeGoods orDefault = goodsIdAndGoodsMap.getOrDefault(x.getGoodId(), new KwcContractTradeGoods());
+                        BigDecimal price = Optional.ofNullable(orDefault).map(KwcContractTradeGoods::getPrice).orElse(BigDecimal.ZERO);
+                        return x.getUnloadAmount().multiply(price);
+                    }).reduce(BigDecimal.ZERO, BigDecimal::add);
+        }
+        queryListResVo.setPerformedAmount(unloadQty.setScale(2, RoundingMode.HALF_UP));
+
+        queryListResVo.setPerformedAmountMoney(performedAmountMoney.setScale(2, RoundingMode.HALF_UP));
         queryListResVo.setContractPid(t.getContractPid());
         KwcContractTrade parentTrade = finalPidIdAndTradeMap.getOrDefault(t.getContractPid(),
                 new KwcContractTrade());
         queryListResVo.setContractPname(parentTrade.getName());
-
-//            queryListResVo.setChargingName();
-//            queryListResVo.setTradingName();
-//            queryListResVo.setCarrierEntName();
         UserCacheResDto userCacheResDto = longUserCacheResDtoMap.getOrDefault(t.getCreateBy(), new UserCacheResDto());
+        queryListResVo.setInitiatorId(t.getCreateBy());
         queryListResVo.setInitiateName(userCacheResDto.getName());
         if (Objects.nonNull(userCacheResDto.getEntInfo())){
             queryListResVo.setInitiateEntName(userCacheResDto.getEntInfo().getFirmName());

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

@@ -591,6 +591,22 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
         kwoTradeOrderService.updateOrderAmount(tradeOrderSettlePara);
     }
 
+    @Override
+    public List<TradeOrderContractVo> queryByTradeContactIds(Set<Long> tradeContractIds) {
+        List<KwoTradeOrderContract> kwoTradeOrderContracts = kwoTradeOrderContractRepository.queryByContractIds(tradeContractIds);
+        if (CollectionUtils.isEmpty(kwoTradeOrderContracts)) {
+            return List.of();
+        }
+        return kwoTradeOrderContracts.stream().map(item -> {
+            TradeOrderContractVo tradeOrderContractVo = new TradeOrderContractVo();
+            tradeOrderContractVo.setContractId(item.getContractId());
+            tradeOrderContractVo.setContractNo(item.getContractNo());
+            tradeOrderContractVo.setTOrderId(item.getTOrderId());
+            tradeOrderContractVo.setTOrderNo(item.getTOrderNo());
+            return tradeOrderContractVo;
+        }).collect(Collectors.toList());
+    }
+
     @Override
     public List<OrderSaleVo> queryRecentSale(LocalDateTime start, LocalDateTime end) {
         return kwoTradeOrderService.queryRecentSale(start, end);

+ 6 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/repository/KwoTradeOrderContractRepository.java

@@ -30,4 +30,10 @@ public class KwoTradeOrderContractRepository extends ServiceImpl<KwoTradeOrderCo
                 .eq(KwoTradeOrderContract::getTOrderId, traceOrderId)
                 .last("limit 1"));
     }
+
+    public List<KwoTradeOrderContract> queryByContractIds(Set<Long> tradeContractIds) {
+       return list(Wrappers.<KwoTradeOrderContract>lambdaQuery()
+                .eq(BaseModel::getDelFlag,0)
+                .in(KwoTradeOrderContract::getContractId, tradeContractIds));
+    }
 }

+ 6 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -2439,6 +2439,8 @@ public class KwoTradeOrderService {
             addLogisticOrderParam.setLoadContacts(kwoTradeOrderAddress.getContacts());
             addLogisticOrderParam.setLoadPhone(kwoTradeOrderAddress.getPhone());
             addLogisticOrderParam.setLoadDetailAddress(kwoTradeOrderAddress.getDetailAddress());
+            addLogisticOrderParam.setLoadLat(kwoTradeOrderAddress.getLat());
+            addLogisticOrderParam.setLoadLng(kwoTradeOrderAddress.getLng());
         }
 
         List<KwoTradeOrderAddress> kwoTradeOrderAddresses2 = addressMap.get(String.valueOf(AddressTypeEnum.SHIPMENT.getCode()));
@@ -2449,6 +2451,10 @@ public class KwoTradeOrderService {
             addLogisticOrderParam.setUnloadCityCode(unloadAddress.getCityCode());
             addLogisticOrderParam.setUnloadCityName(unloadAddress.getCityName());
             addLogisticOrderParam.setUnLoadDetailAddress(unloadAddress.getDetailAddress());
+            addLogisticOrderParam.setUnloadContacts(unloadAddress.getContacts());
+            addLogisticOrderParam.setUnloadPhone(unloadAddress.getPhone());
+            addLogisticOrderParam.setUnloadLng(unloadAddress.getLng());
+            addLogisticOrderParam.setUnloadLat(unloadAddress.getLat());
         }
         addLogisticOrderParam.setEntId(LoginUserHolder.getEntId());
         addLogisticOrderParam.setUserId(LoginUserHolder.getUserId());

+ 17 - 7
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.model.vo.TradeContractGoodsDto;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
@@ -66,6 +67,7 @@ import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -249,9 +251,9 @@ public class KwpGoodsService {
             goodsEntInfo.setEnt(supplyEnt.getFirmName());
             goodsEntInfo.setEntHead(supplyEnt.getHead());
             goodsEntInfo.setEntBusiness(supplyEnt.getBusiness());
-            goodsEntInfo.setEntAddress(supplyEnt.getCityName());
-            goodsEntInfo.setContacts(supplyEnt.getContacts());
-            goodsEntInfo.setPhone(supplyEnt.getPhone());
+            goodsEntInfo.setEntAddress(supplyEnt.getCityName() + (StrUtil.isNotEmpty(supplyEnt.getDetailAddress()) ? supplyEnt.getDetailAddress() : ""));
+            goodsEntInfo.setContacts(supplyEnt.getLegalName());
+            goodsEntInfo.setPhone(supplyEnt.getLegalPhone());
         }
         UserCacheResDto managerInfo = remoteSystemService.queryUserCacheById(detail.getManager());
         if (Objects.nonNull(managerInfo)) {
@@ -1415,21 +1417,29 @@ public class KwpGoodsService {
         if (org.apache.commons.collections4.CollectionUtils.isEmpty(goods)) {
             return new GoodsInfoResp();
         }
+        List<String> types = Arrays.asList(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), DictTypeEnum.UNIT_TYPE.getType());
         //组装商品参数
+        Map<String,  Map<String, String>> finalValueAndDictResDtoMap = remoteSystemService.queryDictByType(types);
+
         List<GoodsInfoResp.GoodsInfo> goodsInfos = goods.stream()
                 .filter(e -> Objects.equals(e.getStatus(), GoodsStatusEnum.PUT_ON_SHELVES.getCode()))
-                .map(KwpGoodsService::getGoodsInfo)
+                .map(x->KwpGoodsService.getGoodsInfo(x, finalValueAndDictResDtoMap))
                 .collect(Collectors.toList());
         GoodsInfoResp goodsInfoResp = new GoodsInfoResp();
         goodsInfoResp.setGoodsInfoRespList(goodsInfos);
         return goodsInfoResp;
     }
 
-    private static GoodsInfoResp.GoodsInfo getGoodsInfo(KwpGoods x) {
+    private static GoodsInfoResp.GoodsInfo getGoodsInfo(KwpGoods x,Map<String,  Map<String, String>> valueAndDictResDtoMap ) {
         GoodsInfoResp.GoodsInfo goodsInfo = new GoodsInfoResp.GoodsInfo();
         goodsInfo.setGoodsId(x.getId());
-        goodsInfo.setGoodsName(x.getName());
-        goodsInfo.setAmountUnit(x.getUnit());
+
+        Map<String, String> productNameMap = valueAndDictResDtoMap.getOrDefault(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), new HashMap<>());
+        String productType = productNameMap.get(x.getGoodsType());
+        goodsInfo.setGoodsName(x.getName()+"/"+productType+"/"+x.getSpec());
+
+        Map<String, String> unitMap = valueAndDictResDtoMap.getOrDefault(DictTypeEnum.UNIT_TYPE.getType(), new HashMap<>());
+        goodsInfo.setAmountUnit(unitMap.get(x.getUnit()));
         goodsInfo.setPriceUnit(x.getPriceUnit());
         return goodsInfo;
     }

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

@@ -28,7 +28,7 @@ public interface KwsRoleDao extends BaseMapper<KwsRole> {
      * @param record
      * @return
      */
-    int update(KwsRole record);
+//    int update(KwsRole record);
 
     /**
      * 详情查询

+ 13 - 14
sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java

@@ -15,7 +15,6 @@ import com.sckw.core.web.response.result.PageDataResult;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.*;
-import com.sckw.system.api.model.pojo.DeptInfoPojo;
 import com.sckw.system.dao.KwsRoleDao;
 import com.sckw.system.dao.SysDictDao;
 import com.sckw.system.model.*;
@@ -575,27 +574,27 @@ public class RemoteSystemServiceImpl implements RemoteSystemService {
             BeanUtils.copyProperties(kwsUser, userCacheResDto);
             userCacheResDto.setRoleInfo(remoteBaseService.queryRoleInfoByUserId(userId));
 
-            List<KwsUserDeptResDto> kwsUserDeptResDtos = remoteBaseService.queryUserDeptByUserId(userId);
-            if (CollectionUtils.isEmpty(kwsUserDeptResDtos)) {
-                return userCacheResDto;
-            }
+//            List<KwsUserDeptResDto> kwsUserDeptResDtos = remoteBaseService.queryUserDeptByUserId(userId);
+//            if (CollectionUtils.isEmpty(kwsUserDeptResDtos)) {
+//                return userCacheResDto;
+//            }
 
-            List<Long> deptIds = kwsUserDeptResDtos.stream().map(KwsUserDeptResDto::getDeptId).toList();
-            List<KwsDeptResDto> kwsDeptResDtos = remoteBaseService.queryDeptByIds(deptIds);
-            if (CollectionUtils.isEmpty(kwsDeptResDtos)) {
-                return userCacheResDto;
-            }
+//            List<Long> deptIds = kwsUserDeptResDtos.stream().map(KwsUserDeptResDto::getDeptId).toList();
+//            List<KwsDeptResDto> kwsDeptResDtos = remoteBaseService.queryDeptByIds(deptIds);
+//            if (CollectionUtils.isEmpty(kwsDeptResDtos)) {
+//                return userCacheResDto;
+//            }
 
-            Long entId = kwsDeptResDtos.get(0).getEntId();
-            KwsEnterpriseResDto kwsEnterpriseResDto = remoteBaseService.queryEnterpriseById(entId);
+           // Long entId = kwsDeptResDtos.get(0).getEntId();
+            KwsEnterpriseResDto kwsEnterpriseResDto = remoteBaseService.queryEnterpriseById(kwsUser.getEntId());
             if (Objects.isNull(kwsEnterpriseResDto)) {
                 return userCacheResDto;
             }
 
             EntCacheResDto entCacheResDto = new EntCacheResDto();
             BeanUtils.copyProperties(kwsEnterpriseResDto, entCacheResDto);
-            entCacheResDto.setDeptInfo(BeanUtils.copyToList(kwsDeptResDtos, DeptInfoPojo.class));
-            entCacheResDto.setCertificateInfo(remoteBaseService.queryCertificateByEntId(entId));
+            //entCacheResDto.setDeptInfo(BeanUtils.copyToList(kwsDeptResDtos, DeptInfoPojo.class));
+            entCacheResDto.setCertificateInfo(remoteBaseService.queryCertificateByEntId(kwsUser.getId()));
             userCacheResDto.setEntInfo(entCacheResDto);
             RedissonUtils.putString(key, JSON.toJSONString(userCacheResDto), Global.COMMON_EXPIRE);
             return userCacheResDto;

+ 1 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsRoleService.java

@@ -302,7 +302,7 @@ public class KwsRoleService {
         kwsRoleTable.setId(reqVo.getId());
         kwsRoleTable.setName(reqVo.getName());
         kwsRoleTable.setRemark(reqVo.getRemark());
-        if (kwsRoleDao.update(kwsRoleTable) <= 0) {
+        if (kwsRoleDao.updateById(kwsRoleTable) <= 0) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }
         if (StringUtils.isNotBlank(reqVo.getDeptIds())) {

+ 13 - 102
sckw-modules/sckw-system/src/main/resources/mapper/KwsRoleDao.xml

@@ -7,6 +7,7 @@
     <result column="ent_id" jdbcType="BIGINT" property="entId" />
     <result column="remark" jdbcType="VARCHAR" property="remark" />
     <result column="status" jdbcType="INTEGER" property="status" />
+    <result column="admin_flag" jdbcType="INTEGER" property="adminFlag" />
     <result column="create_by" jdbcType="BIGINT" property="createBy" />
     <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
     <result column="update_by" jdbcType="BIGINT" property="updateBy" />
@@ -15,8 +16,17 @@
   </resultMap>
 
   <sql id="Base_Column_List">
-    id, name, ent_id, remark, status, create_by, create_time, update_by, update_time,
-    del_flag
+      id,
+      name,
+      ent_id,
+      remark,
+      status,
+      admin_flag,
+      create_by,
+      create_time,
+      update_by,
+      update_time,
+      del_flag
   </sql>
 
   <select id="selectByKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
@@ -26,107 +36,8 @@
     where id = #{id,jdbcType=BIGINT}
   </select>
 
-  <insert id="insert" parameterType="com.sckw.system.model.KwsRole">
-    insert into kws_role
-    <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="id != null">
-        id,
-      </if>
-      <if test="name != null">
-        name,
-      </if>
-        <if test="entId != null">
-            ent_id,
-      </if>
-      <if test="remark != null">
-        remark,
-      </if>
-      <if test="status != null">
-        status,
-      </if>
-      <if test="createBy != null">
-        create_by,
-      </if>
-      <if test="createTime != null">
-        create_time,
-      </if>
-      <if test="updateBy != null">
-        update_by,
-      </if>
-      <if test="updateTime != null">
-        update_time,
-      </if>
-      <if test="delFlag != null">
-        del_flag,
-      </if>
-    </trim>
-    <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="id != null">
-        #{id,jdbcType=BIGINT},
-      </if>
-      <if test="name != null">
-        #{name,jdbcType=VARCHAR},
-      </if>
-      <if test="entId != null">
-         #{entId,jdbcType=VARCHAR},
-      </if>
-      <if test="remark != null">
-        #{remark,jdbcType=VARCHAR},
-      </if>
-      <if test="status != null">
-        #{status,jdbcType=INTEGER},
-      </if>
-      <if test="createBy != null">
-        #{createBy,jdbcType=BIGINT},
-      </if>
-      <if test="createTime != null">
-        #{createTime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="updateBy != null">
-        #{updateBy,jdbcType=BIGINT},
-      </if>
-      <if test="updateTime != null">
-        #{updateTime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="delFlag != null">
-        #{delFlag,jdbcType=INTEGER},
-      </if>
-    </trim>
-  </insert>
 
-  <update id="update" parameterType="com.sckw.system.model.KwsRole">
-      update kws_role
-      <set>
-          <if test="name != null">
-              name = #{name,jdbcType=VARCHAR},
-          </if>
-          <if test="entId != null">
-              ent_id = #{entId,jdbcType=VARCHAR},
-          </if>
-          <if test="remark != null">
-              remark = #{remark,jdbcType=VARCHAR},
-          </if>
-          <if test="status != null">
-              status = #{status,jdbcType=INTEGER},
-          </if>
-          <if test="createBy != null">
-              create_by = #{createBy,jdbcType=BIGINT},
-          </if>
-          <if test="createTime != null">
-              create_time = #{createTime,jdbcType=TIMESTAMP},
-          </if>
-          <if test="updateBy != null">
-              update_by = #{updateBy,jdbcType=BIGINT},
-          </if>
-          <if test="updateTime != null">
-              update_time = #{updateTime,jdbcType=TIMESTAMP},
-          </if>
-          <if test="delFlag != null">
-              del_flag = #{delFlag,jdbcType=INTEGER},
-          </if>
-      </set>
-      where id = #{id,jdbcType=BIGINT}
-  </update>
+
 
   <select id="findPage" resultType="com.sckw.system.model.vo.res.RoleResVo" parameterType="java.util.Map" >
       select sr.id,

+ 42 - 13
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
@@ -135,6 +136,7 @@ public class TransportServiceImpl implements TransportRemoteService {
     private final KwtLogisticsOrderCirculateRepository logisticsOrderCirculateRepository;
     private final KwtAcceptCarriageOrderService kwtAcceptCarriageOrderService;
     private final KwtLogisticsConsignmentService logisticsConsignmentService;
+    private final KwtLogisticsOrderGoodsRepository logisticsOrderGoodsRepository;
 
     // 定义禁止关联车辆删除的状态集合
     private static final List<Integer> FORBIDDEN_STATUSES = Arrays.asList(
@@ -881,22 +883,44 @@ public class TransportServiceImpl implements TransportRemoteService {
         if (org.apache.commons.collections4.CollectionUtils.isEmpty(subtasks)){
             return Collections.emptyList();
         }
+        //查询物流订单和的商品关系
+        List<KwtLogisticsOrderGoods> logOrderGoods = logisticsOrderGoodsRepository.queryByLogIds(logIds);
+        Map<Long, KwtLogisticsOrderGoods> logisticsOrderGoodsMap = Maps.newHashMap();
+        if (CollectionUtils.isNotEmpty(logOrderGoods)){
+            logisticsOrderGoodsMap = logOrderGoods.stream()
+                    .collect(Collectors.toMap(KwtLogisticsOrderGoods::getLOrderId, Function.identity(), (x, y) -> x));
+        }
         //物理订单id映射运单
         Map<Long, List<KwtWaybillOrderSubtask>> logIdAndSubtasksMap =
                 subtasks.stream().collect(Collectors.groupingBy(KwtWaybillOrderSubtask::getLOrderId));
-      return logisticsOrders.stream().map(l-> {
+        Map<Long, List<KwtLogisticsOrder>> tradeIdAndLogisticsOrdersMap = logisticsOrders.stream().collect(Collectors.groupingBy(KwtLogisticsOrder::getTOrderId));
+
+        List<RWaybillSubOrderVo> result = Lists.newArrayList();
+        Map<Long, KwtLogisticsOrderGoods> finalLogisticsOrderGoodsMap = logisticsOrderGoodsMap;
+        tradeIdAndLogisticsOrdersMap.forEach((tradeId, logisticsOrderList) -> {
             RWaybillSubOrderVo rWaybillOrderVo = new RWaybillSubOrderVo();
-            rWaybillOrderVo.setTradeId(l.getTOrderId());
-            List<KwtWaybillOrderSubtask> waybillOrderSubtasks = logIdAndSubtasksMap.get(l.getId());
-            List<RWaybillSubOrderVo.BillSubOrder> subOrders = null;
-            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(waybillOrderSubtasks)) {
-                subOrders = waybillOrderSubtasks.stream()
-                        .map(TransportServiceImpl::getRWaybillSubOrderVo)
-                        .collect(Collectors.toList());
-            }
-            rWaybillOrderVo.setSubOrders(subOrders);
-            return rWaybillOrderVo;
-        }).collect(Collectors.toList());
+            rWaybillOrderVo.setTradeId(tradeId);
+            List<RWaybillSubOrderVo.BillSubOrder> subOrdersList = Lists.newArrayList();
+            List<RWaybillSubOrderVo.LogisticGoodsInfo> goodsInfos = Lists.newArrayList();
+            logisticsOrderList.forEach(l -> {
+                KwtLogisticsOrderGoods goods = finalLogisticsOrderGoodsMap.getOrDefault(l.getId(),new KwtLogisticsOrderGoods());
+                RWaybillSubOrderVo.LogisticGoodsInfo logisticGoodsInfo = new RWaybillSubOrderVo.LogisticGoodsInfo();
+                logisticGoodsInfo.setLOrderId(l.getId());
+                logisticGoodsInfo.setGoodsId(goods.getGoodsId());
+                goodsInfos.add(logisticGoodsInfo);
+                List<KwtWaybillOrderSubtask> waybillOrderSubtasks = logIdAndSubtasksMap.get(l.getId());
+                if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(waybillOrderSubtasks)) {
+                    List<RWaybillSubOrderVo.BillSubOrder> collect = waybillOrderSubtasks.stream()
+                            .map(x -> getRWaybillSubOrderVo(x, goods.getGoodsId()))
+                            .collect(Collectors.toList());
+                    subOrdersList.addAll(collect);
+                }
+            });
+            rWaybillOrderVo.setSubOrders(subOrdersList);
+            result.add(rWaybillOrderVo);
+        });
+        return result;
+
 
     }
 
@@ -1034,7 +1058,7 @@ public class TransportServiceImpl implements TransportRemoteService {
     }
 
     @NotNull
-    private static RWaybillSubOrderVo.BillSubOrder getRWaybillSubOrderVo(KwtWaybillOrderSubtask subtask) {
+    private static RWaybillSubOrderVo.BillSubOrder getRWaybillSubOrderVo(KwtWaybillOrderSubtask subtask,Long goodsId) {
         RWaybillSubOrderVo.BillSubOrder billSubOrder = new RWaybillSubOrderVo.BillSubOrder();
         billSubOrder.setEntId(subtask.getEntId());
         billSubOrder.setLOrderId(subtask.getLOrderId());
@@ -1048,6 +1072,7 @@ public class TransportServiceImpl implements TransportRemoteService {
         billSubOrder.setLoadTime(subtask.getLoadTime());
         billSubOrder.setDeficitAmount(subtask.getDeficitAmount());
         billSubOrder.setDeficitPrice(subtask.getDeficitPrice());
+        billSubOrder.setGoodId(goodsId);
         return billSubOrder;
     }
 
@@ -1203,6 +1228,10 @@ public class TransportServiceImpl implements TransportRemoteService {
         addLogisticOrderDTO.setUnLoadDetailAddress(param.getUnLoadDetailAddress());
         addLogisticOrderDTO.setUnloadContacts(param.getUnloadContacts());
         addLogisticOrderDTO.setUnloadPhone(param.getUnloadPhone());
+        addLogisticOrderDTO.setLoadLat(param.getLoadLat());
+        addLogisticOrderDTO.setLoadLng(param.getLoadLng());
+        addLogisticOrderDTO.setUnloadLat(param.getUnloadLat());
+        addLogisticOrderDTO.setUnloadLng(param.getUnloadLng());
         return addLogisticOrderDTO;
     }
 

+ 22 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/AddLogisticOrderDTO.java

@@ -167,5 +167,27 @@ public class AddLogisticOrderDTO implements Serializable {
     @NotBlank(message = "卸货联系电话不能为空")
     private String unloadPhone;
 
+    /**
+     * 装货纬度
+     */
+    @NotBlank(message = "纬度不能为空")
+    private String loadLat;
+
+    /**
+     * 装货 经度
+     */
+    @NotBlank(message = "经度不能为空")
+    private String loadLng;
 
+    /**
+     * 卸货纬度
+     */
+    @NotBlank(message = "纬度不能为空")
+    private String unloadLat;
+
+    /**
+     * 卸货经度
+     */
+    @NotBlank(message = "经度不能为空")
+    private String unloadLng;
 }

+ 22 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillOrderDetailResp.java

@@ -166,6 +166,28 @@ public class WaybillOrderDetailResp implements Serializable {
     @Schema(description = "装卸货之间距离")
     private double distanceKm;
 
+    /**
+     * 装货地址经度
+     */
+    @Schema(description = "装货地址经度")
+    private String loadLongitude;
+    /**
+     * 装货地址纬度
+     */
+    @Schema(description = "装货地址纬度")
+    private String loadLatitude;
+
+    /**
+     * 卸货地址经度
+     */
+    @Schema(description = "卸货地址经度")
+    private String unloadLongitude;
+    /**
+     * 卸货地址纬度
+     */
+    @Schema(description = "卸货地址纬度")
+    private String unloadLatitude;
+
     /**
      * 过磅记录
      */

+ 7 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtLogisticsOrderGoodsRepository.java

@@ -45,4 +45,11 @@ public class KwtLogisticsOrderGoodsRepository extends ServiceImpl<KwtLogisticsOr
                 .in(KwtLogisticsOrderGoods::getGoodsId,goodsIds)
         );
     }
+
+    public List<KwtLogisticsOrderGoods> queryByLogIds(List<Long> logIds) {
+        return list(Wrappers.<KwtLogisticsOrderGoods>lambdaQuery()
+                .eq(KwtLogisticsOrderGoods::getDelFlag,0)
+                .in(KwtLogisticsOrderGoods::getLOrderId,logIds)
+        );
+    }
 }

+ 1 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/repository/KwtWaybillOrderNodeRepository.java

@@ -29,6 +29,7 @@ public class KwtWaybillOrderNodeRepository extends ServiceImpl<KwtWaybillOrderNo
             wrapper.eq(KwtWaybillOrderNode::getWSubtaskId, wSubtaskId);
         }
         wrapper.orderByAsc(KwtWaybillOrderNode::getCreateTime);
+        wrapper.orderByAsc(KwtWaybillOrderNode::getId);
         return this.list(wrapper);
     }
 }

+ 4 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtAcceptCarriageOrderService.java

@@ -3382,6 +3382,8 @@ public class KwtAcceptCarriageOrderService {
         loadAddress.setEntryType(NumberConstant.FOUR);
         loadAddress.setStatus(NumberConstant.ZERO);
         loadAddress.setCreateBy(orderDTO.getUserId());
+        loadAddress.setLat(orderDTO.getLoadLat());
+        loadAddress.setLng(orderDTO.getLoadLng());
         Date date1 = new Date();
         loadAddress.setCreateTime(date1);
         loadAddress.setUpdateBy(orderDTO.getUserId());
@@ -3402,6 +3404,8 @@ public class KwtAcceptCarriageOrderService {
         unloadAddress.setStatus(NumberConstant.ZERO);
         unloadAddress.setSort(NumberConstant.ZERO);
         unloadAddress.setCreateBy(orderDTO.getUserId());
+        unloadAddress.setLat(orderDTO.getUnloadLat());
+        unloadAddress.setLng(orderDTO.getUnloadLng());
         unloadAddress.setCreateTime(date1);
         unloadAddress.setUpdateBy(orderDTO.getUserId());
         unloadAddress.setUpdateTime(date1);

+ 17 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtLogisticsConsignmentService.java

@@ -50,6 +50,7 @@ import com.sckw.stream.enums.MessageEnum;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.common.config.MessageUrlConfig;
 import com.sckw.transport.dao.*;
@@ -2279,15 +2280,26 @@ public class KwtLogisticsConsignmentService {
         //查询物流订单合同信息
         Map<Long, KwtLogisticsOrderContract> logOrderIdAndContractMap = getLongKwtLogisticsOrderContractMap(logOrderIdList);
 
+        //查询字典
+        List<SysDictResDto> sysDictResDtos = remoteSystemService.queryDictByType(DictTypeEnum.PRODUCT_NAME_TYPE.getType());
+        Map<String, SysDictResDto> dictValueAndDictResDtoMap = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(sysDictResDtos)){
+            //字典value映射字典
+            dictValueAndDictResDtoMap = sysDictResDtos.stream()
+                    .collect(Collectors.toMap(SysDictResDto::getValue, Function.identity()));
+
+        }
+
         Map<String, KwtLogisticsOrderUnit> finalLogOrderIdAndUnitTypeKeyAndUnitMap = logOrderIdAndUnitTypeKeyAndUnitMap;
         Map<Long, KwtLogisticsOrderGoods> finalLogIdAndGoodsMap = logIdAndGoodsMap;
         Map<Long, KwpGoods> finalGoodsIdAndGoodsMap = goodsIdAndGoodsMap;
         Map<String, KwtLogisticsOrderAddress> finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap = logisticsOrderIdAndUnitTypeKeyAndAddressMap;
         Map<Long, KwtLogisticsOrderContract> finalLogOrderIdAndContractMap = logOrderIdAndContractMap;
 
+        Map<String, SysDictResDto> finalDictValueAndDictResDtoMap = dictValueAndDictResDtoMap;
         List<LogisticsOrderResp> resps = records.stream()
                 .map(x ->getLogisticsOrderResp(x, finalLogOrderIdAndUnitTypeKeyAndUnitMap, finalLogIdAndGoodsMap
-                        , finalGoodsIdAndGoodsMap, finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap, finalLogOrderIdAndContractMap))
+                        , finalGoodsIdAndGoodsMap, finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap, finalLogOrderIdAndContractMap, finalDictValueAndDictResDtoMap))
                 .collect(Collectors.toList());
         if(org.apache.commons.lang3.StringUtils.isNotBlank(req.getConsignCompanyId())){
             resps = resps.stream()
@@ -2405,7 +2417,8 @@ public class KwtLogisticsConsignmentService {
                                                             Map<Long, KwtLogisticsOrderGoods> finalLogIdAndGoodsMap,
                                                             Map<Long, KwpGoods> finalGoodsIdAndGoodsMap,
                                                             Map<String, KwtLogisticsOrderAddress> finalLogisticsOrderIdAndUnitTypeKeyAndAddressMap,
-                                                            Map<Long, KwtLogisticsOrderContract> finalLogOrderIdAndContractMap) {
+                                                            Map<Long, KwtLogisticsOrderContract> finalLogOrderIdAndContractMap,
+                                                            Map<String, SysDictResDto> dictValueAndDictResDtoMap) {
         LogisticsOrderResp logisticsOrderResp = new LogisticsOrderResp();
         logisticsOrderResp.setLogisticsOrderId(String.valueOf(kwtLogisticsOrder.getId()));
         logisticsOrderResp.setLogisticsOrderNo(kwtLogisticsOrder.getLOrderNo());
@@ -2423,7 +2436,8 @@ public class KwtLogisticsConsignmentService {
         KwpGoods kwpGoods = finalGoodsIdAndGoodsMap.get(goods.getGoodsId());
         if (Objects.nonNull(kwpGoods)){
             logisticsOrderResp.setGoodsId(String.valueOf(goods.getGoodsId()));
-            logisticsOrderResp.setGoodsName(kwpGoods.getName()+"/"+kwpGoods.getGoodsType()+"/"+kwpGoods.getSpec());
+            SysDictResDto dictResDto = dictValueAndDictResDtoMap.getOrDefault(kwpGoods.getGoodsType(), new SysDictResDto());
+            logisticsOrderResp.setGoodsName(kwpGoods.getName()+"/"+dictResDto.getLabel()+"/"+kwpGoods.getSpec());
         }
         logisticsOrderResp.setTransportPrice(Objects.nonNull(kwtLogisticsOrder.getPrice()) ? kwtLogisticsOrder.getPrice().setScale(2,
                 RoundingMode.HALF_UP).toPlainString() : "0.00");

+ 22 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderV1Service.java

@@ -3029,12 +3029,25 @@ public class KwtWaybillOrderV1Service {
                              Function.identity(), (k1,
                                                                                                                                                         k2) -> k1));
         }
+        //查询字典
+        List<SysDictResDto> sysDictResDtos = remoteSystemService.queryDictByType(DictTypeEnum.PRODUCT_NAME_TYPE.getType());
+        Map<String, SysDictResDto> dictValueAndDictResDtoMap = new HashMap<>();
+        if (CollectionUtils.isNotEmpty(sysDictResDtos)){
+            //字典value映射字典
+            dictValueAndDictResDtoMap = sysDictResDtos.stream()
+                    .collect(Collectors.toMap(SysDictResDto::getValue, Function.identity()));
+
+        }
+
         Map<String, KwtWaybillOrderAddress> finalSubOrderIdAddressTypeKeyAndAddressMap = subOrderIdAddressTypeKeyAndAddressMap;
         Map<Long, KwtLogisticsOrderGoods> finalLogOrderIdAndGoodsIdMap = logOrderIdAndGoodsIdMap;
         Map<Long, KwtLogisticsOrder> finalLogIdAndOrderMap = logIdAndOrderMap;
+        Map<String, SysDictResDto> finalDictValueAndDictResDtoMap = dictValueAndDictResDtoMap;
         List<WaybillOrderResp> resps = records.stream()
                 .map(record -> getWaybillOrderResp(record, waybillOrderIdAndBillOrderMap,
-                        logOrderIdUnitTypeKeyAndUnitMap, finalLogOrderIdAndGoodsIdMap, kwpGoodsMap, finalSubOrderIdAddressTypeKeyAndAddressMap, subBillIdAddressIdKeyAndOrderTrackMap, finalLogIdAndOrderMap))
+                        logOrderIdUnitTypeKeyAndUnitMap, finalLogOrderIdAndGoodsIdMap,
+                        kwpGoodsMap, finalSubOrderIdAddressTypeKeyAndAddressMap, subBillIdAddressIdKeyAndOrderTrackMap,
+                        finalLogIdAndOrderMap, finalDictValueAndDictResDtoMap))
                 .collect(Collectors.toList());
 
         return PageDataResult.of(page,resps);
@@ -3206,7 +3219,8 @@ public class KwtWaybillOrderV1Service {
                                                         Map<Long, KwpGoods> kwpGoodsMap,
                                                         Map<String, KwtWaybillOrderAddress> finalSubOrderIdAddressTypeKeyAndAddressMap,
                                                         Map<String, KwtWaybillOrderTicket> finalSubBillIdAddressIdKeyAndOrderTrackMap,
-                                                        Map<Long, KwtLogisticsOrder> finalLogIdAndOrderMap) {
+                                                        Map<Long, KwtLogisticsOrder> finalLogIdAndOrderMap,
+                                                        Map<String, SysDictResDto> dictValueAndDictResDtoMap) {
         WaybillOrderResp waybillOrderResp = new WaybillOrderResp();
         KwtWaybillOrder billOrder = finalWaybillOrderIdAndBillOrderMap.getOrDefault(record.getWOrderId(),
                 new KwtWaybillOrder());
@@ -3233,7 +3247,8 @@ public class KwtWaybillOrderV1Service {
                 new KwtLogisticsOrderGoods());
         KwpGoods kwpGoods = kwpGoodsMap.get(goods.getGoodsId());
         if (Objects.nonNull(kwpGoods)){
-            waybillOrderResp.setGoodsName(kwpGoods.getName()+"/"+kwpGoods.getGoodsType()+"/"+kwpGoods.getSpec());
+            SysDictResDto sysDictResDto = dictValueAndDictResDtoMap.getOrDefault(kwpGoods.getGoodsType(), new SysDictResDto());
+            waybillOrderResp.setGoodsName(kwpGoods.getName()+"/"+sysDictResDto.getLabel()+"/"+kwpGoods.getSpec());
         }
         waybillOrderResp.setTaskNum(Objects.nonNull(billOrder.getEntrustAmount()) ?
                 billOrder.getEntrustAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "0.00");
@@ -3408,6 +3423,10 @@ public class KwtWaybillOrderV1Service {
                 Optional.ofNullable(unLoadAdd.getLat()).map(Double::valueOf).orElse(null),
                 Optional.ofNullable(unLoadAdd.getLng()).map(Double::valueOf).orElse(null));
         waybillOrderDetailResp.setDistanceKm(distanceKm);
+        waybillOrderDetailResp.setLoadLatitude(loadAdd.getLat());
+        waybillOrderDetailResp.setLoadLongitude(loadAdd.getLng());
+        waybillOrderDetailResp.setUnloadLatitude(unLoadAdd.getLat());
+        waybillOrderDetailResp.setUnloadLongitude(unLoadAdd.getLng());
 
         waybillOrderDetailResp.setTaskVolume(Objects.nonNull(subtask.getEntrustAmount()) ?
                 subtask.getEntrustAmount().setScale(2, RoundingMode.HALF_UP).toPlainString() : "");