Преглед на файлове

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

18482106067 преди 2 години
родител
ревизия
ec6b771c09
променени са 14 файла, в които са добавени 226 реда и са изтрити 45 реда
  1. 15 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/DateUtils.java
  2. 31 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/OrderGenerateUtils.java
  3. 8 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportDubboService.java
  4. 1 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java
  5. 5 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderDetailRes.java
  6. 41 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderProcess.java
  7. 34 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  8. 15 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderTrackService.java
  9. 5 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/GoodsPriceRanges.java
  10. 2 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java
  11. 28 30
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwAcceptCarriageService.java
  12. 0 7
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwConsignService.java
  13. 9 7
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  14. 32 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/dubbo/TransportDubboServiceImpl.java

+ 15 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/DateUtils.java

@@ -103,6 +103,21 @@ public class DateUtils extends DateUtil {
         return null;
     }
 
+
+    /**
+     * 日期格式化 日期格式为:yyyy-MM-dd
+     *
+     * @param date    日期
+     * @return 返回yyMMdd格式日期
+     */
+    public static String formatDate(Date date) {
+        if (date != null) {
+            SimpleDateFormat df = new SimpleDateFormat(FORMAT8);
+            return df.format(date);
+        }
+        return null;
+    }
+
     /**
      * @param date
      * @return String    返回类型

+ 31 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/OrderGenerateUtils.java

@@ -26,6 +26,12 @@ public class OrderGenerateUtils {
     private static final String ORDER_NO_GENERATOR = "order_no_generator:";
 
 
+    /**
+     * redisson生成订单号 name(物流订单)
+     */
+    private static final String LOGISTICS_ORDER_NO_GENERATOR = "logistics_order_no_generator:";
+
+
     /**
      * @desc: 生成订单号
      * @author: yzc
@@ -48,4 +54,29 @@ public class OrderGenerateUtils {
         return SDF.format(new Date());
     }
 
+    /**
+     * 字符串格式化长度不足补0
+     */
+    public static String addZeroForNum(String str, int strLength) {
+        int strLen = str.length();
+        if (strLen < strLength) {
+            StringBuffer sb = new StringBuffer(str);
+            while (strLen < strLength) {
+                // 左补0
+                sb.insert(0, "0");
+                strLen = sb.length();
+            }
+            str = sb.toString();
+        }
+        return str;
+    }
+
+    public static void main(String[] args) {
+        getLogisticsLOrderNo("T","1","1","1");
+    }
+    public static void getLogisticsLOrderNo(String t, String number, String number1, String number2) {
+        StringBuilder str=new StringBuilder();
+        String date = DateUtils.formatDate(new Date());
+        str.append(t).append(date).append(number).append(number1).append(number2);
+    }
 }

+ 8 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportDubboService.java

@@ -82,4 +82,12 @@ public interface TransportDubboService {
      * @return
      */
     HttpResult logisticsOrderAccountCheckingBind(AccountCheckingBindDTO accountCheckingBindDTO);
+
+    /**
+     * 根据企业id 判断是否存在未完成完结的物流订单
+     *
+     * @param entId 企业id
+     * @return  ture 代表还有未完结的  false代表没有未完结的
+     */
+    boolean checkLogisticsOrderFinishByEntId(Long entId);
 }

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

@@ -93,7 +93,7 @@ public class KwoTradeOrderController {
     @GetMapping("/detail")
     @Log(description = "贸易订单详情")
     public HttpResult detail(@RequestParam Long id) {
-        return HttpResult.ok("贸易订单详情查询成功",kwoTradeOrderService.detail(id));
+        return HttpResult.ok("贸易订单详情查询成功",kwoTradeOrderService.getDetail(id));
     }
 
     /**

+ 5 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderDetailRes.java

@@ -171,4 +171,9 @@ public class OrderDetailRes implements Serializable {
      */
     private ContractInfo contractInfo;
 
+    /**
+     * 订单进程
+     */
+    private List<OrderProcess> orderProcess;
+
 }

+ 41 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderProcess.java

@@ -0,0 +1,41 @@
+package com.sckw.order.model.vo.res;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @desc: 订单进程响应
+ * @author: yzc
+ * @date: 2023-08-18 10:58
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class OrderProcess implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -6898399955577194444L;
+
+    private Integer status;
+
+    private String statusLabel;
+
+    private String remark;
+
+    private Long createBy;
+
+    private String createByName;
+
+    private String roleName;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+}

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

@@ -39,6 +39,7 @@ import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.AreaTreeFrontResDto;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.KwsRoleResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.api.dubbo.TransportDubboService;
 import lombok.RequiredArgsConstructor;
@@ -388,6 +389,39 @@ public class KwoTradeOrderService {
         addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
     }
 
+    /**
+     * @desc: 获取订单详情
+     * @author: yzc
+     * @date: 2023-08-18 11:18
+     * @Param id:
+     * @return: com.sckw.order.model.vo.res.OrderDetailRes
+     */
+    public OrderDetailRes getDetail(Long id) {
+        OrderDetailRes detail = this.detail(id);
+        List<KwoTradeOrderTrack> tracks = kwoTradeOrderTrackService.getByOrderId(id);
+        if (CollectionUtils.isEmpty(tracks)) {
+            return detail;
+        }
+        List<OrderProcess> orderProcesses = new ArrayList<>(tracks.size());
+        List<Long> createBys = tracks.stream().map(KwoTradeOrderTrack::getCreateBy).distinct().toList();
+        Map<Long, UserCacheResDto> map = remoteSystemService.queryUserCacheMapByIds(createBys);
+        tracks.forEach(e -> {
+            OrderProcess process = BeanUtils.copyProperties(e, OrderProcess.class);
+            UserCacheResDto user = map.get(process.getCreateBy());
+            if (Objects.nonNull(user)) {
+                process.setCreateByName(user.getName());
+                if (CollectionUtils.isNotEmpty(user.getRoleInfo())) {
+                    List<String> roleNames = user.getRoleInfo().stream().map(KwsRoleResDto::getName).distinct().toList();
+                    process.setRoleName(String.join(",", roleNames));
+                }
+            }
+            process.setStatusLabel(DictEnum.getLabel(DictTypeEnum.TORDER_STATUS.getType(), String.valueOf(process.getStatus())));
+            orderProcesses.add(process);
+        });
+        detail.setOrderProcess(orderProcesses);
+        return detail;
+    }
+
     /**
      * @desc: 订单详情
      * @author: yzc

+ 15 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderTrackService.java

@@ -2,6 +2,7 @@ package com.sckw.order.serivce;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.sckw.core.model.constant.Global;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.order.dao.KwoTradeOrderTrackMapper;
 import com.sckw.order.model.KwoTradeOrderTrack;
 import lombok.RequiredArgsConstructor;
@@ -33,6 +34,20 @@ public class KwoTradeOrderTrackService {
         kwoTradeOrderTrackMapper.insert(track);
     }
 
+    /**
+     * @desc: 根据订单id获取
+     * @author: yzc
+     * @date: 2023-08-18 11:02
+     * @Param orderId:
+     * @return: java.util.List<com.sckw.order.model.KwoTradeOrderTrack>
+     */
+    public List<KwoTradeOrderTrack> getByOrderId(Long orderId) {
+        LambdaQueryWrapper<KwoTradeOrderTrack> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwoTradeOrderTrack::getTOrderId,orderId).eq(KwoTradeOrderTrack::getDelFlag, Global.NO).last("LIMIT 1");
+        List<KwoTradeOrderTrack> list = kwoTradeOrderTrackMapper.selectList(wrapper);
+        return CollectionUtils.emptyIfNull(list);
+    }
+
     /**
      * @desc: 根据订单id获取
      * @author: yzc

+ 5 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/GoodsPriceRanges.java

@@ -31,6 +31,11 @@ public class GoodsPriceRanges {
     @DecimalMin(value = "-1.00",message = "上限售量最小为零")
     private BigDecimal endAmount;
 
+    /**
+     * endAmount为-1时,设置为不限
+     */
+    private String endAmountLabel;
+
     /**
      * 含税价
      */

+ 2 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -242,6 +242,8 @@ public class KwpGoodsService {
         //商品价格段信息
         List<KwpGoodsPriceRange> priceRanges = kwpGoodsPriceRangeService.getByGoodsId(id);
         List<GoodsPriceRangesDetail> ranges = BeanUtils.copyToList(priceRanges, GoodsPriceRangesDetail.class);
+        ranges.stream().filter(r -> r.getEndAmount().compareTo(new BigDecimal("-1.00")) == 0)
+                .forEach(r -> {r.setEndAmountLabel("不限");});
         //商品属性信息
         List<KwpGoodsAttribute> attributesList = kwpGoodsAttributeService.getByGoodsId(id);
         List<GoodsAttributesDetail> attributes = BeanUtils.copyToList(attributesList, GoodsAttributesDetail.class);

+ 28 - 30
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwAcceptCarriageService.java

@@ -17,7 +17,6 @@ import com.sckw.report.service.param.AcceptCarriageOrderQuery;
 import com.sckw.report.service.vo.AcceptCarriageOrderExcelVo;
 import com.sckw.report.service.vo.AcceptCarriageOrderVo;
 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 lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -69,11 +68,6 @@ public class KwAcceptCarriageService {
         Criteria criteria = new Criteria();
         // 1. 全等于
         //判断承运还是托运企业
-//        if (unitType.equals(NumberConstant.ONE)) {
-//            criteria.and("checkEntId").is(LoginUserHolder.getEntId());
-//        } else {
-//            criteria.and("carrierEntId").is(LoginUserHolder.getEntId());
-//        }
         List<Long> entIds = new ArrayList<>();
         entIds.add(LoginUserHolder.getEntId());
         Long entId = LoginUserHolder.getEntId();
@@ -81,17 +75,17 @@ public class KwAcceptCarriageService {
         if (unitType.equals(String.valueOf(NumberConstant.ONE))) {
             //托运
 //            criteria.and("checkTopEntId").is(entMap.get(LoginUserHolder.getEntId()).getId());
-            criteria.and("checkTopEntId").is(entId);
-//            criteria.orOperator(
-//                    Criteria.where("checkTopEntId").is(entId),
-//                    Criteria.where("checkEntId").is(entId));
+//            criteria.and("checkTopEntId").is(entId);
+            criteria.orOperator(
+                    Criteria.where("checkTopEntId").is(entId),
+                    Criteria.where("checkEntId").is(entId));
         } else {
             //承运企业主键ID
 //            criteria.and("carrierTopEntId").is(entMap.get(LoginUserHolder.getEntId()).getId());
-            criteria.and("carrierTopEntId").is(entId);
-//            criteria.orOperator(
-//                    Criteria.where("carrierTopEntId").is(entId),
-//                    Criteria.where("carrierEntId").is(entId));
+//            criteria.and("carrierTopEntId").is(entId);
+            criteria.orOperator(
+                    Criteria.where("carrierTopEntId").is(entId),
+                    Criteria.where("carrierEntId").is(entId));
         }
         //装卸货地址
         String loadCode = query.getLoadAddressCode();
@@ -199,22 +193,24 @@ public class KwAcceptCarriageService {
         Criteria criteria = new Criteria();
         // 1. 全等于
         //判断承运还是托运企业
-//        if (unitType.equals(NumberConstant.ONE)) {
-//            criteria.and("checkEntId").is(LoginUserHolder.getEntId());
-//        } else {
-//            criteria.and("carrierEntId").is(LoginUserHolder.getEntId());
-//        }
         List<Long> entIds = new ArrayList<>();
         entIds.add(LoginUserHolder.getEntId());
-        Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
+        Long entId = LoginUserHolder.getEntId();
+//        Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
         if (unitType.equals(String.valueOf(NumberConstant.ONE))) {
             //托运
 //            criteria.and("checkTopEntId").is(entMap.get(LoginUserHolder.getEntId()).getId());
-            criteria.and("checkTopEntId").is(LoginUserHolder.getEntId());
+//            criteria.and("checkTopEntId").is(LoginUserHolder.getEntId());
+            criteria.orOperator(
+                    Criteria.where("checkTopEntId").is(entId),
+                    Criteria.where("checkEntId").is(entId));
         } else {
             //承运企业主键ID
 //            criteria.and("carrierTopEntId").is(entMap.get(LoginUserHolder.getEntId()).getId());
-            criteria.and("carrierTopEntId").is(LoginUserHolder.getEntId());
+//            criteria.and("carrierTopEntId").is(LoginUserHolder.getEntId());
+            criteria.orOperator(
+                    Criteria.where("carrierTopEntId").is(entId),
+                    Criteria.where("carrierEntId").is(entId));
         }
         //装卸货地址
         String loadCode = param.getLoadAddressCode();
@@ -487,20 +483,22 @@ public class KwAcceptCarriageService {
         // 1. 全等于
         Query query1 = new Query();
         //判断承运还是托运企业
-//        if (unitType.equals(NumberConstant.ONE)) {
-//            criteria.and("checkEntId").is(LoginUserHolder.getEntId());
-//        } else {
-//            criteria.and("carrierEntId").is(LoginUserHolder.getEntId());
-//        }
         List<Long> entIds = new ArrayList<>();
         entIds.add(LoginUserHolder.getEntId());
-        Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
+        Long entId = LoginUserHolder.getEntId();
+//        Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
         if (unitType.equals(String.valueOf(NumberConstant.ONE))) {
             //托运
-            criteria.and("checkTopEntId").is(entMap.get(LoginUserHolder.getEntId()).getId());
+//            criteria.and("checkTopEntId").is(entMap.get(LoginUserHolder.getEntId()).getId());
+            criteria.orOperator(
+                    Criteria.where("checkTopEntId").is(entId),
+                    Criteria.where("checkEntId").is(entId));
         } else {
             //承运企业主键ID
-            criteria.and("carrierTopEntId").is(entMap.get(LoginUserHolder.getEntId()).getId());
+//            criteria.and("carrierTopEntId").is(entMap.get(LoginUserHolder.getEntId()).getId());
+            criteria.orOperator(
+                    Criteria.where("carrierTopEntId").is(entId),
+                    Criteria.where("carrierEntId").is(entId));
         }
         criteria.and("delFlag").is(String.valueOf(NumberConstant.ZERO));
         List<String> stringList = StringUtils.splitStrToList(query.getIds(), StringConstant.COMMA, String.class);

+ 0 - 7
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwConsignService.java

@@ -70,18 +70,11 @@ public class KwConsignService {
         Criteria criteria = new Criteria();
         // 1. 全等于
         //判断承运还是托运企业
-//        if (unitType.equals(NumberConstant.ONE)) {
-//            criteria.and("checkEntId").is(LoginUserHolder.getEntId());
-//        } else {
-//            criteria.and("carrierEntId").is(LoginUserHolder.getEntId());
-//        }
         List<Long> entIds = new ArrayList<>();
         entIds.add(LoginUserHolder.getEntId());
         Long entId = LoginUserHolder.getEntId();
-//        Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
         if (unitType.equals(String.valueOf(NumberConstant.ONE))) {
             //托运
-//            criteria.and("checkTopEntId").is(entMap.get(LoginUserHolder.getEntId()).getId());
             criteria.orOperator(
                     Criteria.where("checkTopEntId").is(entId),
                     Criteria.where("checkEntId").is(entId));

+ 9 - 7
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -15,10 +15,7 @@ import com.sckw.core.model.enums.CarWaybillEnum;
 import com.sckw.core.model.enums.CooperateTypeEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
 import com.sckw.core.model.page.PageResult;
-import com.sckw.core.utils.CollectionUtils;
-import com.sckw.core.utils.IdWorker;
-import com.sckw.core.utils.RegularUtils;
-import com.sckw.core.utils.StringUtils;
+import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
@@ -57,6 +54,8 @@ import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static com.sckw.transport.utils.StringUtils.getLOrderNo;
+
 /**
  * @author lfdc
  * @description 承运订单service
@@ -167,7 +166,7 @@ public class AcceptCarriageOrderService {
             order.setSubcontractAmount(new BigDecimal(NumberConstant.ZERO));
             order.setUnit(bo.getCarryingCapacityUnit());
         }
-        String lOrderNo = com.sckw.transport.utils.StringUtils.getLOrderNo();
+        String lOrderNo = getLOrderNo();
         Long orderId = new IdWorker(NumberConstant.ONE).nextId();
         /**分包托运需要判断处于哪一级分包托运
          * 需要记录当前分包数据-分包上游数据
@@ -602,8 +601,10 @@ public class AcceptCarriageOrderService {
         KwtLogisticsOrder logisticsOrder = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
                 .eq(StringUtils.isNotBlank(orderDTO.getLOrderId()), KwtLogisticsOrder::getId, orderDTO.getLOrderId())
                 .eq(StringUtils.isNotBlank(orderDTO.getLOrderNo()), KwtLogisticsOrder::getLOrderNo, orderDTO.getLOrderNo())
-                .eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId()));
+                /*.eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId())*/
+        );
         if (logisticsOrder == null) {
+            result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
             result.setMsg("单据不存在!");
             return result;
         }
@@ -1508,7 +1509,8 @@ public class AcceptCarriageOrderService {
         /**保存新建数据*/
         Long lOrderId = new IdWorker(NumberConstant.ONE).nextId();
         /**生成订单编号*/
-        String lOrderNo = com.sckw.transport.utils.StringUtils.getLOrderNo();
+        String lOrderNo = getLOrderNo();
+//        getLogisticsLOrderNo("T","0","0","1");
         /**根据合同计算当前单据状态*/
         /**判断生成物流订单应生成哪一种单据状态*/
         List<Long> contractList = new ArrayList<>();

+ 32 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/dubbo/TransportDubboServiceImpl.java

@@ -328,4 +328,36 @@ public class TransportDubboServiceImpl implements TransportDubboService {
         });
         return HttpResult.ok();
     }
+
+    /**
+     * 根据企业id查询是否存在有未完结的物流订单
+     *
+     * @param entId 企业id
+     * @return ture 代表还有未完结的  false代表没有未完结的
+     */
+    @Override
+    public boolean checkLogisticsOrderFinishByEntId(Long entId) {
+        List<KwtLogisticsOrderUnit> logisticsOrderUnits = logisticsOrderUnitMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrderUnit>()
+                .eq(KwtLogisticsOrderUnit::getEntId, entId)
+        );
+        if (CollectionUtils.isEmpty(logisticsOrderUnits)) {
+            return false;
+        }
+        List<Integer> orderStatus = new ArrayList<>();
+        orderStatus.add(LogisticsOrderEnum.TO_BE_PLANNED.getCode());
+        orderStatus.add(LogisticsOrderEnum.PENDING_ORDER.getCode());
+        orderStatus.add(LogisticsOrderEnum.WAIT_DELIVERY.getCode());
+        orderStatus.add(LogisticsOrderEnum.IN_TRANSIT.getCode());
+        orderStatus.add(LogisticsOrderEnum.HAVE_FINISHED.getCode());
+        orderStatus.add(LogisticsOrderEnum.HAVE_RECONCILED.getCode());
+        List<Long> collect = logisticsOrderUnits.stream().map(KwtLogisticsOrderUnit::getLOrderId).distinct().collect(Collectors.toList());
+        Long count = logisticsOrderMapper.selectCount(new LambdaQueryWrapper<KwtLogisticsOrder>()
+                .in(KwtLogisticsOrder::getId, collect)
+                .in(KwtLogisticsOrder::getStatus, orderStatus)
+        );
+        if (count > 0) {
+            return true;
+        }
+        return false;
+    }
 }