Przeglądaj źródła

1、商品、贸易订单、物流订单共功能新增及调整;

zk 2 lat temu
rodzic
commit
8f627cc136
78 zmienionych plików z 1160 dodań i 340 usunięć
  1. 1 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java
  2. 3 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/constant/NumberConstant.java
  3. 1 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/LogisticsOrderEnum.java
  4. 1 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/FileUtils.java
  5. 164 44
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/PasswordUtils.java
  6. 1 1
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/config/easyexcel/CustomCellWeightWeightConfig.java
  7. 1 1
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/config/easyexcel/ExcelConverter.java
  8. 1 1
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/translate/Translator.java
  9. 1 2
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/translate/context/Enums.java
  10. 1 1
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/translate/context/Organization.java
  11. 1 1
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/translate/wrapper/AbstractTranslator.java
  12. 1 1
      sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/ExcelUtil.java
  13. 0 5
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/CompleteLogisticsOrderParam.java
  14. 5 0
      sckw-modules-api/sckw-product-api/src/main/java/com/sckw/product/api/model/GoodsDetail.java
  15. 42 0
      sckw-modules-api/sckw-product-api/src/main/java/com/sckw/product/api/model/GoodsUnitDetail.java
  16. 0 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java
  17. 0 4
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java
  18. 1 1
      sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/ExcelExportController.java
  19. 1 1
      sckw-modules/sckw-example/src/main/java/com/sckw/example/model/vo/ProjectPageVo.java
  20. 1 1
      sckw-modules/sckw-file/src/main/java/com/sckw/file/dubbo/FileDubboApiServiceImpl.java
  21. 1 1
      sckw-modules/sckw-file/src/main/java/com/sckw/file/service/FileService.java
  22. 0 3
      sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmAddressService.java
  23. 11 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java
  24. 23 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/dao/KwoTradeOrderGoodsUnitMapper.java
  25. 49 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrderGoodsUnit.java
  26. 44 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/GoodsUnitDetailRes.java
  27. 41 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/GoodsUnitRes.java
  28. 5 2
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderDetailRes.java
  29. 87 0
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderGoodsUnitService.java
  30. 171 94
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  31. 1 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderStatisticsService.java
  32. 17 0
      sckw-modules/sckw-order/src/main/resources/mapper/KwoTradeOrderGoodsUnitMapper.xml
  33. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java
  34. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsTrackService.java
  35. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java
  36. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeTrackService.java
  37. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementOfflineService.java
  38. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementWalletService.java
  39. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpTradeFreezeService.java
  40. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpWalletPrepayService.java
  41. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpWalletRefundSubService.java
  42. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpWalletRelationService.java
  43. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpWalletService.java
  44. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WalletBusinessService.java
  45. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WalletService.java
  46. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WorkbenchService.java
  47. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/task/FinanceTask.java
  48. 13 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java
  49. 25 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/dao/KwpGoodsUnitMapper.java
  50. 44 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/KwpGoodsUnit.java
  51. 5 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/AddGoodsDraftParam.java
  52. 5 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/AddGoodsParam.java
  53. 33 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/GoodsUnitParam.java
  54. 5 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/UpdateGoodsParam.java
  55. 5 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsDetail.java
  56. 1 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsDropList.java
  57. 42 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsUnitDetail.java
  58. 43 4
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java
  59. 114 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsUnitService.java
  60. 18 0
      sckw-modules/sckw-product/src/main/resources/mapper/KwpGoodsUnitMapper.xml
  61. 1 1
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwAcceptCarriageService.java
  62. 1 1
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwConsignService.java
  63. 1 1
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderStatisticsService.java
  64. 1 1
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java
  65. 1 1
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/ConsignOrderExcelVo.java
  66. 3 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/LogisticsConsignmentController.java
  67. 11 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java
  68. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportStatisticsServiceImpl.java
  69. 7 37
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  70. 27 15
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/CommonService.java
  71. 5 10
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  72. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/DriverService.java
  73. 1 7
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java
  74. 24 53
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java
  75. 10 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ManagementLogisticsOrderService.java
  76. 1 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ManagementWaybillOrderService.java
  77. 18 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java
  78. 1 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java

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

@@ -62,6 +62,7 @@ public enum DictEnum {
     SETTLEMENT_CYCLE_0("settlement_cycle", "0", "周结"),
     SETTLEMENT_CYCLE_1("settlement_cycle", "1", "月结"),
     SETTLEMENT_CYCLE_2("settlement_cycle", "2", "季结"),
+    SETTLEMENT_CYCLE_3("settlement_cycle", "3", "日结"),
     SIGNING_TYPE_1("signing_type", "1", "线上签约"),
     SIGNING_TYPE_2("signing_type", "2", "线下签约"),
     TORDER_ADDRESS_TYPE_1("tOrder_address_type", "1", "装货地址"),

+ 3 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/NumberConstant.java → sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/constant/NumberConstant.java

@@ -1,6 +1,7 @@
-package com.sckw.core.common.enums;
+package com.sckw.core.model.constant;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 
 /**
  * @description:    定义常量
@@ -66,7 +67,7 @@ public final class NumberConstant {
 
     public static final BigDecimal ONE_HUNDRED = new BigDecimal("100.00");
     public static final BigDecimal TEN_THOUSAND = new BigDecimal("10000.00");
-
+    public static final BigDecimal ZERO_TWO = BigDecimal.ZERO.setScale(NumberConstant.TWO, RoundingMode.DOWN);
     public NumberConstant() {
     }
 }

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

@@ -1,6 +1,6 @@
 package com.sckw.core.model.enums;
 
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import lombok.Getter;
 
 import java.util.ArrayList;

+ 1 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/FileUtils.java

@@ -3,7 +3,7 @@ package com.sckw.core.utils;
 import cn.hutool.core.date.DateTime;
 import com.aliyun.oss.*;
 import com.aliyun.oss.model.*;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.StringConstant;
 import com.sckw.core.common.enums.enums.AliyunOssFileTypeEnum;
 import com.sckw.core.common.enums.enums.FileEnum;

+ 164 - 44
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/PasswordUtils.java

@@ -107,23 +107,97 @@ public class PasswordUtils {
         return password.equals(Encodes.encodeHex(saltByte) + Encodes.encodeHex(hashPassword));
     }
 
-    //SELECT GROUP_CONCAT(CONCAT(id, ',', phone, ',', password), ';') str from sckw_fleet.kwf_driver ;
+    //SELECT CONCAT(id, ',', phone, ',', password, ';,') str from sckw_fleet.kwf_driver ;
     public static void checkDriver(){
-        String str = "194387851457073152,15906330241,eecbc181d1b9bb02273a862f9ca0639662664902f4e5825a06e96acd;,\n" +
-                "194388946380132352,16103220127,f98a8a0301209bd99df2b96ea27f3094724affdce28981c27470a8bf;,\n" +
-                "194388946438852608,17803220127,08fa98c73281124a2bb4b1170a32b1deaebe285701562806a7d6e727;,\n" +
-                "194393368019603456,16612341231,0a1d11b99de6505f2e2f199e651617c1c9ba8bf427922706fa47be88;,\n" +
-                "194393368090906624,16612341232,38c0a901185dc2eb85f32f83ea6e7df868e93ac35f0544d6043bd8e3;,\n" +
-                "194393368158015488,16612341233,e71750094efa79c938ec9dfe5fd32145733e9ff52e655d525f3c3dd3;,\n" +
-                "194393368225124352,16612341234,acba7d7141b132e3cb14cd973e7dd6837c0a4d26aefd98cc0a0eb5b1;,\n" +
-                "194393368292233216,16612341235,142b2a094964fbfb57dc58574b8200978b9316fb5642d72f343a7d19;,\n" +
-                "194393368355147776,16612341236,98bdd7f8e72dfd3a5bd4b6d4908ddc3379efcd40fecfcc138fa2b0a2;,\n" +
-                "194393368413868032,16612341237,091acbe6db8039975bafc1ecaae4c0ef7ded3680346d39fe5a516fa4;,\n" +
-                "194393368468393984,16612341238,55b8a0e40bbaa6b2db552fc19eef5de717bf17617b6fb2196ee20dc8;,\n" +
-                "194393368535502848,16612341239,e2cbdb64a6686c0d6fd217a735aace3dcfd12a8ca8df4d6f164045eb;,\n" +
-                "194393368598417408,16612341240,8fbeaab33779c2e176c867b7b1080316fefa249e50d67d067f92de36;,\n" +
-                "194409328453619712,19500567777,826c0f788550c5aa04259284187a794f804bb0f5f6fb805b8a362e2d;,\n" +
-                "194409631877959680,18506461104,21994323cdcd2029c0ae914c1d119ddbbaf62c44cfdc46b236fb809a";
+        String str = "162528614993104896,13868885042,fa4d73f8a688b56bc1810a55d6ddfc32fc7b9a01fad3d9750b5b1521;,\n" +
+                "162528642843283456,18372742349,f9553b1bfa6d9a93a17980bc839541f55c58c52d0c28fb03c5975ac9;,\n" +
+                "162528661445021696,13682474577,f55d95489b74c0f1f0b695f37567e7497e701f223071808a19c9261c;,\n" +
+                "162528680059342848,13445521643,1687d32e8effd59b03ea7b5c443815c19ffd71f4a6cc5fd88ac35585;,\n" +
+                "162528705808175104,18900110011,abbdc7ffa788707ddb73cd71087ecf8bb6171a10a7f7d3d7ed66eff2;,\n" +
+                "162528792894509056,18726962456,e8d913a0d5a50e67d0c77da4c602cfefb830c1ca4dc00cc7feae7a9e;,\n" +
+                "162532384737071104,13723972320,47bdadd33eaf853fecc7e4bd75804b85ade5a203250ed4a5bc464c25;,\n" +
+                "162532402399285248,15791782346,bbecc4516cf0b5572354e4eaca9a615cf724ea9991163adc23319df7;,\n" +
+                "162532423651823616,17533106183,f64fbd7cf95d04e3f7dd9bf70c7d0fbf9c03188cf1022a83388ac464;,\n" +
+                "162532442350030848,16665388156,bb3faf4ace4b37d39939ccca1ed655714870798016788db084c04b0a;,\n" +
+                "162532462239420416,13322117405,94e3ab6d453aea3a4daaf01d18f899b8b7813ddf46419e8ee6004fa0;,\n" +
+                "162532478853058560,15884485779,cf87a95124d50cec64383da7bee1416c2bffff725f67f14937963618;,\n" +
+                "162532496150368256,13606526627,f4de5eecf7d05d0162f509d3398984c416516f1865314c0b4147bd7e;,\n" +
+                "162532512227135488,13152075814,b730ef2e6c132d52aaad78f08ec5f490a8c5c654f2c53ad69f739bc6;,\n" +
+                "162879320946118656,13778787324,0c53e079d76015688a80f5275cd84b0c869b2bbc5f31f3bf42e28b42;,\n" +
+                "162885056979800064,13556563372,2a334bd23460376ab205f72bea8db42939d8885ea6487e0655039303;,\n" +
+                "162894153947025408,16680445687,456a93edc6181221901578faf50e59af6f9322e6453ade1706c5287d;,\n" +
+                "162899666269114368,15884485773,b5dd5489ea9c62bde7c4b96f89dccc08613a6dcdd9a5041f6bad9d33;,\n" +
+                "162899741896609792,13447413233,d121c7e7be962f9e385dacfb89cb8a6d34b109e02313ecc0eb0be93a;,\n" +
+                "163454586206556160,18583328871,4c2d3b238396180e3c4ae5a353e8579ff860eb3feb2178b8c157d886;,\n" +
+                "163965635959721984,18583328873,c900ba7b6a0a5270d51a612d6b3b3d7c1182035a31e16db6fcd509b4;,\n" +
+                "166974007806005248,19500000099,5dcaf43a00b3ed7c1c51fd32bce313d60d06d561dca033aa75cdd06b;,\n" +
+                "166979180402053120,19500000069,b84a34ecab63b787809e1df9d87e4d2fc9363b79f1608203331a65c7;,\n" +
+                "166979180473356288,19500000070,a9a997a9f97d04da8bccd6f2fd63c2e46933c4f484e60e5ee0e53287;,\n" +
+                "166979180548853760,19500000071,4c1721423a226e2d339a8ca817a173e75ebfbf7feda3c5482bd2545a;,\n" +
+                "166979180620156928,19500000072,8c8ee4d0c16bb9cc2574b99b34295cd215fa19166270ac77036774ad;,\n" +
+                "166979180695654400,19500000073,89e971ddb05ddf753d0b4c8dc8f8ae467fdc48ba7616befb9eee43b3;,\n" +
+                "166979180762763264,19500000074,c8c035a374d62d7ec760db261fa7348519d111161cc5de923d90e54a;,\n" +
+                "166979180838260736,19500000075,381073889a0e6d16cbb958fe6db49d8b56f71b9ae79640776ec46aaa;,\n" +
+                "166979180896980992,19500000076,ce83efb5b22d3ebf999baf08077ad0e30597824baf70533e1149954a;,\n" +
+                "166979180989255680,19500000077,3020906e4e9c0a2fac6fc9b299326ef97e307d2e6df53a4dcd0330e7;,\n" +
+                "166979181056364544,19500000078,9a7d43c3c506d6be42b68ccaee512bcebfa6ad9bde5840bc84bc59db;,\n" +
+                "166979181110890496,19500000079,bc618cba847d2c023930c41707d0409470f81b78ae0236873462e3a8;,\n" +
+                "166979181169610752,19500000080,19dc91f8b87ee075b9df6eb589176e59dae7ceb6623770a85b54038e;,\n" +
+                "166979181236719616,19500000081,abd3d8506775b5fb0dd3e3595d9e31bf250fa23d82b7a6b289c7ba61;,\n" +
+                "166979181295439872,19500000082,e5fb3886bfa37342b4f3792e183c6cf5a276601ea2fe11fdee89af1a;,\n" +
+                "166979181404491776,19500000083,6dbc2a8c788d1e6bea6a8cfa2585eb4d907d92f153f3d94697b64109;,\n" +
+                "166979181475794944,19500000084,5029b1475afa8ce6d7c1a60b80475d9b5dee180c70de1c74029a7726;,\n" +
+                "166979181538709504,19500000085,215f5d15fd7951f0351e570150467ebf8ca89639491f61745c22cc7d;,\n" +
+                "166979181589041152,19500000086,9f4b4456afabb0f147361fb9631104ac1ab955396a59f2fab89f5015;,\n" +
+                "166979181643567104,19500000087,5c007ab468137c636097a72efa0dbb731db44bef5ff87425dc23d5d8;,\n" +
+                "166979181698093056,19500000088,94c9d496b91681870c36a6c69e0e595f7cd2caa7608f45342a0b1a4f;,\n" +
+                "166979181752619008,19500000089,3f37860a1435c494ebe9e2e9e3c8ae3ace669a36058cac2ef4c126f0;,\n" +
+                "166979181807144960,19500000090,7e507b6a549f8e7de9759b91cf13784d3f9192eedc57543194eb1bc6;,\n" +
+                "166979182029443072,19500000091,8012fc3b3310d763b2e431b2cb728842b189fa2694a36c39b34803ad;,\n" +
+                "166979182092357632,19500000092,57a41f35b66543f6b2744d7ab8bb4d6874dc786ad53830a3080b9c2d;,\n" +
+                "166979182184632320,19500000093,289285ea9961fa8262f2700885c26e9487b8ae3b89ba6ea72a63a130;,\n" +
+                "166979182243352576,19500000094,1f4226de4d2df148e9dd5a17bf67c433ce8d7f5cec43465bae96e9c2;,\n" +
+                "166979182293684224,19500000095,0490dc000e6dd21530bffcce3f2e02f4de6406e65eccb0b9157c4d8d;,\n" +
+                "166979182352404480,19500000096,97d7d20af5a9c6becc697a0d667b6275ca21cdfc3de6f290c513b160;,\n" +
+                "166979182406930432,19500000097,017ffd866343fb28f3e315b72b6e13d098a6168f2de22379f5993949;,\n" +
+                "166979182465650688,19500000098,51ad2c225b6940f98d62e0945f7479db3b464e0266d0877e0e21cfb7;,\n" +
+                "167213991624445952,19500000055,b47056210b158ca57b35907206bda7afaf1d4b6eb70922563feb3b34;,\n" +
+                "167213991754469376,19500000056,4cf5663948054ab50f0b4eb8d66e82c9b14777e06a48b4ac56f342ef;,\n" +
+                "167213991813189632,19500000057,6a364842ed98d03fc78ae61111794171791e7c2017de54d67c374297;,\n" +
+                "167213991909658624,19500000058,81c6cdefd625468af303339db329190ad46996fe0ff6686de6c86e7a;,\n" +
+                "167213991964184576,19500000059,21a0f70bf87e6a3c8d6e4e49b84d1a7819957207682933654056b72c;,\n" +
+                "167213992027099136,19500000060,88404bed55005f80e1a61d22969a2effe7955606fe7289d64b3ade5f;,\n" +
+                "167213992090013696,19500000061,c674846dcd0d3bacc69e488d8ba477af75a76f533932c0a3e95491b6;,\n" +
+                "167213992144539648,19500000062,66b84316146a56c56f8b5706a4601278f235490c8fc2e6fd1dc27cc7;,\n" +
+                "167213992207454208,19500000063,e28acaa45401be9162305d3b1e83fb372b8f0da139ffc054585c920c;,\n" +
+                "167213992274563072,19500000064,86a679de0ab614cc0afdc3d22688ff832f05c6fbc1057d4630d2b52c;,\n" +
+                "167213992329089024,19500000065,61bb806f0a125f0fc3e21ee73db9e53caa7dd51e3d63064eb1966e34;,\n" +
+                "167213992400392192,19500000066,07fc1f3f7354d9335d8c0937a4839c16a7a672ec11787131979bfc62;,\n" +
+                "167213992459112448,19500000067,b8e9a1aa729fa4ab9aa771d1a844b1e06cf023adec4185ab17f7b79e;,\n" +
+                "167213992551387136,19500000068,68b1afac745118d6a67bbea775acc5e1756856cd450897f9097706f1;,\n" +
+                "170549931663167488,17358629955,8364df818959f2c4a27607bced79945e09973a32121d96bd5c4710a9;,\n" +
+                "172375269049372672,18581845668,3f57140083d2558bdfcb8a319b52b3c86f992af5dde4b21007ea5733;,\n" +
+                "172442643224072192,19500000001,3e742de4560ce2ed6658119124f26b097a5c0d19b577b95c6aaca509;,\n" +
+                "172442643400232960,19500000002,3d6020290d2d8f05e34884e1cff29e99be8a299c4dc4af4008f7d39f;,\n" +
+                "172442643479924736,19500000003,077fe8b72511e26077e2c7bcc2bc9ad98e905dd10dfaf4b50c1d72fb;,\n" +
+                "173041758513401856,19988888888,7080f75c426af4a958092ea7d40fc3c8d4c7ddb4fa9d847153788368;,\n" +
+                "173043956366446592,15902849627,be354600d28ea42df3df93aeb6cb08a33674effe54f46e5394bf491c;,\n" +
+                "177401688267689984,15515950395,0bdbc09d1c08e53286dfe3d2dcd3c014341055d65744331d81a1e3b8;,\n" +
+                "184341399146074112,19600000090,aebcacc7e710a97fa381aaf8426de9826d6a0985f555ccf4669d4960;,\n" +
+                "184341699865088000,19600000091,af779edd56faf31dd9a92c24e82a834045a3126cc0b09b52d3409827;,\n" +
+                "184342227026186240,19600000092,bedd46ac733d0b64fe599541b463b16ac3cf68a79cfb6e04ee31e962;,\n" +
+                "185002976673271808,15515955555,d5ce819e1cf9988686cb8665368ead4a08841f0a90e40ecf9eb683d6;,\n" +
+                "185003553801113600,18283808586,50e1e1389468deb93322ea3c091878b2586dc486fe917cf9097ab3c4;,\n" +
+                "192321823566729216,16612341231,d13779d353a8c3db5656bb395a27303b4aefda8ec135a4f8265e0616;,\n" +
+                "192321823675781120,16612341232,eaf94160cb3ccdebe9bbe98df17751fbcf3d1e7f07d71a1b19b2626e;,\n" +
+                "192321823822581760,16612341233,739b5b9fa279879a5a5e17917960164cd2a573721fe7ffdb188852d1;,\n" +
+                "192321823906467840,16612341234,175b2cba6cd4d713a6ab08b1c32f8e76c87027a6812469689540da5c;,\n" +
+                "192321823981965312,16612341235,5d745fda9bf8d5f86863d658751ef8a7c86cbc8184733cbfa1e8dc4f;,\n" +
+                "192321824061657088,16612341236,b25748c67ab38eabf06c9d6f2c2c3f867ecac3c1a26cf4332d68d42a;,\n" +
+                "192321824149737472,16612341237,d142b7439d2e75e7d2c5b9aac2255b4de80bf71374b2181b7b50f9aa;,\n" +
+                "192321824246206464,16612341238,2f06cc01f3185ae6237d82f310c0d7952c67b2395660f7be3d9b1ac6;,\n" +
+                "192321824317509632,16612341239,2d8d693e43d2460fae648f361bfd66d0ee2735af3bced6b2b9b1bd5d;,\n" +
+                "192321824397201408,16612341240,95791a4a26edb107cb0f3f7801136e07f7075b8be8d0be2da88549eb";
         String [] strArray = str.split(";,");
 
         for (int i=0; i<strArray.length; i++) {
@@ -169,34 +243,80 @@ public class PasswordUtils {
         }
     }
 
-    //SELECT GROUP_CONCAT(CONCAT(id, ',', account, ',', password), ';') str from sckw_system.kws_user ;
+    //SELECT CONCAT(id, ',', account, ',', password, ';,')  str from sckw_system.kws_user ;
     public static void checkUser(){
-        String str = "169520380059085809,admin,dcfd0a2425c0de428320fcc50074bdd033c45fb4fff265acaa6c830c;,\n" +
-                "193405441856770048,18283808586,ff1c276be8f9577275fae9608343524953e38581bd26e52e42ba0a5d;,\n" +
-                "194251365315252224,15801137739,c055ed325fdbbd7c095e8c39b59408acf089acee383729f968935fa2;,\n" +
-                "194252595617861632,18380201987,eda6ee2147d86880cba6d1e2111624085df3c32858174b75c669adfe;,\n" +
-                "194375643914309632,18710012002,a8af5ad674a04cc90cb78ab6c53e40fc4c0b6d7065cb6541eaf8c886;,\n" +
-                "194376269352144896,19205948910,031224aeae6d02e9e1c755cfed0ae1c1803e669e57fc47607ccebb74;,\n" +
-                "194376374100692992,17750298505,c6e4df2faf2939bc1b39fc528743599443f205d0507f9761d8759500;,\n" +
-                "194376500345049088,18529548150,6a95964ddc93c15cd83e0f55f0c17b36997d0cad73143a87451a2187;,\n" +
-                "194377428502581248,18100050000,197aa10bff5b541e67a2e85a62a2b4d4f84c784e70bbf0e8b4c57df8;,\n" +
-                "194377529241374720,17100090006,6b68268087f4495eb2d24980d8ef56f160643f28d5f67beb2e5eae6b;,\n" +
-                "194378310820564992,19910563333,9070ff23de771125406b8d3d64a14aa1ce125e306c9b56b2f413ba01;,\n" +
-                "194378481813950464,18502566623,51d4b149e6fd5366cd45028dba205ea434b8edce3850b9fe1e694828;,\n" +
-                "194378661632151552,17751566023,223eda5ad43165208ff7a5c541ddf2973dce39d483fd54d82986b06c;,\n" +
-                "194383671120105472,19654891650,7ff015c59d999de3d85590b138c5d0d2983a9d7aceb7e3d566b2a20d;,\n" +
-                "194384082614882304,18156236660,332583f0b7c076efbf561dc7025fba48f1ac325144792ab06b7a4ec9;,\n" +
-                "194384245366460416,19256623205,26aa57ed3d6d01800da79bc3d10fd73178704075d79cd6a9be41733a;,\n" +
-                "194402508158799872,17502110364,f60953f94b492032c2e0f3c742cac0984e45054edd94fcd530285deb;,\n" +
-                "197430014709338112,17358629955,44eeb2b99ce96cc1c4e8162abd138f7f019ee1ea1cf5c1d1648d0c8c;,\n" +
-                "199490721361694720,18030803579,753dab2d3f5ffa69e89c6163b50b9612449291afc6fe4b0db126dbaa;,\n" +
-                "207880065764036608,18300010002,98d2055673659cad04f65eba0ee52dc35a099d7ccdd46776d802c55d;,\n" +
-                "207880550084513792,18300020003,e3f22b98f72adf2e6a09e7542c405f7f521e804b43c31abe229ef0d7;,\n" +
-                "207880951399714816,18300030004,7b7af846238801469c34a6db66e6a78933b17d41efbdaa72aa77c2d1;,\n" +
-                "207881177372037120,18300040005,0db2a482339a344c570ee0498d30c3d8ca01ffd6759d7422399e73aa;,\n" +
-                "207881693040742400,18300050006,fd636774436e0c77a890becf88c221e6124b05af7df20e0fdb89af00;,\n" +
-                "207882233887854592,18300060007,a673662bdf4c56ca8dccfd5da47d537ba397c00ff450fc4b7164aaee;,\n" +
-                "208907056642527232,18725603264,8aa9ec1c5ec2e73a2648745350b49b9cbb3629dbf417fe6b18f44306";
+        String str = "156382319433748480,18000000000,be8d1ae3fac3067ee98068cce2895ad305febbe31a644fe42954de0c;,\n" +
+                "156383116720607232,admin,04323ed6811d048e0406ec39293394aabcf9b132a0cb1b87dc78279f;,\n" +
+                "162301006506364928,182838089858,cf2f6d38f0b8a150d90d9194b97875c004413880cf7aba8abf3b3dc7;,\n" +
+                "162604062133456896,13000000000,cf2f6d38f0b8a150d90d9194b97875c004413880cf7aba8abf3b3dc7;,\n" +
+                "163980531141185536,18283808586,debc2bab5eaf7b629049666051ad504bc60bea9eeab95932f64054a9;,\n" +
+                "163987895701475328,15902849627,ecc16d89238b2cd77637b41096e322a3f89c345ac10297a5fc7b61e3;,\n" +
+                "163994695842664448,18283808587,0a842bee1f75c4939d408eae02f575fad005cec391b7cc1eec6f5882;,\n" +
+                "163995870587523072,18283808581,1b7383f4d6e458fb610bcc7a80cc959ed13c83a30063401b82fa1245;,\n" +
+                "163995977299005440,18283808582,cebab3009b34e77708385c2af5595de5e739aadf435542d22d1b66ec;,\n" +
+                "163996113957818368,18827222222,3182b6bba4c90445e2d16a8901653866a707d9a1a2dc499f8af37546;,\n" +
+                "163996259454029824,18827766520,4b32a9a0b4dabe5b920a78d5115febf3b87d45ceebe5715d11b53dad;,\n" +
+                "163996369839722496,17722337872,c676f2924969a10ce4f059b1894bded8061a01d0252f3a789ce8b9ad;,\n" +
+                "163998264054517760,13911111111,65ffa259c8ba2660438f28a09851182b615dc16b7188006d67d2d661;,\n" +
+                "164072870236917760,18591918877,9ca66c47aad850e4b22b7df5acbe58a33b3a1be4fa70315e9eff8bf2;,\n" +
+                "164357889975128064,18283808584,1fd478d1d3f61d341c6cc1065b9e02833e314102be2528fbf292ed87;,\n" +
+                "164480042405990400,18283765365,ce181135763e284d6748012dbe53bcac767ea60d0306b0f04e1b3ffd;,\n" +
+                "164697036837359616,18583328873,cf2f6d38f0b8a150d90d9194b97875c004413880cf7aba8abf3b3dc7;,\n" +
+                "164697518171492352,333,9bb4f1afbdf520c28a8a9f9e4a568a4743ad62f319a17ed9437414b5;,\n" +
+                "169411694739591168,18725603264,5ea1c34a749cfd9c84b9aad577c5bae2cf12444a1f4b6c2bbac6cf67;,\n" +
+                "169832563756503040,18989898989,796c6a422bce78cced07918f759fe9ed5ee300ea3953e00fc71c24cc;,\n" +
+                "169832563794250001,17358629900,15896f181b1311a52fea135b46d95dceb14a9be0a9f70e5471fdbed8;,\n" +
+                "169832563794250002,18581845600,1b26b8eeba0c5dfc6ec66bea3d5a744e1f254db639114e290f328a36;,\n" +
+                "172804004273721344,17358629955,1b26b8eeba0c5dfc6ec66bea3d5a744e1f254db639114e290f328a36;,\n" +
+                "172804804509175808,18581845668,5c14b84bf8b4ff37289367942d176ae99353d4554cd68504d480099f;,\n" +
+                "172805173922500608,19940686355,f90c137bf2dafdbd0f44c737f3308dd3b6eccc9ca901f8561655235f;,\n" +
+                "174848836286550016,18728803519,ffe135b89706c8118e183f6e2724605be2e57eaef88a83fa161988b7;,\n" +
+                "174849409274613760,18728803520,5a70e23e8f39c898151c2f220c0b4b8cc5ec325754871e05cc97ad6f;,\n" +
+                "174921932133634048,18508243826,154e6e02db2c56eb30e012053ad6f1e3aa1c3124057f6fd1ff08c1b1;,\n" +
+                "175194057557938176,18583328875,c1048c9ae5cbb7c3479611eb279780ee2f4bf4e14e518fb416e04889;,\n" +
+                "177044507026526208,17780832879,2ce6f28d73a8741b4f9621bb533fc7a041341438afcf9240fa06e694;,\n" +
+                "177154391646670848,18728803521,fb776988fb19dd63086ae88f37de4a01fdce26038bbba073b33e5533;,\n" +
+                "177493080700620800,17358629911,ffcc7ac864f6d951318db5643078bacf95499c2c9f0b376e30d31134;,\n" +
+                "177493191988088832,17358629922,5ee3b6ee0049014f63ae1288b9f731c8ae05e674169245539ef9d8cf;,\n" +
+                "177493399400615936,17358629901,e8a9cdf5659204ce9b16cade7073764c0a3b2136bd1750b563132190;,\n" +
+                "177493603818409984,17358629933,d6bd668a876e4dcdc9eefb6059a4e9c2969d8ce54b3d42f5b9a49573;,\n" +
+                "177495184064385024,18581845611,53f2cb77f34992dc1785d662792df69d1f7e52e50450a87446b31445;,\n" +
+                "177495269858873344,18581845622,9e397e5e54145865a9a3c55d75ea4c5105847daf6937eb0b9d66ee9e;,\n" +
+                "177495384933797888,18581845633,bc425341f50b1f2b26f1f4092d212147022912e96c022c6b8e85e2b0;,\n" +
+                "177496454816862208,19940686311,31c8cc61c09d079e26ed7dbaf7b650a36addbacab8e094c7744b4f4f;,\n" +
+                "177496522529705984,19940686322,7ff53f4b835ca96d36a0683d7d3ea6e597d47e11005948b113962b22;,\n" +
+                "177496618457632768,19940686333,cf7fce7ad2d0912cc8b655c71b7984a4f679184ab6f0121b34b2cddf;,\n" +
+                "177755619585953792,18581845644,492a18b9c21963e38bd5c5be7aea349f9fbba6256bc5409e882ed165;,\n" +
+                "177756009534590976,19940686344,8f53c645f492e0856baf623bdd1d9ba94715397de929223e17f3b311;,\n" +
+                "177756500125552640,17358629944,b046904d8cff8812692a078307d233bf18a6ed12751dc6e540f1d17c;,\n" +
+                "179251265040027648,18900001111,17b95c44a4be220ec241ea66fac83941afbd438fe97b9aba4e587f19;,\n" +
+                "179251480232988672,18900002222,7a98d8432666fbae4f976be6aee0725d83fc85e9a4140400ac3fc08b;,\n" +
+                "179287301304619008,15770000850,457b71ac5eb35cd72f54f260dc2e720f435ad18e3fec50c5f308f16e;,\n" +
+                "179567500780900352,18215677925,1212403ea6c37724ce3deccf3a3e84c82cd5503cac054782329e0b38;,\n" +
+                "179908046275743744,17310362742,e68281cfa1b49d333e51e9773fb955e10908795987892282e004791e;,\n" +
+                "180714251143352320,5464,4e834fbf535588ab64752d3609e3606eae0387cbfdc1a011626f0af1;,\n" +
+                "180716172793090048,1534543545,2df806f9dad1fe9aa1afb3592ff309e3c6821fe9f593ffcc7c765d4f;,\n" +
+                "180717765986881536,34234,514134b6e51a189d5e02d1e439d6616aedbe5e73395970efe01fffc5;,\n" +
+                "180741718713307136,16500000000,61d1ece89fac8414762ab7faa173cf8707c7e7137cd22e93652ccb4a;,\n" +
+                "180742245102653440,16600000000,2e7a7e603c4883cc5bd859af38482d4fab1eec756a7653cad697becd;,\n" +
+                "182077378799865856,15515955555,5957560d39adc6269948ae1a2eda73c1a451164557a831e025fdc0d9;,\n" +
+                "182445986600194048,14000000000,475211e9bdb02f694c17a468ba33f395c87cdcda6ef343a2c7dc86a2;,\n" +
+                "182446432941248512,17000000000,ca0feeb8ca30dae8ab38d2ff07840f731777d6514c92cd5dfdc1902d;,\n" +
+                "184622287863943168,17358621111,f4e4bab7497534fdf1487ce2951fbaf0d8b9463f6ad7166275dc9a84;,\n" +
+                "184622549060030464,17358622222,424df61b9291ada971db0005c29be190602165aeb2c9295c107ce8b9;,\n" +
+                "187262271745953792,18777777777,27005458fed283da910fcbcfea4cc877454ab47164525074fc6792a1;,\n" +
+                "187263867661848576,18900000000,b41bc19f522840bcf88da64d8fc93d9938252856c95d174d24796796;,\n" +
+                "187266156040556544,18666666666,b83ca58b0f533a98bbb9a72857725aca1ceb8476ac6a6118fb5ea7cf;,\n" +
+                "187266875430801408,18555555555,256f34d839db85a12eb46c21135a9d0b9a058ba26e83099b3951275f;,\n" +
+                "187674506012135424,14777777777,dd4a6928d63b57f85a5dad13b5f6581ddaef2f47ce613f6d8cebed15;,\n" +
+                "187932221632417792,18922111111,915d03daa67403dace1077063afff2f99bc78f27cf1eff476267637d;,\n" +
+                "187933261320687616,18922111112,d10029a3a9f3176ee2ea6516add9f94e0273cd5e1e507eca5e9c8754;,\n" +
+                "191139325050621952,18912349988,b36e322666a0b260d5b5bbcba6622f30ce59653892044830f9988554;,\n" +
+                "191958030668009472,18922993333,bbf608392522d9c2faf7015c376e1a762ac7108ac9cb089d9ca4baf8;,\n" +
+                "191973351617466368,16666666666,94e66bf955c8ec094bf202350438ffffcc2c203141d9b98f4c47f671;,\n" +
+                "192247281867558912,16600060066,9aec2a414a09c87257ac8d0b5d53b6828c255a51a57a271c54266e56;,\n" +
+                "192337955283537920,17777777777,028515cdef747a5eea5a268c30906af1661e08a8807bf2f702b8ca66;,\n" +
+                "193055960644718592,14444444444,0fbacd064a22b0e35152991552a11cb793ded61438d713912667c5ec";
         String [] strArray = str.split(";,");
 
         for (int i=0; i<strArray.length; i++) {
@@ -255,7 +375,7 @@ public class PasswordUtils {
 
         boolean bool = PasswordUtils.validatePassword(account + md5, password1, salt);
         System.out.println(bool);
-        //checkDriver();
+        checkDriver();
         //checkUser();
     }
 }

+ 1 - 1
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/config/easyexcel/CustomCellWeightWeightConfig.java

@@ -6,7 +6,7 @@ import com.alibaba.excel.metadata.data.CellData;
 import com.alibaba.excel.metadata.data.WriteCellData;
 import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
 import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.CollectionUtils;
 import org.apache.poi.ss.usermodel.Cell;

+ 1 - 1
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/config/easyexcel/ExcelConverter.java

@@ -5,7 +5,7 @@ import com.alibaba.excel.enums.CellDataTypeEnum;
 import com.alibaba.excel.metadata.GlobalConfiguration;
 import com.alibaba.excel.metadata.data.WriteCellData;
 import com.alibaba.excel.metadata.property.ExcelContentProperty;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.excel.annotation.EasyExcel;
 import lombok.extern.slf4j.Slf4j;
 

+ 1 - 1
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/translate/Translator.java

@@ -1,7 +1,7 @@
 package com.sckw.excel.translate;
 
 
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.exception.SourceInitializeException;
 import com.sckw.core.exception.TranslateException;
 import com.sckw.excel.translate.annotation.Translate;

+ 1 - 2
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/translate/context/Enums.java

@@ -1,10 +1,9 @@
 package com.sckw.excel.translate.context;
 
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.exception.SourceInitializeException;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
 import com.sckw.excel.translate.Sources;
-import jakarta.annotation.PostConstruct;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.Ordered;
 import org.springframework.data.redis.core.RedisTemplate;

+ 1 - 1
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/translate/context/Organization.java

@@ -1,7 +1,7 @@
 package com.sckw.excel.translate.context;
 
 import com.alibaba.fastjson.JSON;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.excel.translate.Sources;
 import com.sckw.core.exception.SourceInitializeException;
 import com.sckw.excel.translate.properties.TranslateProperties;

+ 1 - 1
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/translate/wrapper/AbstractTranslator.java

@@ -1,7 +1,7 @@
 package com.sckw.excel.translate.wrapper;
 
 
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.exception.TranslateException;
 import com.sckw.excel.translate.annotation.Translate;
 import com.sckw.excel.translate.annotation.Translates;

+ 1 - 1
sckw-common/sckw-common-excel/src/main/java/com/sckw/excel/utils/ExcelUtil.java

@@ -6,7 +6,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.write.metadata.WriteSheet;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.alibaba.fastjson.JSONObject;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.annotation.ExcelContext;

+ 0 - 5
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/CompleteLogisticsOrderParam.java

@@ -39,11 +39,6 @@ public class CompleteLogisticsOrderParam implements Serializable {
      */
     private BigDecimal actualUnloadAmount;
 
-    /**
-     * 物流订单是否已全部完结(废弃)
-     */
-    private Boolean isAllComplete;
-
     /**
      * 更新用户id 需传,订单状态变化记录需要
      */

+ 5 - 0
sckw-modules-api/sckw-product-api/src/main/java/com/sckw/product/api/model/GoodsDetail.java

@@ -202,4 +202,9 @@ public class GoodsDetail implements Serializable {
      */
     private List<GoodsAttributesDetail> attributes;
 
+    /**
+     * 辅助单位
+     */
+    private List<GoodsUnitDetail> assistUnit;
+
 }

+ 42 - 0
sckw-modules-api/sckw-product-api/src/main/java/com/sckw/product/api/model/GoodsUnitDetail.java

@@ -0,0 +1,42 @@
+package com.sckw.product.api.model;
+
+import lombok.Data;
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * desc 商品-单位换算
+ * author zk
+ * date 2023/12/4 0004
+ */
+@Data
+public class GoodsUnitDetail implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 43704905372870133L;
+
+    /**
+     * 被转换单位
+     */
+    private String fromUnit;
+
+    /**
+     * 被转换单位
+     */
+    private String fromUnitName;
+
+    /**
+     * 转换目标单位
+     */
+    private String toUnit;
+
+    /**
+     * 转换目标单位
+     */
+    private String toUnitName;
+
+    /**
+     * 换算值
+     */
+    private Double conversionValue;
+}

+ 0 - 4
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractLogisticsService.java

@@ -120,10 +120,6 @@ public class KwcContractLogisticsService {
     @Value(value = "${jumpUrl.appAcceptanceSendContract}")
     private String appAcceptanceSendContract;
 
-
-    @Value(value = "${filePathPrefix}")
-    private String filePathPrefix;
-
     /**
      * @param reqVo 新增入参
      * @desc: 新增托运合同

+ 0 - 4
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/KwcContractTradeService.java

@@ -131,10 +131,6 @@ public class KwcContractTradeService {
     @Value(value = "${jumpUrl.appAcceptanceSendContract}")
     private String appAcceptanceSendContract;
 
-
-    @Value(value = "${filePathPrefix}")
-    private String filePathPrefix;
-
     /**
      * @return PageResult
      * @desc: 分页查询

+ 1 - 1
sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/ExcelExportController.java

@@ -1,7 +1,7 @@
 package com.sckw.example.controller;
 
 import com.alibaba.fastjson.JSONObject;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.file.FileInfo;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.core.utils.StringUtils;

+ 1 - 1
sckw-modules/sckw-example/src/main/java/com/sckw/example/model/vo/ProjectPageVo.java

@@ -1,7 +1,7 @@
 package com.sckw.example.model.vo;
 
 import com.alibaba.excel.annotation.ExcelProperty;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.enums.ProjectStatusEnum;
 import com.sckw.excel.annotation.EasyExcel;
 import com.sckw.excel.annotation.ExcelContext;

+ 1 - 1
sckw-modules/sckw-file/src/main/java/com/sckw/file/dubbo/FileDubboApiServiceImpl.java

@@ -1,6 +1,6 @@
 package com.sckw.file.dubbo;
 
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.FileEnum;
 import com.sckw.core.model.file.FileInfo;
 import com.sckw.core.utils.FileUtils;

+ 1 - 1
sckw-modules/sckw-file/src/main/java/com/sckw/file/service/FileService.java

@@ -3,7 +3,7 @@ package com.sckw.file.service;
 
 import com.aliyun.oss.model.OSSObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.StringConstant;
 import com.sckw.core.common.enums.enums.FileDisposeLayoutEnum;
 import com.sckw.core.common.enums.enums.FileEnum;

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

@@ -63,9 +63,6 @@ public class KwmAddressService {
     @Autowired
     private CommonBusinessService commonBusinessService;
 
-    @Autowired
-    private RemoteManageServiceImpl remoteManageService;
-
     @DubboReference(version = "1.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
 

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

@@ -192,4 +192,15 @@ public class KwoTradeOrderController {
         return HttpResult.ok("获取贸易订单地址下拉列表成功", kwoTradeOrderService.getAddressDropList());
     }
 
+    /**
+     * @param id 贸易主键ID
+     * @desc 查询贸易订单商品关联单位
+     * @author zk
+     * @date 2023/12/4
+     **/
+    @GetMapping("/goodsUnit")
+    public HttpResult goodsUnit(@RequestParam Long id) {
+        return HttpResult.ok(kwoTradeOrderService.goodsUnit(id));
+    }
+
 }

+ 23 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/dao/KwoTradeOrderGoodsUnitMapper.java

@@ -0,0 +1,23 @@
+package com.sckw.order.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sckw.order.model.KwoTradeOrderGoodsUnit;
+import org.apache.ibatis.annotations.Mapper;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @desc 交易订单商品信息-单位换算
+ * @author zk
+ * @date 2023/12/4 0004
+ */
+@Mapper
+public interface KwoTradeOrderGoodsUnitMapper extends BaseMapper<KwoTradeOrderGoodsUnit> {
+
+    /**
+     * 查询交易订单商品信息-单位换算
+     * @param params 查询参数
+     * @return 交易订单商品-单位换算信息
+     */
+    List<KwoTradeOrderGoodsUnit> findGoodsUnit(Map<String, Object> params);
+}

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

@@ -0,0 +1,49 @@
+package com.sckw.order.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.sckw.core.model.base.BaseModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @desc 交易订单商品信息-单位换算
+ * @author zk
+ * @date 2023/12/4 0004
+ */
+@Data
+@Accessors(chain = true)
+@TableName("kwo_trade_order_goods_unit")
+@EqualsAndHashCode(callSuper = false)
+public class KwoTradeOrderGoodsUnit extends BaseModel implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 4294999834090510304L;
+
+    /**
+     * 交易订单id
+     */
+    private Long tOrderId;
+
+    /**
+     * 商品id
+     */
+    private Long goodsId;
+
+    /**
+     * 被转换单位
+     */
+    private String fromUnit;
+
+    /**
+     * 转换目标单位
+     */
+    private String toUnit;
+
+    /**
+     * 换算值
+     */
+    private Double conversionValue;
+}

+ 44 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/GoodsUnitDetailRes.java

@@ -0,0 +1,44 @@
+package com.sckw.order.model.vo.res;
+
+import lombok.Data;
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * desc 交易订单商品信息-单位换算
+ * author zk
+ * date 2023/12/4 0004
+ */
+@Data
+public class GoodsUnitDetailRes implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 45704905372870133L;
+
+    /**
+     * 被转换单位
+     */
+    private String fromUnit;
+
+    /**
+     * 被转换单位
+     */
+    private String fromUnitName;
+
+    /**
+     * 转换目标单位
+     */
+    private String toUnit;
+
+    /**
+     * 转换目标单位
+     */
+    private String toUnitName;
+
+    /**
+     * 换算值
+     */
+    private Double conversionValue;
+
+
+}

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

@@ -0,0 +1,41 @@
+package com.sckw.order.model.vo.res;
+
+import lombok.Data;
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * desc 交易订单商品信息单位
+ * author zk
+ * date 2023/12/4 0004
+ */
+@Data
+public class GoodsUnitRes implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 47704905372870133L;
+
+    /**
+     * 值
+     */
+    private String value;
+
+    /**
+     * 名称
+     */
+    private String label;
+
+    /**
+     * 是否为主
+     */
+    private boolean isMain;
+
+    public GoodsUnitRes() {
+    }
+
+    public GoodsUnitRes(String value, String label, boolean isMain) {
+        this.value = value;
+        this.label = label;
+        this.isMain = isMain;
+    }
+}

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

@@ -7,7 +7,6 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 import lombok.experimental.Accessors;
-
 import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -162,7 +161,6 @@ public class OrderDetailRes implements Serializable {
      */
     private GoodsInfoDetailRes goodsInfo;
 
-
     /**
      * 单位信息
      */
@@ -183,4 +181,9 @@ public class OrderDetailRes implements Serializable {
      */
     private List<OrderProcess> orderProcess;
 
+    /**
+     * 辅助单位
+     */
+    private List<GoodsUnitDetailRes> assistUnit;
+
 }

+ 87 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderGoodsUnitService.java

@@ -0,0 +1,87 @@
+package com.sckw.order.serivce;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.utils.BeanUtils;
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.order.dao.KwoTradeOrderGoodsUnitMapper;
+import com.sckw.order.model.KwoTradeOrderGoodsUnit;
+import com.sckw.order.model.KwoTradeOrderUnit;
+import com.sckw.order.model.vo.res.GoodsUnitDetailRes;
+import com.sckw.system.api.RemoteSystemService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * @desc 交易订单商品信息-单位换算
+ * @author zk
+ * @date 2023/12/4 0004
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class KwoTradeOrderGoodsUnitService {
+
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
+
+    private final KwoTradeOrderGoodsUnitMapper goodsUnitMapper;
+
+    /**
+     * @param units 单位换算信息
+     * @desc 批量新增
+     * @author zk
+     * @date 2023/12/4
+     **/
+    public int insertBatch(List<KwoTradeOrderGoodsUnit> units) {
+        AtomicInteger count = new AtomicInteger();
+        if (CollectionUtils.isNotEmpty(units)) {
+            units.forEach(e -> {
+                count.addAndGet(goodsUnitMapper.insert(e));
+            });
+        }
+
+        return count.get();
+    }
+
+    /**
+     * @param orderId 订单信息ID
+     * @desc 批量更新
+     * @author zk
+     * @date 2023/12/4
+     **/
+    public void delByOrderId(Long orderId) {
+        LambdaUpdateWrapper<KwoTradeOrderGoodsUnit> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(KwoTradeOrderGoodsUnit::getTOrderId, orderId).eq(KwoTradeOrderGoodsUnit::getDelFlag, Global.NO)
+                .set(KwoTradeOrderGoodsUnit::getDelFlag, Global.YES);
+        goodsUnitMapper.update(null, wrapper);
+    }
+
+    /**
+     * @param orderId 订单信息ID
+     * @desc 查询商品单位换算信息
+     * @author zk
+     * @date 2023/12/4
+     **/
+    public List<GoodsUnitDetailRes> findGoodsUnitDetail(Long orderId) {
+        List<GoodsUnitDetailRes> units = new ArrayList<>();
+        List<KwoTradeOrderGoodsUnit> assistUnit = goodsUnitMapper.findGoodsUnit(new HashMap<>(Global.NUMERICAL_SIXTEEN){{put("orderId", orderId);}});
+        if (CollectionUtils.isNotEmpty(assistUnit)) {
+            assistUnit.forEach(e -> {
+                GoodsUnitDetailRes unit = BeanUtils.copyProperties(e, GoodsUnitDetailRes.class);
+                units.add(unit);
+            });
+        }
+        return units;
+    }
+
+}

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

@@ -22,6 +22,7 @@ import com.sckw.manage.api.RemoteManageService;
 import com.sckw.manage.api.model.dto.res.FindEntCooperateResVo;
 import com.sckw.mongo.model.SckwTradeOrder;
 import com.sckw.order.api.model.TradeOrderCountStatisticsDTO;
+import com.sckw.order.dao.KwoTradeOrderGoodsUnitMapper;
 import com.sckw.order.dao.KwoTradeOrderMapper;
 import com.sckw.order.enums.*;
 import com.sckw.order.model.*;
@@ -37,6 +38,7 @@ import com.sckw.payment.api.model.dto.WalletDto;
 import com.sckw.payment.api.model.dto.common.R;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.product.api.model.GoodsDetail;
+import com.sckw.product.api.model.GoodsUnitDetail;
 import com.sckw.product.api.model.KwpGoods;
 import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.utils.RedissonUtils;
@@ -100,6 +102,7 @@ public class KwoTradeOrderService {
     private final KwoTradeOrderGoodsService kwoTradeOrderGoodsService;
     private final KwoTradeOrderContractService kwoTradeOrderContractService;
     private final KwoTradeOrderTrackService kwoTradeOrderTrackService;
+    private final KwoTradeOrderGoodsUnitService kwoTradeOrderGoodsUnitService;
 
     @Value("${url.order.list.valet.pc}")
     private String pcValetListUrl;
@@ -142,103 +145,129 @@ public class KwoTradeOrderService {
      * @return: void
      */
     private void addOtherOrderInfo(KwoTradeOrder tradeOrder, ValetOrderParam param, Boolean isUpdate) {
-        Long id = tradeOrder.getId();
-        String tOrderNo = tradeOrder.getTOrderNo();
-        SckwTradeOrder order = new SckwTradeOrder();
-        order.setFirmName(LoginUserHolder.getEntName())
-                .setCreateByName(LoginUserHolder.getUserName())
-                .setUpdateByName(LoginUserHolder.getUserName())
-                .setTOrderId(id)
-                .setAssociateStatement(0)
-                .setPrice(tradeOrder.getPrice().doubleValue())
-                .setAmount(tradeOrder.getAmount().doubleValue())
-                .setEntrustAmount(tradeOrder.getEntrustAmount().doubleValue())
-                .setActualAmount(tradeOrder.getActualAmount().doubleValue());
-
-        BeanUtils.copyProperties(tradeOrder, order);
-        //商品信息
-        kwoTradeOrderGoodsService.delByOrderId(id);
-        GoodsInfo goodsInfo = param.getGoodsInfo();
-        KwoTradeOrderGoods goods = BeanUtils.copyProperties(goodsInfo, KwoTradeOrderGoods.class);
-        if (Objects.nonNull(goods) && Objects.nonNull(goods.getGoodsId())) {
-            GoodsDetail goodsDetail = goodsInfoService.getDetailById(goods.getGoodsId());
-            if (Objects.isNull(goodsDetail) || !Objects.equals(goodsDetail.getStatus(), 1)
-                    || Objects.equals(goodsDetail.getDelFlag(), Global.YES)) {
-                throw new BusinessException("商品不存在或已下架!");
-            }
-            goods.setTOrderId(id).setTOrderNo(tOrderNo).setGoodsType(goodsDetail.getGoodsType());
-            kwoTradeOrderGoodsService.insert(goods);
-            order.setGoodsId(goodsDetail.getId()).setUnit(goodsDetail.getUnit()).setUnitPrice(goods.getUnitPrice().doubleValue())
-                    .setGoodsName(goodsDetail.getName()).setGoodsType(goodsDetail.getGoodsType()).setGoodsCode(goodsDetail.getCode())
-                    .setGoodsTaxRate(goodsDetail.getTaxRate()).setGoodsSpec(goodsDetail.getSpec()).setGoodsThumb(goodsDetail.getThumb());
-        }
-        if (Objects.isNull(order.getUnitPrice())) {
-            order.setUnitPrice(BigDecimal.ZERO.doubleValue());
-        }
-        //单位信息
-        kwoTradeOrderUnitService.delByOrderId(id);
-        List<UnitInfo> unitInfos = param.getUnitInfo();
-        if (CollectionUtils.isNotEmpty(unitInfos)) {
-            List<KwoTradeOrderUnit> list = new ArrayList<>(unitInfos.size());
-            List<Long> entIds = unitInfos.stream().map(UnitInfo::getEntId).distinct().toList();
-            Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
-            unitInfos.forEach(e -> {
-                EntCacheResDto ent = entMap.get(e.getEntId());
-                if (Objects.isNull(ent)) {
-                    throw new BusinessException("企业:" + e.getFirmName() + "的一级企业信息不存在!");
-                }
-                KwoTradeOrderUnit unit = BeanUtils.copyProperties(e, KwoTradeOrderUnit.class);
-                unit.setTOrderId(id).setTOrderNo(tOrderNo).setTopEntId(ent.getId());
-                list.add(unit);
-                if (Objects.equals(e.getUnitType(), OrderUnitTypeEnum.PURCHASE.getType())) {
-                    order.setProcureEntId(e.getEntId()).setProcureTopEntId(unit.getTopEntId()).setProcureFirmName(e.getFirmName())
-                            .setProcureContacts(e.getContacts()).setProcurePhone(e.getPhone()).setProcureContactsId(e.getContactsId());
-                } else {
-                    order.setSupplyEntId(e.getEntId()).setSupplyTopEntId(unit.getTopEntId()).setSupplyFirmName(e.getFirmName())
-                            .setSupplyContacts(e.getContacts()).setSupplyPhone(e.getPhone()).setSupplyContactsId(e.getContactsId());
+        try {
+            Long id = tradeOrder.getId();
+            String tOrderNo = tradeOrder.getTOrderNo();
+            SckwTradeOrder order = new SckwTradeOrder();
+            order.setFirmName(LoginUserHolder.getEntName())
+                    .setCreateByName(LoginUserHolder.getUserName())
+                    .setUpdateByName(LoginUserHolder.getUserName())
+                    .setTOrderId(id)
+                    .setAssociateStatement(0)
+                    .setPrice(tradeOrder.getPrice().doubleValue())
+                    .setAmount(tradeOrder.getAmount().doubleValue())
+                    .setEntrustAmount(tradeOrder.getEntrustAmount().doubleValue())
+                    .setActualAmount(tradeOrder.getActualAmount().doubleValue());
+
+            BeanUtils.copyProperties(tradeOrder, order);
+
+            //商品信息
+            kwoTradeOrderGoodsService.delByOrderId(id);
+            GoodsInfo goodsInfo = param.getGoodsInfo();
+            KwoTradeOrderGoods goods = BeanUtils.copyProperties(goodsInfo, KwoTradeOrderGoods.class);
+            if (Objects.nonNull(goods) && Objects.nonNull(goods.getGoodsId())) {
+                GoodsDetail goodsDetail = goodsInfoService.getDetailById(goods.getGoodsId());
+                if (Objects.isNull(goodsDetail)
+                        || !Objects.equals(goodsDetail.getStatus(), 1)
+                        || Objects.equals(goodsDetail.getDelFlag(), Global.YES)) {
+                    throw new BusinessException("商品不存在或已下架!");
                 }
-            });
-            kwoTradeOrderUnitService.insertBatch(list);
-        }
-        //地址信息
-        kwoTradeOrderAddressService.delByOrderId(id);
-        List<AddressInfo> addressInfos = param.getAddressInfo();
-        if (CollectionUtils.isNotEmpty(addressInfos)) {
-            List<KwoTradeOrderAddress> list = new ArrayList<>(addressInfos.size());
-            addressInfos.forEach(e -> {
-                KwoTradeOrderAddress address = BeanUtils.copyProperties(e, KwoTradeOrderAddress.class);
-                address.setTOrderId(id).setTOrderNo(tOrderNo);
-                list.add(address);
-                if (Objects.equals(e.getAddressType(), OrderAddressTypeEnum.LOAD.getType())) {
-                    order.setLoadName(e.getName()).setLoadType(e.getType()).setLoadContacts(e.getContacts())
-                            .setLoadPhone(e.getPhone()).setLoadCityCode(String.valueOf(e.getCityCode())).setLoadCityName(e.getCityName())
-                            .setLoadDetailAddress(e.getDetailAddress()).setLoadLat(e.getLat()).setLoadLng(e.getLng());
-                } else {
-                    order.setUnloadName(e.getName()).setUnloadType(e.getType()).setUnloadContacts(e.getContacts())
-                            .setUnloadPhone(e.getPhone()).setUnloadCityCode(String.valueOf(e.getCityCode())).setUnloadCityName(e.getCityName())
-                            .setUnloadDetailAddress(e.getDetailAddress()).setUnloadLat(e.getLat()).setUnloadLng(e.getLng());
+                goods.setTOrderId(id).setTOrderNo(tOrderNo).setGoodsType(goodsDetail.getGoodsType());
+                kwoTradeOrderGoodsService.insert(goods);
+
+                //商品辅助单位
+                kwoTradeOrderGoodsUnitService.delByOrderId(id);
+                List<GoodsUnitDetail> assistUnit = goodsDetail.getAssistUnit();
+                if (CollectionUtils.isNotEmpty(assistUnit)) {
+                    List<KwoTradeOrderGoodsUnit> units = new ArrayList<>(assistUnit.size());
+                    assistUnit.forEach(e -> {
+                        KwoTradeOrderGoodsUnit unit = BeanUtils.copyProperties(e, KwoTradeOrderGoodsUnit.class);
+                        unit.setGoodsId(goodsDetail.getId());
+                        unit.setTOrderId(id);
+                        units.add(unit);
+                    });
+                    kwoTradeOrderGoodsUnitService.insertBatch(units);
                 }
-            });
-            kwoTradeOrderAddressService.insertBatch(list);
-        }
-        //合同信息
-        kwoTradeOrderContractService.delByOrderId(id);
-        ContractInfo contractInfo = param.getContractInfo();
-        KwoTradeOrderContract contract = BeanUtils.copyProperties(contractInfo, KwoTradeOrderContract.class);
-        if (Objects.nonNull(contract)) {
-            contract.setTOrderId(id).setTOrderNo(tOrderNo);
-            kwoTradeOrderContractService.insert(contract);
-            BeanUtils.copyProperties(contractInfo, order);
-        }
-        //状态信息(草稿更新不加状态记录)
-        if (!isUpdate || !Objects.equals(OrderStatusEnum.SAVED.getCode(), tradeOrder.getStatus())) {
-            KwoTradeOrderTrack track = new KwoTradeOrderTrack();
-            track.setTOrderId(id).setTOrderNo(tOrderNo).setStatus(tradeOrder.getStatus()).setRemark(tradeOrder.getRemark());
-            kwoTradeOrderTrackService.insert(track);
+
+                //订单关联商品信息
+                order.setGoodsId(goodsDetail.getId()).setUnit(goodsDetail.getUnit()).setUnitPrice(goods.getUnitPrice().doubleValue())
+                        .setGoodsName(goodsDetail.getName()).setGoodsType(goodsDetail.getGoodsType()).setGoodsCode(goodsDetail.getCode())
+                        .setGoodsTaxRate(goodsDetail.getTaxRate()).setGoodsSpec(goodsDetail.getSpec()).setGoodsThumb(goodsDetail.getThumb());
+            }
+            if (Objects.isNull(order.getUnitPrice())) {
+                order.setUnitPrice(BigDecimal.ZERO.doubleValue());
+            }
+
+            //单位信息
+            kwoTradeOrderUnitService.delByOrderId(id);
+            List<UnitInfo> unitInfos = param.getUnitInfo();
+            if (CollectionUtils.isNotEmpty(unitInfos)) {
+                List<KwoTradeOrderUnit> list = new ArrayList<>(unitInfos.size());
+                List<Long> entIds = unitInfos.stream().map(UnitInfo::getEntId).distinct().toList();
+                Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
+                unitInfos.forEach(e -> {
+                    EntCacheResDto ent = entMap.get(e.getEntId());
+                    if (Objects.isNull(ent)) {
+                        throw new BusinessException("企业:" + e.getFirmName() + "的一级企业信息不存在!");
+                    }
+                    KwoTradeOrderUnit unit = BeanUtils.copyProperties(e, KwoTradeOrderUnit.class);
+                    unit.setTOrderId(id).setTOrderNo(tOrderNo).setTopEntId(ent.getId());
+                    list.add(unit);
+                    if (Objects.equals(e.getUnitType(), OrderUnitTypeEnum.PURCHASE.getType())) {
+                        order.setProcureEntId(e.getEntId()).setProcureTopEntId(unit.getTopEntId()).setProcureFirmName(e.getFirmName())
+                                .setProcureContacts(e.getContacts()).setProcurePhone(e.getPhone()).setProcureContactsId(e.getContactsId());
+                    } else {
+                        order.setSupplyEntId(e.getEntId()).setSupplyTopEntId(unit.getTopEntId()).setSupplyFirmName(e.getFirmName())
+                                .setSupplyContacts(e.getContacts()).setSupplyPhone(e.getPhone()).setSupplyContactsId(e.getContactsId());
+                    }
+                });
+                kwoTradeOrderUnitService.insertBatch(list);
+            }
+
+            //地址信息
+            kwoTradeOrderAddressService.delByOrderId(id);
+            List<AddressInfo> addressInfos = param.getAddressInfo();
+            if (CollectionUtils.isNotEmpty(addressInfos)) {
+                List<KwoTradeOrderAddress> list = new ArrayList<>(addressInfos.size());
+                addressInfos.forEach(e -> {
+                    KwoTradeOrderAddress address = BeanUtils.copyProperties(e, KwoTradeOrderAddress.class);
+                    address.setTOrderId(id).setTOrderNo(tOrderNo);
+                    list.add(address);
+                    if (Objects.equals(e.getAddressType(), OrderAddressTypeEnum.LOAD.getType())) {
+                        order.setLoadName(e.getName()).setLoadType(e.getType()).setLoadContacts(e.getContacts())
+                                .setLoadPhone(e.getPhone()).setLoadCityCode(String.valueOf(e.getCityCode())).setLoadCityName(e.getCityName())
+                                .setLoadDetailAddress(e.getDetailAddress()).setLoadLat(e.getLat()).setLoadLng(e.getLng());
+                    } else {
+                        order.setUnloadName(e.getName()).setUnloadType(e.getType()).setUnloadContacts(e.getContacts())
+                                .setUnloadPhone(e.getPhone()).setUnloadCityCode(String.valueOf(e.getCityCode())).setUnloadCityName(e.getCityName())
+                                .setUnloadDetailAddress(e.getDetailAddress()).setUnloadLat(e.getLat()).setUnloadLng(e.getLng());
+                    }
+                });
+                kwoTradeOrderAddressService.insertBatch(list);
+            }
+
+            //合同信息
+            kwoTradeOrderContractService.delByOrderId(id);
+            ContractInfo contractInfo = param.getContractInfo();
+            KwoTradeOrderContract contract = BeanUtils.copyProperties(contractInfo, KwoTradeOrderContract.class);
+            if (Objects.nonNull(contract)) {
+                contract.setTOrderId(id).setTOrderNo(tOrderNo);
+                kwoTradeOrderContractService.insert(contract);
+                BeanUtils.copyProperties(contractInfo, order);
+            }
+
+            //状态信息(草稿更新不加状态记录)
+            if (!isUpdate || !Objects.equals(OrderStatusEnum.SAVED.getCode(), tradeOrder.getStatus())) {
+                KwoTradeOrderTrack track = new KwoTradeOrderTrack();
+                track.setTOrderId(id).setTOrderNo(tOrderNo).setStatus(tradeOrder.getStatus()).setRemark(tradeOrder.getRemark());
+                kwoTradeOrderTrackService.insert(track);
+            }
+            int method = isUpdate ? 2 : 1;
+            //存MongoDb
+            saveMongoDb(method, order);
+        }catch (Exception e) {
+            e.printStackTrace();
         }
-        int method = isUpdate ? 2 : 1;
-        //存MongoDb
-        saveMongoDb(method, order);
     }
 
     /**
@@ -684,6 +713,17 @@ public class KwoTradeOrderService {
                         .setPrepaidLimit(goods.getPrepaidLimit()).setAdvancePrice(goods.getAdvancePrice())
                         .setCollectionUnit(Objects.isNull(entCache) ? null : entCache.getFirmName());
                 detail.setGoodsInfo(goodsDetail);
+
+                //商品辅助单位信息
+                List<GoodsUnitDetailRes> assistUnit = kwoTradeOrderGoodsUnitService.findGoodsUnitDetail(id);
+                if (CollectionUtils.isNotEmpty(assistUnit)) {
+                    Map<String, String> finalUnitMap = unitMap;
+                    assistUnit.forEach(e -> {
+                        e.setFromUnitName(CollectionUtils.isNotEmpty(finalUnitMap) ? finalUnitMap.get(e.getFromUnit()) : null);
+                        e.setToUnitName(CollectionUtils.isNotEmpty(finalUnitMap) ? finalUnitMap.get(e.getToUnit()) : null);
+                    });
+                }
+                detail.setAssistUnit(assistUnit);
             }
         }
 
@@ -1345,4 +1385,41 @@ public class KwoTradeOrderService {
         return CollectionUtils.emptyIfNull(list);
     }
 
+    /**
+     * @param tOrderId 贸易主键ID
+     * @desc 查询贸易订单商品关联单位
+     * @author zk
+     * @date 2023/12/4
+     **/
+    public List<GoodsUnitRes> goodsUnit(Long tOrderId) {
+        List<GoodsUnitRes> unitDetails = new ArrayList<>();
+        KwoTradeOrder tradeOrder = kwoTradeOrderMapper.selectById(tOrderId);
+        if (tradeOrder != null) {
+            unitDetails.add(new GoodsUnitRes(tradeOrder.getUnit(), null, true));
+        }
+
+        //商品辅助单位
+        List<GoodsUnitDetailRes> assistUnit = kwoTradeOrderGoodsUnitService.findGoodsUnitDetail(tOrderId);
+        if (CollectionUtils.isNotEmpty(assistUnit)) {
+            assistUnit.forEach(e -> {
+                unitDetails.add(new GoodsUnitRes(e.getToUnit(), null, false));
+            });
+        }
+
+        //数据组装
+        if (CollectionUtils.isNotEmpty(unitDetails)) {
+            //单位
+            Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.UNIT_TYPE.getType()));
+            Map<String, String> unitMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            if (CollectionUtils.isNotEmpty(dict)) {
+                unitMap = dict.get(DictTypeEnum.UNIT_TYPE.getType());
+            }
+            Map<String, String> finalUnitMap = unitMap;
+            unitDetails.forEach(e -> {
+                e.setLabel( finalUnitMap != null ? finalUnitMap.get(e.getValue()) : null);
+            });
+        }
+
+        return unitDetails;
+    }
 }

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

@@ -1,6 +1,6 @@
 package com.sckw.order.serivce;
 
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.utils.DateUtils;
 import com.sckw.core.web.context.LoginUserHolder;

+ 17 - 0
sckw-modules/sckw-order/src/main/resources/mapper/KwoTradeOrderGoodsUnitMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sckw.order.dao.KwoTradeOrderGoodsUnitMapper">
+
+    <select id="findGoodsUnit" resultType="com.sckw.order.model.KwoTradeOrderGoodsUnit" parameterType="java.util.Map" >
+        SELECT
+        id, t_order_id tOrderId, goods_id goodsId, from_unit fromUnit, to_unit toUnit,
+        conversion_value conversionValue, remark, status, create_by createBy,
+        create_time createTime, update_by updateBy, update_time updateTime
+        from kwo_trade_order_goods_unit
+        where del_flag = 0
+        <if test="tOrderId != null and tOrderId != ''">
+            and t_order_id = #{tOrderId, jdbcType=BIGINT}
+        </if>
+        ORDER BY create_time desc
+    </select>
+</mapper>

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java

@@ -3,7 +3,7 @@ package com.sckw.payment.service;
 import com.alibaba.fastjson2.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsTrackService.java

@@ -1,7 +1,7 @@
 package com.sckw.payment.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.payment.dao.KwpLedgerLogisticsTrackMapper;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeService.java

@@ -3,7 +3,7 @@ package com.sckw.payment.service;
 import com.alibaba.fastjson2.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerTradeTrackService.java

@@ -1,7 +1,7 @@
 package com.sckw.payment.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.payment.dao.KwpLedgerTradeTrackMapper;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementOfflineService.java

@@ -3,7 +3,7 @@ package com.sckw.payment.service;
 import com.alibaba.fastjson2.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpSettlementWalletService.java

@@ -3,7 +3,7 @@ package com.sckw.payment.service;
 import com.alibaba.fastjson2.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpTradeFreezeService.java

@@ -1,7 +1,7 @@
 package com.sckw.payment.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.core.web.context.LoginUserHolder;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpWalletPrepayService.java

@@ -1,7 +1,7 @@
 package com.sckw.payment.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.core.web.context.LoginUserHolder;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpWalletRefundSubService.java

@@ -1,6 +1,6 @@
 package com.sckw.payment.service;
 
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.core.web.context.LoginUserHolder;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpWalletRelationService.java

@@ -1,7 +1,7 @@
 package com.sckw.payment.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.IdWorker;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpWalletService.java

@@ -1,7 +1,7 @@
 package com.sckw.payment.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.DateTimeUtil;
 import com.sckw.core.utils.IdWorker;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WalletBusinessService.java

@@ -1,6 +1,6 @@
 package com.sckw.payment.service;
 
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.IdWorker;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WalletService.java

@@ -3,7 +3,7 @@ package com.sckw.payment.service;
 import com.alibaba.fastjson2.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.page.PageRes;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/WorkbenchService.java

@@ -1,6 +1,6 @@
 package com.sckw.payment.service;
 
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.payment.model.vo.SettlementRecord;
 import com.sckw.payment.model.vo.req.FinanceCount;

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/task/FinanceTask.java

@@ -1,7 +1,7 @@
 package com.sckw.payment.task;
 
 import com.alibaba.fastjson2.JSONObject;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.payment.dao.KwpSettlementLogisticsMapper;
 import com.sckw.payment.dao.KwpSettlementRecordMapper;

+ 13 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java

@@ -10,12 +10,12 @@ import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.product.model.GoodsListExport;
 import com.sckw.product.model.vo.req.*;
 import com.sckw.product.service.KwpGoodsService;
+import com.sckw.product.service.KwpGoodsUnitService;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.MediaType;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.List;
 
 /**
@@ -29,6 +29,7 @@ import java.util.List;
 public class KwpGoodsController {
 
     private final KwpGoodsService kwpGoodsService;
+    private final KwpGoodsUnitService kwpGoodsUnitService;
 
     /**
      * @desc: 添加商品草稿
@@ -191,6 +192,17 @@ public class KwpGoodsController {
         return HttpResult.ok(kwpGoodsService.dropList(params));
     }
 
+    /**
+     * @param id 商品主键ID
+     * @desc 查询商品单位换算信息
+     * @author zk
+     * @date 2023/12/4
+     **/
+    @GetMapping("/assistUnit")
+    public HttpResult assistUnit(@RequestParam Long id) {
+        return HttpResult.ok(kwpGoodsUnitService.findGoodsUnitDetail(id));
+    }
+
     /**
      * @desc: 获取商品预计最大可购数量
      * @author: yzc

+ 25 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/dao/KwpGoodsUnitMapper.java

@@ -0,0 +1,25 @@
+package com.sckw.product.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sckw.product.model.KwpGoodsUnit;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @desc 商品-单位换算
+ * @author zk
+ * @date 2023/12/4 0004
+ */
+@Mapper
+@Repository
+public interface KwpGoodsUnitMapper extends BaseMapper<KwpGoodsUnit> {
+
+    /**
+     * 查询商品单位换算信息
+     * @param params 查询参数
+     * @return 商品单位换算信息
+     */
+    List<KwpGoodsUnit> findGoodsUnit(Map<String, Object> params);
+}

+ 44 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/KwpGoodsUnit.java

@@ -0,0 +1,44 @@
+package com.sckw.product.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.sckw.core.model.base.BaseModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @desc 商品-单位换算
+ * @author zk
+ * @date 2023/12/4 0004
+ */
+@Data
+@Accessors(chain = true)
+@TableName("kwp_goods_unit")
+@EqualsAndHashCode(callSuper = false)
+public class KwpGoodsUnit extends BaseModel implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 49704905372870133L;
+
+    /**
+     * 商品id
+     */
+    private Long goodsId;
+
+    /**
+     * 被转换单位
+     */
+    private String fromUnit;
+
+    /**
+     * 转换目标单位
+     */
+    private String toUnit;
+
+    /**
+     * 换算值
+     */
+    private Double conversionValue;
+}

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

@@ -115,4 +115,9 @@ public class AddGoodsDraftParam {
     @Size(max = 5, message = "商品详情图片最多支持5张")
     private List<GoodsImages> images;
 
+    /**
+     * 辅助单位
+     */
+    private List<GoodsUnitParam> assistUnit;
+
 }

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

@@ -123,4 +123,9 @@ public class AddGoodsParam {
     @Valid
     private List<GoodsImages> images;
 
+    /**
+     * 辅助单位
+     */
+    private List<GoodsUnitParam> assistUnit;
+
 }

+ 33 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/GoodsUnitParam.java

@@ -0,0 +1,33 @@
+package com.sckw.product.model.vo.req;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @desc 商品-单位换算
+ * @author zk
+ * @date 2023/12/4 0004
+ */
+@Data
+public class GoodsUnitParam implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 41704905372870133L;
+
+    /**
+     * 被转换单位
+     */
+    private String fromUnit;
+
+    /**
+     * 转换目标单位
+     */
+    private String toUnit;
+
+    /**
+     * 换算值
+     */
+    private Double conversionValue;
+}

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

@@ -122,4 +122,9 @@ public class UpdateGoodsParam {
     @Size(max = 5, message = "商品详情图片最多支持5张")
     private List<GoodsImages> images;
 
+    /**
+     * 辅助单位
+     */
+    private List<GoodsUnitParam> assistUnit;
+
 }

+ 5 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsDetail.java

@@ -5,7 +5,6 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 import lombok.experimental.Accessors;
-
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
@@ -213,4 +212,9 @@ public class GoodsDetail {
      */
     private List<RecommendGoods> recommendGoodsList;
 
+    /**
+     * 辅助单位
+     */
+    private List<GoodsUnitDetail> assistUnit;
+
 }

+ 1 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsDropList.java

@@ -4,6 +4,7 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 import lombok.experimental.Accessors;
+import java.util.List;
 
 /**
  * @desc: 商品下拉列表

+ 42 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsUnitDetail.java

@@ -0,0 +1,42 @@
+package com.sckw.product.model.vo.res;
+
+import lombok.Data;
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * desc 商品-单位换算
+ * author zk
+ * date 2023/12/4 0004
+ */
+@Data
+public class GoodsUnitDetail implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 42704905372870133L;
+
+    /**
+     * 被转换单位
+     */
+    private String fromUnit;
+
+    /**
+     * 被转换单位
+     */
+    private String fromUnitName;
+
+    /**
+     * 转换目标单位
+     */
+    private String toUnit;
+
+    /**
+     * 转换目标单位
+     */
+    private String toUnitName;
+
+    /**
+     * 换算值
+     */
+    private Double conversionValue;
+}

+ 43 - 4
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -76,6 +76,7 @@ public class KwpGoodsService {
     private final KwpGoodsAttributeService kwpGoodsAttributeService;
     private final KwpGoodsImageService kwpGoodsImageService;
     private final KwpGoodsPriceRangeService kwpGoodsPriceRangeService;
+    private final KwpGoodsUnitService kwpGoodsUnitService;
     private final StreamBridge streamBridge;
 
     @Value("${goods.url.list.pc}")
@@ -184,6 +185,17 @@ public class KwpGoodsService {
             });
             kwpGoodsPriceRangeService.insertBatch(list);
         }
+        //添加商品辅助单位信息
+        List<GoodsUnitParam> assistUnit = addGoodsParam.getAssistUnit();
+        if (CollectionUtils.isNotEmpty(assistUnit)) {
+            List<KwpGoodsUnit> units = new ArrayList<>(assistUnit.size());
+            assistUnit.forEach(e -> {
+                KwpGoodsUnit unit = BeanUtils.copyProperties(e, KwpGoodsUnit.class);
+                unit.setGoodsId(goodsId);
+                units.add(unit);
+            });
+            kwpGoodsUnitService.insertBatch(units);
+        }
     }
 
     /**
@@ -253,7 +265,10 @@ public class KwpGoodsService {
             detail.setManagerName(managerInfo.getName()).setManagerPhone(managerInfo.getPhone());
         }
         Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.PRODUCT_NAME_TYPE.getType(),
-                DictTypeEnum.UNIT_TYPE.getType(), DictTypeEnum.TAX_RATE.getType(), DictTypeEnum.GOODS_STATUS.getType(), DictTypeEnum.ADDRESS_TYPE.getType()));
+                DictTypeEnum.UNIT_TYPE.getType(),
+                DictTypeEnum.TAX_RATE.getType(),
+                DictTypeEnum.GOODS_STATUS.getType(),
+                DictTypeEnum.ADDRESS_TYPE.getType()));
         Map<String, String> productNameMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         Map<String, String> unitMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         Map<String, String> taxRateMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
@@ -301,12 +316,20 @@ public class KwpGoodsService {
         if (Objects.nonNull(addressInfo)) {
             addressInfo.setTypeName(CollectionUtils.isNotEmpty(addressMap) ? addressMap.get(addressInfo.getType()) : null);
         }
-        detail.setImages(images).setPriceRanges(ranges).setAttributes(attributes).setAddressInfo(addressInfo);
-
+        //商品辅助单位信息
+        List<GoodsUnitDetail> assistUnit = kwpGoodsUnitService.findGoodsUnitDetail(id);
+        if (CollectionUtils.isNotEmpty(assistUnit)) {
+            //数据组装
+            Map<String, String> finalUnitMap = unitMap;
+            assistUnit.forEach(e -> {
+                e.setFromUnitName(finalUnitMap != null ? finalUnitMap.get(e.getFromUnit()) : null);
+                e.setToUnitName(finalUnitMap != null ? finalUnitMap.get(e.getFromUnit()) : null);
+            });
+        }
+        detail.setImages(images).setPriceRanges(ranges).setAttributes(attributes).setAddressInfo(addressInfo).setAssistUnit(assistUnit);
         return detail;
     }
 
-
     /**
      * @desc: 更新商品信息
      * @author: yzc
@@ -409,6 +432,19 @@ public class KwpGoodsService {
             });
             kwpGoodsPriceRangeService.insertBatch(list);
         }
+
+        //更新商品辅助单位信息
+        kwpGoodsUnitService.delByGoodsIds(Collections.singletonList(goodsId));
+        List<GoodsUnitParam> assistUnit = param.getAssistUnit();
+        if (CollectionUtils.isNotEmpty(assistUnit)) {
+            List<KwpGoodsUnit> units = new ArrayList<>(assistUnit.size());
+            assistUnit.forEach(e -> {
+                KwpGoodsUnit unit = BeanUtils.copyProperties(e, KwpGoodsUnit.class);
+                unit.setGoodsId(goodsId);
+                units.add(unit);
+            });
+            kwpGoodsUnitService.insertBatch(units);
+        }
     }
 
     /**
@@ -953,6 +989,8 @@ public class KwpGoodsService {
         if (CollectionUtils.isEmpty(list)) {
             return Collections.emptyList();
         }
+
+        //数据组装
         List<Long> supplyEntIds = list.stream().map(KwpGoods::getSupplyEntId).distinct().toList();
         List<EntCacheResDto> entList = remoteSystemService.queryEntCacheByIds(supplyEntIds);
         Map<Long, String> entMap = entList.stream().collect(Collectors.toMap(EntCacheResDto::getId, EntCacheResDto::getFirmName, (k1, k2) -> k1));
@@ -962,6 +1000,7 @@ public class KwpGoodsService {
             goodsDropList.setSupplyEnt(entMap.get(e.getSupplyEntId()));
             result.add(goodsDropList);
         });
+
         return result;
     }
 

+ 114 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsUnitService.java

@@ -0,0 +1,114 @@
+package com.sckw.product.service;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
+import com.sckw.core.model.constant.Global;
+import com.sckw.core.utils.BeanUtils;
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.product.dao.KwpGoodsUnitMapper;
+import com.sckw.product.model.KwpGoodsUnit;
+import com.sckw.product.model.vo.res.GoodsUnitDetail;
+import com.sckw.system.api.RemoteSystemService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * @desc 商品-单位换算
+ * @author zk
+ * @date 2023/12/4 0004
+ */
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class KwpGoodsUnitService {
+
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private RemoteSystemService remoteSystemService;
+
+    private final KwpGoodsUnitMapper goodsUnitMapper;
+
+    /**
+     * @param units 单位换算信息
+     * @desc 批量新增
+     * @author zk
+     * @date 2023/12/4
+     **/
+    public int insertBatch(List<KwpGoodsUnit> units) {
+        AtomicInteger count = new AtomicInteger();
+        if (CollectionUtils.isNotEmpty(units)) {
+            units.forEach(e -> {
+                count.addAndGet(goodsUnitMapper.insert(e));
+            });
+        }
+
+        return count.get();
+    }
+
+    /**
+     * @param goodsIds 商品信息ID
+     * @desc 批量更新
+     * @author zk
+     * @date 2023/12/4
+     **/
+    public void delByGoodsIds(List<Long> goodsIds) {
+        LambdaUpdateWrapper<KwpGoodsUnit> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.in(KwpGoodsUnit::getGoodsId, goodsIds).eq(KwpGoodsUnit::getDelFlag, Global.NO)
+                .set(KwpGoodsUnit::getDelFlag, Global.YES);
+        goodsUnitMapper.update(null, wrapper);
+    }
+
+    /**
+     * @param goodsId 商品主键ID
+     * @desc 查询商品单位换算信息
+     * @author zk
+     * @date 2023/12/4
+     **/
+    public List<GoodsUnitDetail> findGoodsUnit(Long goodsId) {
+        List<GoodsUnitDetail> units = new ArrayList<>();
+        List<KwpGoodsUnit> assistUnit = goodsUnitMapper.findGoodsUnit(new HashMap<>(Global.NUMERICAL_SIXTEEN){{put("goodsId", goodsId);}});
+        if (CollectionUtils.isNotEmpty(assistUnit)) {
+            //数据组装
+            assistUnit.forEach(e -> {
+                GoodsUnitDetail unit = BeanUtils.copyProperties(e, GoodsUnitDetail.class);
+                units.add(unit);
+            });
+        }
+        return units;
+    }
+
+    /**
+     * @param goodsId 商品主键ID
+     * @desc 查询商品单位换算信息
+     * @author zk
+     * @date 2023/12/4
+     **/
+    public List<GoodsUnitDetail> findGoodsUnitDetail(Long goodsId) {
+        List<GoodsUnitDetail> units = new ArrayList<>();
+        List<KwpGoodsUnit> assistUnit = goodsUnitMapper.findGoodsUnit(new HashMap<>(Global.NUMERICAL_SIXTEEN){{put("goodsId", goodsId);}});
+        if (CollectionUtils.isNotEmpty(assistUnit)) {
+            //单位
+            Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(DictTypeEnum.UNIT_TYPE.getType()));
+            Map<String, String> unitMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            if (CollectionUtils.isNotEmpty(dict)) {
+                unitMap = dict.get(DictTypeEnum.UNIT_TYPE.getType());
+            }
+
+            //数据组装
+            Map<String, String> finalUnitMap = unitMap;
+            assistUnit.forEach(e -> {
+                GoodsUnitDetail unit = BeanUtils.copyProperties(e, GoodsUnitDetail.class);
+                unit.setFromUnitName(finalUnitMap != null ? finalUnitMap.get(unit.getFromUnit()) : null);
+                unit.setToUnitName(finalUnitMap != null ? finalUnitMap.get(unit.getToUnit()) : null);
+                units.add(unit);
+            });
+        }
+        return units;
+    }
+}

+ 18 - 0
sckw-modules/sckw-product/src/main/resources/mapper/KwpGoodsUnitMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sckw.product.dao.KwpGoodsUnitMapper">
+
+    <select id="findGoodsUnit" resultType="com.sckw.product.model.KwpGoodsUnit" parameterType="java.util.Map" >
+        SELECT
+            id, goods_id goodsId, from_unit fromUnit, to_unit toUnit,
+            conversion_value conversionValue, remark, status, create_by createBy,
+            create_time createTime, update_by updateBy, update_time updateTime
+        from kwp_goods_unit
+        where del_flag = 0
+        <if test="goodsId != null and goodsId != ''">
+            and goods_id = #{goodsId, jdbcType=BIGINT}
+        </if>
+        ORDER BY create_time desc
+    </select>
+
+</mapper>

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

@@ -1,7 +1,7 @@
 package com.sckw.report.service;
 
 import cn.hutool.core.util.ObjectUtil;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.StringConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;

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

@@ -1,7 +1,7 @@
 package com.sckw.report.service;
 
 import cn.hutool.core.util.ObjectUtil;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.StringConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;

+ 1 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderStatisticsService.java

@@ -1,6 +1,6 @@
 package com.sckw.report.service;
 
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.BeanUtils;

+ 1 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java

@@ -1,6 +1,6 @@
 package com.sckw.report.service;
 
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.CarWaybillEnum;

+ 1 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/ConsignOrderExcelVo.java

@@ -1,7 +1,7 @@
 package com.sckw.report.service.vo;
 
 import com.alibaba.excel.annotation.ExcelProperty;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
 import com.sckw.excel.annotation.EasyExcel;
 import com.sckw.excel.annotation.ExcelContext;

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

@@ -3,6 +3,7 @@ package com.sckw.transport.controller;
 import com.alibaba.fastjson.JSONObject;
 import com.sckw.core.annotation.RepeatSubmit;
 import com.sckw.core.exception.CustomPromptException;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.enums.OrderRuleEnum;
 import com.sckw.core.model.enums.RedisOrderGenerateEnum;
 import com.sckw.core.model.vo.BaseList;
@@ -58,9 +59,8 @@ public class LogisticsConsignmentController {
     public HttpResult purchaseLogisticsConsignment(@Valid @RequestBody LogisticsConsignmentParam logisticsConsignmentParam) {
         log.info("采购订单传递参数信息:{}", JSONObject.toJSONString(logisticsConsignmentParam));
         try {
-            return logisticsConsignmentService.purchaseLogisticsConsignment(logisticsConsignmentParam,"1");
+            return logisticsConsignmentService.logisticsConsignment(logisticsConsignmentParam,NumberConstant.ONE);
         } catch (Exception e) {
-//            OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.LOGISTICS_ORDER, OrderRuleEnum.LOGISTICS_ORDER);
             log.error("采购订单-物流托运生成托运订单 error :{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
@@ -207,7 +207,7 @@ public class LogisticsConsignmentController {
     public HttpResult sellLogisticsConsignment(@Valid @RequestBody LogisticsConsignmentParam logisticsConsignmentParam) {
         log.info("销售订单-物流托运生成托运订单 传递参数信息:{}", JSONObject.toJSONString(logisticsConsignmentParam));
         try {
-            return logisticsConsignmentService.sellLogisticsConsignment(logisticsConsignmentParam,"2");
+            return logisticsConsignmentService.logisticsConsignment(logisticsConsignmentParam, NumberConstant.TWO);
         } catch (Exception e) {
             OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.LOGISTICS_ORDER,OrderRuleEnum.LOGISTICS_ORDER);
             log.error("物流托运 error :{}", e.getMessage(), e);

+ 11 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java

@@ -5,7 +5,7 @@ import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.google.common.collect.Lists;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
@@ -40,6 +40,7 @@ import com.sckw.transport.api.model.vo.RTruckMonitorVo;
 import com.sckw.transport.api.model.vo.RWaybillOrderVo;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
+import com.sckw.transport.model.vo.WaybillCountVo;
 import com.sckw.transport.service.CommonService;
 import jakarta.annotation.Resource;
 import jodd.util.StringUtil;
@@ -239,10 +240,18 @@ public class TransportServiceImpl implements TransportService {
                 } else if (DictEnum.CHARGING_TYPE_2.getValue().equals(billingMode)) {
                     actualAmount = (logisticsOrderDTO.getTotalUnloadAmount() == null ? new BigDecimal("0.00") : logisticsOrderDTO.getTotalUnloadAmount()).multiply(price);
 //                    actualAmount = (logisticsOrderDTO.getTotalUnloadAmount() == null ? new BigDecimal("0.00") : logisticsOrderDTO.getTotalUnloadAmount()).multiply(price).subtract(fineValue);
+                } else if (DictEnum.CHARGING_TYPE_3.getValue().equals(billingMode)) {
+                    // 物流订单运单趟次数量
+                    Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN){{
+                        put("upperlOrderId", logisticsOrderDTO.getLOrderId());
+                        put("passStatus", Global.NUMERICAL_ONE);
+                    }};
+                    WaybillCountVo waybillOrderCount = waybillOrderDao.findWaybillOrderCount(map);
+                    BigDecimal totalComplete = waybillOrderCount == null ? NumberConstant.ZERO_TWO : new BigDecimal(waybillOrderCount.getTotalComplete());
+                    actualAmount = totalComplete.multiply(price);
                 }
                 logisticsOrderDTO.setDeductPrice(fineValue);
                 logisticsOrderDTO.setTaxMoney(actualAmount);
-//                logisticsOrderDTO.setContractId();
                 logisticsOrderDTO.setContractName(contract.getContractName());
                 logisticsOrderDTO.setContractNo(contract.getContractNo());
                 logisticsOrderDTO.setGoodsPriceLabel(priceDictData.get(logisticsOrderDTO.getPriceType()));

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportStatisticsServiceImpl.java

@@ -1,6 +1,6 @@
 package com.sckw.transport.dubbo;
 
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.enums.CarWaybillEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
 import com.sckw.transport.api.dubbo.TransportStatisticsService;

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

@@ -11,7 +11,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.StringConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
@@ -683,7 +683,6 @@ public class AcceptCarriageOrderService {
         kwtLogisticsOrderGoods.setId(new IdWorker(NumberConstant.ONE).nextId());
         kwtLogisticsOrderGoods.setGoodsId(bo.getGoodsId() == null ? null : Long.parseLong(bo.getGoodsId()));
         kwtLogisticsOrderGoods.setGoodsName(bo.getGoodsName());
-//        kwtLogisticsOrderGoods.setSkuId(StringUtils.isBlank(bo.getSkuId()) ? null : Long.parseLong(bo.getSkuId()));
         kwtLogisticsOrderGoods.setLOrderId(orderId);
         kwtLogisticsOrderGoods.setLOrderNo(lOrderNo);
         kwtLogisticsOrderGoods.setUpdateBy(LoginUserHolder.getUserId());
@@ -1571,17 +1570,15 @@ public class AcceptCarriageOrderService {
                     orderStatusList.add(LogisticsOrderEnum.PENDING_ORDER.getCode());
                     orderStatusList.add(LogisticsOrderEnum.WAIT_DELIVERY.getCode());
                     orderStatusList.add(LogisticsOrderEnum.IN_TRANSIT.getCode());
-                    List<KwtLogisticsOrder> logisticsOrders = logisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
+                    /*List<KwtLogisticsOrder> logisticsOrders = logisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
                             .eq(KwtLogisticsOrder::getTOrderId, logisticsOrder.getTOrderId())
                             .in(KwtLogisticsOrder::getStatus, orderStatusList));
                     if (org.springframework.util.CollectionUtils.isEmpty(logisticsOrders)) {
                         tradeOrder.setIsAllComplete(true);
                     } else {
                         tradeOrder.setIsAllComplete(false);
-                    }
+                    }*/
                     tradeOrder.setTOrderId(logisticsOrder.getTOrderId());
-//            tradeOrder.setActualLoadAmount(map.get("totalLoadAmount"));
-//            tradeOrder.setActualUnloadAmount(map.get("totalUnloadAmount"));
                     tradeOrder.setActualLoadAmount(orderFinishDTO.getLoadAmount());
                     tradeOrder.setActualUnloadAmount(orderFinishDTO.getUnloadAmount());
                     tradeOrder.setUpdateBy(LoginUserHolder.getUserId());
@@ -1615,32 +1612,7 @@ public class AcceptCarriageOrderService {
                         updateMongoDbByLogisticsOrder(Long.parseLong(map.get("id").toString()), orderFinishDTO, new BigDecimal(map.get("ignoreAmount").toString()));
                     }
                 }
-//        /**完结订单-对应物流订单下子订单都要进行完结*/
-//        List<KwtLogisticsOrder> kwtLogisticsOrders = kwtLogisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
-//                .in(KwtLogisticsOrder::getPids, Long.parseLong(orderFinishDTO.getId())));
-//        if (CollectionUtils.isNotEmpty(kwtLogisticsOrders)) {
-//            for (KwtLogisticsOrder kwtLogisticsOrder : kwtLogisticsOrders) {
-//                String[] split = kwtLogisticsOrder.getPids().split(StringConstant.COMMA);
-//                if (split.length > NumberConstant.ONE) {
-//                    for (String s : split) {
-//                        if (String.valueOf(kwtLogisticsOrder.getId()).equals(s)) {
-//                            //本身订单
-//                            //只存在当前订单无分包订单
-//                            /**单据完结修改状态以及数据*/
-//                            updateDataByItself(logisticsOrder, orderFinishDTO);
-//                        } else {
-//                            //修改分包后的订单-代表存在分包订单
-//                            /**单据完结修改状态以及数据*/
-//                            updateDataBySubset(orderFinishDTO, s);
-//                        }
-//                    }
-//                } else {
-//                    //只存在当前订单无分包订单
-//                    /**单据完结修改状态以及数据*/
-//                    updateDataByItself(logisticsOrder, orderFinishDTO);
-//                }
-//            }
-//        }
+
                 transportCommonService.closeHandle(logisticsOrder.getId());
                 waybillOrderService.cancelSendCar(logisticsOrder.getId());
             } finally {
@@ -2899,7 +2871,7 @@ public class AcceptCarriageOrderService {
      * @param weekDateEnd       环比本次结束时间
      * @param lastWeekDateStart 环比上次开始时间
      * @param lastWeekDateEnd   环比上次结束时间
-     * @return
+     * @return 数据
      */
     private HttpResult computeCompare(Long id, String weekDateStart, String weekDateEnd, String lastWeekDateStart, String lastWeekDateEnd, Integer dateType) {
         HttpResult httpResult = new HttpResult();
@@ -2925,7 +2897,6 @@ public class AcceptCarriageOrderService {
         vo.setEntrustAmount(currentWeek.getEntrustAmount());
         vo.setSubcontractAmount(currentWeek.getSubcontractAmount());
         vo.setTotalPrice(currentWeek.getTotalPrice());
-
         vo.setLastWaitingAmount(lastWeek.getWaitingAmount());
         vo.setLastAmount(lastWeek.getAmount());
         vo.setLastEntrustAmount(lastWeek.getEntrustAmount());
@@ -3039,11 +3010,10 @@ public class AcceptCarriageOrderService {
 
     /**
      * 工作台-物流运输数据统计
-     *
-     * @return
+     * @param logisticsOrderStatistics 统计参数
+     * @return 数据
      */
     public HttpResult workbenchLogisticsOrderStatistics(LogisticsOrderStatisticsParam logisticsOrderStatistics) {
-//        List<String> stringList = StringUtils.splitStrToList(logisticsOrderStatistics.getTypes(), String.class);
         EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(LoginUserHolder.getEntId());
         if (entCacheResDto == null) {
             return HttpResult.ok();

+ 27 - 15
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/CommonService.java

@@ -5,7 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.sckw.contract.api.RemoteContractService;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
@@ -33,6 +33,7 @@ import com.sckw.transport.model.KwtLogisticsOrderContract;
 import com.sckw.transport.model.KwtLogisticsOrderUnit;
 import com.sckw.transport.model.dto.AddOrderDTO;
 import com.sckw.transport.model.vo.UserInfoVo;
+import com.sckw.transport.model.vo.WaybillCountVo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -194,7 +195,6 @@ public class CommonService {
 
     /**
      * 修改合同履约量
-     *
      * @param loadAmount
      * @param unloadAmount
      */
@@ -203,15 +203,25 @@ public class CommonService {
          * 更新合同履约量
          * 根据单据计费方式处理【目前只考虑 按照装货量 按照卸货量 】*/
         String billingMode = logisticsOrder.getBillingMode();
-        BigDecimal actualAmount = new BigDecimal("0.00");
+        BigDecimal actualAmount = NumberConstant.ZERO_TWO;
         if (DictEnum.CHARGING_TYPE_1.getValue().equals(billingMode)) {
             actualAmount = loadAmount;
         } else if (DictEnum.CHARGING_TYPE_2.getValue().equals(billingMode)) {
             actualAmount = unloadAmount;
+        } else if (DictEnum.CHARGING_TYPE_3.getValue().equals(billingMode)) {
+            // 物流订单运单趟次数量
+            Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN){{
+                put("upperlOrderId", logisticsOrder.getId());
+                put("passStatus", Global.NUMERICAL_ONE);
+            }};
+            WaybillCountVo waybillOrderCount = waybillOrderMapper.findWaybillOrderCount(map);
+            actualAmount = waybillOrderCount == null ? NumberConstant.ZERO_TWO : new BigDecimal(waybillOrderCount.getTotalComplete());
         } else {
             throw new BusinessException("单据计费方式错误!");
         }
-        KwtLogisticsOrderContract contract = logisticsOrderContractMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderContract>().eq(KwtLogisticsOrderContract::getLOrderId, logisticsOrder.getId()));
+        KwtLogisticsOrderContract contract = logisticsOrderContractMapper.selectOne(
+                new LambdaQueryWrapper<KwtLogisticsOrderContract>()
+                        .eq(KwtLogisticsOrderContract::getLOrderId, logisticsOrder.getId()));
         remoteContractService.updatePerformed(contract.getContractId(), actualAmount);
     }
 
@@ -244,7 +254,6 @@ public class CommonService {
 
     /**
      * 发起物流托运-[贸易订单物流托运确认/承运订单分包托运确认]
-     *
      * @param consignUnit    托运单位
      * @param carriageUnit   承运单位
      * @param orderNo        单据号
@@ -260,13 +269,10 @@ public class CommonService {
                                                String orderNo, Long createBy, Long entId,
                                                String pcConsignUrl, String appConsignUrl,
                                                String pcCarriageUrl, String appCarriageUrl,
-                                               MessageEnum consignMessageEnum, MessageEnum carriageMessageEnum,
-                                               String type
-    ) {
-        boolean flag = false;
-        if (createBy.equals(consignUnit.getContactsId()) || createBy.equals(carriageUnit.getContactsId())) {
-            flag = true;
-        }
+                                               MessageEnum consignMessageEnum,
+                                               MessageEnum carriageMessageEnum,
+                                               String type) {
+        boolean flag = createBy.equals(consignUnit.getContactsId()) || createBy.equals(carriageUnit.getContactsId());
         Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN);
         map.put("orderNo", orderNo);
         if (flag && createBy.equals(consignUnit.getContactsId())) {
@@ -285,11 +291,18 @@ public class CommonService {
                 map.put("companyName", carriageUnit.getFirmName());
                 sendLogisticsCreateByMessage(createBy, entId, map, pcCarriageUrl, appCarriageUrl, carriageMessageEnum);
             }
-
         }
-
     }
 
+    /**
+     * 发送消息
+     * @param createBy 创建人
+     * @param entId 企业ID
+     * @param map 消息内容
+     * @param pcUrl pc调整地址
+     * @param appUrl app调整地址
+     * @param messageEnum 消息模板
+     */
     private void sendLogisticsCreateByMessage(Long createBy, Long entId, Map<String, Object> map, String pcUrl, String appUrl, MessageEnum messageEnum) {
         UserCacheResDto userCacheResDto = remoteSystemService.queryUserCacheById(createBy);
         String name = remoteSystemService.queryUserCacheById(createBy).getName();
@@ -298,7 +311,6 @@ public class CommonService {
         UserInfo createUser = new UserInfo();
         createUser.setUserId(createBy).setEntId(entId);
         userInfos.add(createUser);
-//        map.put("companyName", userCacheResDto == null ? null : userCacheResDto.getEntInfo().getFirmName());
         SckwMessage msg = new SckwMessage();
         msg.setRequestId(UUIDUtils.get32UUID())
                 .setMessageEnum(messageEnum)

+ 5 - 10
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -10,7 +10,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
@@ -939,12 +939,7 @@ public class ConsignOrderService {
                     List<KwtLogisticsOrder> logisticsOrders = kwtLogisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
                             .eq(KwtLogisticsOrder::getTOrderId, logisticsOrder.getTOrderId())
                             .in(KwtLogisticsOrder::getStatus, statusList));
-                    if (org.springframework.util.CollectionUtils.isEmpty(logisticsOrders)) {
-                        tradeOrder.setIsAllComplete(true);
-                    }
                     tradeOrder.setTOrderId(logisticsOrder.getTOrderId());
-//            tradeOrder.setActualLoadAmount(map.get("totalLoadAmount"));
-//            tradeOrder.setActualUnloadAmount(map.get("totalUnloadAmount"));
                     tradeOrder.setActualLoadAmount(orderFinishDTO.getLoadAmount());
                     tradeOrder.setActualUnloadAmount(orderFinishDTO.getUnloadAmount());
                     tradeOrder.setUpdateBy(LoginUserHolder.getUserId());
@@ -1278,10 +1273,10 @@ public class ConsignOrderService {
      */
     public HttpResult consignOrderFinishDetail(String orderId) {
         OrderFinishVO finishVO = kwtLogisticsOrderMapper.selectOrderFinishData(orderId);
-        Map<String, Object> map = new HashMap(NumberConstant.SIXTEEN);
-        map.put("upperlOrderId", orderId);
-        //随意给个值 主要是传递不为null
-        map.put("passStatus", 1);
+        Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN){{
+            put("upperlOrderId", orderId);
+            put("passStatus", Global.NUMERICAL_ONE);
+        }};
         WaybillCountVo waybillOrderCount = kwtWaybillOrderMapper.findWaybillOrderCount(map);
         OrderFinishVO orderFinishVO = new OrderFinishVO();
         orderFinishVO.setLoadAmount(waybillOrderCount == null ? new BigDecimal("0.00") : waybillOrderCount.getLoadAmount());

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/DriverService.java

@@ -3,7 +3,7 @@ package com.sckw.transport.service;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.model.enums.CarWaybillEnum;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;

+ 1 - 7
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -3,7 +3,7 @@ package com.sckw.transport.service;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.pagehelper.PageHelper;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
@@ -22,7 +22,6 @@ import com.sckw.mongo.model.SckwLogisticsOrder;
 import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
 import com.sckw.order.api.model.CompleteLogisticsOrderParam;
-import com.sckw.order.api.model.UpdateActualAmountParam;
 import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.stream.enums.MessageEnum;
@@ -1987,15 +1986,10 @@ public class KwtWaybillOrderService {
                 put("tOrderId", logisticsOrder.getTOrderId());
                 put("passStatus", Global.NUMERICAL_ONE);
             }});
-            //查询贸易订单关联物流运单是否全部完结-totalUnfinished
-            WaybillCountVo tradeCount1 = waybillOrderDao.findWaybillOrderCount(new HashMap() {{
-                put("tOrderId", logisticsOrder.getTOrderId());
-            }});
             CompleteLogisticsOrderParam tradeOrder = new CompleteLogisticsOrderParam();
             tradeOrder.setTOrderId(logisticsOrder.getTOrderId());
             tradeOrder.setActualLoadAmount(tradeCount.getLoadAmount());
             tradeOrder.setActualUnloadAmount(tradeCount.getUnloadAmount());
-            tradeOrder.setIsAllComplete(tradeCount1.getTotalUnfinished() > 0 ? false : true);
             tradeOrder.setUpdateBy(LoginUserHolder.getUserId());
             tradeOrder.setUpdateByName(LoginUserHolder.getUserName());
             tradeOrderInfoService.completeLogisticsOrder(tradeOrder);

+ 24 - 53
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java

@@ -10,7 +10,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
@@ -137,7 +137,7 @@ public class LogisticsConsignmentService {
      * @return  响应数据
      */
     @Transactional(rollbackFor = Exception.class)
-    public HttpResult purchaseLogisticsConsignment(LogisticsConsignmentParam bo, String orderType) {
+    public HttpResult logisticsConsignment(LogisticsConsignmentParam bo, int orderType) {
         HttpResult httpResult = ValidUtil.serviceValid(bo);
         if (HttpStatus.SUCCESS_CODE != httpResult.getCode()) {
             return HttpResult.error(httpResult.getMsg());
@@ -159,6 +159,11 @@ public class LogisticsConsignmentService {
         return HttpResult.ok();
     }
 
+    /**
+     * 参数校验
+     * @param bo 订单参数
+     * @return 校验结果
+     */
     private HttpResult checkParamData(LogisticsConsignmentParam bo) {
         if (!ObjectUtils.isEmpty(bo.getLoss())) {
             if (bo.getLoss().compareTo(new BigDecimal("0.00")) < 0) {
@@ -174,35 +179,11 @@ public class LogisticsConsignmentService {
     }
 
     /**
-     * 销售订单-物流托运生成托运订单
-     *
-     * @param bo    请求数据
-     * @return 响应数据
+     * 创建物流订单
+     * @param bo 订单参数
+     * @param orderType 类型
      */
-    @Transactional(rollbackFor = Exception.class)
-    public HttpResult sellLogisticsConsignment(LogisticsConsignmentParam bo, String orderType) {
-        HttpResult httpResult = ValidUtil.serviceValid(bo);
-        if (HttpStatus.SUCCESS_CODE != httpResult.getCode()) {
-            return HttpResult.error(httpResult.getMsg());
-        }
-        HttpResult checked = checkParamData(bo);
-        if (checked.getCode() != HttpStatus.SUCCESS_CODE) {
-            return HttpResult.error(checked.getMsg());
-        }
-        String key = String.format(RedisConstant.TRADE_TO_LOGISTICS_NO_GENERATE_KEY, bo.getTOrderId());
-        if (redisLockUtil.tryLock(key)) {
-            try {
-                logisticsConsignmentInsert(bo, orderType);
-            } finally {
-                redisLockUtil.unlock(key);
-            }
-        } else {
-            return HttpResult.error("当前数据不可重复操作,稍后重试");
-        }
-        return HttpResult.ok();
-    }
-
-    void logisticsConsignmentInsert(LogisticsConsignmentParam bo, String orderType) {
+    void logisticsConsignmentInsert(LogisticsConsignmentParam bo, int orderType) {
         commonService.getRedisGenerateOrderNo();
         Long count = kwtLogisticsOrderMapper.selectCount(new LambdaQueryWrapper<KwtLogisticsOrder>().eq(KwtLogisticsOrder::getTOrderId, bo.getTOrderId()));
         String lOrderNo = OrderGenerateSeqNoUtils.getSeqNo(RedisOrderGenerateEnum.LOGISTICS_ORDER, OrderRuleEnum.LOGISTICS_ORDER, "1", "0", String.valueOf(count + 1));
@@ -279,27 +260,22 @@ public class LogisticsConsignmentService {
         /**消息列表
          * 1 采购 2 销售
          * */
-        String pcConsignUrl = "";
-        String appConsignUrl = "";
-        String pcCarriageUrl = "";
-        String appCarriageUrl = "";
-        String type = "";
-        MessageEnum consignMessageEnum = null;
-        MessageEnum carriageMessageEnum = null;
+        String pcConsignUrl = "", appConsignUrl = "", pcCarriageUrl = "", appCarriageUrl = "", type = "";
+        MessageEnum consignMessageEnum = null, carriageMessageEnum = null;
         //托运单位
         KwtLogisticsOrderUnit checkUnit = new KwtLogisticsOrderUnit();
         //承运单位
         KwtLogisticsOrderUnit carriageUnit = new KwtLogisticsOrderUnit();
-        if ("1".equals(orderType)) {
+        if (orderType == NumberConstant.ONE) {
             EntCacheResDto consignentMap = remoteSystemService.queryEntTreeById(Long.parseLong(bo.getConsignCompanyId()));
             EntCacheResDto checkentMap = remoteSystemService.queryEntTreeById(Long.parseLong(bo.getCheckCompanyId()));
-            checkUnit.setUnitType(1);
+            checkUnit.setUnitType(NumberConstant.ONE);
             checkUnit.setFirmName(bo.getCheckCompany());
             checkUnit.setEntId(Long.parseLong(bo.getConsignCompanyId()));
             checkUnit.setTopEntId(consignentMap == null ? null : consignentMap.getId());
             checkUnit.setContactsId(Long.parseLong(bo.getCheckContactsId()));
 
-            carriageUnit.setUnitType(2);
+            carriageUnit.setUnitType(NumberConstant.TWO);
             carriageUnit.setFirmName(bo.getConsignCompany());
             carriageUnit.setEntId(Long.parseLong(bo.getCheckCompanyId()));
             carriageUnit.setTopEntId(checkentMap == null ? null : checkentMap.getId());
@@ -311,19 +287,19 @@ public class LogisticsConsignmentService {
             consignMessageEnum = MessageEnum.NEW_CARRIAGE_ORDER;
             carriageMessageEnum = MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT;
             type = "2";
-        } else if ("2".equals(orderType)) {
+        } else if (orderType == NumberConstant.TWO) {
             EntCacheResDto consignentMap = remoteSystemService.queryEntTreeById(Long.parseLong(bo.getConsignCompanyId()));
             EntCacheResDto checkentMap = remoteSystemService.queryEntTreeById(Long.parseLong(bo.getCheckCompanyId()));
 
             //发起方
-            checkUnit.setUnitType(1);
+            checkUnit.setUnitType(NumberConstant.ONE);
             checkUnit.setFirmName(bo.getCheckCompany());
             checkUnit.setEntId(Long.parseLong(bo.getCheckCompanyId()));
             checkUnit.setTopEntId(consignentMap == null ? null : consignentMap.getId());
             checkUnit.setContactsId(Long.parseLong(bo.getConsignContactsId()));
 
             //接收方
-            carriageUnit.setUnitType(2);
+            carriageUnit.setUnitType(NumberConstant.TWO);
             carriageUnit.setFirmName(bo.getConsignCompany());
             carriageUnit.setEntId(Long.parseLong(bo.getConsignCompanyId()));
             carriageUnit.setTopEntId(checkentMap == null ? null : checkentMap.getId());
@@ -337,16 +313,14 @@ public class LogisticsConsignmentService {
             carriageMessageEnum = MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT;
             type = "1";
         }
-//        commonService.initIatingLogisticsConsignment(checkUnit, carriageUnit, lOrderNo, LoginUserHolder.getUserId(), LoginUserHolder.getEntId());
-        commonService.newSendLogisticsOrderToMessage(checkUnit, carriageUnit, lOrderNo, LoginUserHolder.getUserId(), LoginUserHolder.getEntId(),
-                pcConsignUrl, appConsignUrl,
-                pcCarriageUrl, appCarriageUrl,
+        //发送消息
+        commonService.newSendLogisticsOrderToMessage( checkUnit, carriageUnit, lOrderNo, LoginUserHolder.getUserId(),
+                LoginUserHolder.getEntId(), pcConsignUrl, appConsignUrl, pcCarriageUrl, appCarriageUrl,
                 consignMessageEnum, carriageMessageEnum, type);
     }
 
     /**
      * 组装数据发送至mongoDb
-     *
      * @param lOrderNo    物流订单编号
      * @param orderId     物流订单id
      * @param bo          页面请求数据
@@ -474,15 +448,12 @@ public class LogisticsConsignmentService {
 
     /**
      * 物流订单-企业信息
-     *
      * @param bo 请求参数
      * @param orderId   订单id
      */
     private void insertLogisticsOrderUnit(LogisticsConsignmentParam bo, Long orderId) {
         EntCacheResDto consignentMap = remoteSystemService.queryEntTreeById(Long.parseLong(bo.getConsignCompanyId()));
-//                        .setContactsId(consignentMap.get(Long.parseLong(bo.getConsignCompanyId())).getContactsId())
         EntCacheResDto checkentMap = remoteSystemService.queryEntTreeById(Long.parseLong(bo.getCheckCompanyId()));
-//                        .setContactsId(checkentMap.get(Long.parseLong(bo.getCheckCompanyId())).getContactsId())
         if (consignentMap == null || checkentMap == null) {
             throw new BusinessException("企业对应一级企业不存在");
         }
@@ -1526,12 +1497,12 @@ public class LogisticsConsignmentService {
         statusList.add(LogisticsOrderEnum.PENDING_ORDER.getCode());
         statusList.add(LogisticsOrderEnum.WAIT_DELIVERY.getCode());
         statusList.add(LogisticsOrderEnum.IN_TRANSIT.getCode());
-        List<KwtLogisticsOrder> logisticsOrders = kwtLogisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
+        /*List<KwtLogisticsOrder> logisticsOrders = kwtLogisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
                 .eq(KwtLogisticsOrder::getTOrderId, logisticsOrder.getTOrderId())
                 .in(KwtLogisticsOrder::getStatus, statusList));
         if (org.springframework.util.CollectionUtils.isEmpty(logisticsOrders)) {
             tradeOrder.setIsAllComplete(true);
-        }
+        }*/
         tradeOrder.setTOrderId(logisticsOrder.getTOrderId());
 //        tradeOrder.setActualLoadAmount(map.get("totalLoadAmount"));
 //        tradeOrder.setActualUnloadAmount(map.get("totalUnloadAmount"));

+ 10 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ManagementLogisticsOrderService.java

@@ -5,7 +5,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
@@ -33,10 +33,7 @@ import com.sckw.transport.model.dto.LogisticsOrderDTO;
 import com.sckw.transport.model.param.LogisticsOrderQuery;
 import com.sckw.transport.model.param.ManagementContractParam;
 import com.sckw.transport.model.param.ManagementLogisticsOrderQuery;
-import com.sckw.transport.model.vo.CarWaybillVO;
-import com.sckw.transport.model.vo.ManagementLogisticsOrderVO;
-import com.sckw.transport.model.vo.OrderDetailVO;
-import com.sckw.transport.model.vo.SckwLogisticsOrderVO;
+import com.sckw.transport.model.vo.*;
 import com.sckw.transport.model.vo.execlVo.ManagementLogisticsOrderExcelVo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -539,7 +536,14 @@ public class ManagementLogisticsOrderService {
             } else if (DictEnum.CHARGING_TYPE_2.getValue().equals(logisticsOrder.getBillingMode())) {
                 orderDetailVO.setOrderAmount(unloadAmount.multiply(price).subtract(fineValue));
             } else if (DictEnum.CHARGING_TYPE_3.getValue().equals(logisticsOrder.getBillingMode())) {
-                orderDetailVO.setOrderAmount(price);
+                // 物流订单运单趟次数量
+                Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN){{
+                    put("upperlOrderId", logisticsOrder.getId());
+                    put("passStatus", Global.NUMERICAL_ONE);
+                }};
+                WaybillCountVo waybillOrderCount = waybillOrderMapper.findWaybillOrderCount(map);
+                BigDecimal totalComplete = waybillOrderCount == null ? NumberConstant.ZERO_TWO : new BigDecimal(waybillOrderCount.getTotalComplete());
+                orderDetailVO.setOrderAmount(totalComplete.multiply(price).subtract(fineValue));
             }
         } else {
             orderDetailVO.setOrderAmount(logisticsOrder.getAmount().multiply(logisticsOrder.getPrice()));

+ 1 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ManagementWaybillOrderService.java

@@ -1,6 +1,6 @@
 package com.sckw.transport.service;
 
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.CarWaybillEnum;
@@ -8,7 +8,6 @@ import com.sckw.core.model.page.PageResult;
 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.core.web.response.HttpResult;
 import com.sckw.excel.utils.DateUtil;
 import com.sckw.mongo.model.SckwWaybillOrder;

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

@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
@@ -326,7 +326,14 @@ public class TransportCommonService {
             } else if (DictEnum.CHARGING_TYPE_2.getValue().equals(logisticsOrder.getBillingMode())) {
                 orderDetailVO.setOrderAmount(unloadAmount.multiply(price).subtract(fineValue));
             } else if (DictEnum.CHARGING_TYPE_3.getValue().equals(logisticsOrder.getBillingMode())) {
-                orderDetailVO.setOrderAmount(price);
+                // 物流订单运单趟次数量
+                Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN){{
+                    put("upperlOrderId", logisticsOrder.getId());
+                    put("passStatus", Global.NUMERICAL_ONE);
+                }};
+                WaybillCountVo waybillOrderCount = waybillOrderMapper.findWaybillOrderCount(map);
+                int count = waybillOrderCount == null ? NumberConstant.ZERO : waybillOrderCount.getTotalComplete();
+                orderDetailVO.setOrderAmount(new BigDecimal(count).multiply(price).subtract(fineValue));
             }
         } else {
             orderDetailVO.setOrderAmount(logisticsOrder.getAmount().multiply(logisticsOrder.getPrice()));
@@ -666,6 +673,15 @@ public class TransportCommonService {
                 } else if (DictEnum.CHARGING_TYPE_2.getValue().equals(billingMode)) {
 //                    actualAmount = (logisticsOrderDTO.getTotalUnloadAmount() == null ? new BigDecimal("0.00") : logisticsOrderDTO.getTotalUnloadAmount()).multiply(price).subtract(fineValue);
                     actualAmount = (logisticsOrderDTO.getTotalUnloadAmount() == null ? new BigDecimal("0.00") : logisticsOrderDTO.getTotalUnloadAmount()).multiply(price);
+                } else if (DictEnum.CHARGING_TYPE_3.getValue().equals(billingMode)) {
+                    // 物流订单运单趟次数量
+                    Map<String, Object> map = new HashMap<>(NumberConstant.SIXTEEN){{
+                        put("upperlOrderId", logisticsOrderDTO.getLOrderId());
+                        put("passStatus", Global.NUMERICAL_ONE);
+                    }};
+                    WaybillCountVo waybillOrderCount = waybillOrderMapper.findWaybillOrderCount(map);
+                    BigDecimal totalComplete = waybillOrderCount == null ? NumberConstant.ZERO_TWO : new BigDecimal(waybillOrderCount.getTotalComplete());
+                    actualAmount = totalComplete.multiply(price);
                 }
                 logisticsOrderDTO.setDeductPrice(fineValue);
                 logisticsOrderDTO.setTaxMoney(actualAmount);

+ 1 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java

@@ -1,7 +1,7 @@
 package com.sckw.transport.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.constant.NumberConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.CarWaybillEnum;
@@ -24,7 +24,6 @@ import com.sckw.transport.model.dto.*;
 import com.sckw.transport.model.vo.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
-import org.apache.poi.hpsf.Decimal;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Sort;