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

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

czh 2 лет назад
Родитель
Сommit
8315c13f3b
27 измененных файлов с 1020 добавлено и 305 удалено
  1. 145 127
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/StringUtils.java
  2. 7 4
      sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTransportDemandController.java
  3. 1 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/AddTransportDemandParam.java
  4. 3 8
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/BatchDeleteParam.java
  5. 21 3
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/ExportTransportDemandParam.java
  6. 31 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/TransportDemandSquaresParam.java
  7. 6 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/TransportDemandDetailRes.java
  8. 124 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/TransportDemandListRes.java
  9. 99 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/TransportDemandSquaresListRes.java
  10. 1 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  11. 288 11
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTransportDemandService.java
  12. 7 4
      sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java
  13. 1 3
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/ExportGoodsListParam.java
  14. 1 2
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/SelectGoodsListParam.java
  15. 5 3
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java
  16. 3 2
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java
  17. 2 4
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListExportParam.java
  18. 42 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java
  19. 7 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/WaybillManagementController.java
  20. 4 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/DocumentParamDTO.java
  21. 3 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/OrderFinishDTO.java
  22. 4 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/StopOrderTakingDTO.java
  23. 3 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/LogisticsOrderParam.java
  24. 6 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/CarWaybillVO.java
  25. 119 17
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  26. 85 47
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  27. 2 42
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java

+ 145 - 127
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/StringUtils.java

@@ -1,11 +1,12 @@
 package com.sckw.core.utils;
 
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
+import com.sckw.core.exception.BusinessException;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * @Description 自测公共处理类
@@ -14,26 +15,37 @@ import java.util.regex.Pattern;
  */
 public class StringUtils {
 
-    /** 空字符串 */
+    /**
+     * 空字符串
+     */
     private static final String NULLSTR = "";
-    /** 下划线 */
+    /**
+     * 下划线
+     */
     private static final char SEPARATOR_CHAR = '_';
-    /** 下划线 */
+    /**
+     * 下划线
+     */
     private static final String SEPARATOR_STRING = "_";
-    /** 加密字符 */
+    /**
+     * 加密字符
+     */
     public static final String HASH_ALGORITHM = "SHA-1";
-    /**${xxx}**/
+    /**
+     * ${xxx}
+     **/
     public static final Pattern pattern = Pattern.compile("(\\$\\{)([\\w]+)(\\})");
 
     /**
      * 判断字符串是否为空
+     *
      * @param str 源字符串
+     * @return
      * @author dengyinghui
      * @date 2018/11/12
-     * @return
      */
-    public static boolean validatorEmpty(String str){
-        if(str != null && !"".equals(str)){
+    public static boolean validatorEmpty(String str) {
+        if (str != null && !"".equals(str)) {
             return false;
         }
 
@@ -42,6 +54,7 @@ public class StringUtils {
 
     /**
      * 判空操作(空)
+     *
      * @param str
      * @return
      */
@@ -52,6 +65,7 @@ public class StringUtils {
 
     /**
      * 判空操作(空)
+     *
      * @param value
      * @return
      */
@@ -61,6 +75,7 @@ public class StringUtils {
 
     /**
      * 判空操作(非空)
+     *
      * @param str
      * @return
      */
@@ -71,6 +86,7 @@ public class StringUtils {
 
     /**
      * 判空操作(非空)
+     *
      * @param value
      * @return
      */
@@ -80,6 +96,7 @@ public class StringUtils {
 
     /**
      * 获取uuid
+     *
      * @return
      */
     public static String uuid() {
@@ -92,8 +109,7 @@ public class StringUtils {
      * @param value defaultValue 要判断的value
      * @return value 返回值
      */
-    public static <T> T nvl(T value, T defaultValue)
-    {
+    public static <T> T nvl(T value, T defaultValue) {
         return value != null ? value : defaultValue;
     }
 
@@ -103,8 +119,7 @@ public class StringUtils {
      * @param coll 要判断的Collection
      * @return true:为空 false:非空
      */
-    public static boolean isEmpty(Collection<?> coll)
-    {
+    public static boolean isEmpty(Collection<?> coll) {
         return isNull(coll) || coll.isEmpty();
     }
 
@@ -114,8 +129,7 @@ public class StringUtils {
      * @param coll 要判断的Collection
      * @return true:非空 false:空
      */
-    public static boolean isNotEmpty(Collection<?> coll)
-    {
+    public static boolean isNotEmpty(Collection<?> coll) {
         return !isEmpty(coll);
     }
 
@@ -123,10 +137,9 @@ public class StringUtils {
      * * 判断一个对象数组是否为空
      *
      * @param objects 要判断的对象数组
-     ** @return true:为空 false:非空
+     *                * @return true:为空 false:非空
      */
-    public static boolean isEmpty(Object[] objects)
-    {
+    public static boolean isEmpty(Object[] objects) {
         return isNull(objects) || (objects.length == 0);
     }
 
@@ -136,8 +149,7 @@ public class StringUtils {
      * @param objects 要判断的对象数组
      * @return true:非空 false:空
      */
-    public static boolean isNotEmpty(Object[] objects)
-    {
+    public static boolean isNotEmpty(Object[] objects) {
         return !isEmpty(objects);
     }
 
@@ -147,8 +159,7 @@ public class StringUtils {
      * @param map 要判断的Map
      * @return true:为空 false:非空
      */
-    public static boolean isEmpty(Map<?, ?> map)
-    {
+    public static boolean isEmpty(Map<?, ?> map) {
         return isNull(map) || map.isEmpty();
     }
 
@@ -158,8 +169,7 @@ public class StringUtils {
      * @param map 要判断的Map
      * @return true:非空 false:空
      */
-    public static boolean isNotEmpty(Map<?, ?> map)
-    {
+    public static boolean isNotEmpty(Map<?, ?> map) {
         return !isEmpty(map);
     }
 
@@ -169,8 +179,7 @@ public class StringUtils {
      * @param str String
      * @return true:为空 false:非空
      */
-    public static boolean isEmpty(String str)
-    {
+    public static boolean isEmpty(String str) {
         return isNull(str) || NULLSTR.equals(str.trim());
     }
 
@@ -180,8 +189,7 @@ public class StringUtils {
      * @param str String
      * @return true:非空串 false:空串
      */
-    public static boolean isNotEmpty(String str)
-    {
+    public static boolean isNotEmpty(String str) {
         return !isEmpty(str);
     }
 
@@ -191,8 +199,7 @@ public class StringUtils {
      * @param object Object
      * @return true:为空 false:非空
      */
-    public static boolean isNull(Object object)
-    {
+    public static boolean isNull(Object object) {
         return object == null;
     }
 
@@ -202,8 +209,7 @@ public class StringUtils {
      * @param object Object
      * @return true:非空 false:空
      */
-    public static boolean isNotNull(Object object)
-    {
+    public static boolean isNotNull(Object object) {
         return !isNull(object);
     }
 
@@ -213,44 +219,37 @@ public class StringUtils {
      * @param object 对象
      * @return true:是数组 false:不是数组
      */
-    public static boolean isArray(Object object)
-    {
+    public static boolean isArray(Object object) {
         return isNotNull(object) && object.getClass().isArray();
     }
 
     /**
      * 去空格
      */
-    public static String trim(String str)
-    {
+    public static String trim(String str) {
         return (str == null ? "" : str.trim());
     }
 
     /**
      * 截取字符串
      *
-     * @param str 字符串
+     * @param str   字符串
      * @param start 开始
      * @return 结果
      */
-    public static String substring(final String str, int start)
-    {
-        if (str == null)
-        {
+    public static String substring(final String str, int start) {
+        if (str == null) {
             return NULLSTR;
         }
 
-        if (start < 0)
-        {
+        if (start < 0) {
             start = str.length() + start;
         }
 
-        if (start < 0)
-        {
+        if (start < 0) {
             start = 0;
         }
-        if (start > str.length())
-        {
+        if (start > str.length()) {
             return NULLSTR;
         }
 
@@ -260,43 +259,35 @@ public class StringUtils {
     /**
      * 截取字符串
      *
-     * @param str 字符串
+     * @param str   字符串
      * @param start 开始
-     * @param end 结束
+     * @param end   结束
      * @return 结果
      */
-    public static String substring(final String str, int start, int end)
-    {
-        if (str == null)
-        {
+    public static String substring(final String str, int start, int end) {
+        if (str == null) {
             return NULLSTR;
         }
 
-        if (end < 0)
-        {
+        if (end < 0) {
             end = str.length() + end;
         }
-        if (start < 0)
-        {
+        if (start < 0) {
             start = str.length() + start;
         }
 
-        if (end > str.length())
-        {
+        if (end > str.length()) {
             end = str.length();
         }
 
-        if (start > end)
-        {
+        if (start > end) {
             return NULLSTR;
         }
 
-        if (start < 0)
-        {
+        if (start < 0) {
             start = 0;
         }
-        if (end < 0)
-        {
+        if (end < 0) {
             end = 0;
         }
 
@@ -318,45 +309,37 @@ public class StringUtils {
 
     public static String format(String template, Object... params)
     {
-        if (isEmpty(params) || isEmpty(template))
-        {
-            return template;
-        }
-        return StrFormatter.format(template, params);
+    if (isEmpty(params) || isEmpty(template))
+    {
+    return template;
+    }
+    return StrFormatter.format(template, params);
     }*/
 
     /**
      * 下划线转驼峰命名
      */
-    public static String toUnderScoreCase(String s)
-    {
-        if (s == null)
-        {
+    public static String toUnderScoreCase(String s) {
+        if (s == null) {
             return null;
         }
         StringBuilder sb = new StringBuilder();
         boolean upperCase = false;
-        for (int i = 0; i < s.length(); i++)
-        {
+        for (int i = 0; i < s.length(); i++) {
             char c = s.charAt(i);
 
             boolean nextUpperCase = true;
 
-            if (i < (s.length() - 1))
-            {
+            if (i < (s.length() - 1)) {
                 nextUpperCase = Character.isUpperCase(s.charAt(i + 1));
             }
 
-            if ((i > 0) && Character.isUpperCase(c))
-            {
-                if (!upperCase || !nextUpperCase)
-                {
+            if ((i > 0) && Character.isUpperCase(c)) {
+                if (!upperCase || !nextUpperCase) {
                     sb.append(SEPARATOR_CHAR);
                 }
                 upperCase = true;
-            }
-            else
-            {
+            } else {
                 upperCase = false;
             }
 
@@ -369,18 +352,14 @@ public class StringUtils {
     /**
      * 是否包含字符串
      *
-     * @param str 验证字符串
+     * @param str  验证字符串
      * @param strs 字符串组
      * @return 包含返回true
      */
-    public static boolean inStringIgnoreCase(String str, String... strs)
-    {
-        if (str != null && strs != null)
-        {
-            for (String s : strs)
-            {
-                if (str.equalsIgnoreCase(trim(s)))
-                {
+    public static boolean inStringIgnoreCase(String str, String... strs) {
+        if (str != null && strs != null) {
+            for (String s : strs) {
+                if (str.equalsIgnoreCase(trim(s))) {
                     return true;
                 }
             }
@@ -390,21 +369,55 @@ public class StringUtils {
 
     /**
      * 字符串转数组
+     *
      * @param params 字符串
-     * @param regex 截取字符
+     * @param regex  截取字符
      * @return
      */
-    public static String [] splitStr(String params, String regex){
+    public static String[] splitStr(String params, String regex) {
         regex = StringUtils.isNotBlank(regex) ? regex : ",";
         return StringUtils.isNotBlank(params) ? params.split(regex) : new String[]{};
     }
 
+    /**
+     * 字符串分割转list
+     *
+     * @param str   字符串
+     * @param regex 截取字符
+     * @param cls 转换类型class
+     * @return
+     */
+    public static <T> List<T> splitStrToList(String str, String regex, Class<T> cls) {
+        regex = StringUtils.isNotBlank(regex) ? regex : ",";
+        if (StringUtils.isBlank(str)) {
+            return Collections.emptyList();
+        }
+        List<T> result;
+        if (cls == String.class) {
+            result = Arrays.stream(str.split(regex))
+                    .map(strValue -> (T) strValue)
+                    .collect(Collectors.toList());
+        } else {
+            result = Arrays.stream(str.split(regex))
+                    .map(strValue -> {
+                        try {
+                            return cls.getConstructor(String.class).newInstance(strValue);
+                        } catch (InstantiationException | IllegalAccessException | InvocationTargetException |
+                                 NoSuchMethodException e) {
+                            throw new BusinessException("字符串转集合异常!");
+                        }
+                    }).collect(Collectors.toList());
+        }
+        return result;
+    }
+
     /**
      * Object对象转字符串
+     *
      * @param obj
      * @return
      */
-    public static String objectStr(Object obj){
+    public static String objectStr(Object obj) {
         if (obj != null) {
             return obj.toString();
         }
@@ -415,12 +428,13 @@ public class StringUtils {
         if (str == null) {
             return "";
         } else {
-            return str instanceof String ? ((String)str).trim() : str.toString();
+            return str instanceof String ? ((String) str).trim() : str.toString();
         }
     }
 
     /**
      * 解析出url请求的路径,包括页面
+     *
      * @param strURL url地址
      * @return url路径
      */
@@ -555,8 +569,8 @@ public class StringUtils {
     /**
      * 转换为Double类型
      */
-    public static Double toDouble(Object val){
-        if (val == null){
+    public static Double toDouble(Object val) {
+        if (val == null) {
             return 0D;
         }
         try {
@@ -573,31 +587,32 @@ public class StringUtils {
         return toDouble(val).floatValue();
     }
 
-        /**
-         * 转换为Long类型
-         */
-    public static Long toLong(Object val){
+    /**
+     * 转换为Long类型
+     */
+    public static Long toLong(Object val) {
         return toDouble(val).longValue();
     }
 
     /**
      * 转换为Integer类型
      */
-    public static Integer toInteger(Object val){
+    public static Integer toInteger(Object val) {
         return toLong(val).intValue();
     }
 
     /**
      * Object转String
+     *
      * @param val 源字符串
+     * @return
      * @author dengyinghui
      * @date 2018/2/27
-     * @return
      */
-    public static String valueOf(Object val){
-        if(val == null){
+    public static String valueOf(Object val) {
+        if (val == null) {
             return "";
-        } else{
+        } else {
             return String.valueOf(val);
         }
     }
@@ -605,7 +620,7 @@ public class StringUtils {
     private static String toHex(byte[] bytes) {
         final char[] hexDigits = "0123456789ABCDEF".toCharArray();
         StringBuilder ret = new StringBuilder(bytes.length * 2);
-        for (int i=0; i<bytes.length; i++) {
+        for (int i = 0; i < bytes.length; i++) {
             ret.append(hexDigits[(bytes[i] >> 4) & 0x0f]);
             ret.append(hexDigits[bytes[i] & 0x0f]);
         }
@@ -614,20 +629,21 @@ public class StringUtils {
 
     /**
      * 替换字符串${xxxx}
-     * @param content 账号创建成功,欢迎使用危品汇!登录账号:${account},默认密码:${pwd}!
-     * @param regex 需要替换的字符(account)
+     *
+     * @param content     账号创建成功,欢迎使用危品汇!登录账号:${account},默认密码:${pwd}!
+     * @param regex       需要替换的字符(account)
      * @param replacement 替换值(173xxxxxxxx)
      * @return
      */
-    public static String replace(String content, String regex, String replacement){
-        if (content == null || regex == null || replacement == null){
+    public static String replace(String content, String regex, String replacement) {
+        if (content == null || regex == null || replacement == null) {
             return null;
         }
         Matcher matcher = pattern.matcher(content);
         StringBuffer strBuf = new StringBuffer();
         while (matcher.find()) {
             String group = matcher.group().replace("${", "").replace("}", "");
-            if (group.equals(regex)){
+            if (group.equals(regex)) {
                 matcher.appendReplacement(strBuf, replacement);
                 return matcher.appendTail(strBuf).toString();
             }
@@ -637,20 +653,21 @@ public class StringUtils {
 
     /**
      * 替换字符串${xxxx}
-     * @param content  账号创建成功,欢迎使用危品汇!登录账号:${account},默认密码:${pwd}!
-     * @param params {"account":"xxxxx", "pwd":"xxxx"}
+     *
+     * @param content 账号创建成功,欢迎使用危品汇!登录账号:${account},默认密码:${pwd}!
+     * @param params  {"account":"xxxxx", "pwd":"xxxx"}
      * @return
      */
-    public static String replace1(String content, Map<String, Object> params){
-        if (content == null || params == null){
+    public static String replace1(String content, Map<String, Object> params) {
+        if (content == null || params == null) {
             return null;
         }
 
         Matcher matcher = pattern.matcher(content);
         StringBuffer strBuf = new StringBuffer();
-        while(matcher.find()){
+        while (matcher.find()) {
             String group = matcher.group().replace("${", "").replace("}", "");
-            if (params.get(group) != null){
+            if (params.get(group) != null) {
                 String replacement = StringUtils.objectStr(params.get(group));
                 matcher.appendReplacement(strBuf, replacement);
             }
@@ -685,6 +702,7 @@ public class StringUtils {
 
     /**
      * 值替换
+     *
      * @param prefix
      * @param args
      * @return
@@ -693,12 +711,12 @@ public class StringUtils {
         return String.format(prefix, args);
     }
 
-    public static void main(String[] args){
+    public static void main(String[] args) {
         Map<String, Object> param = new HashMap();
         param.put("account", "17358629955");
         param.put("pwd", "123456");
         String template = "账号创建成功,欢迎使用危品汇!登录账号:${account},默认密码:${pwd}!";
-        for(String key : param.keySet()){
+        for (String key : param.keySet()) {
             template = StringUtils.replace(template, key, StringUtils.objectStr(param.get(key)));
         }
         System.out.println(template);
@@ -706,6 +724,6 @@ public class StringUtils {
         Map<String, Object> m = new HashMap<>();
         m.put("account", "han");
         m.put("pwd", "zhong");
-        System.out.println( replace1(template, m));
+        System.out.println(replace1(template, m));
     }
 }

+ 7 - 4
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTransportDemandController.java

@@ -2,6 +2,7 @@ package com.sckw.order.controller;
 
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.order.model.dto.TransportDemandExport;
@@ -142,8 +143,9 @@ public class KwoTransportDemandController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @GetMapping("/batchTakeOffShelves")
-    public HttpResult batchTakeOffShelves(@RequestParam List<Long> ids) {
-        kwoTransportDemandService.batchTakeOffShelves(ids);
+    public HttpResult batchTakeOffShelves(@RequestParam String ids) {
+        List<Long> list = StringUtils.splitStrToList(ids, ",", Long.class);
+        kwoTransportDemandService.batchTakeOffShelves(list);
         return HttpResult.ok("批量下架成功");
     }
 
@@ -155,8 +157,9 @@ public class KwoTransportDemandController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @GetMapping("/batchDelete")
-    public HttpResult batchDelete(@RequestParam List<Long> ids) {
-        kwoTransportDemandService.batchDelete(ids);
+    public HttpResult batchDelete(@RequestParam String ids) {
+        List<Long> list = StringUtils.splitStrToList(ids, ",", Long.class);
+        kwoTransportDemandService.batchDelete(list);
         return HttpResult.ok("批量删除成功");
     }
 

+ 1 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/AddTransportDemandParam.java

@@ -97,7 +97,7 @@ public class AddTransportDemandParam {
     /**
      * 卸货区域code
      */
-    @NotBlank(message = "卸货区域code不能为空")
+    @NotNull(message = "卸货区域code不能为空")
     private Integer unloadAreaCode;
 
     /**

+ 3 - 8
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/BatchDeleteParam.java

@@ -1,15 +1,10 @@
 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 jakarta.validation.constraints.*;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
-import java.util.List;
-
 /**
  * @desc: 批量删除请求参数
  * @author: yzc
@@ -20,8 +15,8 @@ import java.util.List;
 @ToString
 public class BatchDeleteParam {
 
-    @NotEmpty(message = "订单id集合不能为空")
-    private List<Long> ids;
+    @NotBlank(message = "订单ids不能为空")
+    private String ids;
 
     /**
      * 订单类型(1采购订单、2销售订单)

+ 21 - 3
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/ExportTransportDemandParam.java

@@ -1,10 +1,11 @@
 package com.sckw.order.model.vo.req;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
-import java.util.List;
+import java.util.Date;
 
 /**
  * @desc: 运需导出请求参数
@@ -22,9 +23,16 @@ public class ExportTransportDemandParam {
     private String keywords;
 
     /**
-     * 商品类型集合
+     * 创建时间开始
      */
-    private List<String> goodsTypes;
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
+    private Date startCreateTime;
+
+    /**
+     * 创建时间结束
+     */
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
+    private Date endCreateTime;
 
     /**
      * 装货地区code
@@ -46,4 +54,14 @@ public class ExportTransportDemandParam {
      */
     private Integer unloadAreaLevel;
 
+    /**
+     * 运需状态
+     */
+    private Integer status;
+
+    /**
+     * 运需ids
+     */
+    private String ids;
+
 }

+ 31 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/TransportDemandSquaresParam.java

@@ -5,8 +5,10 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
+import java.util.List;
+
 /**
- * @desc: TODO
+ * @desc: 运需广场列表请求参数
  * @author: yzc
  * @date: 2023-07-26 10:27
  */
@@ -15,6 +17,34 @@ import lombok.ToString;
 @ToString
 public class TransportDemandSquaresParam extends PageRequest {
 
+    /**
+     * 关键词模糊匹配 商品名
+     */
+    private String keywords;
+
+    /**
+     * 商品类型集合
+     */
+    private List<String> goodsTypes;
+
+    /**
+     * 装货地区code
+     */
+    private Integer loadAreaCode;
+
+    /**
+     * 装货地区等级
+     */
+    private Integer loadAreaLevel;
+
+    /**
+     * 卸货地区code
+     */
+    private Integer unloadAreaCode;
 
+    /**
+     * 卸货地区等级
+     */
+    private Integer unloadAreaLevel;
 
 }

+ 6 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/TransportDemandDetailRes.java

@@ -6,6 +6,8 @@ import lombok.Setter;
 import lombok.ToString;
 import lombok.experimental.Accessors;
 
+import java.io.Serial;
+import java.io.Serializable;
 import java.time.LocalDate;
 import java.util.Date;
 
@@ -18,7 +20,10 @@ import java.util.Date;
 @Setter
 @ToString
 @Accessors(chain = true)
-public class TransportDemandDetailRes {
+public class TransportDemandDetailRes implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 5175877052604993108L;
 
     private Long id;
 

+ 124 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/TransportDemandListRes.java

@@ -0,0 +1,124 @@
+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.time.LocalDate;
+import java.util.Date;
+
+/**
+ * @desc: TODO
+ * @author: yzc
+ * @date: 2023-07-26 13:35
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class TransportDemandListRes implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -2367242506786660933L;
+
+    private Long id;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    /**
+     * 状态label
+     */
+    private String statusLabel;
+
+    /**
+     * 商品名称
+     */
+    private String name;
+
+    /**
+     * 商品分类
+     */
+    private String goodsType;
+
+    /**
+     * 商品分类Label
+     */
+    private String goodsTypeLabel;
+
+    /**
+     * 商品规格
+     */
+    private String spec;
+
+    /**
+     * 交易方式(预付款、货到付款、线下付款)
+     */
+    private String trading;
+
+    /**
+     * 交易方式Label
+     */
+    private String tradingLabel;
+
+    /**
+     * 运需单价
+     */
+    private String price;
+
+    /**
+     * 运输总量
+     */
+    private String amount;
+
+
+    /**
+     * 装货地址
+     */
+    private String loadAddress;
+
+    /**
+     * 卸货地址
+     */
+    private String unloadAddress;
+
+    /**
+     * 截止时间(yyyy-MM-dd)
+     */
+    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate deadline;
+
+    /**
+     * 联系人姓名
+     */
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 99 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/TransportDemandSquaresListRes.java

@@ -0,0 +1,99 @@
+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.time.LocalDate;
+
+/**
+ * @desc: 运需广场列表响应
+ * @author: yzc
+ * @date: 2023-07-26 14:38
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class TransportDemandSquaresListRes implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -3625148950210432786L;
+
+    private Long id;
+
+    /**
+     * 商品名称
+     */
+    private String name;
+
+    /**
+     * 商品分类
+     */
+    private String goodsType;
+
+    /**
+     * 商品分类Label
+     */
+    private String goodsTypeLabel;
+
+    /**
+     * 商品规格
+     */
+    private String spec;
+
+    /**
+     * 运需单价
+     */
+    private String price;
+
+    /**
+     * 运输总量
+     */
+    private String amount;
+
+    /**
+     * 交易方式(预付款、货到付款、线下付款)
+     */
+    private String trading;
+
+    /**
+     * 交易方式Label
+     */
+    private String tradingLabel;
+
+    /**
+     * 装货地址
+     */
+    private String loadAddress;
+
+    /**
+     * 卸货地址
+     */
+    private String unloadAddress;
+
+    /**
+     * 托运单位
+     */
+    private String demandUnit;
+
+    /**
+     * 截止时间(yyyy-MM-dd)
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate deadline;
+
+    /**
+     * 联系人姓名
+     */
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+}

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

@@ -793,7 +793,7 @@ public class KwoTradeOrderService {
      * @return: void
      */
     public void batchDelete(BatchDeleteParam param) {
-        List<Long> ids = param.getIds();
+        List<Long> ids = StringUtils.splitStrToList(param.getIds(), ",", Long.class);
         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);

+ 288 - 11
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTransportDemandService.java

@@ -1,19 +1,39 @@
 package com.sckw.order.serivce;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.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.model.page.PageResult;
+import com.sckw.core.model.vo.TableBottom;
 import com.sckw.core.model.vo.TableStatisticRes;
+import com.sckw.core.model.vo.TableTop;
 import com.sckw.core.utils.BeanUtils;
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.excel.utils.DateUtil;
 import com.sckw.order.dao.KwoTransportDemandMapper;
 import com.sckw.order.model.KwoTransportDemand;
 import com.sckw.order.model.dto.TransportDemandExport;
 import com.sckw.order.model.vo.req.*;
 import com.sckw.order.model.vo.res.TransportDemandDetailRes;
+import com.sckw.order.model.vo.res.TransportDemandListRes;
+import com.sckw.order.model.vo.res.TransportDemandSquaresListRes;
+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;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @desc: 运需service
@@ -27,6 +47,9 @@ public class KwoTransportDemandService {
 
     private final KwoTransportDemandMapper kwoTransportDemandMapper;
 
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
+
 
     /**
      * @desc: 添加草稿
@@ -37,7 +60,7 @@ public class KwoTransportDemandService {
      */
     public void addDraft(AddTransportDemandDraftParam param) {
         KwoTransportDemand transportDemand = BeanUtils.copyProperties(param, KwoTransportDemand.class);
-        transportDemand.setEntId(LoginUserHolder.getEntId()).setStatus(0);
+        transportDemand.setEntId(LoginUserHolder.getEntId()).setStatus(Integer.valueOf(DictEnum.TRANSPORT_DEMAND_STATUS_0.getValue()));
         kwoTransportDemandMapper.insert(transportDemand);
     }
 
@@ -49,7 +72,9 @@ public class KwoTransportDemandService {
      * @return: void
      */
     public void addShelves(AddTransportDemandParam param) {
-
+        KwoTransportDemand transportDemand = BeanUtils.copyProperties(param, KwoTransportDemand.class);
+        transportDemand.setEntId(LoginUserHolder.getEntId()).setStatus(Integer.valueOf(DictEnum.TRANSPORT_DEMAND_STATUS_1.getValue()));
+        kwoTransportDemandMapper.insert(transportDemand);
     }
 
     /**
@@ -60,7 +85,28 @@ public class KwoTransportDemandService {
      * @return: com.sckw.order.model.vo.res.TransportDemandDetailRes
      */
     public TransportDemandDetailRes detail(Long id) {
-        return null;
+        KwoTransportDemand transportDemand = getById(id);
+        if (Objects.isNull(transportDemand)) {
+            throw new BusinessException("数据不存在!");
+        }
+        TransportDemandDetailRes res = BeanUtils.copyProperties(transportDemand, TransportDemandDetailRes.class);
+        res.setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), res.getGoodsType()))
+                .setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), res.getTrading()))
+                .setStatusLabel(DictEnum.getLabel(DictTypeEnum.TRANSPORT_DEMAND_STATUS.getType(), String.valueOf(res.getStatus())));
+        return res;
+    }
+
+    /**
+     * @desc: 根据id获取
+     * @author: yzc
+     * @date: 2023-07-26 11:27
+     * @Param id:
+     * @return: com.sckw.order.model.KwoTransportDemand
+     */
+    private KwoTransportDemand getById(Long id) {
+        LambdaQueryWrapper<KwoTransportDemand> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwoTransportDemand::getId, id).eq(KwoTransportDemand::getDelFlag, Global.NO).last("LIMIT 1");
+        return kwoTransportDemandMapper.selectOne(wrapper);
     }
 
     /**
@@ -71,7 +117,55 @@ public class KwoTransportDemandService {
      * @return: void
      */
     public void update(UpdateTransportDemandParam param) {
+        KwoTransportDemand demand = getById(param.getId());
+        if (Objects.isNull(demand)) {
+            throw new BusinessException("数据不存在!");
+        }
+        if (!Objects.equals(demand.getEntId(), LoginUserHolder.getEntId())) {
+            throw new BusinessException("无操作权限!");
+        }
+        if (!Objects.equals(String.valueOf(demand.getStatus()), DictEnum.TRANSPORT_DEMAND_STATUS_0.getValue())) {
+            checkParams(param);
+        }
+        BeanUtils.copyProperties(param, demand);
+        kwoTransportDemandMapper.updateById(demand);
+    }
 
+    /**
+     * @desc: 参数校验
+     * @author: yzc
+     * @date: 2023-07-26 11:30
+     * @Param param:
+     * @return: void
+     */
+    private void checkParams(UpdateTransportDemandParam param) {
+        if (StringUtils.isBlank(param.getName())) {
+            throw new BusinessException("商品名称不能为空");
+        }
+        if (StringUtils.isBlank(param.getPrice())) {
+            throw new BusinessException("运需单价不能为空");
+        }
+        if (StringUtils.isBlank(param.getAmount())) {
+            throw new BusinessException("运输总量不能为空");
+        }
+        if (StringUtils.isBlank(param.getContacts())) {
+            throw new BusinessException("联系人姓名不能为空");
+        }
+        if (StringUtils.isBlank(param.getPhone())) {
+            throw new BusinessException("联系人电话不能为空");
+        }
+        if (Objects.isNull(param.getLoadAreaCode())) {
+            throw new BusinessException("装货区域code不能为空");
+        }
+        if (StringUtils.isBlank(param.getLoadAreaName())) {
+            throw new BusinessException("装货区域名称不能为空");
+        }
+        if (Objects.isNull(param.getUnloadAreaCode())) {
+            throw new BusinessException("卸货区域code不能为空");
+        }
+        if (StringUtils.isBlank(param.getUnloadAreaName())) {
+            throw new BusinessException("卸货区域名称不能为空");
+        }
     }
 
     /**
@@ -82,7 +176,68 @@ public class KwoTransportDemandService {
      * @return: com.sckw.core.model.page.PageResult
      */
     public PageResult select(SelectTransportDemandParam param) {
-        return null;
+        LambdaQueryWrapper<KwoTransportDemand> wrapper = buildWrapper(BeanUtils.copyProperties(param, ExportTransportDemandParam.class));
+        IPage<KwoTransportDemand> page = new Page<>(param.getPage(), param.getPageSize());
+        IPage<KwoTransportDemand> demandPage = kwoTransportDemandMapper.selectPage(page, wrapper);
+        List<KwoTransportDemand> list = demandPage.getRecords();
+        if (CollectionUtils.isEmpty(list)) {
+            return PageResult.build(param.getPage(), param.getPageSize(), demandPage.getTotal(), Collections.emptyList());
+        }
+        List<TransportDemandListRes> result = Lists.newArrayList();
+        list.forEach(e -> {
+            TransportDemandListRes demand = BeanUtils.copyProperties(e, TransportDemandListRes.class);
+            demand.setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), e.getGoodsType()))
+                    .setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
+                    .setStatusLabel(DictEnum.getLabel(DictTypeEnum.TRANSPORT_DEMAND_STATUS.getType(), String.valueOf(e.getStatus())))
+                    .setLoadAddress(e.getLoadAreaName() + e.getLoadDetailAddress())
+                    .setUnloadAddress(e.getUnloadAreaName() + e.getUnloadDetailAddress());
+            result.add(demand);
+        });
+        return PageResult.build(param.getPage(), param.getPageSize(), demandPage.getTotal(), result);
+    }
+
+    /**
+     * @desc: 构建wrapper
+     * @author: yzc
+     * @date: 2023-07-26 14:00
+     * @Param param:
+     * @return: com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<com.sckw.order.model.KwoTransportDemand>
+     */
+    private LambdaQueryWrapper<KwoTransportDemand> buildWrapper(ExportTransportDemandParam param) {
+        LambdaQueryWrapper<KwoTransportDemand> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwoTransportDemand::getEntId, LoginUserHolder.getEntId()).eq(KwoTransportDemand::getDelFlag, Global.NO);
+        if (StringUtils.isNotBlank(param.getIds())) {
+            List<Long> ids = StringUtils.splitStrToList(param.getIds(), ",", Long.class);
+            wrapper.in(KwoTransportDemand::getId, ids).orderByDesc(KwoTransportDemand::getCreateTime);
+            return wrapper;
+        }
+        if (Objects.nonNull(param.getEndCreateTime())) {
+            wrapper.le(KwoTransportDemand::getCreateTime, DateUtil.offsetDay(param.getEndCreateTime(), 1));
+        }
+        wrapper.ge(Objects.nonNull(param.getStartCreateTime()), KwoTransportDemand::getCreateTime, param.getStartCreateTime())
+                .eq(Objects.nonNull(param.getStatus()), KwoTransportDemand::getStatus, param.getStatus())
+                .like(Objects.nonNull(param.getKeywords()), KwoTransportDemand::getName, param.getKeywords());
+        Integer loadCode = param.getLoadAreaCode();
+        if (Objects.nonNull(loadCode) && Objects.nonNull(param.getLoadAreaLevel())) {
+            switch (param.getLoadAreaLevel()) {
+                case 1 ->
+                        wrapper.likeRight(KwoTransportDemand::getLoadAreaCode, Integer.valueOf(String.valueOf(loadCode).substring(0, 2)));
+                case 2 ->
+                        wrapper.likeRight(KwoTransportDemand::getLoadAreaCode, Integer.valueOf(String.valueOf(loadCode).substring(0, 4)));
+                case 3 -> wrapper.eq(KwoTransportDemand::getLoadAreaCode, loadCode);
+            }
+        }
+        Integer unloadCode = param.getUnloadAreaCode();
+        if (Objects.nonNull(unloadCode) && Objects.nonNull(param.getLoadAreaLevel())) {
+            switch (param.getUnloadAreaLevel()) {
+                case 1 ->
+                        wrapper.likeRight(KwoTransportDemand::getUnloadAreaCode, Integer.valueOf(String.valueOf(unloadCode).substring(0, 2)));
+                case 2 ->
+                        wrapper.likeRight(KwoTransportDemand::getUnloadAreaCode, Integer.valueOf(String.valueOf(unloadCode).substring(0, 4)));
+                case 3 -> wrapper.eq(KwoTransportDemand::getUnloadAreaCode, unloadCode);
+            }
+        }
+        return wrapper.orderByDesc(KwoTransportDemand::getCreateTime);
     }
 
     /**
@@ -93,7 +248,24 @@ public class KwoTransportDemandService {
      * @return: com.sckw.core.model.vo.TableStatisticRes
      */
     public TableStatisticRes statistic(StatisticTransportDemandParam param) {
-        return null;
+        TableStatisticRes res = new TableStatisticRes();
+        LambdaQueryWrapper<KwoTransportDemand> wrapper = buildWrapper(BeanUtils.copyProperties(param, ExportTransportDemandParam.class));
+        List<KwoTransportDemand> demands = kwoTransportDemandMapper.selectList(wrapper);
+        Map<Integer, List<KwoTransportDemand>> map = demands.stream().collect(Collectors.groupingBy(KwoTransportDemand::getStatus));
+        List<TableTop> tableTops = new ArrayList<>();
+        List<DictEnum> enums = DictEnum.getEnumsByType(DictTypeEnum.TRANSPORT_DEMAND_STATUS.getType());
+        enums.forEach(e -> {
+            Integer value = Integer.valueOf(e.getValue());
+            List<KwoTransportDemand> list = map.get(value);
+            int total = CollectionUtils.isEmpty(list) ? 0 : list.size();
+            TableTop tableTop = new TableTop();
+            tableTop.setName(e.getLabel()).setValue(value).setTotal(total);
+            tableTops.add(tableTop);
+        });
+        TableBottom tableBottom = new TableBottom();
+        tableBottom.setTotal(CollectionUtils.isEmpty(demands) ? 0 : demands.size());
+        res.setTableTops(tableTops).setTableBottom(tableBottom);
+        return res;
     }
 
     /**
@@ -104,7 +276,24 @@ public class KwoTransportDemandService {
      * @return: java.util.List<com.sckw.order.model.dto.TransportDemandExport>
      */
     public List<TransportDemandExport> export(ExportTransportDemandParam param) {
-        return null;
+        LambdaQueryWrapper<KwoTransportDemand> wrapper = buildWrapper(param);
+        List<KwoTransportDemand> demands = kwoTransportDemandMapper.selectList(wrapper);
+        if (CollectionUtils.isEmpty(demands)) {
+            return Collections.emptyList();
+        }
+        List<TransportDemandExport> result = Lists.newArrayList();
+        demands.forEach(e -> {
+            TransportDemandExport export = BeanUtils.copyProperties(e, TransportDemandExport.class);
+            export.setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), e.getGoodsType()))
+                    .setStatusLabel(DictEnum.getLabel(DictTypeEnum.TRANSPORT_DEMAND_STATUS.getType(), String.valueOf(e.getStatus())))
+                    .setLoadAddress(e.getLoadAreaName() + e.getLoadDetailAddress())
+                    .setUnloadAddress(e.getUnloadAreaName() + e.getUnloadDetailAddress())
+                    .setDeadline(Objects.isNull(e.getDeadline()) ? null : DateUtil.dateToStr(e.getDeadline()))
+                    .setCreateTime(Objects.isNull(e.getCreateTime()) ? null : DateUtil.getDateTime(e.getCreateTime()))
+                    .setUpdateTime(Objects.isNull(e.getUpdateTime()) ? null : DateUtil.getDateTime(e.getUpdateTime()));
+            result.add(export);
+        });
+        return result;
     }
 
     /**
@@ -115,7 +304,22 @@ public class KwoTransportDemandService {
      * @return: void
      */
     public void putOnShelves(Long id) {
-
+        KwoTransportDemand demand = getById(id);
+        if (Objects.isNull(demand)) {
+            throw new BusinessException("数据不存在!");
+        }
+        if (!Objects.equals(demand.getEntId(), LoginUserHolder.getEntId())) {
+            throw new BusinessException("无操作权限!");
+        }
+        if (Objects.equals(String.valueOf(demand.getStatus()), DictEnum.TRANSPORT_DEMAND_STATUS_1.getValue())) {
+            throw new BusinessException("上架操作仅针对“已下架”“草稿”状态的单据!");
+        }
+        if (Objects.equals(String.valueOf(demand.getStatus()), DictEnum.TRANSPORT_DEMAND_STATUS_0.getValue())) {
+            UpdateTransportDemandParam param = BeanUtils.copyProperties(demand, UpdateTransportDemandParam.class);
+            checkParams(param);
+        }
+        demand.setStatus(Integer.valueOf(DictEnum.TRANSPORT_DEMAND_STATUS_1.getValue()));
+        kwoTransportDemandMapper.updateById(demand);
     }
 
     /**
@@ -126,7 +330,18 @@ public class KwoTransportDemandService {
      * @return: void
      */
     public void batchTakeOffShelves(List<Long> ids) {
-
+        LambdaQueryWrapper<KwoTransportDemand> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(KwoTransportDemand::getId, ids)
+                .eq(KwoTransportDemand::getStatus, Integer.valueOf(DictEnum.TRANSPORT_DEMAND_STATUS_1.getValue()))
+                .eq(KwoTransportDemand::getEntId, LoginUserHolder.getEntId()).eq(KwoTransportDemand::getDelFlag, Global.NO);
+        List<KwoTransportDemand> list = kwoTransportDemandMapper.selectList(wrapper);
+        if (!Objects.equals(ids.size(), list.size())) {
+            throw new BusinessException("下架操作仅针对“已上架”状态的单据");
+        }
+        LambdaUpdateWrapper<KwoTransportDemand> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.set(KwoTransportDemand::getStatus, Integer.valueOf(DictEnum.TRANSPORT_DEMAND_STATUS_2.getValue()))
+                .in(KwoTransportDemand::getId, ids);
+        kwoTransportDemandMapper.update(null, updateWrapper);
     }
 
     /**
@@ -137,7 +352,16 @@ public class KwoTransportDemandService {
      * @return: void
      */
     public void batchDelete(List<Long> ids) {
-
+        LambdaQueryWrapper<KwoTransportDemand> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(KwoTransportDemand::getId, ids).in(KwoTransportDemand::getStatus, 0, 2)
+                .eq(KwoTransportDemand::getEntId, LoginUserHolder.getEntId()).eq(KwoTransportDemand::getDelFlag, Global.NO);
+        List<KwoTransportDemand> list = kwoTransportDemandMapper.selectList(wrapper);
+        if (!Objects.equals(ids.size(), list.size())) {
+            throw new BusinessException("删除操作仅针对“已下架”“草稿”状态的单据");
+        }
+        LambdaUpdateWrapper<KwoTransportDemand> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.set(KwoTransportDemand::getDelFlag, Global.YES).in(KwoTransportDemand::getId, ids);
+        kwoTransportDemandMapper.update(null, updateWrapper);
     }
 
     /**
@@ -148,6 +372,59 @@ public class KwoTransportDemandService {
      * @return: com.sckw.core.model.page.PageResult
      */
     public PageResult demandSquaresList(TransportDemandSquaresParam param) {
-        return null;
+        Page<KwoTransportDemand> page = new Page<>(param.getPage(), param.getPageSize());
+        LambdaQueryWrapper<KwoTransportDemand> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(CollectionUtils.isNotEmpty(param.getGoodsTypes()), KwoTransportDemand::getGoodsType, param.getGoodsTypes())
+                .eq(KwoTransportDemand::getStatus, Integer.valueOf(DictEnum.TRANSPORT_DEMAND_STATUS_1.getValue()))
+                .eq(KwoTransportDemand::getDelFlag, Global.NO);
+        Integer loadCode = param.getLoadAreaCode();
+        if (Objects.nonNull(loadCode) && Objects.nonNull(param.getLoadAreaLevel())) {
+            switch (param.getLoadAreaLevel()) {
+                case 1 ->
+                        wrapper.likeRight(KwoTransportDemand::getLoadAreaCode, Integer.valueOf(String.valueOf(loadCode).substring(0, 2)));
+                case 2 ->
+                        wrapper.likeRight(KwoTransportDemand::getLoadAreaCode, Integer.valueOf(String.valueOf(loadCode).substring(0, 4)));
+                case 3 -> wrapper.eq(KwoTransportDemand::getLoadAreaCode, loadCode);
+            }
+        }
+        Integer unloadCode = param.getUnloadAreaCode();
+        if (Objects.nonNull(unloadCode) && Objects.nonNull(param.getLoadAreaLevel())) {
+            switch (param.getUnloadAreaLevel()) {
+                case 1 ->
+                        wrapper.likeRight(KwoTransportDemand::getUnloadAreaCode, Integer.valueOf(String.valueOf(unloadCode).substring(0, 2)));
+                case 2 ->
+                        wrapper.likeRight(KwoTransportDemand::getUnloadAreaCode, Integer.valueOf(String.valueOf(unloadCode).substring(0, 4)));
+                case 3 -> wrapper.eq(KwoTransportDemand::getUnloadAreaCode, unloadCode);
+            }
+        }
+        if (StringUtils.isNotBlank(param.getKeywords())) {
+            List<EntCacheResDto> entList = remoteSystemService.queryEntCacheByName(param.getKeywords());
+            List<Long> entIds = entList.stream().map(EntCacheResDto::getId).toList();
+            if (CollectionUtils.isNotEmpty(entIds)) {
+                wrapper.and(e -> e.in(KwoTransportDemand::getEntId, entIds).or().like(KwoTransportDemand::getName, param.getKeywords()));
+            } else {
+                wrapper.like(KwoTransportDemand::getName, param.getKeywords());
+            }
+        }
+        wrapper.orderByDesc(KwoTransportDemand::getCreateTime);
+        Page<KwoTransportDemand> kwpGoodsPage = kwoTransportDemandMapper.selectPage(page, wrapper);
+        List<KwoTransportDemand> list = kwpGoodsPage.getRecords();
+        if (CollectionUtils.isEmpty(list)) {
+            return PageResult.build(param.getPage(), param.getPageSize(), kwpGoodsPage.getTotal(), Collections.emptyList());
+        }
+        List<Long> entIds = list.stream().map(KwoTransportDemand::getEntId).toList();
+        Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntCacheMapByIds(entIds);
+        List<TransportDemandSquaresListRes> result = Lists.newArrayList();
+        list.forEach(e -> {
+            TransportDemandSquaresListRes res = BeanUtils.copyProperties(e, TransportDemandSquaresListRes.class);
+            EntCacheResDto ent = entMap.get(e.getEntId());
+            res.setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), e.getGoodsType()))
+                    .setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
+                    .setLoadAddress(e.getLoadAreaName() + e.getLoadDetailAddress())
+                    .setUnloadAddress(e.getUnloadAreaName() + e.getUnloadDetailAddress())
+                    .setDemandUnit(Objects.nonNull(ent) ? ent.getFirmName() : null);
+            result.add(res);
+        });
+        return PageResult.build(param.getPage(), param.getPageSize(), kwpGoodsPage.getTotal(), result);
     }
 }

+ 7 - 4
sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java

@@ -2,6 +2,7 @@ package com.sckw.product.controller;
 
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.product.model.GoodsListExport;
@@ -141,8 +142,9 @@ public class KwpGoodsController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @GetMapping("/batchTakeOffShelves")
-    public HttpResult batchTakeOffShelves(@RequestParam List<Long> ids) {
-        kwpGoodsService.batchTakeOffShelves(ids);
+    public HttpResult batchTakeOffShelves(@RequestParam String ids) {
+        List<Long> goodIds = StringUtils.splitStrToList(ids, ",", Long.class);
+        kwpGoodsService.batchTakeOffShelves(goodIds);
         return HttpResult.ok("批量下架成功");
     }
 
@@ -154,8 +156,9 @@ public class KwpGoodsController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @GetMapping("/batchDelete")
-    public HttpResult batchDelete(@RequestParam List<Long> ids) {
-        kwpGoodsService.batchDelete(ids);
+    public HttpResult batchDelete(@RequestParam String ids) {
+        List<Long> goodIds = StringUtils.splitStrToList(ids, ",", Long.class);
+        kwpGoodsService.batchDelete(goodIds);
         return HttpResult.ok("批量删除成功");
     }
 

+ 1 - 3
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/ExportGoodsListParam.java

@@ -4,8 +4,6 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
-import java.util.List;
-
 /**
  * @desc: 导出商品列表请求参数
  * @author: yzc
@@ -19,7 +17,7 @@ public class ExportGoodsListParam extends GoodsListParam {
     /**
      * 商品ids
      */
-    private List<Long> ids;
+    private String ids;
 
 
 }

+ 1 - 2
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/SelectGoodsListParam.java

@@ -7,7 +7,6 @@ import lombok.Setter;
 import lombok.ToString;
 
 import java.util.Date;
-import java.util.List;
 
 /**
  * @desc: 分页查询商品列表请求参数
@@ -54,5 +53,5 @@ public class SelectGoodsListParam extends PageRequest {
     /**
      * 商品ids
      */
-    private List<Long> ids;
+    private String ids;
 }

+ 5 - 3
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -413,7 +413,7 @@ public class KwpGoodsService {
                 supplyEntIds.add(e.getSupplyEntId());
             }
             if (Objects.nonNull(e.getManager())){
-                supplyEntIds.add(e.getManager());
+                userIds.add(e.getManager());
             }
             if (Objects.nonNull(e.getCreateBy())){
                 userIds.add(e.getCreateBy());
@@ -466,8 +466,9 @@ public class KwpGoodsService {
      */
     private IPage<KwpGoods> getGoodsLists(SelectGoodsListParam params, Boolean isPage) {
         LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
-        if (CollectionUtils.isNotEmpty(params.getIds())) {
-            wrapper.in(KwpGoods::getId, params.getIds());
+        if (StringUtils.isNotBlank(params.getIds())) {
+            List<Long> ids = StringUtils.splitStrToList(params.getIds(), ",", Long.class);
+            wrapper.in(KwpGoods::getId, ids);
         } else {
             if (Objects.nonNull(params.getEndCreateTime())) {
                 wrapper.le(KwpGoods::getCreateTime, DateUtil.offsetDay(params.getEndCreateTime(), 1));
@@ -662,6 +663,7 @@ public class KwpGoodsService {
                 wrapper.like(KwpGoods::getName, params.getKeywords());
             }
         }
+        wrapper.orderByDesc(KwpGoods::getCreateTime);
         Page<KwpGoods> kwpGoodsPage = kwpGoodsMapper.selectPage(page, wrapper);
         List<KwpGoods> list = kwpGoodsPage.getRecords();
         if (CollectionUtils.isEmpty(list)) {

+ 3 - 2
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -233,10 +233,11 @@ public class KwOrderService {
 
     public List<TradeOrderListExport> export(TradeOrderListExportParam params) {
         Query query = new Query();
-        if (CollectionUtils.isNotEmpty(params.getIds())) {
+        if (StringUtils.isNotBlank(params.getIds())) {
+            List<Long> ids = StringUtils.splitStrToList(params.getIds(), ",", Long.class);
             Long entId = LoginUserHolder.getEntId();
             Criteria criteria = new Criteria();
-            criteria.and("tOrderId").in(params.getIds()).and("delFlag").is(0);
+            criteria.and("tOrderId").in(ids).and("delFlag").is(0);
             if (Objects.equals(params.getOrderType(), 1)) {
                 //采购订单
                 criteria.and("procureTopEntId").is(entId);

+ 2 - 4
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListExportParam.java

@@ -4,8 +4,6 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 
-import java.util.List;
-
 /**
  * @desc: 订单列表导出请求参数
  * @author: yzc
@@ -17,7 +15,7 @@ import java.util.List;
 public class TradeOrderListExportParam extends TradeOrderListStatisticParam {
 
     /**
-     * 订单id集合
+     * 订单ids
      */
-    private List<Long> ids;
+    private String ids;
 }

+ 42 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java

@@ -1,6 +1,7 @@
 package com.sckw.transport.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.transport.model.dto.*;
@@ -8,10 +9,10 @@ import com.sckw.transport.model.param.DriverParam;
 import com.sckw.transport.model.param.LogisticsOrderParam;
 import com.sckw.transport.service.AcceptCarriageOrderService;
 import com.sckw.transport.service.TransportCommonService;
+import jakarta.validation.Valid;
 import jakarta.validation.constraints.NotBlank;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -24,6 +25,7 @@ import java.util.List;
  * @date 2023-06-26 16:06:07
  */
 @Slf4j
+@Validated
 @RestController
 @RequiredArgsConstructor
 @RequestMapping(value = "/kwtAcceptCarriageOrder")
@@ -79,7 +81,7 @@ public class AcceptCarriageOrderController {
         try {
             return transportCommonService.getAcceptCarriageOrder(logisticsOrderParam);
         } catch (Exception e) {
-            log.error("派车给当前司机单据查询 error:{}", e.getMessage(), e);
+            log.error("对账管理-运费收款对账界面查询接口 error:{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
 
@@ -112,6 +114,22 @@ public class AcceptCarriageOrderController {
         }
     }
 
+    /**
+     * 承运订单-分包托运-订单详情
+     *
+     * @param id 物流订单id
+     * @return
+     */
+    @RequestMapping(value = "/subcontractConsignmentOrderDetail", method = RequestMethod.GET)
+    public HttpResult subcontractConsignmentOrderDetail(@NotBlank(message = "物流订单不能为空") @RequestParam("id") String id) {
+        try {
+            return acceptCarriageOrderService.subcontractConsignmentOrderDetail(id);
+        } catch (Exception e) {
+            log.error("分包托运 error:{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
+
 
     /**
      * 承运订单-获取运单详情
@@ -120,7 +138,7 @@ public class AcceptCarriageOrderController {
      * @return
      */
     @RequestMapping(value = "/getWaybillData", method = RequestMethod.GET)
-    public HttpResult getWaybillData(@Param("wOrderId") String wOrderId) {
+    public HttpResult getWaybillData(@NotBlank(message = "物流订单id不能为空") @RequestParam("wOrderId") String wOrderId) {
         try {
             return acceptCarriageOrderService.getWaybillData(wOrderId);
         } catch (Exception e) {
@@ -167,6 +185,7 @@ public class AcceptCarriageOrderController {
 
     /**
      * 承运订单-设置停止接单-提交
+     *
      * @param stopOrderTakingDTO
      * @return
      */
@@ -181,15 +200,16 @@ public class AcceptCarriageOrderController {
     }
 
     /**
-     * 承运订单-取消派车
+     * 承运订单-取消派车(撤回派车)
      *
      * @param ids 车辆运单id
      * @return
      */
     @RequestMapping(value = "/cancelDelivery", method = RequestMethod.POST)
-    public HttpResult cancelDelivery(@NotBlank(message = "车辆运单id不能为空") @RequestBody List<String> ids) {
+    public HttpResult cancelDelivery(@NotBlank(message = "车辆运单id不能为空") @RequestParam("ids") String ids) {
+        List<String> lists = StringUtils.splitStrToList(ids, ",", String.class);
         try {
-            return acceptCarriageOrderService.cancelDelivery(ids);
+            return acceptCarriageOrderService.cancelDelivery(lists);
         } catch (Exception e) {
             log.error("承运订单-取消派车 error:{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
@@ -212,4 +232,20 @@ public class AcceptCarriageOrderController {
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
     }
+
+    /**
+     * 承运订单-查看撤销原因
+     *
+     * @param id 物流订单
+     * @return
+     */
+    @RequestMapping(value = "/getCancelReason", method = RequestMethod.GET)
+    public HttpResult getCancelReason(@Valid @NotBlank(message = "物流订单id不能为空") @RequestParam("id") String id) {
+        try {
+            return acceptCarriageOrderService.getCancelReason(id);
+        } catch (Exception e) {
+            log.error("承运订单-查看撤销原因 error:{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
 }

+ 7 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/WaybillManagementController.java

@@ -4,11 +4,14 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.transport.model.dto.WaybillOrderDTO;
 import com.sckw.transport.service.WaybillManagementService;
+import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 
 /**
@@ -25,8 +28,9 @@ public class WaybillManagementController {
     @Autowired
     WaybillManagementService waybillManagementService;
 
+    @Valid
     @RequestMapping(name = "运单详情", value = "/waybillData", method = RequestMethod.GET)
-    public HttpResult waybillData(@Param("id") Long id) {
+    public HttpResult waybillData(@RequestParam("id") Long id) {
         try {
             return waybillManagementService.waybillData(id);
         } catch (Exception e) {

+ 4 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/DocumentParamDTO.java

@@ -1,5 +1,6 @@
 package com.sckw.transport.model.dto;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 
@@ -14,14 +15,17 @@ public class DocumentParamDTO {
      * 数据库主键id
      */
     @NotBlank(message = "id不能为空")
+    @JsonProperty("id")
     private String id;
     /**
      * 单据号
      */
+    @JsonProperty("documentNo")
     private String documentNo;
     /**
      * 单据类型(销售订单:0;采购订单:1;承运订单:2;托运订单:3)
      */
     @NotBlank(message = "单据类型不能为空")
+    @JsonProperty("documentType")
     private String documentType;
 }

+ 3 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/OrderFinishDTO.java

@@ -18,20 +18,22 @@ public class OrderFinishDTO {
      */
     @NotNull(message = "单据id不能为空")
     private String id;
+
     /**
      * 备注
      */
     @Length(max = 200,message = "单据编号长度错误最大长度:{max}")
     private String remark;
+
     /**
      * 装货量
      */
-
     @Digits(integer = 10, fraction=2, message = "装货量格式错误")
     @DecimalMin(value = "0.00", message = "装货量最小值不能低于0.00")
 //    @DecimalMax(value = "10.00", message = "资金最大值不能高于10.00元")
     @NotNull(message = "装货量不可为空")
     private BigDecimal loadAmount;
+
     /**
      * 卸货量
      */

+ 4 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/StopOrderTakingDTO.java

@@ -1,11 +1,9 @@
 package com.sckw.transport.model.dto;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 
-import java.util.List;
-
 /**
  * @author lfdc
  * @description 设置停止接单操作
@@ -16,12 +14,12 @@ public class StopOrderTakingDTO {
     /**
      * 车辆运单ids
      */
-    @NotNull(message = "车辆运单id不能为空")
-    private List<String> ids;
+    @NotBlank(message = "车辆运单id不能为空")
+    private String ids;
     /**
      * 物流订单id
      */
-    @NotNull(message = "物流订单id不能为空")
+    @NotBlank(message = "物流订单id不能为空")
     @JsonProperty("lOrderId")
     private String lOrderId;
 

+ 3 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/LogisticsOrderParam.java

@@ -1,5 +1,6 @@
 package com.sckw.transport.model.param;
 
+import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
@@ -15,12 +16,12 @@ public class LogisticsOrderParam implements Serializable {
     /**
      * 客户单位id
      */
-    @NotNull(message = "客户单位id不能为空")
+    @NotBlank(message = "客户单位id不能为空")
     private String companyId;
     /**
      * 客户单位名称
      */
-    @NotNull(message = "客户单位名称不能为空")
+    @NotBlank(message = "客户单位名称不能为空")
     private String companyName;
     /**
      * 开始时间

+ 6 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/CarWaybillVO.java

@@ -11,12 +11,12 @@ import lombok.experimental.Accessors;
 @Data
 @Accessors(chain = true)
 public class CarWaybillVO {
-    private String id;
+    private String wOrderId;
 
     /**
      * 运单编号
      */
-    private String waybillNumber;
+    private String wOrderNo;
     /**
      * 车牌号
      */
@@ -48,19 +48,19 @@ public class CarWaybillVO {
     /**
      * 实装量/吨
      */
-    private String stowageWeigh;
+    private String loadAmount;
     /**
      * 装货时间
      */
-    private String stowageDate;
+    private String loadDateTime;
     /**
      * 实卸量/吨
      */
-    private String unloadWeigh;
+    private String unloadAmount;
     /**
      * 卸货时间
      */
-    private String unloadDate;
+    private String unloadDateTime;
     /**
      * 亏吨量/吨
      */

+ 119 - 17
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -23,6 +23,7 @@ import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.excel.utils.DateUtil;
 import com.sckw.excel.utils.ValidUtil;
 import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.RTruckVo;
@@ -34,7 +35,8 @@ 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.SysDictResDto;
+import com.sckw.system.api.RemoteUserService;
+import com.sckw.system.api.model.dto.res.*;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.OrderFinishDTO;
@@ -81,6 +83,9 @@ public class AcceptCarriageOrderService {
     @DubboReference(version = "2.0.0", group = "design", check = false, timeout = 6000)
     RemoteContractService remoteContractService;
 
+    @DubboReference(version = "2.0.0", group = "design", check = false, timeout = 6000)
+    RemoteUserService remoteUserService;
+
     @Resource
     private StreamBridge streamBridge;
 
@@ -96,9 +101,6 @@ public class AcceptCarriageOrderService {
     @Autowired
     private KwtWaybillOrderTrackMapper waybillOrderTrackMapper;
 
-    @Autowired
-    private KwtWaybillOrderTicketMapper waybillOrderTicketMapper;
-
     @Autowired
     public KwtLogisticsOrderGoodsMapper kwtLogisticsOrderGoodsMapper;
 
@@ -155,6 +157,15 @@ public class AcceptCarriageOrderService {
             log.error("订单id查找失败:{},订单编号:{}", bo.getOrderId(), bo.getLOrderNo());
             throw new RuntimeException("单据错误,数据不存在");
         }
+        //todo  校验当前登录角色是否具有4P物流角色
+        EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(LoginUserHolder.getEntId());
+        if (entCacheResDto == null) {
+            log.info("承运订单-分包托运 用户id:{}", LoginUserHolder.getUserId());
+            throw new RuntimeException("企业信息查询异常");
+        }
+        if (!entCacheResDto.getEntTypes().contains(String.valueOf(NumberConstant.THREE))) {
+            throw new RuntimeException("当前用户企业不具有分包功能权限!");
+        }
         KwtLogisticsOrder order = new KwtLogisticsOrder();
         if (!bo.getIsFullDose()) {
             Long amount = bo.getAmount();
@@ -218,14 +229,14 @@ public class AcceptCarriageOrderService {
             throw new RuntimeException("生成物流托运合同异常");
         }
         insertSubcontractLogisticsGoods(bo, lOrderNo, orderId);
-        insertSubcontractLogisticsOrder(bo, lOrderNo, order, orderId, pids,orderStatus);
+        insertSubcontractLogisticsOrder(bo, lOrderNo, order, orderId, pids, orderStatus);
         insertSubcontractLogisticsOrderContract(bo, orderId);
         insertSubcontractLogisticsOrderUnit(bo, orderId);
         insertSubcontractLogisticsOrderAddress(bo, orderId, logisticsOrder);
-        insertLogisticsOrderTrack(bo, orderId,orderStatus);
+        insertLogisticsOrderTrack(bo, orderId, orderStatus);
         //修改上级分配量以及可分配量委托量等
         logisticsOrder.setSubcontractAmount(logisticsOrder.getSubcontractAmount().add(new BigDecimal(bo.getCarryingCapacity())));
-        subcontractSendMongoDB(lOrderNo, orderId, bo, logisticsOrder,orderStatus);
+        subcontractSendMongoDB(lOrderNo, orderId, bo, logisticsOrder, orderStatus);
         return HttpResult.ok();
     }
 
@@ -237,7 +248,7 @@ public class AcceptCarriageOrderService {
      * @param bo                页面传输实体
      * @param kwtLogisticsOrder 物流订单数据(上一级)
      */
-    private void subcontractSendMongoDB(String lOrderNo, Long orderId, SubcontractConsignmentDTO bo, KwtLogisticsOrder kwtLogisticsOrder,Integer orderStatus) {
+    private void subcontractSendMongoDB(String lOrderNo, Long orderId, SubcontractConsignmentDTO bo, KwtLogisticsOrder kwtLogisticsOrder, Integer orderStatus) {
         SckwLogisticsOrder logisticsOrder = new SckwLogisticsOrder();
         logisticsOrder.setStatus(String.valueOf(orderStatus));
         logisticsOrder.setLOrderId(orderId);
@@ -344,7 +355,7 @@ public class AcceptCarriageOrderService {
      * @param bo
      * @param orderId
      */
-    private void insertLogisticsOrderTrack(SubcontractConsignmentDTO bo, Long orderId,Integer orderStatus) {
+    private void insertLogisticsOrderTrack(SubcontractConsignmentDTO bo, Long orderId, Integer orderStatus) {
         KwtLogisticsOrderTrack entity = new KwtLogisticsOrderTrack();
         entity.setId(new IdWorker(NumberConstant.ONE).nextId());
         entity.setLOrderId(orderId);
@@ -478,7 +489,7 @@ public class AcceptCarriageOrderService {
      */
     private void insertSubcontractLogisticsOrder(SubcontractConsignmentDTO bo, String lOrderNo,
                                                  KwtLogisticsOrder order,
-                                                 Long orderId, String pids,Integer orderStatus) {
+                                                 Long orderId, String pids, Integer orderStatus) {
         order.setId(orderId);
         order.setEntId(LoginUserHolder.getEntId());
         order.setTOrderId(order.getTOrderId());
@@ -746,8 +757,9 @@ public class AcceptCarriageOrderService {
      */
     @Transactional(rollbackFor = Exception.class)
     public HttpResult stopDocumentCommit(StopOrderTakingDTO stopOrderTakingDTO) {
-        List<Long> wOrderIds = logisticsOrderCirculateMapper.selectEntityBylOrderIdAndOrderIds(stopOrderTakingDTO.getLOrderId(), stopOrderTakingDTO.getIds());
-        List<JSONObject> list = new ArrayList<>(stopOrderTakingDTO.getIds().size());
+        List<String> stringList = StringUtils.splitStrToList(stopOrderTakingDTO.getIds(), ",", String.class);
+        List<Long> wOrderIds = logisticsOrderCirculateMapper.selectEntityBylOrderIdAndOrderIds(stopOrderTakingDTO.getLOrderId(), stringList);
+        List<JSONObject> list = new ArrayList<>(stringList.size());
         if (CollectionUtils.isNotEmpty(wOrderIds)) {
             wOrderIds.forEach(wOrderId -> {
                 JSONObject jsonObject = new JSONObject();
@@ -782,7 +794,7 @@ public class AcceptCarriageOrderService {
         for (String id : ids) {
             result.put("id", id);
             KwtWaybillOrder waybillOrder = waybillOrderMapper.selectOne(new LambdaUpdateWrapper<KwtWaybillOrder>()
-                    .eq(KwtWaybillOrder::getId, id).eq(KwtWaybillOrder::getType, NumberConstant.ONE));
+                    .eq(KwtWaybillOrder::getId, Long.parseLong(id)).eq(KwtWaybillOrder::getType, NumberConstant.ONE));
             if (waybillOrder == null) {
                 result.put("status", HttpStatus.GLOBAL_EXCEPTION_CODE);
                 result.put("message", "单据不存在");
@@ -806,7 +818,7 @@ public class AcceptCarriageOrderService {
                     .eq(KwtLogisticsOrder::getId, logisticsOrder.getId()));
             waybillOrderMapper.update(null, new LambdaUpdateWrapper<KwtWaybillOrder>()
                     .eq(KwtWaybillOrder::getType, NumberConstant.ONE)
-                    .eq(KwtWaybillOrder::getId, id)
+                    .eq(KwtWaybillOrder::getId, Long.parseLong(id))
                     .set(KwtWaybillOrder::getStatus, CarWaybillEnum.REVOKED.getCode())
                     .set(KwtWaybillOrder::getUpdateBy, LoginUserHolder.getUserId())
                     .set(KwtWaybillOrder::getUpdateTime, new Date()));
@@ -904,8 +916,9 @@ public class AcceptCarriageOrderService {
 
     /**
      * 承运订单-分包托运-完结订单-修改本身数据
-     * @param logisticsOrder    本身物流订单数据
-     * @param orderFinishDTO    页面传递数据
+     *
+     * @param logisticsOrder 本身物流订单数据
+     * @param orderFinishDTO 页面传递数据
      */
     private void updateDataByItself(KwtLogisticsOrder logisticsOrder, OrderFinishDTO orderFinishDTO) {
         logisticsOrder.setStatus(LogisticsOrderEnum.HAVE_FINISHED.getCode());
@@ -944,8 +957,9 @@ public class AcceptCarriageOrderService {
 
     /**
      * 承运订单-分包托运-完结订单-修改分包订单
+     *
      * @param orderFinishDTO
-     * @param orderId   分包物流订单id
+     * @param orderId        分包物流订单id
      */
     private void updateDataBySubset(OrderFinishDTO orderFinishDTO, String orderId) {
         KwtLogisticsOrder kwtLogisticsOrder = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
@@ -981,4 +995,92 @@ public class AcceptCarriageOrderService {
             streamBridge.send("sckw-busSum", com.alibaba.fastjson2.JSON.toJSONString(busSum));
         }
     }
+
+    /**
+     * 承运订单-获取撤销驳回原因
+     *
+     * @param id 物流订单id
+     * @return
+     */
+    public HttpResult getCancelReason(String id) {
+        KwtLogisticsOrderTrack track = logisticsOrderTrackMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderTrack>()
+                .eq(KwtLogisticsOrderTrack::getLOrderId, Long.parseLong(id))
+                .eq(KwtLogisticsOrderTrack::getStatus, LogisticsOrderEnum.SEND_BACK.getCode()));
+        return HttpResult.ok(track == null ? null : track.getRemark());
+    }
+
+    /**
+     * 承运订单-分包托运-订单详情
+     *
+     * @param id 物流订单id
+     * @return
+     */
+    public HttpResult subcontractConsignmentOrderDetail(String id) {
+        KwtLogisticsOrder logisticsOrder = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
+                        .eq(KwtLogisticsOrder::getId, Long.parseLong(id))
+                /**.eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId())*/);
+        if (logisticsOrder == null) {
+            log.info("查无单据 物流订单id:{}", id);
+            throw new RuntimeException("查无单据");
+        }
+        KwtLogisticsOrderContract contract = kwtLogisticsOrderContractMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderContract>()
+                .eq(StringUtils.isNotBlank(Long.parseLong(id)), KwtLogisticsOrderContract::getLOrderId, Long.parseLong(id)));
+        KwtLogisticsOrderUnit unitOne = logisticsOrderUnitMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderUnit>()
+                .eq(StringUtils.isNotBlank(Long.parseLong(id)), KwtLogisticsOrderUnit::getLOrderId, Long.parseLong(id))
+                .eq(KwtLogisticsOrderUnit::getUnitType, NumberConstant.ONE));
+        KwtLogisticsOrderUnit unitTwo = logisticsOrderUnitMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderUnit>()
+                .eq(StringUtils.isNotBlank(Long.parseLong(id)), KwtLogisticsOrderUnit::getLOrderId, Long.parseLong(id))
+                .eq(KwtLogisticsOrderUnit::getUnitType, NumberConstant.TWO));
+        KwtLogisticsOrderAddress loadOrderAddress = logisticsOrderAddressMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderAddress>()
+                .eq(StringUtils.isNotBlank(Long.parseLong(id)), KwtLogisticsOrderAddress::getLOrderId, Long.parseLong(id))
+                .eq(KwtLogisticsOrderAddress::getAddressType, NumberConstant.ONE));
+        KwtLogisticsOrderAddress unloadOrderAddress = logisticsOrderAddressMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderAddress>()
+                .eq(StringUtils.isNotBlank(Long.parseLong(id)), KwtLogisticsOrderAddress::getLOrderId, Long.parseLong(id))
+                .eq(KwtLogisticsOrderAddress::getAddressType, NumberConstant.TWO));
+        KwtLogisticsOrderGoods orderGoods = kwtLogisticsOrderGoodsMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderGoods>()
+                .eq(StringUtils.isNotBlank(logisticsOrder.getId()), KwtLogisticsOrderGoods::getLOrderId, logisticsOrder.getId()));
+        OrderDetailVO orderDetailVO = new OrderDetailVO();
+        orderDetailVO.setId(String.valueOf(logisticsOrder.getId()));
+        if (contract != null) {
+            orderDetailVO.setContractId(contract.getContractId() == null ? null : String.valueOf(contract.getContractId()));
+            //todo 接口调用合同服务查询合同信息
+            List<Long> list = new ArrayList<>(NumberConstant.SIXTEEN);
+            list.add(contract.getContractId());
+            Map<Long, ContractCommonInfoResDto> contractBaseInfo = remoteContractService.queryContractBaseInfo(list);
+            if (CollectionUtils.isNotEmpty(contractBaseInfo) && !ObjectUtils.isEmpty(contractBaseInfo.get(contract.getContractId()))) {
+                orderDetailVO.setContractName(contractBaseInfo.get(contract.getContractId()).getContactName());
+                orderDetailVO.setContractNo(contractBaseInfo.get(contract.getContractId()).getContractCode());
+            }
+        }
+        if (unitOne != null) {
+            orderDetailVO.setConsignCompany(unitOne.getFirmName());
+            orderDetailVO.setConsignContacts(unitOne.getContacts());
+            orderDetailVO.setConsignPhone(unitOne.getPhone());
+            orderDetailVO.setCollectionCompany(unitOne.getFirmName());
+        }
+        if (unitTwo != null) {
+            orderDetailVO.setCarrierCompany(unitTwo.getFirmName());
+            orderDetailVO.setCarrierContacts(unitTwo.getContacts());
+            orderDetailVO.setCarrierPhone(unitTwo.getPhone());
+        }
+        orderDetailVO.setGoodsName(orderGoods == null ? null : orderGoods.getGoodsName());
+        orderDetailVO.setNumber(logisticsOrder.getAmount() == null ? null : String.valueOf(logisticsOrder.getAmount()));
+        orderDetailVO.setPrice(logisticsOrder.getPrice() == null ? null : String.valueOf(logisticsOrder.getPrice()));
+        orderDetailVO.setLoss(logisticsOrder.getLoss() == null ? null : String.valueOf(logisticsOrder.getLoss()));
+        orderDetailVO.setDeduct(logisticsOrder.getGoodsPrice() == null ? null : String.valueOf(logisticsOrder.getGoodsPrice()));
+        orderDetailVO.setLoadAddress(loadOrderAddress.getName());
+        orderDetailVO.setLoadContacts(loadOrderAddress.getContacts());
+        orderDetailVO.setLoadPhone(loadOrderAddress.getPhone());
+        orderDetailVO.setLoadAddressDetail(loadOrderAddress.getDetailAddress());
+        orderDetailVO.setUnloadAddress(unloadOrderAddress.getName());
+        orderDetailVO.setUnloadContacts(unloadOrderAddress.getContacts());
+        orderDetailVO.setUnloadPhone(unloadOrderAddress.getPhone());
+        orderDetailVO.setUnloadAddressDetail(unloadOrderAddress.getDetailAddress());
+        orderDetailVO.setSettlementCycle(logisticsOrder.getSettlementCycle() == null ? null : String.valueOf(logisticsOrder.getSettlementCycle()));
+        orderDetailVO.setBillingMode(logisticsOrder.getBillingMode());
+        orderDetailVO.setScheduleStartTime(logisticsOrder.getStartTime() == null ? null : DateUtil.getDateTime(logisticsOrder.getStartTime()));
+        orderDetailVO.setScheduleEndTime(logisticsOrder.getEndTime() == null ? null : DateUtil.getDateTime(logisticsOrder.getEndTime()));
+        orderDetailVO.setPerformanceAmount(logisticsOrder.getLoadAmount() == null ? null : String.valueOf(logisticsOrder.getLoadAmount()));
+        return HttpResult.ok(orderDetailVO);
+    }
 }

+ 85 - 47
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -16,7 +16,6 @@ import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.RTruckVo;
 import com.sckw.mongo.enums.BusinessTypeEnum;
 import com.sckw.mongo.model.SckwLogisticsOrder;
-import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.transport.dao.*;
@@ -35,10 +34,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -114,20 +110,23 @@ public class ConsignOrderService {
     private HttpResult getCarWaybillByOrderByAcceptCarriage(OrderDTO orderDto) {
         List<CarWaybillVO> returnList = new ArrayList<>();
         KwtLogisticsOrder order = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
-                .eq(StringUtils.isNotBlank(orderDto.getId()), KwtLogisticsOrder::getId, Long.parseLong(orderDto.getId()))
-                .eq(StringUtils.isNotBlank(orderDto.getOrderNo()), KwtLogisticsOrder::getLOrderNo, orderDto.getOrderNo())
-                .eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId()));
+                        .eq(StringUtils.isNotBlank(orderDto.getId()), KwtLogisticsOrder::getId, Long.parseLong(orderDto.getId()))
+                        .eq(StringUtils.isNotBlank(orderDto.getOrderNo()), KwtLogisticsOrder::getLOrderNo, orderDto.getOrderNo())
+                /**.eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId())*/);
         if (ObjectUtils.isEmpty(order)) {
             return HttpResult.ok(returnList);
         }
         List<KwtWaybillOrder> kwtWaybillOrders = kwtWaybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
                         .eq(StringUtils.isNotBlank(order.getId()), KwtWaybillOrder::getLOrderId, order.getId())
                 /**.eq(KwtWaybillOrder::getEntId, LoginUserHolder.getEntId())*/);
+        JSONObject statistics = new JSONObject();
+        BigDecimal sendCarWeighNumber = new BigDecimal(NumberConstant.ZERO);
+        BigDecimal loadAmountNumber = new BigDecimal(NumberConstant.ZERO);
+        BigDecimal unloadAmountNumber = new BigDecimal(NumberConstant.ZERO);
+        BigDecimal defectiveWeighNumber = new BigDecimal(NumberConstant.ZERO);
         if (CollectionUtils.isNotEmpty(kwtWaybillOrders)) {
             for (KwtWaybillOrder kwtWaybillOrder : kwtWaybillOrders) {
                 CarWaybillVO carWaybillVo = new CarWaybillVO();
-                KwtWaybillOrderTrack track = kwtWaybillOrderTrackMapper.selectOne(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
-                        .eq(StringUtils.isNotBlank(kwtWaybillOrder.getId()), KwtWaybillOrderTrack::getWOrderId, kwtWaybillOrder.getId()));
                 KwtWaybillOrderTicket loadTicket = kwtWaybillOrderTicketMapper.selectOne(new LambdaQueryWrapper<KwtWaybillOrderTicket>()
                         .eq(StringUtils.isNotBlank(kwtWaybillOrder.getId()), KwtWaybillOrderTicket::getWOrderId, kwtWaybillOrder.getId())
                         .eq(KwtWaybillOrderTicket::getType, NumberConstant.ONE));
@@ -142,16 +141,16 @@ public class ConsignOrderService {
                 if (kwtWaybillOrder.getDeficitAmount() != null && (kwtWaybillOrder.getDeficitAmount().compareTo(new BigDecimal(NumberConstant.ZERO)) == NumberConstant.ZERO)) {
                     deduct = kwtWaybillOrder.getDeficitAmount().subtract(order.getLoss() == null ? new BigDecimal(NumberConstant.ZERO) : order.getLoss());
                 }
-                carWaybillVo.setId(String.valueOf(kwtWaybillOrder.getId()));
-                carWaybillVo.setWaybillNumber(order.getLOrderNo());
+                carWaybillVo.setWOrderId(String.valueOf(kwtWaybillOrder.getId()));
+                carWaybillVo.setWOrderNo(order.getLOrderNo());
                 carWaybillVo.setTruckNo(kwtWaybillOrder.getTruckNo());
-                carWaybillVo.setStatus(track == null ? null : String.valueOf(track.getStatus()));
+                carWaybillVo.setStatus(String.valueOf(kwtWaybillOrder.getStatus()));
                 carWaybillVo.setWaybillType(kwtWaybillOrder.getType());
                 carWaybillVo.setDriverName(kwtWaybillOrder.getDriverName());
                 //todo 取mongo
-                SckwWaybillOrder sckwWaybillOrder = mongoTemplate.findById(kwtWaybillOrder.getId(), SckwWaybillOrder.class);
+//                SckwWaybillOrder sckwWaybillOrder = mongoTemplate.findById(kwtWaybillOrder.getId(), SckwWaybillOrder.class);
                 /** 2023-07-24 原值为承运车队-去除后更换展示为承运公司*/
-                carWaybillVo.setConsignMotorcade(sckwWaybillOrder == null ? null : sckwWaybillOrder.getCarrierFirmName());
+//                carWaybillVo.setConsignMotorcade(sckwWaybillOrder == null ? null : sckwWaybillOrder.getCarrierFirmName());
                 carWaybillVo.setSendCarWeigh(kwtWaybillOrder.getEntrustAmount() == null ? null : String.valueOf(kwtWaybillOrder.getEntrustAmount()));
                 if (circulate != null) {
                     carWaybillVo.setSendCarDate(circulate.getCreateTime() == null ? null : DateUtil.getDateTime(circulate.getCreateTime()));
@@ -159,29 +158,47 @@ public class ConsignOrderService {
                     carWaybillVo.setSendCarDate(null);
                 }
                 if (loadTicket != null) {
-                    carWaybillVo.setStowageWeigh(loadTicket.getAmount() == null ? null : String.valueOf(loadTicket.getAmount()));
-                    carWaybillVo.setStowageDate(loadTicket.getCreateTime() == null ? null : DateUtil.getDateTime(loadTicket.getCreateTime()));
+                    carWaybillVo.setLoadAmount(loadTicket.getAmount() == null ? null : String.valueOf(loadTicket.getAmount()));
+                    carWaybillVo.setLoadDateTime(loadTicket.getCreateTime() == null ? null : DateUtil.getDateTime(loadTicket.getCreateTime()));
                 } else {
-                    carWaybillVo.setSendCarWeigh(null);
-                    carWaybillVo.setStowageDate(null);
+                    carWaybillVo.setLoadAmount(null);
+                    carWaybillVo.setLoadDateTime(null);
                 }
+                carWaybillVo.setSendCarWeigh(kwtWaybillOrder.getEntrustAmount() == null ? null : String.valueOf(kwtWaybillOrder.getEntrustAmount()));
                 if (unloadTicket != null) {
-                    carWaybillVo.setUnloadWeigh(unloadTicket.getAmount() == null ? null : String.valueOf(unloadTicket.getAmount()));
-                    carWaybillVo.setUnloadDate(unloadTicket.getCreateTime() == null ? null : DateUtil.getDateTime(unloadTicket.getCreateTime()));
+                    carWaybillVo.setUnloadAmount(unloadTicket.getAmount() == null ? null : String.valueOf(unloadTicket.getAmount()));
+                    carWaybillVo.setUnloadDateTime(unloadTicket.getCreateTime() == null ? null : DateUtil.getDateTime(unloadTicket.getCreateTime()));
                 } else {
-                    carWaybillVo.setUnloadWeigh(null);
-                    carWaybillVo.setUnloadDate(null);
+                    carWaybillVo.setUnloadAmount(null);
+                    carWaybillVo.setUnloadDateTime(null);
                 }
                 /**亏吨量/吨->装货量-卸货量
                  扣亏量/吨->亏吨量-合理损耗*/
                 carWaybillVo.setDefectiveWeigh(kwtWaybillOrder.getDeficitAmount() == null ? null : String.valueOf(kwtWaybillOrder.getDeficitAmount()));
                 carWaybillVo.setDeduct(String.valueOf(deduct));
-                carWaybillVo.setAppointor(remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()) == null ?
-                        String.valueOf(kwtWaybillOrder.getCreateBy()) : remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()).getName());
+//                carWaybillVo.setAppointor(remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()) == null ?
+//                        String.valueOf(kwtWaybillOrder.getCreateBy()) : remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()).getName());
+                if (carWaybillVo.getLoadAmount() != null) {
+                    loadAmountNumber = loadAmountNumber.add(new BigDecimal(carWaybillVo.getLoadAmount()));
+                }
+                if (carWaybillVo.getUnloadAmount() != null) {
+                    unloadAmountNumber = unloadAmountNumber.add(new BigDecimal(carWaybillVo.getUnloadAmount()));
+                }
+                if (carWaybillVo.getDefectiveWeigh() != null) {
+                    defectiveWeighNumber = defectiveWeighNumber.add(new BigDecimal(carWaybillVo.getDefectiveWeigh()));
+                }
                 returnList.add(carWaybillVo);
             }
         }
-        return HttpResult.ok(returnList);
+        statistics.put("count", kwtWaybillOrders.size());
+        statistics.put("sendCarWeighNumber", sendCarWeighNumber);
+        statistics.put("loadAmountNumber", loadAmountNumber);
+        statistics.put("unloadAmountNumber", unloadAmountNumber);
+        statistics.put("defectiveWeighNumber", defectiveWeighNumber);
+        Map map = new HashMap<>(NumberConstant.SIXTEEN);
+        map.put("returnList", returnList);
+        map.put("statistics", statistics);
+        return HttpResult.ok(map);
     }
 
 
@@ -194,20 +211,23 @@ public class ConsignOrderService {
     private HttpResult getCarWaybillByOrderByConsign(OrderDTO orderDto) {
         List<CarWaybillVO> returnList = new ArrayList<>();
         KwtLogisticsOrder order = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
-                .eq(StringUtils.isNotBlank(orderDto.getId()), KwtLogisticsOrder::getId, Long.parseLong(orderDto.getId()))
-                .eq(StringUtils.isNotBlank(orderDto.getOrderNo()), KwtLogisticsOrder::getLOrderNo, orderDto.getOrderNo())
-                .eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId()));
+                        .eq(StringUtils.isNotBlank(orderDto.getId()), KwtLogisticsOrder::getId, Long.parseLong(orderDto.getId()))
+                        .eq(StringUtils.isNotBlank(orderDto.getOrderNo()), KwtLogisticsOrder::getLOrderNo, orderDto.getOrderNo())
+                /**.eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId())*/);
         if (ObjectUtils.isEmpty(order)) {
             return HttpResult.ok(returnList);
         }
         List<KwtWaybillOrder> kwtWaybillOrders = kwtWaybillOrderMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrder>()
                         .eq(StringUtils.isNotBlank(order.getId()), KwtWaybillOrder::getLOrderId, order.getId())
                 /**.eq(KwtWaybillOrder::getEntId, LoginUserHolder.getEntId())*/);
+        JSONObject statistics = new JSONObject();
+        BigDecimal sendCarWeighNumber = new BigDecimal(NumberConstant.ZERO);
+        BigDecimal loadAmountNumber = new BigDecimal(NumberConstant.ZERO);
+        BigDecimal unloadAmountNumber = new BigDecimal(NumberConstant.ZERO);
+        BigDecimal defectiveWeighNumber = new BigDecimal(NumberConstant.ZERO);
         if (CollectionUtils.isNotEmpty(kwtWaybillOrders)) {
             for (KwtWaybillOrder kwtWaybillOrder : kwtWaybillOrders) {
                 CarWaybillVO carWaybillVo = new CarWaybillVO();
-                KwtWaybillOrderTrack track = kwtWaybillOrderTrackMapper.selectOne(new LambdaQueryWrapper<KwtWaybillOrderTrack>()
-                        .eq(StringUtils.isNotBlank(kwtWaybillOrder.getId()), KwtWaybillOrderTrack::getWOrderId, kwtWaybillOrder.getId()));
                 KwtWaybillOrderTicket loadTicket = kwtWaybillOrderTicketMapper.selectOne(new LambdaQueryWrapper<KwtWaybillOrderTicket>()
                         .eq(StringUtils.isNotBlank(kwtWaybillOrder.getId()), KwtWaybillOrderTicket::getWOrderId, kwtWaybillOrder.getId())
                         .eq(KwtWaybillOrderTicket::getType, NumberConstant.ONE));
@@ -222,16 +242,16 @@ public class ConsignOrderService {
                 if (kwtWaybillOrder.getDeficitAmount() != null && (kwtWaybillOrder.getDeficitAmount().compareTo(new BigDecimal(NumberConstant.ZERO)) == NumberConstant.ZERO)) {
                     deduct = kwtWaybillOrder.getDeficitAmount().subtract(order.getLoss() == null ? new BigDecimal(NumberConstant.ZERO) : order.getLoss());
                 }
-                carWaybillVo.setId(String.valueOf(kwtWaybillOrder.getId()));
-                carWaybillVo.setWaybillNumber(order.getLOrderNo());
+                carWaybillVo.setWOrderId(String.valueOf(kwtWaybillOrder.getId()));
+                carWaybillVo.setWOrderNo(order.getLOrderNo());
                 carWaybillVo.setTruckNo(kwtWaybillOrder.getTruckNo());
-                carWaybillVo.setStatus(track == null ? null : String.valueOf(track.getStatus()));
+                carWaybillVo.setStatus(String.valueOf(kwtWaybillOrder.getStatus()));
                 carWaybillVo.setWaybillType(kwtWaybillOrder.getType());
                 carWaybillVo.setDriverName(kwtWaybillOrder.getDriverName());
                 //todo 取mongo
-                SckwWaybillOrder sckwWaybillOrder = mongoTemplate.findById(kwtWaybillOrder.getId(), SckwWaybillOrder.class);
+//                SckwWaybillOrder sckwWaybillOrder = mongoTemplate.findById(kwtWaybillOrder.getId(), SckwWaybillOrder.class);
                 /** 2023-07-24 原值为承运车队-去除后更换展示为承运公司*/
-                carWaybillVo.setConsignMotorcade(sckwWaybillOrder == null ? null : sckwWaybillOrder.getCarrierFirmName());
+//                carWaybillVo.setConsignMotorcade(sckwWaybillOrder == null ? null : sckwWaybillOrder.getCarrierFirmName());
                 carWaybillVo.setSendCarWeigh(kwtWaybillOrder.getEntrustAmount() == null ? null : String.valueOf(kwtWaybillOrder.getEntrustAmount()));
                 if (circulate != null) {
                     carWaybillVo.setSendCarDate(circulate.getCreateTime() == null ? null : DateUtil.getDateTime(circulate.getCreateTime()));
@@ -239,29 +259,47 @@ public class ConsignOrderService {
                     carWaybillVo.setSendCarDate(null);
                 }
                 if (loadTicket != null) {
-                    carWaybillVo.setStowageWeigh(loadTicket.getAmount() == null ? null : String.valueOf(loadTicket.getAmount()));
-                    carWaybillVo.setStowageDate(loadTicket.getCreateTime() == null ? null : DateUtil.getDateTime(loadTicket.getCreateTime()));
+                    carWaybillVo.setLoadAmount(loadTicket.getAmount() == null ? null : String.valueOf(loadTicket.getAmount()));
+                    carWaybillVo.setLoadDateTime(loadTicket.getCreateTime() == null ? null : DateUtil.getDateTime(loadTicket.getCreateTime()));
                 } else {
-                    carWaybillVo.setSendCarWeigh(null);
-                    carWaybillVo.setStowageDate(null);
+                    carWaybillVo.setLoadAmount(null);
+                    carWaybillVo.setLoadDateTime(null);
                 }
                 if (unloadTicket != null) {
-                    carWaybillVo.setUnloadWeigh(unloadTicket.getAmount() == null ? null : String.valueOf(unloadTicket.getAmount()));
-                    carWaybillVo.setUnloadDate(unloadTicket.getCreateTime() == null ? null : DateUtil.getDateTime(unloadTicket.getCreateTime()));
+                    carWaybillVo.setUnloadAmount(unloadTicket.getAmount() == null ? null : String.valueOf(unloadTicket.getAmount()));
+                    carWaybillVo.setUnloadDateTime(unloadTicket.getCreateTime() == null ? null : DateUtil.getDateTime(unloadTicket.getCreateTime()));
                 } else {
-                    carWaybillVo.setUnloadWeigh(null);
-                    carWaybillVo.setUnloadDate(null);
+                    carWaybillVo.setUnloadAmount(null);
+                    carWaybillVo.setUnloadDateTime(null);
                 }
                 /**亏吨量/吨->装货量-卸货量
                  扣亏量/吨->亏吨量-合理损耗*/
                 carWaybillVo.setDefectiveWeigh(kwtWaybillOrder.getDeficitAmount() == null ? null : String.valueOf(kwtWaybillOrder.getDeficitAmount()));
                 carWaybillVo.setDeduct(String.valueOf(deduct));
-                carWaybillVo.setAppointor(remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()) == null ?
-                        String.valueOf(kwtWaybillOrder.getCreateBy()) : remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()).getName());
+//                carWaybillVo.setAppointor(remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()) == null ?
+//                        String.valueOf(kwtWaybillOrder.getCreateBy()) : remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()).getName());
+                sendCarWeighNumber = sendCarWeighNumber.add(kwtWaybillOrder.getLoadAmount());
+                if (carWaybillVo.getLoadAmount() != null) {
+                    loadAmountNumber = loadAmountNumber.add(new BigDecimal(carWaybillVo.getLoadAmount()));
+                }
+                if (carWaybillVo.getUnloadAmount() != null) {
+                    unloadAmountNumber = unloadAmountNumber.add(new BigDecimal(carWaybillVo.getUnloadAmount()));
+                }
+                if (carWaybillVo.getDefectiveWeigh() != null) {
+                    defectiveWeighNumber = defectiveWeighNumber.add(new BigDecimal(carWaybillVo.getDefectiveWeigh()));
+                }
                 returnList.add(carWaybillVo);
             }
         }
-        return HttpResult.ok(returnList);
+        statistics.put("count", kwtWaybillOrders.size());
+        statistics.put("sendCarWeighNumber", sendCarWeighNumber);
+        statistics.put("loadAmountNumber", loadAmountNumber);
+        statistics.put("unloadAmountNumber", unloadAmountNumber);
+        statistics.put("defectiveWeighNumber", defectiveWeighNumber);
+        Map map = new HashMap<>();
+        map.put("returnList", returnList);
+        map.put("statistics", statistics);
+        return HttpResult.ok(map);
     }
 
     /**

+ 2 - 42
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java

@@ -78,46 +78,6 @@ public class TransportCommonService {
     @Autowired
     public KwtWaybillOrderMapper waybillOrderMapper;
 
-    /**
-     * 获取托运企业名称
-     *
-     * @param param
-     * @return
-     */
-    public HttpResult getConsignCompanyName(String param) {
-        return HttpResult.ok();
-    }
-
-    /**
-     * 获取车牌号
-     *
-     * @param param
-     * @return
-     */
-    public HttpResult getPlateNumber(String param) {
-        return HttpResult.ok();
-    }
-
-    /**
-     * 获取联系人
-     *
-     * @param param
-     * @return
-     */
-    public HttpResult getContactPerson(String param) {
-        return HttpResult.ok();
-    }
-
-    /**
-     * 获取司机
-     *
-     * @param param
-     * @return
-     */
-    public HttpResult getDriverName(String param) {
-        return HttpResult.ok();
-    }
-
     /**
      * 查看订单详情
      *
@@ -160,7 +120,7 @@ public class TransportCommonService {
         KwtLogisticsOrder logisticsOrder = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
                 .eq(KwtLogisticsOrder::getId, dto.getId())
                 .eq(StringUtils.isNotBlank(dto.getDocumentNo()), KwtLogisticsOrder::getLOrderNo, dto.getDocumentNo())
-                .eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId()));
+                /**.eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId())*/);
         if (logisticsOrder == null) {
             log.info("查无单据:{}", JSONObject.toJSONString(dto));
             throw new RuntimeException("查无单据");
@@ -240,7 +200,7 @@ public class TransportCommonService {
         KwtLogisticsOrder logisticsOrder = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
                 .eq(KwtLogisticsOrder::getId, orderDto.getId())
                 .eq(KwtLogisticsOrder::getLOrderNo, orderDto.getOrderNo())
-                .eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId()));
+                /**.eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId())*/);
         if (logisticsOrder == null) {
             result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
             result.setMsg("单据不存在");