Tiroble 3 years ago
commit
5535b1b1f9
100 changed files with 16534 additions and 0 deletions
  1. 8 0
      .gitignore
  2. 340 0
      hs_err_pid6728.log
  3. 196 0
      pom.xml
  4. 3900 0
      replay_pid6728.log
  5. 27 0
      src/main/java/com/steerinfo/DilApplicationMain.java
  6. 35 0
      src/main/java/com/steerinfo/dil/config/AsyncConfiguration.java
  7. 22 0
      src/main/java/com/steerinfo/dil/config/CorsConfig1.java
  8. 46 0
      src/main/java/com/steerinfo/dil/config/RedisConfiguration.java
  9. 56 0
      src/main/java/com/steerinfo/dil/config/WebSocketConfig.java
  10. 483 0
      src/main/java/com/steerinfo/dil/controller/OffSiteTransportationController.java
  11. 68 0
      src/main/java/com/steerinfo/dil/controller/TestController.java
  12. 248 0
      src/main/java/com/steerinfo/dil/controller/TmstruckReceiptResultController.java
  13. 21 0
      src/main/java/com/steerinfo/dil/feign/ColumnDataFeign.java
  14. 32 0
      src/main/java/com/steerinfo/dil/feign/ESFeign.java
  15. 15 0
      src/main/java/com/steerinfo/dil/feign/IMFeign.java
  16. 26 0
      src/main/java/com/steerinfo/dil/interceptors/MyLocaleChangeInterceptor.java
  17. 41 0
      src/main/java/com/steerinfo/dil/mapper/OffSiteTransportationMapper.java
  18. 15 0
      src/main/java/com/steerinfo/dil/mapper/TmstruckAbnormalResultMapper.java
  19. 12 0
      src/main/java/com/steerinfo/dil/mapper/TmstruckInTransitWarnMapper.java
  20. 67 0
      src/main/java/com/steerinfo/dil/mapper/TmstruckLeaveFactoryResultMapper.java
  21. 41 0
      src/main/java/com/steerinfo/dil/mapper/TmstruckReceiptResultMapper.java
  22. 27 0
      src/main/java/com/steerinfo/dil/mapper/TmstruckReceiveResultMapper.java
  23. 135 0
      src/main/java/com/steerinfo/dil/mapper/UtilsMapper.java
  24. 154 0
      src/main/java/com/steerinfo/dil/model/DilVersion.java
  25. 214 0
      src/main/java/com/steerinfo/dil/model/TmstruckAbnormalResult.java
  26. 244 0
      src/main/java/com/steerinfo/dil/model/TmstruckEnfactoryResult.java
  27. 161 0
      src/main/java/com/steerinfo/dil/model/TmstruckInTransitWarn.java
  28. 244 0
      src/main/java/com/steerinfo/dil/model/TmstruckLeaveFactoryResult.java
  29. 398 0
      src/main/java/com/steerinfo/dil/model/TmstruckLoadResult.java
  30. 184 0
      src/main/java/com/steerinfo/dil/model/TmstruckMeasureCommission.java
  31. 214 0
      src/main/java/com/steerinfo/dil/model/TmstruckQualityResult.java
  32. 241 0
      src/main/java/com/steerinfo/dil/model/TmstruckReceiptResult.java
  33. 184 0
      src/main/java/com/steerinfo/dil/model/TmstruckReceiveResult.java
  34. 139 0
      src/main/java/com/steerinfo/dil/model/TmstruckReturnResult.java
  35. 184 0
      src/main/java/com/steerinfo/dil/model/TmstruckSmsRusult.java
  36. 166 0
      src/main/java/com/steerinfo/dil/model/TmstruckTareReturnResult.java
  37. 334 0
      src/main/java/com/steerinfo/dil/model/TmstruckTimeTaskResult.java
  38. 184 0
      src/main/java/com/steerinfo/dil/model/TmstruckTotalResult.java
  39. 304 0
      src/main/java/com/steerinfo/dil/model/TmstruckUnloadResult.java
  40. 364 0
      src/main/java/com/steerinfo/dil/model/TmstruckWeightResult.java
  41. 39 0
      src/main/java/com/steerinfo/dil/service/ITmstruckLeaveFactoryResultService.java
  42. 42 0
      src/main/java/com/steerinfo/dil/service/ITmstruckReceiptResultService.java
  43. 23 0
      src/main/java/com/steerinfo/dil/service/ITmstruckReceiveResultService.java
  44. 49 0
      src/main/java/com/steerinfo/dil/service/IUtilsService.java
  45. 35 0
      src/main/java/com/steerinfo/dil/service/OffSiteTransportationService.java
  46. 265 0
      src/main/java/com/steerinfo/dil/service/impl/OffSiteTransportationServiceImpl.java
  47. 187 0
      src/main/java/com/steerinfo/dil/service/impl/TmstruckLeaveFactoryResultServiceImpl.java
  48. 175 0
      src/main/java/com/steerinfo/dil/service/impl/TmstruckReceiptResultServiceImpl.java
  49. 51 0
      src/main/java/com/steerinfo/dil/service/impl/TmstruckReceiveResultServiceImpl.java
  50. 201 0
      src/main/java/com/steerinfo/dil/service/impl/UtilsServiceImpl.java
  51. 85 0
      src/main/java/com/steerinfo/dil/util/APIUtil.java
  52. 70 0
      src/main/java/com/steerinfo/dil/util/BaseRESTfulController.java
  53. 49 0
      src/main/java/com/steerinfo/dil/util/ColumnDataUtil.java
  54. 260 0
      src/main/java/com/steerinfo/dil/util/DataChange.java
  55. 131 0
      src/main/java/com/steerinfo/dil/util/HTTPRequestUtils.java
  56. 70 0
      src/main/java/com/steerinfo/dil/util/MD5Util.java
  57. 33 0
      src/main/java/com/steerinfo/dil/util/PageListAdd.java
  58. 11 0
      src/main/java/com/steerinfo/dil/util/util.java
  59. 12 0
      src/main/java/com/steerinfo/route/config/FileUtils.java
  60. 234 0
      src/main/java/com/steerinfo/route/config/ImageFileUtils.java
  61. 56 0
      src/main/java/com/steerinfo/route/config/KeyExpiredListener.java
  62. 124 0
      src/main/java/com/steerinfo/route/controller/TmstruckArrivalResultController.java
  63. 30 0
      src/main/java/com/steerinfo/route/controller/TmstruckReceiptResultChildController.java
  64. 54 0
      src/main/java/com/steerinfo/route/controller/ZhongJiaoXingLuContoller.java
  65. 19 0
      src/main/java/com/steerinfo/route/mapper/DilVersionMapper.java
  66. 30 0
      src/main/java/com/steerinfo/route/mapper/TmstruckArrivalResultMapper.java
  67. 13 0
      src/main/java/com/steerinfo/route/mapper/TmstruckReceiptResultChildMapper.java
  68. 184 0
      src/main/java/com/steerinfo/route/model/TmstruckArrivalResult.java
  69. 227 0
      src/main/java/com/steerinfo/route/model/TmstruckReceiptResult.java
  70. 184 0
      src/main/java/com/steerinfo/route/model/TmstruckReceiptResultChild.java
  71. 34 0
      src/main/java/com/steerinfo/route/service/ITmstruckArrivalResultService.java
  72. 22 0
      src/main/java/com/steerinfo/route/service/ITmstruckReceiptResultChildService.java
  73. 18 0
      src/main/java/com/steerinfo/route/service/RouteService.java
  74. 849 0
      src/main/java/com/steerinfo/route/service/impl/RouteServiceImpl.java
  75. 106 0
      src/main/java/com/steerinfo/route/service/impl/TmstruckArrivalResultServiceImpl.java
  76. 50 0
      src/main/java/com/steerinfo/route/service/impl/TmstruckReceiptResultChildServiceImpl.java
  77. 258 0
      src/main/java/com/steerinfo/route/threeRequest/ZhongJiaoXingLu.java
  78. 228 0
      src/main/java/com/steerinfo/route/util/DataConversionTool.java
  79. 136 0
      src/main/java/com/steerinfo/route/util/HTTPRequestUtils.java
  80. 157 0
      src/main/java/com/steerinfo/route/util/LngLonUtil.java
  81. 154 0
      src/main/java/com/steerinfo/route/vo/FullPathVisualizationTo/Result.java
  82. 70 0
      src/main/java/com/steerinfo/route/vo/FullPathVisualizationTo/RunRoute.java
  83. 30 0
      src/main/java/com/steerinfo/route/vo/FullPathVisualizationTo/ViewVisualization.java
  84. 40 0
      src/main/java/com/steerinfo/route/vo/Map/Point.java
  85. 26 0
      src/main/java/com/steerinfo/route/vo/Map/RouteVo.java
  86. 82 0
      src/main/java/com/steerinfo/route/vo/Map/RunRoutePoint.java
  87. 132 0
      src/main/java/com/steerinfo/route/vo/Map/StartAndEndRoute.java
  88. 18 0
      src/main/java/com/steerinfo/route/vo/ResultWarn.java
  89. 22 0
      src/main/java/com/steerinfo/route/vo/resultJson/Ad_info.java
  90. 54 0
      src/main/java/com/steerinfo/route/vo/resultJson/Address_components.java
  91. 32 0
      src/main/java/com/steerinfo/route/vo/resultJson/Location.java
  92. 80 0
      src/main/java/com/steerinfo/route/vo/resultJson/Result.java
  93. 38 0
      src/main/java/com/steerinfo/route/vo/resultJson/SearchPoint.java
  94. 1 0
      src/main/resources/api.properties
  95. 50 0
      src/main/resources/application-dev.yml
  96. 49 0
      src/main/resources/application-prod.yml
  97. 0 0
      src/main/resources/application.yml
  98. 86 0
      src/main/resources/bootstrap.yml
  99. 585 0
      src/main/resources/com/steerinfo/dil/mapper/OffSiteTransportationMapper.xml
  100. 410 0
      src/main/resources/com/steerinfo/dil/mapper/TmstruckAbnormalResultMapper.xml

+ 8 - 0
.gitignore

@@ -0,0 +1,8 @@
+target/
+*.iml
+.idea/
+rebel.xml
+.rebel.xml.bak
+out/artifacts/
+dil-api.iml
+src/test

+ 340 - 0
hs_err_pid6728.log

@@ -0,0 +1,340 @@
+#
+# There is insufficient memory for the Java Runtime Environment to continue.
+# Native memory allocation (malloc) failed to allocate 32744 bytes for ChunkPool::allocate
+# Possible reasons:
+#   The system is out of physical RAM or swap space
+#   In 32 bit mode, the process size limit was hit
+# Possible solutions:
+#   Reduce memory load on the system
+#   Increase physical memory or swap space
+#   Check if swap backing store is full
+#   Use 64 bit Java on a 64 bit OS
+#   Decrease Java heap size (-Xmx/-Xms)
+#   Decrease number of Java threads
+#   Decrease Java thread stack sizes (-Xss)
+#   Set larger code cache with -XX:ReservedCodeCacheSize=
+# This output file may be truncated or incomplete.
+#
+#  Out of Memory Error (allocation.cpp:273), pid=6728, tid=0x0000000000006220
+#
+# JRE version: Java(TM) SE Runtime Environment (8.0_152-b16) (build 1.8.0_152-b16)
+# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.152-b16 mixed mode windows-amd64 compressed oops)
+# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
+#
+
+---------------  T H R E A D  ---------------
+
+Current thread (0x00000000212df800):  JavaThread "C1 CompilerThread10" daemon [_thread_in_native, id=25120, stack(0x0000000022af0000,0x0000000022bf0000)]
+
+Stack: [0x0000000022af0000,0x0000000022bf0000]
+[error occurred during error reporting (printing stack bounds), id 0xc0000005]
+
+Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
+
+
+Current CompileTask:
+C1:   4905 2772       1       org.springframework.asm.ClassReader::readCode (3619 bytes)
+
+
+---------------  P R O C E S S  ---------------
+
+Java Threads: ( => current thread )
+  0x0000000021a7d000 JavaThread "RMI Scheduler(0)" daemon [_thread_blocked, id=10520, stack(0x0000000023a60000,0x0000000023b60000)]
+  0x0000000021a2f000 JavaThread "RMI TCP Connection(1)-192.168.1.104" daemon [_thread_in_native, id=22516, stack(0x0000000023960000,0x0000000023a60000)]
+  0x00000000215ec000 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=22856, stack(0x0000000022fb0000,0x00000000230b0000)]
+  0x000000002131e800 JavaThread "Service Thread" daemon [_thread_blocked, id=5024, stack(0x0000000022cf0000,0x0000000022df0000)]
+  0x00000000212ec000 JavaThread "C1 CompilerThread11" daemon [_thread_blocked, id=28800, stack(0x0000000022bf0000,0x0000000022cf0000)]
+=>0x00000000212df800 JavaThread "C1 CompilerThread10" daemon [_thread_in_native, id=25120, stack(0x0000000022af0000,0x0000000022bf0000)]
+  0x00000000212b6800 JavaThread "C1 CompilerThread9" daemon [_thread_blocked, id=24260, stack(0x00000000229f0000,0x0000000022af0000)]
+  0x00000000212a0000 JavaThread "C1 CompilerThread8" daemon [_thread_blocked, id=15128, stack(0x00000000228f0000,0x00000000229f0000)]
+  0x0000000021291000 JavaThread "C2 CompilerThread7" daemon [_thread_blocked, id=2736, stack(0x00000000227f0000,0x00000000228f0000)]
+  0x000000002128e800 JavaThread "C2 CompilerThread6" daemon [_thread_blocked, id=30488, stack(0x00000000226f0000,0x00000000227f0000)]
+  0x0000000021283800 JavaThread "C2 CompilerThread5" daemon [_thread_blocked, id=21244, stack(0x00000000225f0000,0x00000000226f0000)]
+  0x0000000021281000 JavaThread "C2 CompilerThread4" daemon [_thread_blocked, id=18692, stack(0x00000000224f0000,0x00000000225f0000)]
+  0x000000002127e000 JavaThread "C2 CompilerThread3" daemon [_thread_blocked, id=9944, stack(0x00000000223f0000,0x00000000224f0000)]
+  0x000000002127d800 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=10828, stack(0x00000000222f0000,0x00000000223f0000)]
+  0x000000002126c800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=17480, stack(0x00000000221f0000,0x00000000222f0000)]
+  0x000000002126b800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=6404, stack(0x00000000220f0000,0x00000000221f0000)]
+  0x000000001ead1800 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=21752, stack(0x0000000020820000,0x0000000020920000)]
+  0x000000001eacd000 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=3896, stack(0x0000000020720000,0x0000000020820000)]
+  0x000000001eac9800 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=26444, stack(0x0000000020620000,0x0000000020720000)]
+  0x000000001ea57000 JavaThread "Attach Listener" daemon [_thread_blocked, id=10264, stack(0x0000000020520000,0x0000000020620000)]
+  0x000000001ea3f800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=13904, stack(0x0000000020420000,0x0000000020520000)]
+  0x000000001ea2c000 JavaThread "Finalizer" daemon [_thread_blocked, id=10788, stack(0x00000000202c0000,0x00000000203c0000)]
+  0x000000001cfc9000 JavaThread "Reference Handler" daemon [_thread_blocked, id=7976, stack(0x00000000201c0000,0x00000000202c0000)]
+  0x000000000326c800 JavaThread "main" [_thread_in_native, id=21632, stack(0x0000000003160000,0x0000000003260000)]
+
+Other Threads:
+  0x000000001ea05000 VMThread [stack: 0x00000000200c0000,0x00000000201c0000] [id=1676]
+  0x00000000215fa800 WatcherThread [stack: 0x00000000230b0000,0x00000000231b0000] [id=30068]
+
+VM state:not at safepoint (normal execution)
+
+VM Mutex/Monitor currently owned by a thread: None
+
+Heap:
+ PSYoungGen      total 138240K, used 36663K [0x000000076df00000, 0x0000000777000000, 0x00000007c0000000)
+  eden space 128000K, 22% used [0x000000076df00000,0x000000076fb43928,0x0000000775c00000)
+  from space 10240K, 75% used [0x0000000775c00000,0x000000077638a590,0x0000000776600000)
+  to   space 10240K, 0% used [0x0000000776600000,0x0000000776600000,0x0000000777000000)
+ ParOldGen       total 84992K, used 6581K [0x00000006c9c00000, 0x00000006cef00000, 0x000000076df00000)
+  object space 84992K, 7% used [0x00000006c9c00000,0x00000006ca26d520,0x00000006cef00000)
+ Metaspace       used 28418K, capacity 29558K, committed 29696K, reserved 1075200K
+  class space    used 3808K, capacity 4073K, committed 4096K, reserved 1048576K
+
+Card table byte_map: [0x0000000012900000,0x00000000130c0000] byte_map_base: 0x000000000f2b2000
+
+Marking Bits: (ParMarkBitMap*) 0x00000000638b0860
+ Begin Bits: [0x00000000142f0000, 0x0000000018080000)
+ End Bits:   [0x0000000018080000, 0x000000001be10000)
+
+Polling page: 0x0000000002cc0000
+
+CodeCache: size=245760Kb used=7721Kb max_used=7721Kb free=238038Kb
+ bounds [0x0000000003540000, 0x0000000003cd0000, 0x0000000012540000]
+ total_blobs=3205 nmethods=2780 adapters=343
+ compilation: enabled
+
+Compilation events (10 events):
+Event: 4.898 Thread 0x00000000212a0000 2776       1       org.springframework.core.type.classreading.RecursiveAnnotationAttributesVisitor::<init> (12 bytes)
+Event: 4.899 Thread 0x00000000212b6800 nmethod 2775 0x0000000003cc8210 code [0x0000000003cc8380, 0x0000000003cc84e8]
+Event: 4.899 Thread 0x00000000212b6800 2777       1       org.springframework.core.type.classreading.RecursiveAnnotationAttributesVisitor::visitEnd (8 bytes)
+Event: 4.899 Thread 0x00000000212b6800 nmethod 2777 0x0000000003cc8590 code [0x0000000003cc86e0, 0x0000000003cc8828]
+Event: 4.899 Thread 0x00000000212a0000 nmethod 2776 0x0000000003cc8890 code [0x0000000003cc8a00, 0x0000000003cc8c68]
+Event: 4.899 Thread 0x00000000212ec000 nmethod 2774 0x0000000003cc8e10 code [0x0000000003cc8f80, 0x0000000003cc9218]
+Event: 4.902 Thread 0x00000000212b6800 2778       1       java.nio.channels.spi.AbstractInterruptibleChannel::isOpen (5 bytes)
+Event: 4.902 Thread 0x00000000212b6800 nmethod 2778 0x0000000003cc93d0 code [0x0000000003cc9520, 0x0000000003cc9630]
+Event: 4.903 Thread 0x00000000212a0000 2779       1       org.springframework.asm.MethodVisitor::visitFieldInsn (20 bytes)
+Event: 4.903 Thread 0x00000000212a0000 nmethod 2779 0x0000000003cc9690 code [0x0000000003cc97e0, 0x0000000003cc9968]
+
+GC Heap History (10 events):
+Event: 1.459 GC heap before
+{Heap before GC invocations=2 (full 0):
+ PSYoungGen      total 74240K, used 70481K [0x000000076df00000, 0x0000000773180000, 0x00000007c0000000)
+  eden space 64000K, 100% used [0x000000076df00000,0x0000000771d80000,0x0000000771d80000)
+  from space 10240K, 63% used [0x0000000771d80000,0x00000007723d4760,0x0000000772780000)
+  to   space 10240K, 0% used [0x0000000772780000,0x0000000772780000,0x0000000773180000)
+ ParOldGen       total 169472K, used 16K [0x00000006c9c00000, 0x00000006d4180000, 0x000000076df00000)
+  object space 169472K, 0% used [0x00000006c9c00000,0x00000006c9c04000,0x00000006d4180000)
+ Metaspace       used 15747K, capacity 16112K, committed 16512K, reserved 1062912K
+  class space    used 1937K, capacity 2050K, committed 2176K, reserved 1048576K
+Event: 1.465 GC heap after
+Heap after GC invocations=2 (full 0):
+ PSYoungGen      total 74240K, used 7781K [0x000000076df00000, 0x0000000777000000, 0x00000007c0000000)
+  eden space 64000K, 0% used [0x000000076df00000,0x000000076df00000,0x0000000771d80000)
+  from space 10240K, 75% used [0x0000000772780000,0x0000000772f197e8,0x0000000773180000)
+  to   space 10240K, 0% used [0x0000000771d80000,0x0000000771d80000,0x0000000772780000)
+ ParOldGen       total 169472K, used 24K [0x00000006c9c00000, 0x00000006d4180000, 0x000000076df00000)
+  object space 169472K, 0% used [0x00000006c9c00000,0x00000006c9c06000,0x00000006d4180000)
+ Metaspace       used 15747K, capacity 16112K, committed 16512K, reserved 1062912K
+  class space    used 1937K, capacity 2050K, committed 2176K, reserved 1048576K
+}
+Event: 1.765 GC heap before
+{Heap before GC invocations=3 (full 0):
+ PSYoungGen      total 74240K, used 71781K [0x000000076df00000, 0x0000000777000000, 0x00000007c0000000)
+  eden space 64000K, 100% used [0x000000076df00000,0x0000000771d80000,0x0000000771d80000)
+  from space 10240K, 75% used [0x0000000772780000,0x0000000772f197e8,0x0000000773180000)
+  to   space 10240K, 0% used [0x0000000771d80000,0x0000000771d80000,0x0000000772780000)
+ ParOldGen       total 169472K, used 24K [0x00000006c9c00000, 0x00000006d4180000, 0x000000076df00000)
+  object space 169472K, 0% used [0x00000006c9c00000,0x00000006c9c060a0,0x00000006d4180000)
+ Metaspace       used 19866K, capacity 20414K, committed 20736K, reserved 1067008K
+  class space    used 2551K, capacity 2689K, committed 2816K, reserved 1048576K
+Event: 1.770 GC heap after
+Heap after GC invocations=3 (full 0):
+ PSYoungGen      total 74240K, used 9105K [0x000000076df00000, 0x0000000777000000, 0x00000007c0000000)
+  eden space 64000K, 0% used [0x000000076df00000,0x000000076df00000,0x0000000771d80000)
+  from space 10240K, 88% used [0x0000000771d80000,0x0000000772664550,0x0000000772780000)
+  to   space 10240K, 0% used [0x0000000776600000,0x0000000776600000,0x0000000777000000)
+ ParOldGen       total 169472K, used 32K [0x00000006c9c00000, 0x00000006d4180000, 0x000000076df00000)
+  object space 169472K, 0% used [0x00000006c9c00000,0x00000006c9c080a0,0x00000006d4180000)
+ Metaspace       used 19866K, capacity 20414K, committed 20736K, reserved 1067008K
+  class space    used 2551K, capacity 2689K, committed 2816K, reserved 1048576K
+}
+Event: 1.799 GC heap before
+{Heap before GC invocations=4 (full 0):
+ PSYoungGen      total 74240K, used 17818K [0x000000076df00000, 0x0000000777000000, 0x00000007c0000000)
+  eden space 64000K, 13% used [0x000000076df00000,0x000000076e7825a8,0x0000000771d80000)
+  from space 10240K, 88% used [0x0000000771d80000,0x0000000772664550,0x0000000772780000)
+  to   space 10240K, 0% used [0x0000000776600000,0x0000000776600000,0x0000000777000000)
+ ParOldGen       total 169472K, used 32K [0x00000006c9c00000, 0x00000006d4180000, 0x000000076df00000)
+  object space 169472K, 0% used [0x00000006c9c00000,0x00000006c9c080a0,0x00000006d4180000)
+ Metaspace       used 20685K, capacity 21152K, committed 21248K, reserved 1067008K
+  class space    used 2655K, capacity 2786K, committed 2816K, reserved 1048576K
+Event: 1.803 GC heap after
+Heap after GC invocations=4 (full 0):
+ PSYoungGen      total 138240K, used 6750K [0x000000076df00000, 0x0000000777000000, 0x00000007c0000000)
+  eden space 128000K, 0% used [0x000000076df00000,0x000000076df00000,0x0000000775c00000)
+  from space 10240K, 65% used [0x0000000776600000,0x0000000776c97970,0x0000000777000000)
+  to   space 10240K, 0% used [0x0000000775c00000,0x0000000775c00000,0x0000000776600000)
+ ParOldGen       total 169472K, used 40K [0x00000006c9c00000, 0x00000006d4180000, 0x000000076df00000)
+  object space 169472K, 0% used [0x00000006c9c00000,0x00000006c9c0a0a0,0x00000006d4180000)
+ Metaspace       used 20685K, capacity 21152K, committed 21248K, reserved 1067008K
+  class space    used 2655K, capacity 2786K, committed 2816K, reserved 1048576K
+}
+Event: 1.803 GC heap before
+{Heap before GC invocations=5 (full 1):
+ PSYoungGen      total 138240K, used 6750K [0x000000076df00000, 0x0000000777000000, 0x00000007c0000000)
+  eden space 128000K, 0% used [0x000000076df00000,0x000000076df00000,0x0000000775c00000)
+  from space 10240K, 65% used [0x0000000776600000,0x0000000776c97970,0x0000000777000000)
+  to   space 10240K, 0% used [0x0000000775c00000,0x0000000775c00000,0x0000000776600000)
+ ParOldGen       total 169472K, used 40K [0x00000006c9c00000, 0x00000006d4180000, 0x000000076df00000)
+  object space 169472K, 0% used [0x00000006c9c00000,0x00000006c9c0a0a0,0x00000006d4180000)
+ Metaspace       used 20685K, capacity 21152K, committed 21248K, reserved 1067008K
+  class space    used 2655K, capacity 2786K, committed 2816K, reserved 1048576K
+Event: 1.824 GC heap after
+Heap after GC invocations=5 (full 1):
+ PSYoungGen      total 138240K, used 0K [0x000000076df00000, 0x0000000777000000, 0x00000007c0000000)
+  eden space 128000K, 0% used [0x000000076df00000,0x000000076df00000,0x0000000775c00000)
+  from space 10240K, 0% used [0x0000000776600000,0x0000000776600000,0x0000000777000000)
+  to   space 10240K, 0% used [0x0000000775c00000,0x0000000775c00000,0x0000000776600000)
+ ParOldGen       total 84992K, used 6480K [0x00000006c9c00000, 0x00000006cef00000, 0x000000076df00000)
+  object space 84992K, 7% used [0x00000006c9c00000,0x00000006ca2543f8,0x00000006cef00000)
+ Metaspace       used 20685K, capacity 21152K, committed 21248K, reserved 1067008K
+  class space    used 2655K, capacity 2786K, committed 2816K, reserved 1048576K
+}
+Event: 2.681 GC heap before
+{Heap before GC invocations=6 (full 1):
+ PSYoungGen      total 138240K, used 128000K [0x000000076df00000, 0x0000000777000000, 0x00000007c0000000)
+  eden space 128000K, 100% used [0x000000076df00000,0x0000000775c00000,0x0000000775c00000)
+  from space 10240K, 0% used [0x0000000776600000,0x0000000776600000,0x0000000777000000)
+  to   space 10240K, 0% used [0x0000000775c00000,0x0000000775c00000,0x0000000776600000)
+ ParOldGen       total 84992K, used 6509K [0x00000006c9c00000, 0x00000006cef00000, 0x000000076df00000)
+  object space 84992K, 7% used [0x00000006c9c00000,0x00000006ca25b510,0x00000006cef00000)
+ Metaspace       used 27261K, capacity 28228K, committed 28544K, reserved 1073152K
+  class space    used 3632K, capacity 3878K, committed 3968K, reserved 1048576K
+Event: 2.686 GC heap after
+Heap after GC invocations=6 (full 1):
+ PSYoungGen      total 138240K, used 7721K [0x000000076df00000, 0x0000000777000000, 0x00000007c0000000)
+  eden space 128000K, 0% used [0x000000076df00000,0x000000076df00000,0x0000000775c00000)
+  from space 10240K, 75% used [0x0000000775c00000,0x000000077638a590,0x0000000776600000)
+  to   space 10240K, 0% used [0x0000000776600000,0x0000000776600000,0x0000000777000000)
+ ParOldGen       total 84992K, used 6581K [0x00000006c9c00000, 0x00000006cef00000, 0x000000076df00000)
+  object space 84992K, 7% used [0x00000006c9c00000,0x00000006ca26d520,0x00000006cef00000)
+ Metaspace       used 27261K, capacity 28228K, committed 28544K, reserved 1073152K
+  class space    used 3632K, capacity 3878K, committed 3968K, reserved 1048576K
+}
+
+Deoptimization events (0 events):
+No events
+
+Classes redefined (0 events):
+No events
+
+Internal exceptions (10 events):
+Event: 4.546 Thread 0x0000000021a2f000 Exception <a 'java/lang/reflect/InvocationTargetException'> (0x000000076e878f38) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u152\9742\hotspot\src\share\vm\runtime\reflection.cpp, line 1092]
+Event: 4.759 Thread 0x000000000326c800 Exception <a 'java/net/ConnectException': Connection refused: connect> (0x000000076e64d5a8) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u152\9742\hotspot\src\share\vm\prims\jni.cpp, line 735]
+Event: 4.815 Thread 0x000000000326c800 Exception <a 'java/lang/ClassNotFoundException': java/lang/ObjectCustomizer> (0x000000076ed502b8) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u152\9742\hotspot\src\share\vm\classfile\systemDictionary.cpp, line 210]
+Event: 4.815 Thread 0x000000000326c800 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x000000076ed53418) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u152\9742\hotspot\src\share\vm\runtime\sharedRuntime.cpp, line 605]
+Event: 4.816 Thread 0x000000000326c800 Exception <a 'java/lang/ClassNotFoundException': org/springframework/context/annotation/ConfigurationClassPostProcessorCustomizer> (0x000000076eda6320) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u152\9742\hotspot\src\share\vm\classfile\
+Event: 4.817 Thread 0x000000000326c800 Exception <a 'java/lang/ClassNotFoundException': org/springframework/beans/factory/support/BeanDefinitionRegistryPostProcessorCustomizer> (0x000000076ee0f0a0) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u152\9742\hotspot\src\share\vm\cla
+Event: 4.818 Thread 0x000000000326c800 Exception <a 'java/lang/ClassNotFoundException': org/springframework/core/PriorityOrderedCustomizer> (0x000000076ee479e0) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u152\9742\hotspot\src\share\vm\classfile\systemDictionary.cpp, line 210
+Event: 4.818 Thread 0x000000000326c800 Exception <a 'java/lang/ClassNotFoundException': org/springframework/context/ResourceLoaderAwareCustomizer> (0x000000076ee85a48) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u152\9742\hotspot\src\share\vm\classfile\systemDictionary.cpp, l
+Event: 4.819 Thread 0x000000000326c800 Exception <a 'java/lang/ClassNotFoundException': org/springframework/beans/factory/BeanClassLoaderAwareCustomizer> (0x000000076eecb400) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u152\9742\hotspot\src\share\vm\classfile\systemDictionary
+Event: 4.819 Thread 0x000000000326c800 Exception <a 'java/lang/ClassNotFoundException': org/springframework/context/EnvironmentAwareCustomizer> (0x000000076ef083c8) thrown at [C:\re\workspace\8-2-build-windows-amd64-cygwin\jdk8u152\9742\hotspot\src\share\vm\classfile\systemDictionary.cpp, line
+
+Events (10 events):
+Event: 4.873 Thread 0x000000000326c800 DEOPT PACKING pc=0x0000000003c7380c sp=0x000000000325c550
+Event: 4.873 Thread 0x000000000326c800 DEOPT UNPACKING pc=0x000000000358747f sp=0x000000000325c370 mode 1
+Event: 4.874 loading class org/springframework/web/bind/annotation/PostMapping
+Event: 4.874 loading class org/springframework/web/bind/annotation/PostMapping done
+Event: 4.874 Thread 0x000000000326c800 DEOPT PACKING pc=0x000000000393e791 sp=0x000000000325e230
+Event: 4.874 Thread 0x000000000326c800 DEOPT UNPACKING pc=0x000000000358747f sp=0x000000000325df80 mode 1
+Event: 4.874 Thread 0x000000000326c800 DEOPT PACKING pc=0x0000000003c738c4 sp=0x000000000325e2b0
+Event: 4.874 Thread 0x000000000326c800 DEOPT UNPACKING pc=0x000000000358747f sp=0x000000000325e0d0 mode 1
+Event: 4.874 Thread 0x000000000326c800 DEOPT PACKING pc=0x0000000003c7380c sp=0x000000000325e440
+Event: 4.874 Thread 0x000000000326c800 DEOPT UNPACKING pc=0x000000000358747f sp=0x000000000325e260 mode 1
+
+
+Dynamic libraries:
+0x00007ff68d130000 - 0x00007ff68d167000 	C:\Program Files\Java\jdk1.8.0_152\bin\java.exe
+0x00007ffd917f0000 - 0x00007ffd919e5000 	C:\Windows\SYSTEM32\ntdll.dll
+0x00007ffd8fe00000 - 0x00007ffd8febe000 	C:\Windows\System32\KERNEL32.DLL
+0x00007ffd8f130000 - 0x00007ffd8f3f8000 	C:\Windows\System32\KERNELBASE.dll
+0x00007ffd90350000 - 0x00007ffd903fc000 	C:\Windows\System32\ADVAPI32.dll
+0x00007ffd8f830000 - 0x00007ffd8f8ce000 	C:\Windows\System32\msvcrt.dll
+0x00007ffd90210000 - 0x00007ffd902ab000 	C:\Windows\System32\sechost.dll
+0x00007ffd8fb10000 - 0x00007ffd8fc3a000 	C:\Windows\System32\RPCRT4.dll
+0x00007ffd8fc40000 - 0x00007ffd8fde1000 	C:\Windows\System32\USER32.dll
+0x00007ffd8f5a0000 - 0x00007ffd8f5c2000 	C:\Windows\System32\win32u.dll
+0x00007ffd902c0000 - 0x00007ffd902eb000 	C:\Windows\System32\GDI32.dll
+0x00007ffd8f490000 - 0x00007ffd8f59d000 	C:\Windows\System32\gdi32full.dll
+0x00007ffd8f790000 - 0x00007ffd8f82d000 	C:\Windows\System32\msvcp_win.dll
+0x00007ffd8ef00000 - 0x00007ffd8f000000 	C:\Windows\System32\ucrtbase.dll
+0x00007ffd7df90000 - 0x00007ffd7e22a000 	C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e\COMCTL32.dll
+0x00007ffd90500000 - 0x00007ffd90530000 	C:\Windows\System32\IMM32.DLL
+0x0000000063930000 - 0x0000000063a02000 	C:\Program Files\Java\jdk1.8.0_152\jre\bin\msvcr100.dll
+0x0000000063090000 - 0x0000000063930000 	C:\Program Files\Java\jdk1.8.0_152\jre\bin\server\jvm.dll
+0x00007ffd902b0000 - 0x00007ffd902b8000 	C:\Windows\System32\PSAPI.DLL
+0x00007ffd86000000 - 0x00007ffd86027000 	C:\Windows\SYSTEM32\WINMM.dll
+0x00007ffd89110000 - 0x00007ffd89119000 	C:\Windows\SYSTEM32\WSOCK32.dll
+0x00007ffd869c0000 - 0x00007ffd869ca000 	C:\Windows\SYSTEM32\VERSION.dll
+0x00007ffd90490000 - 0x00007ffd904fb000 	C:\Windows\System32\WS2_32.dll
+0x0000000063080000 - 0x000000006308f000 	C:\Program Files\Java\jdk1.8.0_152\jre\bin\verify.dll
+0x0000000063050000 - 0x0000000063079000 	C:\Program Files\Java\jdk1.8.0_152\jre\bin\java.dll
+0x0000000062fb0000 - 0x0000000062fe5000 	C:\Program Files\Java\jdk1.8.0_152\jre\bin\jdwp.dll
+0x0000000062fa0000 - 0x0000000062fa8000 	C:\Program Files\Java\jdk1.8.0_152\jre\bin\npt.dll
+0x0000000062f70000 - 0x0000000062f93000 	C:\Program Files\Java\jdk1.8.0_152\jre\bin\instrument.dll
+0x0000000063030000 - 0x0000000063046000 	C:\Program Files\Java\jdk1.8.0_152\jre\bin\zip.dll
+0x00007ffd90d10000 - 0x00007ffd91454000 	C:\Windows\System32\SHELL32.dll
+0x00007ffd8cff0000 - 0x00007ffd8d784000 	C:\Windows\SYSTEM32\windows.storage.dll
+0x00007ffd909b0000 - 0x00007ffd90d05000 	C:\Windows\System32\combase.dll
+0x00007ffd8e8e0000 - 0x00007ffd8e90e000 	C:\Windows\SYSTEM32\Wldp.dll
+0x00007ffd91480000 - 0x00007ffd9152d000 	C:\Windows\System32\SHCORE.dll
+0x00007ffd902f0000 - 0x00007ffd90345000 	C:\Windows\System32\shlwapi.dll
+0x00007ffd8ee40000 - 0x00007ffd8ee5f000 	C:\Windows\SYSTEM32\profapi.dll
+0x0000000062f60000 - 0x0000000062f69000 	C:\Program Files\Java\jdk1.8.0_152\jre\bin\dt_socket.dll
+0x00007ffd8e640000 - 0x00007ffd8e6aa000 	C:\Windows\system32\mswsock.dll
+0x0000000063010000 - 0x000000006302a000 	C:\Program Files\Java\jdk1.8.0_152\jre\bin\net.dll
+0x00007ffd74a00000 - 0x00007ffd74a33000 	C:\Program Files (x86)\Sangfor\SSL\ClientComponent\1_SangforNspX64.dll
+0x00007ffd8f9e0000 - 0x00007ffd8fb0a000 	C:\Windows\System32\ole32.dll
+0x00007ffd900d0000 - 0x00007ffd9019d000 	C:\Windows\System32\OLEAUT32.dll
+0x00007ffd8e380000 - 0x00007ffd8e44b000 	C:\Windows\SYSTEM32\DNSAPI.dll
+0x00007ffd8e330000 - 0x00007ffd8e36b000 	C:\Windows\SYSTEM32\IPHLPAPI.DLL
+0x00007ffd901a0000 - 0x00007ffd901a8000 	C:\Windows\System32\NSI.dll
+0x00007ffd87230000 - 0x00007ffd8723a000 	C:\Windows\System32\rasadhlp.dll
+0x00007ffd86210000 - 0x00007ffd8628f000 	C:\Windows\System32\fwpuclnt.dll
+0x00007ffd8f100000 - 0x00007ffd8f127000 	C:\Windows\System32\bcrypt.dll
+0x0000000062f50000 - 0x0000000062f5d000 	C:\Program Files\Java\jdk1.8.0_152\jre\bin\management.dll
+0x0000000062ff0000 - 0x0000000063001000 	C:\Program Files\Java\jdk1.8.0_152\jre\bin\nio.dll
+0x00007ffd8e840000 - 0x00007ffd8e858000 	C:\Windows\SYSTEM32\CRYPTSP.dll
+0x00007ffd8dfc0000 - 0x00007ffd8dff4000 	C:\Windows\system32\rsaenh.dll
+0x00007ffd8edc0000 - 0x00007ffd8edee000 	C:\Windows\SYSTEM32\USERENV.dll
+0x00007ffd8f400000 - 0x00007ffd8f482000 	C:\Windows\System32\bcryptprimitives.dll
+0x00007ffd8e830000 - 0x00007ffd8e83c000 	C:\Windows\SYSTEM32\CRYPTBASE.dll
+0x00007ffd870f0000 - 0x00007ffd87107000 	C:\Windows\SYSTEM32\dhcpcsvc6.DLL
+0x00007ffd871a0000 - 0x00007ffd871bd000 	C:\Windows\SYSTEM32\dhcpcsvc.DLL
+0x00007ffd749e0000 - 0x00007ffd749f7000 	C:\Windows\system32\napinsp.dll
+0x00007ffd74000000 - 0x00007ffd7401b000 	C:\Windows\system32\pnrpnsp.dll
+0x00007ffd89c20000 - 0x00007ffd89c35000 	C:\Windows\system32\wshbth.dll
+0x00007ffd8ab20000 - 0x00007ffd8ab3d000 	C:\Windows\system32\NLAapi.dll
+0x00007ffd73fe0000 - 0x00007ffd73ff2000 	C:\Windows\System32\winrnr.dll
+
+VM Arguments:
+jvm_args: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:58689,suspend=y,server=n -XX:TieredStopAtLevel=1 -Xverify:none -Dspring.output.ansi.enabled=always -javaagent:C:\Users\zx\AppData\Local\JetBrains\IntelliJIdea2021.1\captureAgent\debugger-agent.jar -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -Dfile.encoding=UTF-8 
+java_command: com.steerinfo.DilApplicationMain
+java_class_path (initial): C:\Program Files\Java\jdk1.8.0_152\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_152\jre\lib\rt.jar;D:\댐멀淃커\12-21\빈똥묏넋\DAL-TMS-TRUCK-API\target\classes;D:\apache-maven-3.6.3\cangku\io\minio\minio\8.2.1\minio-8.2.1.jar;D:\apache-maven-3.6.3\cangku\com\carrotsearch\thirdparty\simple-xml-safe\2.7.1\simple-xml-safe-2.7.1.jar;D:\apache-maven-3.6.3\cangku\com\google\guava\guava\29.0-jre\guava-29.0-jre.jar;D:\apache-maven-3.6.3\cangku\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar;D:\apache-maven-3.6.3\cangku\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;D:\apache-maven-3.6.3\cangku\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.
+Launcher Type: SUN_STANDARD
+
+Environment Variables:
+JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152
+CLASSPATH=.;C:\Program Files\Java\jdk1.8.0_152\lib;C:\Program Files\Java\jdk1.8.0_152\lib\tools.jar
+PATH=D:\Oracle\WINDOWS.X64_193000_db_home\bin;C:\Program Files\Java\jdk1.8.0_152\bin;C:\Program Files\Java\jdk1.8.0_152\jre\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;D:\Git\cmd;D:\xftp\;D:\apache-maven-3.5.0\bin;C:\Program Files\nodejs\;D:\젯쌈묏야\;C:\Users\zx\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Java\jdk1.8.0_152\bin;C:\Program Files\Java\jdk1.8.0_152\jre\bin;D:\VSCode\Microsoft VS Code\bin;C:\Users\zx\AppData\Roaming\npm;D:\node_global;;D:\idea2021\IntelliJ IDEA 2021.1\bin;
+USERNAME=zx
+OS=Windows_NT
+PROCESSOR_IDENTIFIER=AMD64 Family 23 Model 104 Stepping 1, AuthenticAMD
+
+
+
+---------------  S Y S T E M  ---------------
+
+OS: Windows 10.0 , 64 bit Build 19041 (10.0.19041.1348)
+
+CPU:total 16 (initial active 16) (16 cores per cpu, 1 threads per core) family 23 model 104 stepping 1, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, mmxext, 3dnowpref, lzcnt, sse4a, tsc, tscinvbit, tscinv, bmi1
+
+Memory: 4k page, physical 16133884k(2248660k free), swap 29293348k(784k free)
+
+vm_info: Java HotSpot(TM) 64-Bit Server VM (25.152-b16) for windows-amd64 JRE (1.8.0_152-b16), built on Sep 14 2017 02:29:36 by "java_re" with MS VC++ 10.0 (VS2010)
+
+time: Tue Dec 21 16:44:18 2021
+elapsed time: 4 seconds (0d 0h 0m 4s)
+

+ 196 - 0
pom.xml

@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.example</groupId>
+    <artifactId>dil-api</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.0.7.RELEASE</version>
+    </parent>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <!--Spring Cloud的版本-->
+                <version>Finchley.SR2</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <repositories>
+        <repository>
+            <id>maven-public</id>
+            <name>steerinfo maven-public</name>
+            <url>https://nexus.steerinfo.com/repository/maven-public/</url>
+        </repository>
+    </repositories>
+
+    <distributionManagement>
+        <repository>
+            <id>maven-releases</id>
+            <name>steerinfo nexus-releases</name>
+            <url>http://nexus.steerinfo.com/repository/maven-releases/</url>
+        </repository>
+        <snapshotRepository>
+            <id>maven-snapshots</id>
+            <url>http://nexus.steerinfo.com/repository/maven-snapshots/</url>
+        </snapshotRepository>
+    </distributionManagement>
+
+    <dependencies>
+        <!--minio-->
+        <dependency>
+            <groupId>io.minio</groupId>
+            <artifactId>minio</artifactId>
+            <version>8.2.1</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.squareup.okhttp3</groupId>
+                    <artifactId>okhttp</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <!--Redis-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+        <!--中交新路的包这个问杨-->
+        <dependency>
+            <groupId>com.ZhongJiaoXingLu</groupId>
+            <artifactId>openapi-sdk</artifactId>
+            <version>6.0</version>
+        </dependency>
+        <!--websocket-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <!--mybatisPlus-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.4.2</version>
+        </dependency>
+
+        <!--swagger-->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>3.17</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>3.17</version>
+        </dependency>
+        <!--steerinfo-->
+        <dependency>
+            <groupId>com.steerinfo</groupId>
+            <artifactId>framework</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <!-- httpClient远程调用接口 -->
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.13</version>
+        </dependency>
+        <!-- fastJson转换-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.75</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <!-- 表示开发的时候引入,发布的时候不会加载此包 -->
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter</artifactId>
+            <version>RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <!--             自动生成代码文件 -->
+            <plugin>
+                <groupId>com.steerinfo</groupId>
+                <artifactId>generator-maven-plugin</artifactId>
+                <version>3.0</version>
+                <configuration>
+                    <connUrl>jdbc:oracle:thin:@172.16.33.163:1521:ilsdbpri</connUrl>
+                    <user>dagang</user>
+                    <password>root123</password>
+                    <!--包名-->
+                    <targetPackage>com.steerinfo.dil</targetPackage>
+                    <tables>
+                        <param>DIL_VERSION</param>
+                    </tables>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>steerinfo</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+    </build>
+</project>

File diff suppressed because it is too large
+ 3900 - 0
replay_pid6728.log


+ 27 - 0
src/main/java/com/steerinfo/DilApplicationMain.java

@@ -0,0 +1,27 @@
+package com.steerinfo;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/4/21 14:32
+ * @Version 1.0
+ */
+@SpringBootApplication
+@ServletComponentScan
+@EnableScheduling
+@MapperScan({"com.steerinfo.dil.mapper","com.steerinfo.route.mapper"})
+@EnableFeignClients(basePackages = "com.steerinfo.dil.feign")
+@EnableDiscoveryClient
+public class DilApplicationMain {
+    public static void main(String[] args) {
+        SpringApplication.run(DilApplicationMain.class,args);
+    }
+}

+ 35 - 0
src/main/java/com/steerinfo/dil/config/AsyncConfiguration.java

@@ -0,0 +1,35 @@
+package com.steerinfo.dil.config;
+
+import io.swagger.annotations.Api;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.ThreadPoolExecutor;
+
+@Configuration
+@EnableAsync
+@Api("多线程配置")
+public class AsyncConfiguration {
+    @Bean("doSomethingExecutor")
+    public Executor doSomeThingExecutor(){
+        ThreadPoolTaskExecutor executor=new ThreadPoolTaskExecutor();
+        //创建时候线程数量
+        executor.setCorePoolSize(10);
+        //最大时候的线程数量
+        executor.setMaxPoolSize(20);
+        //缓冲队列:用来缓冲执行任务的队列
+        executor.setQueueCapacity(500);
+        //允许线程空闲时间
+        executor.setKeepAliveSeconds(60);
+        //线程池前缀
+        executor.setThreadNamePrefix("do-something-");
+        //缓冲队列满了之后的拒绝策略
+        // 缓冲队列满了之后的拒绝策略:由调用线程处理(一般是主线程)
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardPolicy());
+        executor.initialize();
+        return executor;
+    }
+}

+ 22 - 0
src/main/java/com/steerinfo/dil/config/CorsConfig1.java

@@ -0,0 +1,22 @@
+package com.steerinfo.dil.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ *
+ */
+@Configuration
+public class CorsConfig1 implements WebMvcConfigurer {
+
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+        registry.addMapping("/**")
+                .allowedOrigins("*")
+                .allowedMethods("GET","HEAD","POST","PUT","DELETE","OPTIONS")
+                .allowCredentials(true)
+                .maxAge(3600)
+                .allowedHeaders("*");
+    }
+}

+ 46 - 0
src/main/java/com/steerinfo/dil/config/RedisConfiguration.java

@@ -0,0 +1,46 @@
+package com.steerinfo.dil.config;
+
+
+import com.steerinfo.route.config.KeyExpiredListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.listener.RedisMessageListenerContainer;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+/**
+ * @program: SpringCloud * @description: redis配置类 * @author: zhang yi * @create: 2020-03-24 14:17
+ */
+@Configuration
+public class RedisConfiguration {
+    @Autowired
+    private RedisConnectionFactory redisConnectionFactory;
+
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    @Bean
+    public RedisTemplate<String, Object> stringSerializerRedisTemplate() {
+        RedisSerializer<String> stringSerializer = new StringRedisSerializer();
+        redisTemplate.setKeySerializer(stringSerializer);
+        redisTemplate.setValueSerializer(stringSerializer);
+        redisTemplate.setHashKeySerializer(stringSerializer);
+        redisTemplate.setHashValueSerializer(stringSerializer);
+        return redisTemplate;
+    }
+
+    @Bean
+    public RedisMessageListenerContainer redisMessageListenerContainer() {
+        RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
+        redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
+        return redisMessageListenerContainer;
+    }
+
+    @Bean
+    public KeyExpiredListener keyExpiredListener() {
+        return new KeyExpiredListener(this.redisMessageListenerContainer());
+    }
+}

+ 56 - 0
src/main/java/com/steerinfo/dil/config/WebSocketConfig.java

@@ -0,0 +1,56 @@
+package com.steerinfo.dil.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.messaging.simp.config.ChannelRegistration;
+import org.springframework.messaging.simp.config.MessageBrokerRegistry;
+import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
+import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
+import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+
+@Configuration
+@EnableWebSocketMessageBroker
+public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
+
+    @Override
+    public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {
+//        stompEndpointRegistry
+//                .addEndpoint("/webSocket")
+//                .setAllowedOrigins("*");
+//                .withSockJS(); //使用sockJS
+
+//        stompEndpointRegistry
+//                .addEndpoint("/event-websocket-app")
+//                .setAllowedOrigins("*");
+        stompEndpointRegistry.addEndpoint("/event-websocket").setAllowedOrigins("*").withSockJS();
+
+    }
+
+    @Override
+    public void configureMessageBroker(MessageBrokerRegistry registry) {
+        //这里使用的是内存模式,生产环境可以使用rabbitmq或者其他mq。
+        //这里注册两个,主要是目的是将广播和队列分开。
+        //registry.enableStompBrokerRelay().setRelayHost().setRelayPort() 其他方式
+        registry.enableSimpleBroker("/topic");
+        //设置客户端前缀 即@MessageMapping
+        registry.setApplicationDestinationPrefixes("/app");
+        //点对点发送前缀
+        registry.setUserDestinationPrefix("/user");
+    }
+
+    /**
+     * 输入通道参数配置
+     *
+     * @param registration
+     */
+    @Override
+    public void configureClientInboundChannel(ChannelRegistration registration) {
+    }
+
+
+    @Bean
+    public ServerEndpointExporter serverEndpointExporter(){
+        return new ServerEndpointExporter();
+    }
+}

+ 483 - 0
src/main/java/com/steerinfo/dil/controller/OffSiteTransportationController.java

@@ -0,0 +1,483 @@
+package com.steerinfo.dil.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.steerinfo.dil.service.ITmstruckLeaveFactoryResultService;
+import com.steerinfo.dil.service.ITmstruckReceiptResultService;
+import com.steerinfo.dil.service.impl.OffSiteTransportationServiceImpl;
+import com.steerinfo.dil.util.BaseRESTfulController;
+import com.steerinfo.dil.util.ColumnDataUtil;
+import com.steerinfo.dil.util.DataChange;
+import com.steerinfo.dil.util.PageListAdd;
+import com.steerinfo.framework.controller.RESTfulResult;
+import com.steerinfo.framework.service.pagehelper.PageHelper;
+import com.steerinfo.route.config.ImageFileUtils;
+import com.steerinfo.route.service.impl.RouteServiceImpl;
+import com.steerinfo.route.threeRequest.ZhongJiaoXingLu;
+import com.steerinfo.route.util.DataConversionTool;
+import com.steerinfo.route.util.HTTPRequestUtils;
+import com.steerinfo.route.vo.FullPathVisualizationTo.ViewVisualization;
+import com.steerinfo.route.vo.Map.RouteVo;
+import com.steerinfo.route.vo.ResultWarn;
+import com.steerinfo.route.vo.resultJson.SearchPoint;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartRequest;
+
+import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
+
+@Api("厂外运输接口")
+@RestController
+@RequestMapping("/${api.version}/pathDisplay")
+public class OffSiteTransportationController extends BaseRESTfulController {
+    @Autowired
+    private ITmstruckLeaveFactoryResultService tmstruckLeaveFactoryResultService;
+
+    @Autowired
+    private RouteServiceImpl routeService;
+    @Autowired
+    ColumnDataUtil columnDataUtil;
+    @Autowired
+    ImageFileUtils imageFileUtils;
+    @Autowired
+    private ZhongJiaoXingLu zhongJiaoXingLu;
+
+    @Value("${str.tengxun.key}")
+    private String key;
+    @Value("${redis.prefix.order}")
+    private String prefixOrder;
+    @Value("${redis.prefix.line}")
+    private String prefixLine;
+    @Value("${redis.prefix.suffix}")
+    private String suffix;
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    @Autowired
+    ITmstruckReceiptResultService tmstruckReceiptResultService;
+
+    private final SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+
+    @Autowired
+    OffSiteTransportationServiceImpl offSiteTransportationService;
+    @ApiOperation("保存路径")
+    @PostMapping("/savePath")
+    public CompletableFuture<String> savePath() throws Exception {
+
+        Map<String, Object> parem=tmstruckLeaveFactoryResultService.getTruckFactoryResult("WYSDD2022040600045906");
+        parem.put("turnOf","0");
+        return routeService.createTotalResult(parem);
+        //运输订单号:orderNumber、车牌号:capacityNumber、出厂时间:resultOutGateTime、预警开关:turnOf、发货地址:shipperName、收货地址:receiveAddress
+        //初始化请求参数
+//        HashMap<String,Object> mapValue=new HashMap<>();
+//        mapValue.put("orderNumber","WYSDD2021091000000001");
+//        mapValue.put("capacityNumber","豫SB6238");
+//        mapValue.put("resultOutGateTime","2021-11-17 14:20:19");
+//        mapValue.put("turnOf","0");
+//        mapValue.put("shipperName","四川达州钢铁集团有限");
+//        mapValue.put("receiveAddress","长沙市");
+//        return routeService.createTotalResult(mapValue);
+    }
+    @ApiOperation("全路径查询")
+    @PostMapping("/fullPath")
+    public Object fullPath(String orderNumber) throws Exception {
+        //运输订单号:orderNumber、车牌号:capacityNumber、出厂时间:resultOutGateTime、预警开关:turnOf、发货地址:shipperName、收货地址:receiveAddress
+        //初始化请求参数
+        HashMap<String,Object> mapValue=new HashMap<>();
+        mapValue.put("orderNumber",orderNumber);
+        return routeService.fullPathVisualization(mapValue);
+    }
+
+    @ApiOperation("查询在途运输")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "mapValue", value = "表头和参数", required = false, dataType = "map"),
+            @ApiImplicitParam(name = "apiId", value = "动态表头", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageNum", value = "页码", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "页", required = false, dataType = "Integer")
+    })
+    @PostMapping("/getInTransitTransportation")
+    public RESTfulResult getInTransitTransportation(@RequestBody Map<String,Object> mapValue,
+                                                    @RequestParam(required = true,defaultValue = "468",name = "apiId")Integer apiId,
+                                                    @RequestParam(required = false,defaultValue = "1",name = "pageNum")Integer pageNum,
+                                                    @RequestParam(required = false,defaultValue = "20",name = "pageSize")Integer pageSize
+                                                    )
+    {
+        if(mapValue.containsKey("startTime")&&mapValue.containsKey("endTime")){
+            Date  startDate=new Date(Long.parseLong(mapValue.get("startTime").toString())) ;
+            Date  endDate=new Date(Long.parseLong(mapValue.get("endTime").toString())) ;
+            Calendar ca = Calendar.getInstance();
+            ca.setTime(endDate);
+            ca.add(Calendar.DATE,1);
+            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+            String startTime1=simpleDateFormat.format(startDate);
+            String endTime1=simpleDateFormat.format(ca.getTime());
+            mapValue.replace("startTime",startTime1);
+            mapValue.replace("endTime",endTime1);
+        }else {
+            Date  startDate=new Date() ;
+            Date  endDate=new Date() ;
+            Calendar ca = Calendar.getInstance();
+            ca.setTime(endDate);
+            ca.add(Calendar.DATE,1);
+            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+            String startTime1=simpleDateFormat.format(startDate);
+            String endTime1=simpleDateFormat.format(ca.getTime());
+            mapValue.put("startTime",startTime1);
+            mapValue.put("endTime",endTime1);
+        }
+        List<Map<String,Object>> filter= offSiteTransportationService.getInTransitTransportation(mapValue);
+        PageHelper.startPage(pageNum, pageSize);
+        List<Map<String,Object>> list= offSiteTransportationService.getInTransitTransportation(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId, filter,list);
+        return success(pageList);
+    }
+
+    @ApiOperation("有异常")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "mapValue", value = "表头和参数", required = false, dataType = "map"),
+            @ApiImplicitParam(name = "apiId", value = "动态表头", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageNum", value = "页码", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "页", required = false, dataType = "Integer")
+    })
+    @PostMapping("/getHaveAbnormalTruckOrderInfo")
+    public RESTfulResult getHaveAbnormalTruckOrderInfo(@RequestBody Map<String,Object> mapValue,
+                                                    @RequestParam(required = true,defaultValue = "468",name = "apiId")Integer apiId,
+                                                    @RequestParam(required = false,defaultValue = "1",name = "pageNum")Integer pageNum,
+                                                    @RequestParam(required = false,defaultValue = "20",name = "pageSize")Integer pageSize
+    )
+    {
+        if(mapValue.containsKey("startTime")&&mapValue.containsKey("endTime")){
+            Date  startDate=new Date(Long.parseLong(mapValue.get("startTime").toString())) ;
+            Date  endDate=new Date(Long.parseLong(mapValue.get("endTime").toString())) ;
+            Calendar ca = Calendar.getInstance();
+            ca.setTime(endDate);
+            ca.add(Calendar.DATE,1);
+            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+            String startTime1=simpleDateFormat.format(startDate);
+            String endTime1=simpleDateFormat.format(ca.getTime());
+            mapValue.replace("startTime",startTime1);
+            mapValue.replace("endTime",endTime1);
+        }else {
+            Date  startDate=new Date() ;
+            Date  endDate=new Date() ;
+            Calendar ca = Calendar.getInstance();
+            ca.setTime(endDate);
+            ca.add(Calendar.DATE,1);
+            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+            String startTime1=simpleDateFormat.format(startDate);
+            String endTime1=simpleDateFormat.format(ca.getTime());
+            mapValue.put("startTime",startTime1);
+            mapValue.put("endTime",endTime1);
+        }
+        List<Map<String,Object>> filter= offSiteTransportationService.getHaveAbnormalTruckOrderInfo(mapValue);
+        PageHelper.startPage(pageNum, pageSize);
+        List<Map<String,Object>> list= offSiteTransportationService.getHaveAbnormalTruckOrderInfo(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId, filter,list);
+        return success(pageList);
+    }
+
+
+
+    @ApiOperation("查询在途运输")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "mapValue", value = "表头和参数", required = false, dataType = "map"),
+            @ApiImplicitParam(name = "apiId", value = "动态表头", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageNum", value = "页码", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "页", required = false, dataType = "Integer")
+    })
+    @PostMapping("/getFinishTruckOrderInfo")
+    public RESTfulResult getFinishTruckOrderInfo(@RequestBody Map<String,Object> mapValue,
+                                                    @RequestParam(required = true,defaultValue = "468",name = "apiId")Integer apiId,
+                                                    @RequestParam(required = false,defaultValue = "1",name = "pageNum")Integer pageNum,
+                                                    @RequestParam(required = false,defaultValue = "20",name = "pageSize")Integer pageSize
+    )
+    {
+        if(mapValue.containsKey("startTime")&&mapValue.containsKey("endTime")){
+            Date  startDate=new Date(Long.parseLong(mapValue.get("startTime").toString())) ;
+            Date  endDate=new Date(Long.parseLong(mapValue.get("endTime").toString())) ;
+            Calendar ca = Calendar.getInstance();
+            ca.setTime(endDate);
+            ca.add(Calendar.DATE,1);
+            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+            String startTime1=simpleDateFormat.format(startDate);
+            String endTime1=simpleDateFormat.format(ca.getTime());
+            mapValue.replace("startTime",startTime1);
+            mapValue.replace("endTime",endTime1);
+        }else {
+            Date  startDate=new Date() ;
+            Date  endDate=new Date() ;
+            Calendar ca = Calendar.getInstance();
+            ca.setTime(endDate);
+            ca.add(Calendar.DATE,1);
+            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+            String startTime1=simpleDateFormat.format(startDate);
+            String endTime1=simpleDateFormat.format(ca.getTime());
+            mapValue.put("startTime",startTime1);
+            mapValue.put("endTime",endTime1);
+        }
+        //已经完成
+        mapValue.put("orderStatus",2);
+        List<Map<String,Object>> filter= offSiteTransportationService.getInTransitTransportation(mapValue);
+        PageHelper.startPage(pageNum, pageSize);
+        List<Map<String,Object>> list= offSiteTransportationService.getInTransitTransportation(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId, filter,list);
+        return success(pageList);
+    }
+
+    @PostMapping(value = "/addTmstruckReceiptResult" )
+    public synchronized RESTfulResult addTmstruckReceiptResult(@RequestBody Map<String,Object>  value , Integer num, String orderNumber, String resultArrivalAddress, Integer imgcount3, Integer imgcount4) throws Exception {
+
+        Map<String,Object> map = new HashMap<String,Object>();
+        map.put("orderNumber",orderNumber);
+        map.put("resultArrivalAddress",resultArrivalAddress);
+        Integer orderStatus = offSiteTransportationService.getOrderStatus(map);
+        //判断是否已经结束
+        if (orderStatus!=null&&orderStatus==2){
+            return failed(-3);
+        }
+        map.putAll(value);
+        //添加入库实绩
+        Integer resTfulResult = offSiteTransportationService.addTmstruckReceiptResult(map);
+        if (!resTfulResult.equals("4")){
+            //保存路线
+            String redisJson = (String) redisTemplate.opsForValue().get(prefixOrder+":"+orderNumber);
+            HashMap mapValue = JSON.parseObject(redisJson, HashMap.class);
+            String json = zhongJiaoXingLu.visualRoute(mapValue);
+            ViewVisualization to=null;
+            if (json!=null){
+                //设置60天后过期
+                Calendar calendar=Calendar.getInstance();
+                long agoTime= calendar.getTime().getTime();
+                calendar.add(Calendar.MONTH,2);
+                long lateTime= calendar.getTime().getTime();
+                long saveTime=(lateTime-agoTime)/1000;
+                redisTemplate.opsForValue().set(prefixLine+":"+orderNumber, json, saveTime, TimeUnit.SECONDS);
+                //删除订单
+                redisTemplate.delete(prefixOrder+":"+orderNumber);
+                redisTemplate.delete(prefixOrder+":"+orderNumber+suffix);
+                //添加运输距离
+                to= (ViewVisualization) DataConversionTool.jsonToBean(json,ViewVisualization.class);
+
+            }else {
+                HashMap<String,Object> hashMap=new HashMap();
+                hashMap.put("orderNumber",orderNumber);
+                Map<String,Object> resultMap= offSiteTransportationService.getStartAndEndCapacityNumber(hashMap);
+
+                if (resultMap!=null){
+                    json= getPathJSON(resultMap.get("capacityNumber").toString(),resultMap.get("resultOutGateTime").toString());
+
+
+                    if (json!=null&&!json.equals("")){
+                        to= (ViewVisualization) DataConversionTool.jsonToBean(json,ViewVisualization.class);
+                    }
+                }
+            }
+            //设置运输距离,并且结束订单
+            if (to!=null&&to.getResult()!=null&&to.getResult().getRunDistance()!=null){
+                Map<String,Object> ordermap=new HashMap<>();
+                ordermap.put("orderNumber",orderNumber);
+                ordermap.put("orderMileage",to.getResult().getRunDistance()==null?"1":to.getResult().getRunDistance());
+                offSiteTransportationService.insertOrderMileage(ordermap);
+
+            }else {
+                if (to!=null&&to.getStatus()==1006){
+
+                    Map<String,Object> ordermap=new HashMap<>();
+                    ordermap.put("orderNumber",orderNumber);
+                    ordermap.put("orderMileage","-1");
+                    offSiteTransportationService.insertOrderMileage(ordermap);
+                }else if (to!=null&&to.getStatus()==1001){
+                    Map<String,Object> ordermap=new HashMap<>();
+                    ordermap.put("orderNumber",orderNumber);
+                    ordermap.put("orderMileage","1");
+                    offSiteTransportationService.insertOrderMileage(ordermap);
+                } else {
+                    Map<String,Object> ordermap=new HashMap<>();
+                    ordermap.put("orderNumber",orderNumber);
+                    ordermap.put("orderMileage","-1");
+                    offSiteTransportationService.insertOrderMileage(ordermap);
+                }
+
+            }
+            //关闭运输订单
+            offSiteTransportationService.orderClose(orderNumber);
+        }
+
+
+        return success(1);
+    }
+
+    //如果内容丢失重新获得
+    public String getPathJSON(String capacityNumber,String resultOutGateTime) throws Exception {
+
+        //入网验证
+        String netValidationResult = zhongJiaoXingLu.netValidation(capacityNumber);
+        Map netValidationMap = (Map) JSONObject.parse(netValidationResult);
+        if (Integer.parseInt(netValidationMap.get("status").toString())==1001&&netValidationMap.get("result").toString().equals("yes")){
+            String searchPointJson = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+ URLEncoder.encode("四川省达州钢铁集团有限责任公司","utf-8")+"&key=WDTBZ-A5VKJ-UDLFI-KYJY6-WTP2S-A6B4Y");
+            SearchPoint searchPoint= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson, SearchPoint.class);
+            String searchPointJson2 = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+URLEncoder.encode("四川省达州钢铁集团有限责任公司","utf-8")+"&key=WDTBZ-A5VKJ-UDLFI-KYJY6-WTP2S-A6B4Y");
+            SearchPoint searchPoint2= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson2, SearchPoint.class);
+            //运单生成之后保存
+            HashMap<String,String> redisMap=new HashMap<>();
+            String startLon=searchPoint.getResult().getLocation().getLng().toString().length()>9?searchPoint.getResult().getLocation().getLng().toString().substring(0,9):searchPoint.getResult().getLocation().getLng().toString();
+            String startLat=searchPoint.getResult().getLocation().getLat().toString().length()>9?searchPoint.getResult().getLocation().getLat().toString().substring(0,8):searchPoint.getResult().getLocation().getLat().toString();
+            redisMap.put("startLonlat", startLon+","+startLat);
+            String endLon= searchPoint2.getResult().getLocation().getLng().toString().length()>9?searchPoint2.getResult().getLocation().getLng().toString().substring(0,9):searchPoint2.getResult().getLocation().getLng().toString();
+            String endLat= searchPoint2.getResult().getLocation().getLat().toString().length()>9?searchPoint2.getResult().getLocation().getLat().toString().substring(0,8):searchPoint2.getResult().getLocation().getLat().toString();
+            redisMap.put("endLonlat",endLon+","+endLat);
+            redisMap.put("vclN", capacityNumber);
+            redisMap.put("vco","2");
+            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
+            String qryBtm=resultOutGateTime;
+            //获得23小时、45分钟之后的时间
+            Date parse = simpleDateFormat.parse(qryBtm);
+            //时间添加
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(parse);
+            calendar.add(Calendar.HOUR_OF_DAY, 23);
+            calendar.add(Calendar.SECOND, 45);
+            redisMap.put("qryBtm", qryBtm);
+            redisMap.put("qryEtm",simpleDateFormat.format(calendar.getTime()));
+            System.out.println(redisMap);
+            String json = zhongJiaoXingLu.visualRoute(redisMap);
+            System.out.println(json.length()>100?json.substring(0,100):json);
+            return json;
+        }
+        return null;
+    }
+
+    public String removeData(){
+        offSiteTransportationService.removeDate();
+        return "success";
+    }
+
+    /**查询是否开启运输报警状态
+     * warnSwitch
+     * @param
+     * @return
+     */
+    @ApiOperation(value="查询是否开启运输报警状态")
+    @ApiImplicitParams({
+    })
+    @PostMapping(value = "/selectWarnSwitch")
+    public RESTfulResult selectWarnSwitch() {
+        Map<String,Object> warnSwitch = offSiteTransportationService.selectWarnSwitch();
+        return success(warnSwitch);
+    }
+
+    /**是否开启运输报警状态
+     * warnSwitchaddTmstruckTotalResult
+     * @param
+     * @returninTransitOrderMileage
+     */
+    @ApiOperation(value="是否开启运输报警状态")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "warnSwitch", value = "运输报警状态", required = false, dataType = "String")
+    })
+    @PostMapping(value = "/inTransitWarn")
+    public RESTfulResult inTransitWarn(@RequestParam String warnSwitch,@RequestParam String radio) {
+        int i = offSiteTransportationService.updateWarnSwitch(warnSwitch,radio);
+        return success(i);
+    }
+
+    @PostMapping("/abnormalLineWarn")
+    public String abnormalLineWarn(@RequestParam(value = "data") String data) throws Exception {
+        System.out.println("abnormalLineWarn");
+        System.out.println(data);
+        ResultWarn resultWarn= (ResultWarn) DataConversionTool.jsonToBean(data, ResultWarn.class);
+        Map<String, Object> map=  DataConversionTool.objectToMap(resultWarn);
+        int i= offSiteTransportationService.addTransportationAlarm(map);
+        return "success";
+    }
+    @PostMapping("/parkWarn")
+    public String parkWarn(@RequestParam(value = "data",required = false) String data) throws Exception {
+        System.out.println("parkWarn");
+        System.out.println(data);
+        ResultWarn resultWarn= (ResultWarn) DataConversionTool.jsonToBean(data, ResultWarn.class);
+        Map<String, Object> map=  DataConversionTool.objectToMap(resultWarn);
+        int i=offSiteTransportationService.addTransportationAlarm(map);
+
+        return "success";
+    }
+    @PostMapping("/offLineWarn")
+    public String offLineWarn(@RequestParam(value = "data") String data) throws Exception {
+        System.out.println("offLineWarn");
+        System.out.println(data);
+        ResultWarn resultWarn= (ResultWarn) DataConversionTool.jsonToBean(data, ResultWarn.class);
+        Map<String, Object> map=  DataConversionTool.objectToMap(resultWarn);
+        int i=offSiteTransportationService.addTransportationAlarm(map);
+        return "success";
+    }
+
+    @ApiOperation(value="展示运输在途异常信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "apiId(472)", value = "表头", required = false, dataType = "Interger")
+    })
+    @PostMapping("/getTransportAbnormalInfo")
+    public RESTfulResult getTransportAbnormalInfo(@RequestBody(required=false) Map<String,Object> mapValue,
+                                                  @RequestParam(name = "apiId",defaultValue = "472") Integer apiId,
+                                                  @RequestParam(name = "pageNum") Integer pageNum,
+                                                  @RequestParam(name = "pageSize") Integer pageSize){
+        List<Map<String, Object>> transportAbnormalInfo = offSiteTransportationService.getTransportAbnormalInfo(mapValue);
+        PageHelper.startPage(pageNum,pageSize);
+        List<Map<String, Object>> transportAbnormalInfo1 = offSiteTransportationService.getTransportAbnormalInfo(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId,transportAbnormalInfo,transportAbnormalInfo1);
+        return success(pageList);
+    }
+    @ApiOperation(value="查询路径")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "mapValue", value = "查询条件", required = false, dataType = "HashMap")
+    })
+    @PostMapping("/fullPathVisualizationByCarNumber")
+    public RouteVo fullPathVisualizationByCarNumber(@RequestBody HashMap mapValue) throws Exception {
+
+        CompletableFuture<RouteVo> createOrder =routeService.fullPathVisualizationByCarNumber(mapValue);
+
+        return createOrder.get();
+    }
+
+    @ApiOperation(value="展示抵达实绩信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "apiId(470)", value = "表头", required = false, dataType = "Interger")
+    })
+    @PostMapping("/getReceiptResult")
+    public RESTfulResult getReceiptResult(@RequestBody(required=false) Map<String, Object> mapValue,
+                                          Integer apiId,
+                                          Integer pageNum,
+                                          Integer pageSize,
+                                          String startTime,
+                                          String endTime,
+                                          String con){
+        if (con != null && (con.equals("") || con.equals("undefined")) ) {
+            con = null;
+        }
+        if (con != null && con.length() != 0) {
+            mapValue.put("con","%" + con + "%");
+        }
+        DataChange.queryDataByDateTime(startTime, endTime, mapValue, sdfDateTime);
+        PageHelper.startPage(pageNum,pageSize);
+        List<Map<String, Object>> receiptResultInfo = tmstruckReceiptResultService.getReceiptResultInfo(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId,null,receiptResultInfo);
+        return success(pageList);
+    }
+    @PostMapping("/createTotalResult")
+    public RESTfulResult createTotalResult(@RequestBody(required=true) Map<String, Object> mapValue) throws Exception {
+        CompletableFuture<String> totalResult = routeService.createTotalResult(mapValue);
+        return success(totalResult);
+    }
+}

+ 68 - 0
src/main/java/com/steerinfo/dil/controller/TestController.java

@@ -0,0 +1,68 @@
+package com.steerinfo.dil.controller;
+
+import com.steerinfo.dil.service.ITmstruckLeaveFactoryResultService;
+import com.steerinfo.dil.service.impl.UtilsServiceImpl;
+import com.steerinfo.dil.util.BaseRESTfulController;
+import com.steerinfo.route.service.impl.RouteServiceImpl;
+import com.steerinfo.route.vo.Map.RouteVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+@RestController
+@RequestMapping("/${api.version}/Test")
+public class TestController extends BaseRESTfulController {
+
+    @Autowired
+    private RouteServiceImpl routeService;
+    @Autowired
+    private ITmstruckLeaveFactoryResultService tmstruckLeaveFactoryResultService;
+
+
+    @Autowired
+    private UtilsServiceImpl utilsService;
+
+    @PostMapping("/savePath")
+    public String savePath() throws Exception {
+
+        Map<String, Object> parem=tmstruckLeaveFactoryResultService.getTruckFactoryResult("WYSDD2021091000000002");
+        parem.put("turnOf","0");
+        //运输订单号:orderNumber、车牌号:capacityNumber、出厂时间:resultOutGateTime、预警开关:turnOf、发货地址:shipperName、收货地址:receiveAddress
+        //初始化请求参数
+//        HashMap<String,Object> mapValue=new HashMap<>();
+//        mapValue.put("orderNumber","WYSDD2021091000000001");
+//        mapValue.put("capacityNumber","豫SB6238");
+//        mapValue.put("resultOutGateTime","2021-11-17 14:20:19");
+//        mapValue.put("turnOf","0");
+//        mapValue.put("shipperName","四川达州钢铁集团有限");
+//        mapValue.put("receiveAddress","长沙市");
+        return routeService.saveRoute(parem).toString();
+    }
+    @PostMapping("/fullPath")
+    public Object fullPath(String orderNumber) throws Exception {
+        //运输订单号:orderNumber、车牌号:capacityNumber、出厂时间:resultOutGateTime、预警开关:turnOf、发货地址:shipperName、收货地址:receiveAddress
+        //初始化请求参数
+        HashMap<String,Object> mapValue=new HashMap<>();
+        mapValue.put("orderNumber",orderNumber);
+        return routeService.fullPathVisualization(mapValue);
+    }
+
+
+    @PostMapping("/fullPathVisualizationByCarNumber")
+    public RouteVo fullPathVisualizationByCarNumber(@RequestBody HashMap mapValue) throws Exception {
+
+        CompletableFuture<RouteVo> createOrder =routeService.fullPathVisualizationByCarNumber(mapValue);
+
+        return createOrder.get();
+    }
+
+
+
+
+}

+ 248 - 0
src/main/java/com/steerinfo/dil/controller/TmstruckReceiptResultController.java

@@ -0,0 +1,248 @@
+package com.steerinfo.dil.controller;
+
+import com.steerinfo.dil.feign.ESFeign;
+import com.steerinfo.dil.model.TmstruckReceiptResult;
+import com.steerinfo.dil.service.ITmstruckReceiptResultService;
+import com.steerinfo.dil.util.BaseRESTfulController;
+import com.steerinfo.dil.util.ColumnDataUtil;
+import com.steerinfo.dil.util.DataChange;
+import com.steerinfo.dil.util.PageListAdd;
+import com.steerinfo.framework.controller.RESTfulResult;
+import com.steerinfo.framework.service.pagehelper.PageHelper;
+import com.steerinfo.route.config.ImageFileUtils;
+import com.steerinfo.route.mapper.TmstruckArrivalResultMapper;
+import com.steerinfo.route.model.TmstruckReceiptResultChild;
+import com.steerinfo.route.service.impl.TmstruckReceiptResultChildServiceImpl;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * TmstruckReceiptResult RESTful接口:
+ * @author generator
+ * @version 1.0-SNAPSHORT 2021-09-10 10:10
+ * 类描述
+ * 修订历史:
+ * 日期:2021-09-10
+ * 作者:generator
+ * 参考:
+ * 描述:TmstruckReceiptResult RESTful接口
+ * @see null
+ * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ */
+@RestController
+@RequestMapping("/${api.version}/tmstruckreceiptresults")
+public class TmstruckReceiptResultController extends BaseRESTfulController {
+
+    @Autowired
+    ITmstruckReceiptResultService tmstruckReceiptResultService;
+    @Autowired
+    TmstruckArrivalResultMapper tmstruckArrivalResultMapper;
+    @Autowired
+    TmstruckReceiptResultChildServiceImpl tmstruckReceiptResultChildService;
+
+    @Autowired
+    ESFeign esFeign;
+
+    @Autowired
+    ColumnDataUtil columnDataUtil;
+
+    @Autowired
+    ImageFileUtils imageFileUtils;
+
+    private final SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");
+
+    private final SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+//    @ApiOperation(value="查询收货实绩")
+//    @ApiImplicitParams({
+//            @ApiImplicitParam(name = "mapValue", value = "表头和参数", required = false, dataType = "map"),
+//            @ApiImplicitParam(name = "apiId(107)", value = "动态表头", required = false, dataType = "Integer"),
+//            @ApiImplicitParam(name = "pageNum", value = "页码", required = false, dataType = "Integer"),
+//            @ApiImplicitParam(name = "pageSize", value = "页", required = false, dataType = "Integer"),
+//            @ApiImplicitParam(name = "status", value = "状态码", required = false, dataType = "Integer"),
+//    })
+//    @PostMapping("/getArrivalResult")
+//    public RESTfulResult getArrivalResult(@RequestBody(required=false) Map<String,Object> mapValue,
+//                                          Integer apiId,
+//                                          Integer pageNum,
+//                                          Integer pageSize,
+//                                          Integer orderType,
+//                                          String con
+//    ){
+//        mapValue.put("orderTypee", orderType);
+//        PageHelper.startPage(pageNum,pageSize);
+//        //分页数据
+//        List<Map<String, Object>> receiveResult = tmstruckReceiptResultService.getReceiveResult(mapValue);
+//        PageListAdd pageList = columnDataUtil.tableColumnData(apiId, null,receiveResult);
+//        return success(pageList);
+//    }
+
+
+    @ApiOperation(value="新增钢材到异地库达州站驻港人员确定收货")
+    @PostMapping("/addSteelNzReceiptResult")
+    public RESTfulResult addSteelNzReceiptResult(@RequestBody(required = false) Map<String, Object> map) {
+        int i = tmstruckReceiptResultService.addSteelNzReceiptResult(map);
+        return success(i);
+    }
+
+    /**
+     * 新增收货实绩
+     * @param map
+     * @return
+     */
+    @ApiOperation(value="新增收货实绩")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "map", value = "收货实绩map", required = false, dataType = "java.util.Map")
+    })
+    @PostMapping(value = "/addTmstruckReceiptResult")
+    public RESTfulResult addTmstruckReceiptResult(@RequestBody(required = false) Map<String, Object> map){
+        BigDecimal alreadyExistsArrivalResult = tmstruckArrivalResultMapper.alreadyExistsArrivalResult((String) map.get("orderNumber"));
+        if(alreadyExistsArrivalResult!=null){
+            TmstruckReceiptResult tmstruckReceiptResult = new TmstruckReceiptResult();
+            //获取运输订单号和收货点地址
+            String orderNumber = (String) map.get("orderNumber");
+            String resultArrivalAddress = (String) map.get("resultArrivalAddress");
+            //获取空货箱照片、已签字的送货单照片
+            String resultEmptyContainerPhoto = (String) map.get("url1");
+            String resultSignedNotePhoto = (String) map.get("url2");
+            tmstruckReceiptResult.setResultArrivalAddress(resultArrivalAddress);
+            tmstruckReceiptResult.setResultEmptyContainerPhoto(resultEmptyContainerPhoto);
+            tmstruckReceiptResult.setResultSignedNotePhoto(resultSignedNotePhoto);
+            if(map.containsKey("url3")){
+                //如果有,获取客户签收单照片
+                String resultReceiveNotePhoto = (String) map.get("url3");
+                tmstruckReceiptResult.setResultReceiveNotePhoto(resultReceiveNotePhoto);
+            }
+            //新增收货实绩主表
+            BigDecimal receiptResultId = tmstruckReceiptResultService.addTmstruckReceiptResult(orderNumber, tmstruckReceiptResult);
+            //初始化收货实绩子表信息
+            TmstruckReceiptResultChild tmstruckReceiptResultChild = new TmstruckReceiptResultChild();
+            //关联收货实绩主表
+            tmstruckReceiptResultChild.setReceiptResultId(receiptResultId);
+            //如果有,获取最多三张其他照片
+            if(map.containsKey("fourFiles")){
+                List<String> fourFiles = (List<String>) map.get("fourFiles");
+                if(fourFiles.size()==0){}
+                else if(fourFiles.size()==1){
+                    tmstruckReceiptResultChild.setOtherPhoto1(fourFiles.get(0));
+                }else if(fourFiles.size()==2){
+                    tmstruckReceiptResultChild.setOtherPhoto1(fourFiles.get(0));
+                    tmstruckReceiptResultChild.setOtherPhoto2(fourFiles.get(1));
+                }else {
+                    tmstruckReceiptResultChild.setOtherPhoto1(fourFiles.get(0));
+                    tmstruckReceiptResultChild.setOtherPhoto2(fourFiles.get(1));
+                    tmstruckReceiptResultChild.setOtherPhoto3(fourFiles.get(2));
+                }
+            }
+            //新增收货实绩子表
+            int i = tmstruckReceiptResultChildService.addTmstruckReceiptResultChild(tmstruckReceiptResultChild);
+            return success(i);
+        }else{
+            return success(4);
+        }
+
+    }
+
+
+
+    @ApiOperation(value="展示抵达实绩信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "apiId(470)", value = "表头", required = false, dataType = "Interger")
+    })
+    @PostMapping("/getArrivalResult")
+    public RESTfulResult getArrivalResult(@RequestBody(required=false) Map<String, Object> mapValue,
+                                          Integer apiId,
+                                          Integer pageNum,
+                                          Integer pageSize,
+                                          String startTime,
+                                          String endTime,
+                                          String con){
+        if (con != null && (con.equals("") || con.equals("undefined")) ) {
+            con = null;
+        }
+        if (con != null && con.length() != 0) {
+            mapValue.put("con","%" + con + "%");
+        }
+        DataChange.queryDataByDateTime(startTime, endTime, mapValue, sdfDateTime);
+        PageHelper.startPage(pageNum,pageSize);
+        List<Map<String, Object>> receiptResultInfo = tmstruckReceiptResultService.getReceiptResultInfo(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId,null,receiptResultInfo);
+        return success(pageList);
+    }
+
+    @ApiOperation(value = "获取抵达作业照片")
+    @PostMapping("/getArrivalPhoto")
+    public RESTfulResult getArrivalPhoto(@RequestParam String orderNumber){
+        String receiptPhoto = tmstruckReceiptResultService.getReceiptPhoto(orderNumber);
+        String photo =null;
+        try {
+            photo = imageFileUtils.downloadFile(receiptPhoto).toString();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return success(photo);
+    }
+
+    @ApiOperation(value="展示收货实绩信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "apiId(470)", value = "表头", required = false, dataType = "Interger")
+    })
+    @PostMapping("/getReceivingResult")
+    public RESTfulResult getReceivingResult(@RequestBody(required=false) Map<String, Object> mapValue,
+                                          Integer apiId,
+                                          Integer pageNum,
+                                          Integer pageSize,
+                                          String startTime,
+                                          String endTime,
+                                          String con){
+        if (con != null && (con.equals("") || con.equals("undefined")) ) {
+            con = null;
+        }
+        if (con != null && con.length() != 0) {
+            mapValue.put("con","%" + con + "%");
+        }
+        DataChange.queryDataByDateTime(startTime, endTime, mapValue, sdfDateTime);
+        PageHelper.startPage(pageNum,pageSize);
+        List<Map<String, Object>> receiptResultInfo = tmstruckReceiptResultService.getReceivingResult(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId,null,receiptResultInfo);
+        return success(pageList);
+    }
+
+    @ApiOperation(value = "获取收货作业照片")
+    @PostMapping("/getReceivingPhoto")
+    public RESTfulResult getReceivingPhoto(@RequestParam String orderNumber) throws Exception {
+        List<Map<String,Object>> mapList = tmstruckReceiptResultService.getReceivingPhoto(orderNumber);
+
+        for(Map<String,Object> map:mapList){
+            if(map.containsKey("resultEmptyContainerPhoto") && map.get("resultEmptyContainerPhoto")!=null){
+                String resultEmptyContainerPhoto = (String) imageFileUtils.downloadFile(map.get("resultEmptyContainerPhoto").toString());
+                map.put("resultEmptyContainerPhoto",resultEmptyContainerPhoto);
+            }
+            if(map.containsKey("resultSignedNotePhoto") && map.get("resultSignedNotePhoto")!=null){
+                String resultSignedNotePhoto = (String) imageFileUtils.downloadFile(map.get("resultSignedNotePhoto").toString());
+              map.put("resultSignedNotePhoto",resultSignedNotePhoto);
+            }
+        }
+
+        return success(mapList.get(0));
+    }
+    @ApiOperation(value = "获取收货作业照片")
+    @PostMapping("/getReceivingPhotoByUrl")
+    public Map<String,Object> getReceivingPhotoByUrl(@RequestParam String orderNumber) throws Exception {
+        List<Map<String,Object>> mapList = tmstruckReceiptResultService.getReceivingPhoto(orderNumber);
+        Map<String,Object> mapvalue = null;
+        if (mapList!=null){
+            mapvalue=mapList.get(0);
+        }
+        
+        return mapvalue;
+    }
+
+}

+ 21 - 0
src/main/java/com/steerinfo/dil/feign/ColumnDataFeign.java

@@ -0,0 +1,21 @@
+package com.steerinfo.dil.feign;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/6/23 9:58
+ * @Version 1.0
+ */
+@Service
+@FeignClient(value = "DIL-COLUMN-DATA-DEV",url = "${openfeign.ColumnDataFeign.url}")
+public interface ColumnDataFeign {
+    @RequestMapping("getColumnData")
+    List<Map<String,Object>> getColumnData(@RequestParam("apiId") Integer apiId);
+}

+ 32 - 0
src/main/java/com/steerinfo/dil/feign/ESFeign.java

@@ -0,0 +1,32 @@
+package com.steerinfo.dil.feign;
+
+import com.steerinfo.dil.util.PageListAdd;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/7/27 15:49
+ * @Version 1.0
+ */
+
+
+@FeignClient(value = "DIL-ES-DEV",url = "172.16.33.166:8089/api/v1/es")
+public interface ESFeign {
+    @PostMapping("getConResult")
+    PageListAdd getConResult(@RequestBody(required = false) Map<String, Object> mapValue,
+                             @RequestParam String index,
+                             @RequestParam Integer apiId,
+                             @RequestParam Integer pageNum,
+                             @RequestParam Integer pageSize,
+                             @RequestParam String con);
+
+
+    @PostMapping( value = "insertIndex",consumes = "application/json", produces = "application/json")
+    void insertIndex(@RequestBody List<Map<String, Object>> detailListTotal);
+}

+ 15 - 0
src/main/java/com/steerinfo/dil/feign/IMFeign.java

@@ -0,0 +1,15 @@
+package com.steerinfo.dil.feign;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
+
+@FeignClient(value = "DIL-IM-DEV", url = "${openfeign.ImFeign.url}")
+public interface IMFeign {
+    @PostMapping("/websocket/sendToUser")
+    @ResponseBody
+    String sendToUser(@RequestBody HashMap map);
+}

+ 26 - 0
src/main/java/com/steerinfo/dil/interceptors/MyLocaleChangeInterceptor.java

@@ -0,0 +1,26 @@
+package com.steerinfo.dil.interceptors;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.support.ReloadableResourceBundleMessageSource;
+import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
+import org.springframework.web.servlet.i18n.SessionLocaleResolver;
+
+import java.util.Locale;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/4/23 8:19
+ * @Version 1.0
+ */
+
+@Configuration
+public class MyLocaleChangeInterceptor {
+
+    //国际化配置
+    @Bean
+    public LocaleChangeInterceptor localeChangeInterceptor(){
+        return new LocaleChangeInterceptor();
+    }
+
+}

+ 41 - 0
src/main/java/com/steerinfo/dil/mapper/OffSiteTransportationMapper.java

@@ -0,0 +1,41 @@
+package com.steerinfo.dil.mapper;
+
+import com.steerinfo.dil.model.TmstruckAbnormalResult;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+@Mapper
+public interface OffSiteTransportationMapper {
+    List<Map<String, Object>> getInTransitTransportation(Map<String, Object> mapValue);
+
+    Map<String, Object> getTruckFactoryResult(String orderNumber);
+
+    Integer getOrderStatu(String orderNumber);
+
+    Map<String, Object> getStartAndEndCapacityNumber(Map<String, Object> map);
+
+    void insertOrderMileage(HashMap<String, Object> omstruckOrder);
+
+    int orderClose(String orderNumber);
+
+    List<Map<String, Object>> getReceiptData();
+
+    int insertReceive(Map<String, Object> map);
+
+    //查询是否开启运输报警状态
+    Map<String,Object> selectWarnSwitch();
+
+    int insertOrderTripId(Map<String, Object> map);
+    
+
+    BigDecimal selectIsReceiving(String rid);
+
+    void addTransportationAlarm(TmstruckAbnormalResult tmstruckAbnormalResult, String rid);
+
+    List<Map<String, Object>> getHaveAbnormalTruckOrderInfo(Map<String, Object> mapValue);
+
+    List<Map<String, Object>> getTransportAbnormalInfo(Map<String, Object> mapValue);
+}

+ 15 - 0
src/main/java/com/steerinfo/dil/mapper/TmstruckAbnormalResultMapper.java

@@ -0,0 +1,15 @@
+package com.steerinfo.dil.mapper;
+
+
+import com.steerinfo.dil.model.TmstruckAbnormalResult;
+import com.steerinfo.framework.mapper.IBaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.math.BigDecimal;
+
+@Mapper
+public interface TmstruckAbnormalResultMapper extends IBaseMapper<TmstruckAbnormalResult, BigDecimal> {
+    BigDecimal selectMaxId();
+
+    BigDecimal getTotalIdByTripId(String tripId);
+}

+ 12 - 0
src/main/java/com/steerinfo/dil/mapper/TmstruckInTransitWarnMapper.java

@@ -0,0 +1,12 @@
+package com.steerinfo.dil.mapper;
+
+import com.steerinfo.dil.model.TmstruckInTransitWarn;
+import com.steerinfo.framework.mapper.IBaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.math.BigDecimal;
+
+@Mapper
+public interface TmstruckInTransitWarnMapper extends IBaseMapper<TmstruckInTransitWarn, BigDecimal> {
+    TmstruckInTransitWarn selectByPrimaryKey(BigDecimal bigDecimal);
+}

+ 67 - 0
src/main/java/com/steerinfo/dil/mapper/TmstruckLeaveFactoryResultMapper.java

@@ -0,0 +1,67 @@
+package com.steerinfo.dil.mapper;
+
+import com.steerinfo.dil.model.TmstruckLeaveFactoryResult;
+import com.steerinfo.framework.mapper.IBaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface TmstruckLeaveFactoryResultMapper extends IBaseMapper<TmstruckLeaveFactoryResult, BigDecimal> {
+    //查询最大ID
+    @Select("select seq_tmstruck_leavefactory.nextval from dual")
+    BigDecimal selectMaxId();
+
+    //查询采购所有的出厂实绩、
+    List<Map<String, Object>> getCGLeaveFactoryResult(Map<String, Object> map);
+
+    //查询运输路线是否为出厂
+    Integer selectTransportRoute(String orderNumber);
+
+    //查询车牌号与门岗
+    Map<String,Object> selectCnAndGnByOrderNumber(String orderNumber);
+
+    //根据订单号获取实绩id
+    Map<String, Object> selectResultId(BigDecimal resultTotalId);
+
+    //销售物流查询所有的出厂实绩
+    List<Map<String,Object>> selectAllLeaveFacatoryForSale(Map<String,Object> map);
+
+    //查询内转钢材到异地库出厂实绩
+    List<Map<String, Object>> selectSteelNzLeaveFactory(Map<String, Object> map);
+
+    //查询内转国产矿进口矿出厂实绩
+    List<Map<String, Object>> getImportedDomesticNzEnFactoryResult(Map<String, Object> map);
+
+    //查询内转厂内物资出厂实绩
+    List<Map<String, Object>> getInFactoryOutFactoryResult(Map<String, Object> map);
+
+    //通过总实绩Id查询出厂实绩
+    BigDecimal getResultIdByTotalId(Integer resultTotalId);
+
+    Map<String, Object> getTruckFactoryResult(String orderNumber);
+
+    //
+    List<Map<String, Object>> getLeaveFactoryList(String orderNumber);
+
+
+    Map<String, Object> getDeliveryOrder(String orderNumber);
+
+    List<Map<String,Object>> getDeliveryOrderMaterial(String orderNumber);
+
+    // 查询零星物资出厂列表
+    List<Map<String,Object>> getSporadicLeaveFactory(Map<String, Object> mapValue);
+
+    //根据采购订单ID查询是否为一车多趟
+    Integer getIsMoreTripsStatus(BigDecimal orderId);
+
+    int getPlanEnable(BigDecimal orderId);
+
+    Integer getSeq(BigDecimal orderId);
+
+    Map<String, Object> getMessageMap(BigDecimal orderId);
+
+}

+ 41 - 0
src/main/java/com/steerinfo/dil/mapper/TmstruckReceiptResultMapper.java

@@ -0,0 +1,41 @@
+package com.steerinfo.dil.mapper;
+
+import com.steerinfo.dil.model.TmstruckReceiptResult;
+import com.steerinfo.framework.mapper.IBaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface TmstruckReceiptResultMapper extends IBaseMapper<TmstruckReceiptResult, BigDecimal> {
+    //查询最大ID值
+    @Select("select seq_tmstruck_receipt.nextval from dual")
+    BigDecimal selectMaxId();
+
+    //通过总实绩Id查询主键Id
+    BigDecimal getIdByTotalResultId(Integer totalResultId);
+
+    //计皮完成后 通过总实绩ID 更新状态 为 1
+    int updateByTotalResultId(TmstruckReceiptResult tmstruckReceiptResult);
+
+
+    //查询内转钢材到异地库收货实绩
+    List<Map<String, Object>> getSteelNzReceiptResult(Map<String, Object> map);
+
+
+    //查询是否已收过货
+    Integer getReceiptResult(BigDecimal resultTotalId);
+
+
+    //获取收货实绩信息
+    List<Map<String, Object>> getReceiptResultInfo(Map<String, Object> map);
+
+    String getReceiptPhoto(String orderNumber);
+
+    List<Map<String, Object>> getReceivingResult(Map<String, Object> mapValue);
+
+    List<Map<String, Object>> getReceivingPhoto(String orderNumber);
+}

+ 27 - 0
src/main/java/com/steerinfo/dil/mapper/TmstruckReceiveResultMapper.java

@@ -0,0 +1,27 @@
+package com.steerinfo.dil.mapper;
+
+import com.steerinfo.dil.model.TmstruckReceiveResult;
+import com.steerinfo.framework.mapper.IBaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface TmstruckReceiveResultMapper extends IBaseMapper<TmstruckReceiveResult, BigDecimal> {
+
+    //查询最大ID值
+    @Select("select SQE_RECEIVE_RESULT.nextval from dual")
+    BigDecimal selectMaxId();
+
+    //通过总实绩Id查询主键Id
+    BigDecimal getReceiveResult(BigDecimal totalResultId);
+
+    //查询所有收货实绩
+    List<Map<String, Object>> getCGReceiveResult(Map<String, Object> map);
+
+    //获取内转收货实绩
+    List<Map<String, Object>> getInwardReceive(Map<String, Object> map);
+}

+ 135 - 0
src/main/java/com/steerinfo/dil/mapper/UtilsMapper.java

@@ -0,0 +1,135 @@
+package com.steerinfo.dil.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ author    :TXF
+ * @ time      :2021/10/26 14:27
+ */
+
+@Mapper
+public interface UtilsMapper {
+
+    //查询运输订单最大主键Id
+    @Select("select seq_omstruck_order.nextval from dual")
+    BigDecimal selectOrderMaxId();
+
+    //查询运输订单子表主键ID
+    @Select("select seq_omstruck_order_material.nextval from dual")
+    BigDecimal selectOrderMaterialMaxId();
+
+    //通过订单Id修改订单状态
+    int updateOrderStatusByOrderIdOrNum(Map<String, Object> map);
+
+    //通过运输Id 或者运输订单号修改 路段顺序号
+    int updateLineSeqByOrderIdOrNum(Map<String, Object> map);
+
+    //通过运力ID 或车牌号 修改运力状态
+    int updateCapacityByCarIdOrNum(Map<String, Object> map);
+
+    //通过仓库名称查询仓库Id
+    Integer queryWarehouseIdByName(String warehouseName);
+
+    //通过月台名称查找月台Id platformName
+    Integer queryPlatformIdByName(String platformName);
+
+    //根据运输订单号查询物资Id
+    BigDecimal queryOrderMesByOrderId(String orderNumber);
+
+    //查询当前路段顺序号通过订单Id
+    Integer getLineSequenceByOrderId(@Param("orderId") BigDecimal orderId);
+
+    //通过订单号查询订单路段顺序号
+    Integer getLineSequenceByOrderNumber(String orderNumber);
+
+    //查询订单跟订单物资中间表 查询是否有多个物资Id
+    List<Integer> getAllMaterialId(Map<String, Object> map);
+
+    //通过总实绩Id查询订单Id
+    Integer getOrderIdByTotalId(Integer resultTotalId);
+
+    //通过运输订单号查询订单ID
+    BigDecimal getOrderIdByOrderNumber(String orderNumber);
+
+    //通过运输订单id查询总实绩ID
+    BigDecimal getTotalIdByOrderNumber(String orderNumber);
+
+
+    //通过总实绩ID查找订单类型
+    Map<String, Object> getOrderTypeByTotalId(BigDecimal resultTotalId);
+
+    //查询最大路段顺序号 以及当前订单路段顺序号(执行到哪一步)
+    Map<String, Object> getLineSeqAndOrderSeq(Map<String, Object> map);
+
+    //通过订单ID查询物资ID (除了单拼外会有多个)
+    List<Integer> getMaterialIdByOrderId(BigDecimal orderId);
+
+    //查询订单ID查询第一个计量的物资Id(物资子表)
+    Integer getLxFirstMaterialId(BigDecimal orderId);
+
+    //通过人员管理SSOID查询人员ID
+    Integer getPersonnelIdBySsoId(String personnelSsoId);
+
+    //查询订单是否确认
+    Integer getDriverConfirmation(BigDecimal orderId);
+
+    //通过路段顺序号和线路ID查找 线路子表的子表的ID 和门岗ID或汽车衡ID
+    List<Integer> getLineSegmentGateCalcId(Map<String, Object> map);
+
+    //通过运输订单id查找运输订单信息
+    Map<String, Object> getOrderMesByOrderId(BigDecimal orderId);
+
+    //通过运输订单号查询运输订单类型
+    Map<String, Object> getOrderTypeByOrderNumber(String orderNumber);
+
+    //根据运输订单id查找是否有多个物资
+    Integer countMaterialByOrderId(BigDecimal orderId);
+
+    //通过车牌号查询运力ID
+    BigDecimal getCapacityIdByNum(String capacityNumber);
+
+    //查询最近进厂门岗
+    Integer getLastGatepostId(BigDecimal resultTotalId);
+
+    //查询零星是否多拼或没有净重的物资
+    Integer getNextMaterialId(BigDecimal orderId);
+
+    //通过运输订单id查找计时作业实绩
+    Map<String,Object> timeTaskResult(BigDecimal orderId);
+
+    //根据运输订单id查找订单类型
+    Map<String,Object> getTimeStatus(Map<String, Object> map);
+
+    //通过运输订单号查找内转类型
+    BigDecimal getInwardType(BigDecimal orderId);
+
+    //根据运输订单id查找两次计时作业实绩
+   Map<String,Object> FristTimeTask(Map<String, Object> map);
+
+   //根据运输订单id查找计时暂停时间
+    BigDecimal TimeTaskPause(Map<String, Object> map);
+
+   //通过运输订单id查找计时是否开始
+    BigDecimal getTime(BigDecimal orderId);
+
+    //通过运输订单id查找计时开始时间
+    BigDecimal getInwardStartTime(BigDecimal orderId);
+
+    //通过运输订单id查找计时结束时间
+    BigDecimal getInwardEndTime(BigDecimal orderId);
+
+    //通过userId查找运力名字
+    String getCapacityNameBySsoId(String userId);
+
+    //通过车牌号和运输订单号去寻找装车实绩
+    BigDecimal getLoadResultId(Map<String, Object> map);
+
+    BigDecimal getTotalIdByOrderId(BigDecimal orderId);
+
+}

+ 154 - 0
src/main/java/com/steerinfo/dil/model/DilVersion.java

@@ -0,0 +1,154 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="app版本号")
+public class DilVersion implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(VERSION_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal versionId;
+
+    /**
+     * 版本号(VERSION_VALUE,VARCHAR,100)
+     */
+    @ApiModelProperty(value="版本号",required=false)
+    private String versionValue;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    /**
+     * 版本类型(0:APP   1:PDA)(VERSION_TYPE,DECIMAL,0)
+     */
+    @ApiModelProperty(value="版本类型(0:APP   1:PDA)",required=false)
+    private Short versionType;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.versionId;
+    }
+
+    @Override
+    public void setId(BigDecimal versionId) {
+        this.versionId = versionId;
+    }
+
+    public BigDecimal getVersionId() {
+        return versionId;
+    }
+
+    public void setVersionId(BigDecimal versionId) {
+        this.versionId = versionId;
+    }
+
+    public String getVersionValue() {
+        return versionValue;
+    }
+
+    public void setVersionValue(String versionValue) {
+        this.versionValue = versionValue == null ? null : versionValue.trim();
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public Short getVersionType() {
+        return versionType;
+    }
+
+    public void setVersionType(Short versionType) {
+        this.versionType = versionType;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", versionId=").append(versionId);
+        sb.append(", versionValue=").append(versionValue);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", versionType=").append(versionType);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 214 - 0
src/main/java/com/steerinfo/dil/model/TmstruckAbnormalResult.java

@@ -0,0 +1,214 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="汽运异常实绩")
+public class TmstruckAbnormalResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(ABNORMAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal abnormalId;
+
+    /**
+     * 总实绩ID(RESULT_TOTAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="总实绩ID",required=false)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 异常选型(0:司机上报异常,1:偏离,2:停车,3:离线)(ABNORMAL_TYPE,DECIMAL,0)
+     */
+    @ApiModelProperty(value="异常选型(0:司机上报异常,1:偏离,2:停车,3:离线)",required=false)
+    private BigDecimal abnormalType;
+
+    /**
+     * 异常时间(ABNORMAL_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="异常时间",required=false)
+    private Date abnormalTime;
+
+    /**
+     * 异常地点(ABNORMAL_ADDRESS,VARCHAR,20)
+     */
+    @ApiModelProperty(value="异常地点",required=false)
+    private String abnormalAddress;
+
+    /**
+     * 异常持续时间(ABNORMAL_DURATION,DECIMAL,0)
+     */
+    @ApiModelProperty(value="异常持续时间",required=false)
+    private BigDecimal abnormalDuration;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    /**
+     * 异常情况(ABNORMAL_CONDITION,VARCHAR,100)
+     */
+    @ApiModelProperty(value="异常情况",required=false)
+    private String abnormalCondition;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.abnormalId;
+    }
+
+    @Override
+    public void setId(BigDecimal abnormalId) {
+        this.abnormalId = abnormalId;
+    }
+
+    public BigDecimal getAbnormalId() {
+        return abnormalId;
+    }
+
+    public void setAbnormalId(BigDecimal abnormalId) {
+        this.abnormalId = abnormalId;
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public BigDecimal getAbnormalType() {
+        return abnormalType;
+    }
+
+    public void setAbnormalType(BigDecimal abnormalType) {
+        this.abnormalType = abnormalType;
+    }
+
+    public Date getAbnormalTime() {
+        return abnormalTime;
+    }
+
+    public void setAbnormalTime(Date abnormalTime) {
+        this.abnormalTime = abnormalTime;
+    }
+
+    public String getAbnormalAddress() {
+        return abnormalAddress;
+    }
+
+    public void setAbnormalAddress(String abnormalAddress) {
+        this.abnormalAddress = abnormalAddress == null ? null : abnormalAddress.trim();
+    }
+
+    public BigDecimal getAbnormalDuration() {
+        return abnormalDuration;
+    }
+
+    public void setAbnormalDuration(BigDecimal abnormalDuration) {
+        this.abnormalDuration = abnormalDuration;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public String getAbnormalCondition() {
+        return abnormalCondition;
+    }
+
+    public void setAbnormalCondition(String abnormalCondition) {
+        this.abnormalCondition = abnormalCondition == null ? null : abnormalCondition.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", abnormalId=").append(abnormalId);
+        sb.append(", resultTotalId=").append(resultTotalId);
+        sb.append(", abnormalType=").append(abnormalType);
+        sb.append(", abnormalTime=").append(abnormalTime);
+        sb.append(", abnormalAddress=").append(abnormalAddress);
+        sb.append(", abnormalDuration=").append(abnormalDuration);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", abnormalCondition=").append(abnormalCondition);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 244 - 0
src/main/java/com/steerinfo/dil/model/TmstruckEnfactoryResult.java

@@ -0,0 +1,244 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="进厂实绩")
+public class TmstruckEnfactoryResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键id(RESULT_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="主键id",required=true)
+    private BigDecimal resultId;
+
+    /**
+     * 实绩总表ID(RESULT_TOTAL_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="实绩总表ID",required=false)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 进门门岗ID(GATEPOST_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="进门门岗ID",required=false)
+    private BigDecimal gatepostId;
+
+    /**
+     * 进门方式(手动抬杆、自动抬杆)(RESULT_ENTRY_MODE,VARCHAR,20)
+     */
+    @ApiModelProperty(value="进门方式(手动抬杆、自动抬杆)",required=false)
+    private String resultEntryMode;
+
+    /**
+     * 进厂时间(RESULT_ENTRY_GATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="进厂时间",required=false)
+    private Date resultEntryGateTime;
+
+    /**
+     * 备注(RESULT_MEMO,VARCHAR,128)
+     */
+    @ApiModelProperty(value="备注",required=false)
+    private String resultMemo;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    /**
+     * 废除人(DELETE_USERNAME,VARCHAR,16)
+     */
+    @ApiModelProperty(value="废除人",required=false)
+    private String deleteUsername;
+
+    /**
+     * 废除时间(DELETE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="废除时间",required=false)
+    private Date deleteTime;
+
+    /**
+     * 路段顺序号(SEGMEN_SQE,DECIMAL,0)
+     */
+    @ApiModelProperty(value="路段顺序号",required=false)
+    private BigDecimal segmenSqe;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.resultId;
+    }
+
+    @Override
+    public void setId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public BigDecimal getGatepostId() {
+        return gatepostId;
+    }
+
+    public void setGatepostId(BigDecimal gatepostId) {
+        this.gatepostId = gatepostId;
+    }
+
+    public String getResultEntryMode() {
+        return resultEntryMode;
+    }
+
+    public void setResultEntryMode(String resultEntryMode) {
+        this.resultEntryMode = resultEntryMode == null ? null : resultEntryMode.trim();
+    }
+
+    public Date getResultEntryGateTime() {
+        return resultEntryGateTime;
+    }
+
+    public void setResultEntryGateTime(Date resultEntryGateTime) {
+        this.resultEntryGateTime = resultEntryGateTime;
+    }
+
+    public String getResultMemo() {
+        return resultMemo;
+    }
+
+    public void setResultMemo(String resultMemo) {
+        this.resultMemo = resultMemo == null ? null : resultMemo.trim();
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public String getDeleteUsername() {
+        return deleteUsername;
+    }
+
+    public void setDeleteUsername(String deleteUsername) {
+        this.deleteUsername = deleteUsername == null ? null : deleteUsername.trim();
+    }
+
+    public Date getDeleteTime() {
+        return deleteTime;
+    }
+
+    public void setDeleteTime(Date deleteTime) {
+        this.deleteTime = deleteTime;
+    }
+
+    public BigDecimal getSegmenSqe() {
+        return segmenSqe;
+    }
+
+    public void setSegmenSqe(BigDecimal segmenSqe) {
+        this.segmenSqe = segmenSqe;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", resultId=").append(resultId);
+        sb.append(", resultTotalId=").append(resultTotalId);
+        sb.append(", gatepostId=").append(gatepostId);
+        sb.append(", resultEntryMode=").append(resultEntryMode);
+        sb.append(", resultEntryGateTime=").append(resultEntryGateTime);
+        sb.append(", resultMemo=").append(resultMemo);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", deleteUsername=").append(deleteUsername);
+        sb.append(", deleteTime=").append(deleteTime);
+        sb.append(", segmenSqe=").append(segmenSqe);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 161 - 0
src/main/java/com/steerinfo/dil/model/TmstruckInTransitWarn.java

@@ -0,0 +1,161 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="null")
+public class TmstruckInTransitWarn implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(WARN_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal warnId; 
+
+    /**
+     * 预警开关(0:开启;1:关闭)(WARN_SWITCH,VARCHAR,40)
+     */
+    @ApiModelProperty(value="预警开关(0:开启;1:关闭)",required=false)
+    private String warnSwitch;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,40)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,40)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    /**
+     * 订阅预警类型
+type=1 异常线路预警
+type=2 异常线路预警
++停车
+type=3 异常线路预警
++离线
+type=4 异常线路预警
++停车+离线(WARN_TYPE,VARCHAR,40)
+     */
+    @ApiModelProperty(value="订阅预警类型type=1 异常线路预警type=2 异常线路预警+停车type=3 异常线路预警+离线type=4 异常线路预警+停车+离线",required=false)
+    private String warnType;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.warnId;
+    }
+
+    @Override
+    public void setId(BigDecimal warnId) {
+        this.warnId = warnId;
+    }
+
+    public BigDecimal getWarnId() {
+        return warnId;
+    }
+
+    public void setWarnId(BigDecimal warnId) {
+        this.warnId = warnId;
+    }
+
+    public String getWarnSwitch() {
+        return warnSwitch;
+    }
+
+    public void setWarnSwitch(String warnSwitch) {
+        this.warnSwitch = warnSwitch == null ? null : warnSwitch.trim();
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public String getWarnType() {
+        return warnType;
+    }
+
+    public void setWarnType(String warnType) {
+        this.warnType = warnType == null ? null : warnType.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", warnId=").append(warnId);
+        sb.append(", warnSwitch=").append(warnSwitch);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", warnType=").append(warnType);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 244 - 0
src/main/java/com/steerinfo/dil/model/TmstruckLeaveFactoryResult.java

@@ -0,0 +1,244 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="出厂实绩")
+public class TmstruckLeaveFactoryResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键id(RESULT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键id",required=true)
+    private BigDecimal resultId;
+
+    /**
+     * 实绩总表ID(RESULT_TOTAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="实绩总表ID",required=false)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 出门门岗ID(GATEPOST_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="出门门岗ID",required=false)
+    private BigDecimal gatepostId;
+
+    /**
+     * 出门方式(RESULT_OUT_MODE,VARCHAR,20)
+     */
+    @ApiModelProperty(value="出门方式",required=false)
+    private String resultOutMode;
+
+    /**
+     * 出厂时间(RESULT_OUT_GATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="出厂时间",required=false)
+    private Date resultOutGateTime;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    /**
+     * 废除人(DELETE_USERNAME,VARCHAR,16)
+     */
+    @ApiModelProperty(value="废除人",required=false)
+    private String deleteUsername;
+
+    /**
+     * 废除时间(DELETE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="废除时间",required=false)
+    private Date deleteTime;
+
+    /**
+     * 路段顺序号(SEGMENT_SQE,DECIMAL,0)
+     */
+    @ApiModelProperty(value="路段顺序号",required=false)
+    private BigDecimal segmentSqe;
+
+    /**
+     * 车厢抓拍图片(RESULT_TRUCK_SNAPSHOT_PICTURE,BLOB,4000)
+     */
+    @ApiModelProperty(value="车厢抓拍图片",required=false)
+    private byte[] resultTruckSnapshotPicture;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.resultId;
+    }
+
+    @Override
+    public void setId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public BigDecimal getGatepostId() {
+        return gatepostId;
+    }
+
+    public void setGatepostId(BigDecimal gatepostId) {
+        this.gatepostId = gatepostId;
+    }
+
+    public String getResultOutMode() {
+        return resultOutMode;
+    }
+
+    public void setResultOutMode(String resultOutMode) {
+        this.resultOutMode = resultOutMode == null ? null : resultOutMode.trim();
+    }
+
+    public Date getResultOutGateTime() {
+        return resultOutGateTime;
+    }
+
+    public void setResultOutGateTime(Date resultOutGateTime) {
+        this.resultOutGateTime = resultOutGateTime;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public String getDeleteUsername() {
+        return deleteUsername;
+    }
+
+    public void setDeleteUsername(String deleteUsername) {
+        this.deleteUsername = deleteUsername == null ? null : deleteUsername.trim();
+    }
+
+    public Date getDeleteTime() {
+        return deleteTime;
+    }
+
+    public void setDeleteTime(Date deleteTime) {
+        this.deleteTime = deleteTime;
+    }
+
+    public BigDecimal getSegmentSqe() {
+        return segmentSqe;
+    }
+
+    public void setSegmentSqe(BigDecimal segmentSqe) {
+        this.segmentSqe = segmentSqe;
+    }
+
+    public byte[] getResultTruckSnapshotPicture() {
+        return resultTruckSnapshotPicture;
+    }
+
+    public void setResultTruckSnapshotPicture(byte[] resultTruckSnapshotPicture) {
+        this.resultTruckSnapshotPicture = resultTruckSnapshotPicture;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", resultId=").append(resultId);
+        sb.append(", resultTotalId=").append(resultTotalId);
+        sb.append(", gatepostId=").append(gatepostId);
+        sb.append(", resultOutMode=").append(resultOutMode);
+        sb.append(", resultOutGateTime=").append(resultOutGateTime);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", deleteUsername=").append(deleteUsername);
+        sb.append(", deleteTime=").append(deleteTime);
+        sb.append(", segmentSqe=").append(segmentSqe);
+        sb.append(", resultTruckSnapshotPicture=").append(resultTruckSnapshotPicture);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 398 - 0
src/main/java/com/steerinfo/dil/model/TmstruckLoadResult.java

@@ -0,0 +1,398 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="汽运装货实绩")
+public class TmstruckLoadResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键id(RESULT_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="主键id",required=true)
+    private BigDecimal resultId;
+
+    /**
+     * 实绩总表ID(RESULT_TOTAL_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="实绩总表ID",required=false)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 装货开始时间(RESULT_LOAD_START_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="装货开始时间",required=false)
+    private Date resultLoadStartTime;
+
+    /**
+     * 装货结束时间(RESULT_LOAD_END_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="装货结束时间",required=false)
+    private Date resultLoadEndTime;
+
+    /**
+     * 装货实绩时长(RESULT_LOAD_DURATION,DECIMAL,0)
+     */
+    @ApiModelProperty(value="装货实绩时长",required=false)
+    private BigDecimal resultLoadDuration;
+
+    /**
+     * 装货标准时长id(LOAD_STANDARD_TIME_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="装货标准时长id",required=false)
+    private BigDecimal loadStandardTimeId;
+
+    /**
+     * 装卸工ID(LOADER_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="装卸工ID",required=false)
+    private BigDecimal loaderId;
+
+    /**
+     * 是否清场(否:未清场;是:清场)(RESULT_ISCLEAR,VARCHAR,10)
+     */
+    @ApiModelProperty(value="是否清场(否:未清场;是:清场)",required=false)
+    private String resultIsclear;
+
+    /**
+     * 废除人(DELETE_NAME,VARCHAR,16)
+     */
+    @ApiModelProperty(value="废除人",required=false)
+    private String deleteName;
+
+    /**
+     * 废除时间(DELETE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="废除时间",required=false)
+    private Date deleteTime;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    /**
+     * 状态:0 :正常 1:逻辑删除 (STATUS,DECIMAL,0)
+     */
+    @ApiModelProperty(value="状态:0 :正常 1:逻辑删除 ",required=false)
+    private BigDecimal status;
+
+    /**
+     * 计量吨位  装车时的计量吨位(RESULT_MEASURED_TONNAGE,DECIMAL,0)
+     */
+    @ApiModelProperty(value="计量吨位  装车时的计量吨位",required=false)
+    private BigDecimal resultMeasuredTonnage;
+
+    /**
+     * 装货点ID(LOADING_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="装货点ID",required=false)
+    private BigDecimal loadingId;
+
+    /**
+     * 物资ID(MATERIAL_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="物资ID",required=false)
+    private BigDecimal materialId;
+
+    /**
+     * 装车顺序(LOADING_SEQUENCE,DECIMAL,0)
+     */
+    @ApiModelProperty(value="装车顺序",required=false)
+    private BigDecimal loadingSequence;
+
+    /**
+     * 是否需要质检(0 :不需要   1:需要)(ISDEDUCT,DECIMAL,0)
+     */
+    @ApiModelProperty(value="是否需要质检(0 :不需要   1:需要)",required=false)
+    private BigDecimal isdeduct;
+
+    /**
+     * 路段顺序号(SEGMENT_SQE,DECIMAL,0)
+     */
+    @ApiModelProperty(value="路段顺序号",required=false)
+    private BigDecimal segmentSqe;
+
+    /**
+     * 集装箱箱号(CASE_NUMBER,VARCHAR,255)
+     */
+    @ApiModelProperty(value="集装箱箱号",required=false)
+    private String caseNumber;
+
+    @ApiModelProperty(value="集装箱箱号2",required=false)
+    private String caseNumbertwo;
+
+    @ApiModelProperty(value="车型备注",required=false)
+    private String capacityRemark;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.resultId;
+    }
+
+    @Override
+    public void setId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public String getCaseNumbertwo() {
+        return caseNumbertwo;
+    }
+
+    public void setCaseNumbertwo(String caseNumbertwo) {
+        this.caseNumbertwo = caseNumbertwo;
+    }
+
+    public Date getResultLoadStartTime() {
+        return resultLoadStartTime;
+    }
+
+    public void setResultLoadStartTime(Date resultLoadStartTime) {
+        this.resultLoadStartTime = resultLoadStartTime;
+    }
+
+    public Date getResultLoadEndTime() {
+        return resultLoadEndTime;
+    }
+
+    public void setResultLoadEndTime(Date resultLoadEndTime) {
+        this.resultLoadEndTime = resultLoadEndTime;
+    }
+
+    public BigDecimal getResultLoadDuration() {
+        return resultLoadDuration;
+    }
+
+    public void setResultLoadDuration(BigDecimal resultLoadDuration) {
+        this.resultLoadDuration = resultLoadDuration;
+    }
+
+    public BigDecimal getLoadStandardTimeId() {
+        return loadStandardTimeId;
+    }
+
+    public void setLoadStandardTimeId(BigDecimal loadStandardTimeId) {
+        this.loadStandardTimeId = loadStandardTimeId;
+    }
+
+    public BigDecimal getLoaderId() {
+        return loaderId;
+    }
+
+    public void setLoaderId(BigDecimal loaderId) {
+        this.loaderId = loaderId;
+    }
+
+    public String getResultIsclear() {
+        return resultIsclear;
+    }
+
+    public void setResultIsclear(String resultIsclear) {
+        this.resultIsclear = resultIsclear == null ? null : resultIsclear.trim();
+    }
+
+    public String getDeleteName() {
+        return deleteName;
+    }
+
+    public void setDeleteName(String deleteName) {
+        this.deleteName = deleteName == null ? null : deleteName.trim();
+    }
+
+    public Date getDeleteTime() {
+        return deleteTime;
+    }
+
+    public void setDeleteTime(Date deleteTime) {
+        this.deleteTime = deleteTime;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public BigDecimal getStatus() {
+        return status;
+    }
+
+    public void setStatus(BigDecimal status) {
+        this.status = status;
+    }
+
+    public BigDecimal getResultMeasuredTonnage() {
+        return resultMeasuredTonnage;
+    }
+
+    public void setResultMeasuredTonnage(BigDecimal resultMeasuredTonnage) {
+        this.resultMeasuredTonnage = resultMeasuredTonnage;
+    }
+
+    public BigDecimal getLoadingId() {
+        return loadingId;
+    }
+
+    public void setLoadingId(BigDecimal loadingId) {
+        this.loadingId = loadingId;
+    }
+
+    public BigDecimal getMaterialId() {
+        return materialId;
+    }
+
+    public void setMaterialId(BigDecimal materialId) {
+        this.materialId = materialId;
+    }
+
+    public BigDecimal getLoadingSequence() {
+        return loadingSequence;
+    }
+
+    public void setLoadingSequence(BigDecimal loadingSequence) {
+        this.loadingSequence = loadingSequence;
+    }
+
+    public BigDecimal getIsdeduct() {
+        return isdeduct;
+    }
+
+    public void setIsdeduct(BigDecimal isdeduct) {
+        this.isdeduct = isdeduct;
+    }
+
+    public BigDecimal getSegmentSqe() {
+        return segmentSqe;
+    }
+
+    public void setSegmentSqe(BigDecimal segmentSqe) {
+        this.segmentSqe = segmentSqe;
+    }
+
+    public String getCaseNumber() {
+        return caseNumber;
+    }
+
+    public void setCaseNumber(String caseNumber) {
+        this.caseNumber = caseNumber == null ? null : caseNumber.trim();
+    }
+
+    public String getCapacityRemark() {
+        return capacityRemark;
+    }
+
+    public void setCapacityRemark(String capacityRemark) {
+        this.capacityRemark = capacityRemark;
+    }
+
+    @Override
+    public String toString() {
+        return "TmstruckLoadResult{" +
+                "resultId=" + resultId +
+                ", resultTotalId=" + resultTotalId +
+                ", resultLoadStartTime=" + resultLoadStartTime +
+                ", resultLoadEndTime=" + resultLoadEndTime +
+                ", resultLoadDuration=" + resultLoadDuration +
+                ", loadStandardTimeId=" + loadStandardTimeId +
+                ", loaderId=" + loaderId +
+                ", resultIsclear='" + resultIsclear + '\'' +
+                ", deleteName='" + deleteName + '\'' +
+                ", deleteTime=" + deleteTime +
+                ", insertUsername='" + insertUsername + '\'' +
+                ", insertTime=" + insertTime +
+                ", updateUsername='" + updateUsername + '\'' +
+                ", updateTime=" + updateTime +
+                ", insertUpdateRemark='" + insertUpdateRemark + '\'' +
+                ", status=" + status +
+                ", resultMeasuredTonnage=" + resultMeasuredTonnage +
+                ", loadingId=" + loadingId +
+                ", materialId=" + materialId +
+                ", loadingSequence=" + loadingSequence +
+                ", isdeduct=" + isdeduct +
+                ", segmentSqe=" + segmentSqe +
+                ", caseNumber='" + caseNumber + '\'' +
+                ", caseNumbertwo='" + caseNumbertwo + '\'' +
+                ", capacityRemark='" + capacityRemark + '\'' +
+                '}';
+    }
+}

+ 184 - 0
src/main/java/com/steerinfo/dil/model/TmstruckMeasureCommission.java

@@ -0,0 +1,184 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="计量委托")
+public class TmstruckMeasureCommission implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(COMMSSION_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal commssionId;
+
+    /**
+     * 总实绩ID(RESULT_TOTAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="总实绩ID",required=false)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 计量委托类型:0:计量皮重;1:计量毛重(COMMSSION_TYPE,DECIMAL,38)
+     */
+    @ApiModelProperty(value="计量委托类型:0:计量皮重;1:计量毛重",required=false)
+    private BigDecimal commssionType;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    /**
+     * 物资ID(MATERIAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="物资ID",required=false)
+    private BigDecimal materialId;
+
+    /**
+     * 汽车衡ID(CALCULATE_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="汽车衡ID",required=false)
+    private BigDecimal calculateId;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.commssionId;
+    }
+
+    @Override
+    public void setId(BigDecimal commssionId) {
+        this.commssionId = commssionId;
+    }
+
+    public BigDecimal getCommssionId() {
+        return commssionId;
+    }
+
+    public void setCommssionId(BigDecimal commssionId) {
+        this.commssionId = commssionId;
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public BigDecimal getCommssionType() {
+        return commssionType;
+    }
+
+    public void setCommssionType(BigDecimal commssionType) {
+        this.commssionType = commssionType;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public BigDecimal getMaterialId() {
+        return materialId;
+    }
+
+    public void setMaterialId(BigDecimal materialId) {
+        this.materialId = materialId;
+    }
+
+    public BigDecimal getCalculateId() {
+        return calculateId;
+    }
+
+    public void setCalculateId(BigDecimal calculateId) {
+        this.calculateId = calculateId;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", commssionId=").append(commssionId);
+        sb.append(", resultTotalId=").append(resultTotalId);
+        sb.append(", commssionType=").append(commssionType);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", materialId=").append(materialId);
+        sb.append(", calculateId=").append(calculateId);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 214 - 0
src/main/java/com/steerinfo/dil/model/TmstruckQualityResult.java

@@ -0,0 +1,214 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="汽运质检实绩")
+public class TmstruckQualityResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(RESULT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal resultId;
+
+    /**
+     * 总实绩ID(TOTAL_RESULT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="总实绩ID",required=false)
+    private BigDecimal totalResultId;
+
+    /**
+     * 是否已抽样(0:未抽样;1:抽样)(RESULT_ISSAMPLING,DECIMAL,38)
+     */
+    @ApiModelProperty(value="是否已抽样(0:未抽样;1:抽样)",required=false)
+    private String resultIssampling;
+
+    /**
+     * 原料扣减量(RESULT_DEDUCTION,DECIMAL,0)
+     */
+    @ApiModelProperty(value="原料扣减量",required=false)
+    private BigDecimal resultDeduction;
+
+    /**
+     * 原料扣减说明(RESULT_DEDUCTION_DESCRIPTION,VARCHAR,50)
+     */
+    @ApiModelProperty(value="原料扣减说明",required=false)
+    private String resultDeductionDescription;
+
+    /**
+     * 原料取样点(RESULT_SAMPLING_POINT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="原料取样点",required=false)
+    private BigDecimal resultSamplingPointId;
+
+    /**
+     * 钢材质检结果(0:不合格;1:合格)(RESULT_CONCLUSION,DECIMAL,38)
+     */
+    @ApiModelProperty(value="钢材质检结果(0:不合格;1:合格)",required=false)
+    private BigDecimal resultConclusion;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.resultId;
+    }
+
+    @Override
+    public void setId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getTotalResultId() {
+        return totalResultId;
+    }
+
+    public void setTotalResultId(BigDecimal totalResultId) {
+        this.totalResultId = totalResultId;
+    }
+
+    public String getResultIssampling() {
+        return resultIssampling;
+    }
+
+    public void setResultIssampling(String resultIssampling) {
+        this.resultIssampling = resultIssampling;
+    }
+
+    public BigDecimal getResultDeduction() {
+        return resultDeduction;
+    }
+
+    public void setResultDeduction(BigDecimal resultDeduction) {
+        this.resultDeduction = resultDeduction;
+    }
+
+    public String getResultDeductionDescription() {
+        return resultDeductionDescription;
+    }
+
+    public void setResultDeductionDescription(String resultDeductionDescription) {
+        this.resultDeductionDescription = resultDeductionDescription == null ? null : resultDeductionDescription.trim();
+    }
+
+    public BigDecimal getResultSamplingPointId() {
+        return resultSamplingPointId;
+    }
+
+    public void setResultSamplingPointId(BigDecimal resultSamplingPointId) {
+        this.resultSamplingPointId = resultSamplingPointId;
+    }
+
+    public BigDecimal getResultConclusion() {
+        return resultConclusion;
+    }
+
+    public void setResultConclusion(BigDecimal resultConclusion) {
+        this.resultConclusion = resultConclusion;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", resultId=").append(resultId);
+        sb.append(", totalResultId=").append(totalResultId);
+        sb.append(", resultIssampling=").append(resultIssampling);
+        sb.append(", resultDeduction=").append(resultDeduction);
+        sb.append(", resultDeductionDescription=").append(resultDeductionDescription);
+        sb.append(", resultSamplingPointId=").append(resultSamplingPointId);
+        sb.append(", resultConclusion=").append(resultConclusion);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 241 - 0
src/main/java/com/steerinfo/dil/model/TmstruckReceiptResult.java

@@ -0,0 +1,241 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="收货实绩")
+public class TmstruckReceiptResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(RESULT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal resultId;
+
+    /**
+     * 总实绩ID(RESULT_TOTAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="总实绩ID",required=false)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 空货箱照片(RESULT_EMPTY_CONTAINER_PHOTO,VARCHAR,100)
+     */
+    @ApiModelProperty(value="空货箱照片",required=false)
+    private String resultEmptyContainerPhoto;
+
+    /**
+     * 已签字的送货单照片(RESULT_SIGNED_NOTE_PHOTO,VARCHAR,100)
+     */
+    @ApiModelProperty(value="已签字的送货单照片",required=false)
+    private String resultSignedNotePhoto;
+
+    /**
+     * 客户签收单照片(RESULT_RECEIVE_NOTE_PHOTO,VARCHAR,100)
+     */
+    @ApiModelProperty(value="客户签收单照片",required=false)
+    private String resultReceiveNotePhoto;
+
+    /**
+     * 异地库ID(WAREHOUSE_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="异地库ID",required=false)
+    private BigDecimal warehouseId;
+
+    /**
+     * 异地库ID(ORDER_MILEAGE,DECIMAL,38)
+     */
+    @ApiModelProperty(value="异地库ID",required=false)
+    private BigDecimal  orderMileage;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+    /**
+     * 收货状态(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="收货状态",required=false)
+    private BigDecimal status;
+
+    /**
+     * 抵达收货点的地址(RESULT_ARRIVAL_ADDRESS,VARCHAR,100)
+     */
+    @ApiModelProperty(value="抵达收货点的地址",required=false)
+    private String resultArrivalAddress;
+
+    private static final long serialVersionUID = 1L;
+
+    public BigDecimal getOrderMileage() {
+        return orderMileage;
+    }
+
+    public void setOrderMileage(BigDecimal orderMileage) {
+        this.orderMileage = orderMileage;
+    }
+
+    @Override
+    public BigDecimal getId() {
+        return this.resultId;
+    }
+
+    @Override
+    public void setId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public String getResultEmptyContainerPhoto() {
+        return resultEmptyContainerPhoto;
+    }
+
+    public void setResultEmptyContainerPhoto(String resultEmptyContainerPhoto) {
+        this.resultEmptyContainerPhoto = resultEmptyContainerPhoto == null ? null : resultEmptyContainerPhoto.trim();
+    }
+
+    public String getResultSignedNotePhoto() {
+        return resultSignedNotePhoto;
+    }
+
+    public void setResultSignedNotePhoto(String resultSignedNotePhoto) {
+        this.resultSignedNotePhoto = resultSignedNotePhoto == null ? null : resultSignedNotePhoto.trim();
+    }
+
+    public String getResultReceiveNotePhoto() {
+        return resultReceiveNotePhoto;
+    }
+
+    public void setResultReceiveNotePhoto(String resultReceiveNotePhoto) {
+        this.resultReceiveNotePhoto = resultReceiveNotePhoto == null ? null : resultReceiveNotePhoto.trim();
+    }
+
+    public BigDecimal getStatus() {
+        return status;
+    }
+
+    public void setStatus(BigDecimal status) {
+        this.status = status;
+    }
+
+    public BigDecimal getWarehouseId() {
+        return warehouseId;
+    }
+
+    public void setWarehouseId(BigDecimal warehouseId) {
+        this.warehouseId = warehouseId;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public String getResultArrivalAddress() {
+        return resultArrivalAddress;
+    }
+
+    public void setResultArrivalAddress(String resultArrivalAddress) {
+        this.resultArrivalAddress = resultArrivalAddress == null ? null : resultArrivalAddress.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", resultId=").append(resultId);
+        sb.append(", resultTotalId=").append(resultTotalId);
+        sb.append(", resultEmptyContainerPhoto=").append(resultEmptyContainerPhoto);
+        sb.append(", resultSignedNotePhoto=").append(resultSignedNotePhoto);
+        sb.append(", resultReceiveNotePhoto=").append(resultReceiveNotePhoto);
+        sb.append(", warehouseId=").append(warehouseId);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", resultArrivalAddress=").append(resultArrivalAddress);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 184 - 0
src/main/java/com/steerinfo/dil/model/TmstruckReceiveResult.java

@@ -0,0 +1,184 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="签收实绩")
+public class TmstruckReceiveResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键id(RESULT_RECEIVE_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="主键id",required=true)
+    private BigDecimal resultReceiveId;
+
+    /**
+     * 实绩总表id(RESULT_TOTAL_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="实绩总表id",required=false)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 签收时间(RESULT_RECEIVE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="签收时间",required=false)
+    private Date resultReceiveTime;
+
+    /**
+     * 签收人id(RECEIVE_SINGER_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="签收人id",required=false)
+    private BigDecimal receiveSingerId;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    /**
+     * 状态:0 为卸货后新增虚拟收货实绩  1 为计皮完成后真实收货实绩(STATUS,DECIMAL,0)
+     */
+    @ApiModelProperty(value="状态:0 为卸货后新增虚拟收货实绩  1 为计皮完成后真实收货实绩",required=false)
+    private BigDecimal status;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.resultReceiveId;
+    }
+
+    @Override
+    public void setId(BigDecimal resultReceiveId) {
+        this.resultReceiveId = resultReceiveId;
+    }
+
+    public BigDecimal getResultReceiveId() {
+        return resultReceiveId;
+    }
+
+    public void setResultReceiveId(BigDecimal resultReceiveId) {
+        this.resultReceiveId = resultReceiveId;
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public Date getResultReceiveTime() {
+        return resultReceiveTime;
+    }
+
+    public void setResultReceiveTime(Date resultReceiveTime) {
+        this.resultReceiveTime = resultReceiveTime;
+    }
+
+    public BigDecimal getReceiveSingerId() {
+        return receiveSingerId;
+    }
+
+    public void setReceiveSingerId(BigDecimal receiveSingerId) {
+        this.receiveSingerId = receiveSingerId;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public BigDecimal getStatus() {
+        return status;
+    }
+
+    public void setStatus(BigDecimal status) {
+        this.status = status;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", resultReceiveId=").append(resultReceiveId);
+        sb.append(", resultTotalId=").append(resultTotalId);
+        sb.append(", resultReceiveTime=").append(resultReceiveTime);
+        sb.append(", receiveSingerId=").append(receiveSingerId);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", status=").append(status);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 139 - 0
src/main/java/com/steerinfo/dil/model/TmstruckReturnResult.java

@@ -0,0 +1,139 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="退货实绩")
+public class TmstruckReturnResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(RESULT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal resultId;
+
+    /**
+     * 总实绩ID(RESULT_TOTAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="总实绩ID",required=false)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.resultId;
+    }
+
+    @Override
+    public void setId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", resultId=").append(resultId);
+        sb.append(", resultTotalId=").append(resultTotalId);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 184 - 0
src/main/java/com/steerinfo/dil/model/TmstruckSmsRusult.java

@@ -0,0 +1,184 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="汽运短信实绩")
+public class TmstruckSmsRusult implements IBasePO<BigDecimal> {
+    /**
+     * 总实绩ID(RESULT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="总实绩ID",required=true)
+    private BigDecimal resultId;
+
+    /**
+     * 总实绩ID(TOTAL_RESULT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="总实绩ID",required=false)
+    private BigDecimal totalResultId;
+
+    /**
+     * 发送方ID(SENDER_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="发送方ID",required=false)
+    private BigDecimal senderId;
+
+    /**
+     * 短信发送时间(RESULT_SENDING_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="短信发送时间",required=false)
+    private Date resultSendingTime;
+
+    /**
+     * 短信内容(RESULT_SMS_CONTENT,VARCHAR,120)
+     */
+    @ApiModelProperty(value="短信内容",required=false)
+    private String resultSmsContent;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.resultId;
+    }
+
+    @Override
+    public void setId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getTotalResultId() {
+        return totalResultId;
+    }
+
+    public void setTotalResultId(BigDecimal totalResultId) {
+        this.totalResultId = totalResultId;
+    }
+
+    public BigDecimal getSenderId() {
+        return senderId;
+    }
+
+    public void setSenderId(BigDecimal senderId) {
+        this.senderId = senderId;
+    }
+
+    public Date getResultSendingTime() {
+        return resultSendingTime;
+    }
+
+    public void setResultSendingTime(Date resultSendingTime) {
+        this.resultSendingTime = resultSendingTime;
+    }
+
+    public String getResultSmsContent() {
+        return resultSmsContent;
+    }
+
+    public void setResultSmsContent(String resultSmsContent) {
+        this.resultSmsContent = resultSmsContent == null ? null : resultSmsContent.trim();
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", resultId=").append(resultId);
+        sb.append(", totalResultId=").append(totalResultId);
+        sb.append(", senderId=").append(senderId);
+        sb.append(", resultSendingTime=").append(resultSendingTime);
+        sb.append(", resultSmsContent=").append(resultSmsContent);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 166 - 0
src/main/java/com/steerinfo/dil/model/TmstruckTareReturnResult.java

@@ -0,0 +1,166 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="回皮委托表")
+public class TmstruckTareReturnResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(RESULT_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal resultId;
+
+    @ApiModelProperty(value="",required=false)
+    private BigDecimal capacityId;
+
+    /**
+     * 回皮委托号(RETURN_NUM,VARCHAR,30)
+     */
+    @ApiModelProperty(value="回皮委托号",required=false)
+    private String returnNum;
+
+    /**
+     * 委托发送时间(RETURN_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="委托发送时间",required=false)
+    private Date returnTime;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.resultId;
+    }
+
+    @Override
+    public void setId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getCapacityId() {
+        return capacityId;
+    }
+
+    public void setCapacityId(BigDecimal capacityId) {
+        this.capacityId = capacityId;
+    }
+
+    public String getReturnNum() {
+        return returnNum;
+    }
+
+    public void setReturnNum(String returnNum) {
+        this.returnNum = returnNum == null ? null : returnNum.trim();
+    }
+
+    public Date getReturnTime() {
+        return returnTime;
+    }
+
+    public void setReturnTime(Date returnTime) {
+        this.returnTime = returnTime;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", resultId=").append(resultId);
+        sb.append(", capacityId=").append(capacityId);
+        sb.append(", returnNum=").append(returnNum);
+        sb.append(", returnTime=").append(returnTime);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 334 - 0
src/main/java/com/steerinfo/dil/model/TmstruckTimeTaskResult.java

@@ -0,0 +1,334 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="计时作业实绩表")
+public class TmstruckTimeTaskResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键id(TIME_TASK_RESULT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键id",required=true)
+    private BigDecimal timeTaskResultId;
+
+    /**
+     * 总实绩ID(RESULT_TOTAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="总实绩ID",required=false)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 作业时长(RESULT_VALUE,DECIMAL,10)
+     */
+    @ApiModelProperty(value="作业时长",required=false)
+    private BigDecimal resultValue;
+
+    /**
+     * 度量单位ID(RESULT_UOM_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="度量单位ID",required=false)
+    private BigDecimal resultUomId;
+
+    /**
+     * 记录时间类型:(0:计时开始申请时间;1:计时开始确认时间;2:计时结束申请时间;3:计时结束确认时间;4:暂停开始申请时间;5:暂停开始确认时间;6:暂停结束申请时间;7:暂停结束确认时间)(RESULT_TIME_TYPE,DECIMAL,38)
+     */
+    @ApiModelProperty(value="记录时间类型:(0:计时开始申请时间;1:计时开始确认时间;2:计时结束申请时间;3:计时结束确认时间;4:暂停开始申请时间;5:暂停开始确认时间;6:暂停结束申请时间;7:暂停结束确认时间)",required=false)
+    private BigDecimal resultTimeType;
+
+    /**
+     * 计时时间(RESULT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="计时时间",required=false)
+    private Date resultTime;
+
+    /**
+     * 扫码开始作业点ID(RESULT_START_NODE_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="扫码开始作业点ID",required=false)
+    private BigDecimal resultStartNodeId;
+
+    /**
+     * 扫码开始经度(RESULT_START_LONGITUDE_VAL,VARCHAR,20)
+     */
+    @ApiModelProperty(value="扫码开始经度",required=false)
+    private String resultStartLongitudeVal;
+
+    /**
+     * 扫码开始纬度(RESULT_START_LATITUDE_VAL,VARCHAR,20)
+     */
+    @ApiModelProperty(value="扫码开始纬度",required=false)
+    private String resultStartLatitudeVal;
+
+    /**
+     * 扫码结束作业点ID(RESULT_END_NODE_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="扫码结束作业点ID",required=false)
+    private BigDecimal resultEndNodeId;
+
+    /**
+     * 扫码结束经度(RESULT_END_LONGITUDE_VAL,VARCHAR,20)
+     */
+    @ApiModelProperty(value="扫码结束经度",required=false)
+    private String resultEndLongitudeVal;
+
+    /**
+     * 扫码结束纬度(RESULT_END_LATITUDE_VAL,VARCHAR,20)
+     */
+    @ApiModelProperty(value="扫码结束纬度",required=false)
+    private String resultEndLatitudeVal;
+
+    /**
+     * 备注(RESULT_MEMO,VARCHAR,200)
+     */
+    @ApiModelProperty(value="备注",required=false)
+    private String resultMemo;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    /**
+     * 废除人(DELETE_NAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="废除人",required=false)
+    private String deleteName;
+
+    /**
+     * 废除时间(DELETE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="废除时间",required=false)
+    private Date deleteTime;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.timeTaskResultId;
+    }
+
+    @Override
+    public void setId(BigDecimal timeTaskResultId) {
+        this.timeTaskResultId = timeTaskResultId;
+    }
+
+    public BigDecimal getTimeTaskResultId() {
+        return timeTaskResultId;
+    }
+
+    public void setTimeTaskResultId(BigDecimal timeTaskResultId) {
+        this.timeTaskResultId = timeTaskResultId;
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public BigDecimal getResultValue() {
+        return resultValue;
+    }
+
+    public void setResultValue(BigDecimal resultValue) {
+        this.resultValue = resultValue;
+    }
+
+    public BigDecimal getResultUomId() {
+        return resultUomId;
+    }
+
+    public void setResultUomId(BigDecimal resultUomId) {
+        this.resultUomId = resultUomId;
+    }
+
+    public BigDecimal getResultTimeType() {
+        return resultTimeType;
+    }
+
+    public void setResultTimeType(BigDecimal resultTimeType) {
+        this.resultTimeType = resultTimeType;
+    }
+
+    public Date getResultTime() {
+        return resultTime;
+    }
+
+    public void setResultTime(Date resultTime) {
+        this.resultTime = resultTime;
+    }
+
+    public BigDecimal getResultStartNodeId() {
+        return resultStartNodeId;
+    }
+
+    public void setResultStartNodeId(BigDecimal resultStartNodeId) {
+        this.resultStartNodeId = resultStartNodeId;
+    }
+
+    public String getResultStartLongitudeVal() {
+        return resultStartLongitudeVal;
+    }
+
+    public void setResultStartLongitudeVal(String resultStartLongitudeVal) {
+        this.resultStartLongitudeVal = resultStartLongitudeVal == null ? null : resultStartLongitudeVal.trim();
+    }
+
+    public String getResultStartLatitudeVal() {
+        return resultStartLatitudeVal;
+    }
+
+    public void setResultStartLatitudeVal(String resultStartLatitudeVal) {
+        this.resultStartLatitudeVal = resultStartLatitudeVal == null ? null : resultStartLatitudeVal.trim();
+    }
+
+    public BigDecimal getResultEndNodeId() {
+        return resultEndNodeId;
+    }
+
+    public void setResultEndNodeId(BigDecimal resultEndNodeId) {
+        this.resultEndNodeId = resultEndNodeId;
+    }
+
+    public String getResultEndLongitudeVal() {
+        return resultEndLongitudeVal;
+    }
+
+    public void setResultEndLongitudeVal(String resultEndLongitudeVal) {
+        this.resultEndLongitudeVal = resultEndLongitudeVal == null ? null : resultEndLongitudeVal.trim();
+    }
+
+    public String getResultEndLatitudeVal() {
+        return resultEndLatitudeVal;
+    }
+
+    public void setResultEndLatitudeVal(String resultEndLatitudeVal) {
+        this.resultEndLatitudeVal = resultEndLatitudeVal == null ? null : resultEndLatitudeVal.trim();
+    }
+
+    public String getResultMemo() {
+        return resultMemo;
+    }
+
+    public void setResultMemo(String resultMemo) {
+        this.resultMemo = resultMemo == null ? null : resultMemo.trim();
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public String getDeleteName() {
+        return deleteName;
+    }
+
+    public void setDeleteName(String deleteName) {
+        this.deleteName = deleteName == null ? null : deleteName.trim();
+    }
+
+    public Date getDeleteTime() {
+        return deleteTime;
+    }
+
+    public void setDeleteTime(Date deleteTime) {
+        this.deleteTime = deleteTime;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", timeTaskResultId=").append(timeTaskResultId);
+        sb.append(", resultTotalId=").append(resultTotalId);
+        sb.append(", resultValue=").append(resultValue);
+        sb.append(", resultUomId=").append(resultUomId);
+        sb.append(", resultTimeType=").append(resultTimeType);
+        sb.append(", resultTime=").append(resultTime);
+        sb.append(", resultStartNodeId=").append(resultStartNodeId);
+        sb.append(", resultStartLongitudeVal=").append(resultStartLongitudeVal);
+        sb.append(", resultStartLatitudeVal=").append(resultStartLatitudeVal);
+        sb.append(", resultEndNodeId=").append(resultEndNodeId);
+        sb.append(", resultEndLongitudeVal=").append(resultEndLongitudeVal);
+        sb.append(", resultEndLatitudeVal=").append(resultEndLatitudeVal);
+        sb.append(", resultMemo=").append(resultMemo);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", deleteName=").append(deleteName);
+        sb.append(", deleteTime=").append(deleteTime);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 184 - 0
src/main/java/com/steerinfo/dil/model/TmstruckTotalResult.java

@@ -0,0 +1,184 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="实绩总表")
+public class TmstruckTotalResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(RESULT_TOTAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 订单ID(ORDER_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="订单ID",required=false)
+    private BigDecimal orderId;
+
+    /**
+     * 运输总时长(RESULT_DURATION,DECIMAL,0)
+     */
+    @ApiModelProperty(value="运输总时长",required=false)
+    private BigDecimal resultDuration;
+
+    /**
+     * 运输标准时长(STANDARD_DATA_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="运输标准时长",required=true)
+    private BigDecimal standardDataId;
+
+    /**
+     * 运输时长异常值(RESULT_OUTLIER,DECIMAL,0)
+     */
+    @ApiModelProperty(value="运输时长异常值",required=false)
+    private BigDecimal resultOutlier;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.resultTotalId;
+    }
+
+    @Override
+    public void setId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public BigDecimal getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(BigDecimal orderId) {
+        this.orderId = orderId;
+    }
+
+    public BigDecimal getResultDuration() {
+        return resultDuration;
+    }
+
+    public void setResultDuration(BigDecimal resultDuration) {
+        this.resultDuration = resultDuration;
+    }
+
+    public BigDecimal getStandardDataId() {
+        return standardDataId;
+    }
+
+    public void setStandardDataId(BigDecimal standardDataId) {
+        this.standardDataId = standardDataId;
+    }
+
+    public BigDecimal getResultOutlier() {
+        return resultOutlier;
+    }
+
+    public void setResultOutlier(BigDecimal resultOutlier) {
+        this.resultOutlier = resultOutlier;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", resultTotalId=").append(resultTotalId);
+        sb.append(", orderId=").append(orderId);
+        sb.append(", resultDuration=").append(resultDuration);
+        sb.append(", standardDataId=").append(standardDataId);
+        sb.append(", resultOutlier=").append(resultOutlier);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 304 - 0
src/main/java/com/steerinfo/dil/model/TmstruckUnloadResult.java

@@ -0,0 +1,304 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="卸货实绩")
+public class TmstruckUnloadResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键id(RESULT_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="主键id",required=true)
+    private BigDecimal resultId;
+
+    /**
+     * 卸货实绩编号 DW+YYYYMMDD+5位流水(RESULT_NUMBER,VARCHAR,32)
+     */
+    @ApiModelProperty(value="卸货实绩编号 DW+YYYYMMDD+5位流水",required=false)
+    private String resultNumber;
+
+    /**
+     * 实绩总表ID(RESULT_TOTAL_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="实绩总表ID",required=false)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 卸货开始时间(RESULT_START_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="卸货开始时间",required=false)
+    private Date resultStartTime;
+
+    /**
+     * 卸货结束时间(RESULT_END_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="卸货结束时间",required=false)
+    private Date resultEndTime;
+
+    /**
+     * 卸货时长(RESULT_DURATION,DECIMAL,0)
+     */
+    @ApiModelProperty(value="卸货时长",required=false)
+    private BigDecimal resultDuration;
+
+    /**
+     * 卸货状态:拒绝;同意(UNLOAD_STATUS,VARCHAR,5)
+     */
+    @ApiModelProperty(value="卸货状态:拒绝;同意",required=false)
+    private String unloadStatus;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    /**
+     * 废除人(DELETE_NAME,VARCHAR,16)
+     */
+    @ApiModelProperty(value="废除人",required=false)
+    private String deleteName;
+
+    /**
+     * 废除时间(DELETE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="废除时间",required=false)
+    private Date deleteTime;
+
+    /**
+     * 卸货点(连原料仓库)(RESULT_UNLOAD_PLACE_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="卸货点(连原料仓库)",required=false)
+    private BigDecimal resultUnloadPlaceId;
+
+    /**
+     * 路段顺序号(SEGMENT_SQE,DECIMAL,0)
+     */
+    @ApiModelProperty(value="路段顺序号",required=false)
+    private BigDecimal segmentSqe;
+
+    /**
+     * 物资ID(MATERIAL_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="物资ID",required=false)
+    private BigDecimal materialId;
+
+    /**
+     * 卸货人(UNLOADER_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="卸货人",required=false)
+    private BigDecimal unloaderId;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.resultId;
+    }
+
+    @Override
+    public void setId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public String getResultNumber() {
+        return resultNumber;
+    }
+
+    public void setResultNumber(String resultNumber) {
+        this.resultNumber = resultNumber == null ? null : resultNumber.trim();
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public Date getResultStartTime() {
+        return resultStartTime;
+    }
+
+    public void setResultStartTime(Date resultStartTime) {
+        this.resultStartTime = resultStartTime;
+    }
+
+    public Date getResultEndTime() {
+        return resultEndTime;
+    }
+
+    public void setResultEndTime(Date resultEndTime) {
+        this.resultEndTime = resultEndTime;
+    }
+
+    public BigDecimal getResultDuration() {
+        return resultDuration;
+    }
+
+    public void setResultDuration(BigDecimal resultDuration) {
+        this.resultDuration = resultDuration;
+    }
+
+    public String getUnloadStatus() {
+        return unloadStatus;
+    }
+
+    public void setUnloadStatus(String unloadStatus) {
+        this.unloadStatus = unloadStatus == null ? null : unloadStatus.trim();
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public String getDeleteName() {
+        return deleteName;
+    }
+
+    public void setDeleteName(String deleteName) {
+        this.deleteName = deleteName == null ? null : deleteName.trim();
+    }
+
+    public Date getDeleteTime() {
+        return deleteTime;
+    }
+
+    public void setDeleteTime(Date deleteTime) {
+        this.deleteTime = deleteTime;
+    }
+
+    public BigDecimal getResultUnloadPlaceId() {
+        return resultUnloadPlaceId;
+    }
+
+    public void setResultUnloadPlaceId(BigDecimal resultUnloadPlaceId) {
+        this.resultUnloadPlaceId = resultUnloadPlaceId;
+    }
+
+    public BigDecimal getSegmentSqe() {
+        return segmentSqe;
+    }
+
+    public void setSegmentSqe(BigDecimal segmentSqe) {
+        this.segmentSqe = segmentSqe;
+    }
+
+    public BigDecimal getMaterialId() {
+        return materialId;
+    }
+
+    public void setMaterialId(BigDecimal materialId) {
+        this.materialId = materialId;
+    }
+
+    public BigDecimal getUnloaderId() {
+        return unloaderId;
+    }
+
+    public void setUnloaderId(BigDecimal unloaderId) {
+        this.unloaderId = unloaderId;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", resultId=").append(resultId);
+        sb.append(", resultNumber=").append(resultNumber);
+        sb.append(", resultTotalId=").append(resultTotalId);
+        sb.append(", resultStartTime=").append(resultStartTime);
+        sb.append(", resultEndTime=").append(resultEndTime);
+        sb.append(", resultDuration=").append(resultDuration);
+        sb.append(", unloadStatus=").append(unloadStatus);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", deleteName=").append(deleteName);
+        sb.append(", deleteTime=").append(deleteTime);
+        sb.append(", resultUnloadPlaceId=").append(resultUnloadPlaceId);
+        sb.append(", segmentSqe=").append(segmentSqe);
+        sb.append(", materialId=").append(materialId);
+        sb.append(", unloaderId=").append(unloaderId);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 364 - 0
src/main/java/com/steerinfo/dil/model/TmstruckWeightResult.java

@@ -0,0 +1,364 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="计重作业实绩表")
+public class TmstruckWeightResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键id(WEIGHT_TASK_RESULT_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="主键id",required=true)
+    private BigDecimal weightTaskResultId;
+
+    /**
+     * 总实绩ID(RESULT_TOTAL_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="总实绩ID",required=false)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 磅单号(RESULT_POUND_NO,VARCHAR,100)
+     */
+    @ApiModelProperty(value="磅单号",required=false)
+    private String resultPoundNo;
+
+    /**
+     * 毛重(RESULT_GROSS_WEIGHT,DECIMAL,0)
+     */
+    @ApiModelProperty(value="毛重",required=false)
+    private BigDecimal resultGrossWeight;
+
+    /**
+     * 毛重时间(RESULT_GROSS_WEIGHT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="毛重时间",required=false)
+    private Date resultGrossWeightTime;
+
+    /**
+     * 皮重(RESULT_TARE_WEIGHT,DECIMAL,0)
+     */
+    @ApiModelProperty(value="皮重",required=false)
+    private BigDecimal resultTareWeight;
+
+    /**
+     * 皮重时间(RESULT_TARE_WEIGHT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="皮重时间",required=false)
+    private Date resultTareWeightTime;
+
+    /**
+     * 净重(RESULT_NET_WEIGHT,DECIMAL,0)
+     */
+    @ApiModelProperty(value="净重",required=false)
+    private BigDecimal resultNetWeight;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    /**
+     * 废除人(DELETE_NAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="废除人",required=false)
+    private String deleteName;
+
+    /**
+     * 废除时间(DELETE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="废除时间",required=false)
+    private Date deleteTime;
+
+    /**
+     * 计毛点ID(汽车衡)(RESULT_GROSS_PLACE_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="计毛点ID(汽车衡)",required=false)
+    private BigDecimal resultGrossPlaceId;
+
+    /**
+     * 计皮点ID(汽车衡)(RESULT_TARE_PLACE_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="计皮点ID(汽车衡)",required=false)
+    private BigDecimal resultTarePlaceId;
+
+    /**
+     * 物资ID(MATERIAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="物资ID",required=false)
+    private BigDecimal materialId;
+
+    /**
+     * 是否需要扣水扣杂(0:否,1:是)(ISDEDUCT,DECIMAL,38)
+     */
+    @ApiModelProperty(value="是否需要扣水扣杂(0:否,1:是)",required=false)
+    private BigDecimal isdeduct;
+
+    /**
+     * 是否完成扣水扣杂(0:否,1:是)(ISQUALITY,DECIMAL,38)
+     */
+    @ApiModelProperty(value="是否完成扣水扣杂(0:否,1:是)",required=false)
+    private BigDecimal isquality;
+
+    /**
+     * 毛重路段顺序号(GROSS_SEGMENT_SQE,DECIMAL,0)
+     */
+    @ApiModelProperty(value="毛重路段顺序号",required=false)
+    private BigDecimal grossSegmentSqe;
+
+    /**
+     * 皮重路段顺序号(TARE_SEGMENT_SQE,DECIMAL,0)
+     */
+    @ApiModelProperty(value="皮重路段顺序号",required=false)
+    private BigDecimal tareSegmentSqe;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.weightTaskResultId;
+    }
+
+    @Override
+    public void setId(BigDecimal weightTaskResultId) {
+        this.weightTaskResultId = weightTaskResultId;
+    }
+
+    public BigDecimal getWeightTaskResultId() {
+        return weightTaskResultId;
+    }
+
+    public void setWeightTaskResultId(BigDecimal weightTaskResultId) {
+        this.weightTaskResultId = weightTaskResultId;
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public String getResultPoundNo() {
+        return resultPoundNo;
+    }
+
+    public void setResultPoundNo(String resultPoundNo) {
+        this.resultPoundNo = resultPoundNo == null ? null : resultPoundNo.trim();
+    }
+
+    public BigDecimal getResultGrossWeight() {
+        return resultGrossWeight;
+    }
+
+    public void setResultGrossWeight(BigDecimal resultGrossWeight) {
+        this.resultGrossWeight = resultGrossWeight;
+    }
+
+    public Date getResultGrossWeightTime() {
+        return resultGrossWeightTime;
+    }
+
+    public void setResultGrossWeightTime(Date resultGrossWeightTime) {
+        this.resultGrossWeightTime = resultGrossWeightTime;
+    }
+
+    public BigDecimal getResultTareWeight() {
+        return resultTareWeight;
+    }
+
+    public void setResultTareWeight(BigDecimal resultTareWeight) {
+        this.resultTareWeight = resultTareWeight;
+    }
+
+    public Date getResultTareWeightTime() {
+        return resultTareWeightTime;
+    }
+
+    public void setResultTareWeightTime(Date resultTareWeightTime) {
+        this.resultTareWeightTime = resultTareWeightTime;
+    }
+
+    public BigDecimal getResultNetWeight() {
+        return resultNetWeight;
+    }
+
+    public void setResultNetWeight(BigDecimal resultNetWeight) {
+        this.resultNetWeight = resultNetWeight;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public String getDeleteName() {
+        return deleteName;
+    }
+
+    public void setDeleteName(String deleteName) {
+        this.deleteName = deleteName == null ? null : deleteName.trim();
+    }
+
+    public Date getDeleteTime() {
+        return deleteTime;
+    }
+
+    public void setDeleteTime(Date deleteTime) {
+        this.deleteTime = deleteTime;
+    }
+
+    public BigDecimal getResultGrossPlaceId() {
+        return resultGrossPlaceId;
+    }
+
+    public void setResultGrossPlaceId(BigDecimal resultGrossPlaceId) {
+        this.resultGrossPlaceId = resultGrossPlaceId;
+    }
+
+    public BigDecimal getResultTarePlaceId() {
+        return resultTarePlaceId;
+    }
+
+    public void setResultTarePlaceId(BigDecimal resultTarePlaceId) {
+        this.resultTarePlaceId = resultTarePlaceId;
+    }
+
+    public BigDecimal getMaterialId() {
+        return materialId;
+    }
+
+    public void setMaterialId(BigDecimal materialId) {
+        this.materialId = materialId;
+    }
+
+    public BigDecimal getIsdeduct() {
+        return isdeduct;
+    }
+
+    public void setIsdeduct(BigDecimal isdeduct) {
+        this.isdeduct = isdeduct;
+    }
+
+    public BigDecimal getIsquality() {
+        return isquality;
+    }
+
+    public void setIsquality(BigDecimal isquality) {
+        this.isquality = isquality;
+    }
+
+    public BigDecimal getGrossSegmentSqe() {
+        return grossSegmentSqe;
+    }
+
+    public void setGrossSegmentSqe(BigDecimal grossSegmentSqe) {
+        this.grossSegmentSqe = grossSegmentSqe;
+    }
+
+    public BigDecimal getTareSegmentSqe() {
+        return tareSegmentSqe;
+    }
+
+    public void setTareSegmentSqe(BigDecimal tareSegmentSqe) {
+        this.tareSegmentSqe = tareSegmentSqe;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", weightTaskResultId=").append(weightTaskResultId);
+        sb.append(", resultTotalId=").append(resultTotalId);
+        sb.append(", resultPoundNo=").append(resultPoundNo);
+        sb.append(", resultGrossWeight=").append(resultGrossWeight);
+        sb.append(", resultGrossWeightTime=").append(resultGrossWeightTime);
+        sb.append(", resultTareWeight=").append(resultTareWeight);
+        sb.append(", resultTareWeightTime=").append(resultTareWeightTime);
+        sb.append(", resultNetWeight=").append(resultNetWeight);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", deleteName=").append(deleteName);
+        sb.append(", deleteTime=").append(deleteTime);
+        sb.append(", resultGrossPlaceId=").append(resultGrossPlaceId);
+        sb.append(", resultTarePlaceId=").append(resultTarePlaceId);
+        sb.append(", materialId=").append(materialId);
+        sb.append(", isdeduct=").append(isdeduct);
+        sb.append(", isquality=").append(isquality);
+        sb.append(", grossSegmentSqe=").append(grossSegmentSqe);
+        sb.append(", tareSegmentSqe=").append(tareSegmentSqe);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 39 - 0
src/main/java/com/steerinfo/dil/service/ITmstruckLeaveFactoryResultService.java

@@ -0,0 +1,39 @@
+package com.steerinfo.dil.service;
+
+import com.steerinfo.framework.service.IBaseService;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * TmstruckLeaveFactoryResult服务接口:
+ * @author generator
+ * @version 1.0-SNAPSHORT 2021-09-11 10:32
+ * 类描述
+ * 修订历史:
+ * 日期:2021-09-11
+ * 作者:generator
+ * 参考:
+ * 描述:TmstruckLeaveFactoryResult服务接口
+ * @see null
+ * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ */
+public interface ITmstruckLeaveFactoryResultService {
+
+
+    //查询运输路线是否为可出厂 路段顺序号为 4:已计皮完成
+    Integer selectTransportRoute(String orderNumber);
+
+
+    //新增进厂实绩 派单时新增
+    int addLeaveFactory(Map<String,Object> mapValue);
+
+    Map<String, Object> getTruckFactoryResult(String nu);
+
+    // APP查询出厂信息
+    List<Map<String, Object>> getLeaveFactoryList(String orderNumber);
+
+    // 查询零星物资出厂列表
+    List<Map<String,Object>> getSporadicLeaveFactory(Map<String, Object> mapValue);
+}

+ 42 - 0
src/main/java/com/steerinfo/dil/service/ITmstruckReceiptResultService.java

@@ -0,0 +1,42 @@
+package com.steerinfo.dil.service;
+
+
+
+import com.steerinfo.dil.model.TmstruckReceiptResult;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * TmstruckReceiptResult服务接口:
+ * @author generator
+ * @version 1.0-SNAPSHORT 2021-09-10 10:10
+ * 类描述
+ * 修订历史:
+ * 日期:2021-09-10
+ * 作者:generator
+ * 参考:
+ * 描述:TmstruckReceiptResult服务接口
+ * @see null
+ * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ */
+public interface ITmstruckReceiptResultService{
+
+    //查询所有收货实绩
+    List<Map<String, Object>> getReceiveResult(Map<String, Object> map);
+
+    //新增钢材到异地库达州站驻港人员确定收货
+    int addSteelNzReceiptResult(Map<String, Object> map);
+
+    //添加收货实绩主表
+    BigDecimal addTmstruckReceiptResult(String orderNumber, TmstruckReceiptResult tmstruckReceiptResult);
+    //获取收货实绩信息
+    List<Map<String, Object>> getReceiptResultInfo(Map<String, Object> map);
+    //获取抵达作业照片
+    String getReceiptPhoto(String orderNumber);
+
+    List<Map<String, Object>> getReceivingResult(Map<String, Object> mapValue);
+
+    List<Map<String, Object>> getReceivingPhoto(String orderNumber);
+}

+ 23 - 0
src/main/java/com/steerinfo/dil/service/ITmstruckReceiveResultService.java

@@ -0,0 +1,23 @@
+package com.steerinfo.dil.service;
+
+import com.steerinfo.dil.model.TmstruckReceiveResult;
+import com.steerinfo.framework.service.IBaseService;
+
+import java.math.BigDecimal;
+
+/**
+ * TmstruckReceiveResult服务接口:
+ * @author generator
+ * @version 1.0-SNAPSHORT 2022-03-29 06:27
+ * 类描述
+ * 修订历史:
+ * 日期:2022-03-29
+ * 作者:generator
+ * 参考:
+ * 描述:TmstruckReceiveResult服务接口
+ * @see null
+ * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ */
+public interface ITmstruckReceiveResultService extends IBaseService<TmstruckReceiveResult, BigDecimal>{
+
+}

+ 49 - 0
src/main/java/com/steerinfo/dil/service/IUtilsService.java

@@ -0,0 +1,49 @@
+package com.steerinfo.dil.service;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ author    :TXF
+ * @ time      :2021/10/26 14:42
+ */
+
+public interface IUtilsService {
+
+    //添加运单Id
+    BigDecimal selectOrderMaxId();
+
+    //查询运输订单子表主键ID
+    BigDecimal selectOrderMaterialMaxId();
+
+    //通过运力ID 修改运力状态
+    int updateCapacityStatus(Map<String, Object> map, Integer status);
+
+    //正常关闭订单
+    int closeOrderNormally(Map<String, Object> map);
+
+    //通过仓库名称查询仓库Id
+    Integer queryWarehouseIdByName(String warehouseName);
+
+    //用于更新路段顺序号
+    int updateOrderLineSequence(Map<String, Object> map);
+
+    //用于更新路段顺序号
+    int updateOrderLineSqeByOrderNumber(Map<String, Object> map);
+
+    //通过月台名称查找月台Id platformName
+    Integer queryPlatformIdByName(String platformName);
+
+    //查询当前路段顺序号
+    Integer getLineSequenceByOrderId(BigDecimal orderId);
+
+    //查询订单跟订单物资中间表 查询是否有多个物资Id
+    List<Integer> getAllMaterialId(Map<String, Object> map);
+
+    //通过总实绩Id查询订单Id
+    Integer getOrderIdByTotalId(Integer resultTotalId);
+
+    //推送消息给websocket
+    void pushMesToWebsocket(String capacityNumber, String pushMes);
+}

+ 35 - 0
src/main/java/com/steerinfo/dil/service/OffSiteTransportationService.java

@@ -0,0 +1,35 @@
+package com.steerinfo.dil.service;
+
+import com.steerinfo.framework.controller.RESTfulResult;
+import com.steerinfo.route.vo.Map.RouteVo;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+public interface OffSiteTransportationService {
+    List<Map<String, Object>> getInTransitTransportation(Map<String, Object> mapValue);
+
+    //修改是否开启运输报警状态
+    int updateWarnSwitch(String warnSwitch,String radio);
+
+    Integer getOrderStatus(Map<String, Object> map);
+
+    public Map<String, Object> getStartAndEndCapacityNumber(Map<String,Object> map);
+
+    void insertOrderMileage(Map<String, Object> ordermap);
+
+    void removeDate();
+    //查询是否开启运输报警状态
+    Map<String,Object> selectWarnSwitch();
+
+     int insertOrderTripId(Map<String, Object> map);
+
+    int addTransportationAlarm(Map<String, Object> map);
+
+    List<Map<String, Object>> getHaveAbnormalTruckOrderInfo(Map<String, Object> mapValue);
+
+    List<Map<String, Object>> getTransportAbnormalInfo(Map<String, Object> mapValue);
+
+}

+ 265 - 0
src/main/java/com/steerinfo/dil/service/impl/OffSiteTransportationServiceImpl.java

@@ -0,0 +1,265 @@
+package com.steerinfo.dil.service.impl;
+
+import com.steerinfo.dil.mapper.OffSiteTransportationMapper;
+import com.steerinfo.dil.mapper.TmstruckAbnormalResultMapper;
+import com.steerinfo.dil.mapper.TmstruckInTransitWarnMapper;
+import com.steerinfo.dil.model.TmstruckAbnormalResult;
+import com.steerinfo.dil.model.TmstruckInTransitWarn;
+import com.steerinfo.dil.model.TmstruckReceiptResult;
+import com.steerinfo.dil.service.ITmstruckReceiptResultService;
+import com.steerinfo.dil.service.OffSiteTransportationService;
+import com.steerinfo.route.mapper.TmstruckArrivalResultMapper;
+import com.steerinfo.route.model.TmstruckReceiptResultChild;
+import com.steerinfo.route.service.ITmstruckReceiptResultChildService;
+import com.steerinfo.route.service.impl.RouteServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class OffSiteTransportationServiceImpl implements OffSiteTransportationService {
+    @Autowired
+    private RouteServiceImpl routeService;
+    @Autowired
+    OffSiteTransportationMapper offSiteTransportationMapper;
+    @Autowired
+    private TmstruckArrivalResultMapper tmstruckArrivalResultMapper;
+    @Autowired
+    private ITmstruckReceiptResultService  tmstruckReceiptResultService;
+    @Autowired
+    private  ITmstruckReceiptResultChildService  tmstruckReceiptResultChildService;
+    @Autowired
+    private TmstruckAbnormalResultMapper tmstruckAbnormalResultMapper;
+    @Autowired
+    private TmstruckInTransitWarnMapper tmstruckInTransitWarnMapper;
+    @Override
+    public List<Map<String, Object>> getInTransitTransportation(Map<String, Object> mapValue) {
+        return offSiteTransportationMapper.getInTransitTransportation(mapValue);
+    }
+
+    @Override
+    public Integer getOrderStatus(Map<String, Object> map) {
+        String orderNumber = (String) map.get("orderNumber");
+        //判断是否已经结束
+        Integer statu= offSiteTransportationMapper.getOrderStatu(orderNumber);
+        if (statu==null){
+            return 1;
+        }
+        return statu;
+    }
+
+    @Override
+    public Map<String, Object> getStartAndEndCapacityNumber(Map<String,Object> map) {
+        return offSiteTransportationMapper.getStartAndEndCapacityNumber(map);
+    }
+
+    @Override
+    public void   insertOrderMileage(Map<String, Object> map) {
+        //获取运输订单号
+        String orderNumber = (String) map.get("orderNumber");
+        //获取并插入总实绩Id
+        BigDecimal truckTotalId = tmstruckArrivalResultMapper.getTotalIdByOrderNumber(orderNumber);
+        //获取总距离
+        String orderMileage = (String) map.get("orderMileage");
+        //将两个属性放到运输订单中
+        HashMap<String,Object> omstruckOrder=new HashMap<>();
+        omstruckOrder.put("truckTotalId",truckTotalId);
+        omstruckOrder.put("orderMileage",orderMileage);
+         offSiteTransportationMapper.insertOrderMileage(omstruckOrder);
+
+    }
+
+    @Override
+    public void removeDate() {
+       List<Map<String,Object>> list= offSiteTransportationMapper.getReceiptData();
+       for (Map<String,Object> map:list){
+         int i=  offSiteTransportationMapper.insertReceive(map);
+       }
+    }
+
+    public int orderClose(String orderNumber){
+        return offSiteTransportationMapper.orderClose(orderNumber);
+    }
+
+    @Override
+    public Map<String,Object> selectWarnSwitch() {
+        return offSiteTransportationMapper.selectWarnSwitch();
+    }
+
+    @Override
+    public int insertOrderTripId(Map<String, Object> map) {
+        //获取运输订单号
+        String orderNumber = (String) map.get("orderNumber");
+        //获取行程线路id
+        String tripId = (String) map.get("rid");
+        //将两个属性放到运输订单中
+        return offSiteTransportationMapper.insertOrderTripId(map);
+    }
+
+    public int addTransportationAlarm(Map<String,Object> map) {
+        String label = (String) map.get("label");
+        //获取行程id
+        String rid = (String) map.get("rid");
+
+        //查询是否已经收货
+        BigDecimal orderStatus = offSiteTransportationMapper.selectIsReceiving(rid);
+        if (orderStatus!=null){
+            if(label.equals("1")&&orderStatus.intValue()==1){
+                //获取异常地点
+                String abnormalAddress = (String) map.get("adr");
+                //获取异常选型
+                String abnormalType = (String) map.get("type");
+                System.out.println("map.get(time)");
+                System.out.println(map);
+                System.out.println(map.get("time"));
+                //获取异常时间
+                String time = map.get("time").toString().length()>13?map.get("time").toString().substring(0,13):map.get("time").toString();
+                long lt = new Long(time);
+                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                Date date = new Date(lt);
+                //获取异常持续时间
+                BigDecimal abnormalDuration1 = null;
+                if(map.get("warnTime")!=null){
+                    Integer abnormalDuration = (Integer) map.get("warnTime");
+                    abnormalDuration1 = new BigDecimal(abnormalDuration);
+                }
+                //插入"偏离"、"停车"、"离线"运输报警
+                TmstruckAbnormalResult tmstruckAbnormalResult = new TmstruckAbnormalResult();
+                tmstruckAbnormalResult.setAbnormalAddress(abnormalAddress);
+                tmstruckAbnormalResult.setAbnormalType(new BigDecimal(abnormalType.toString()));
+                tmstruckAbnormalResult.setAbnormalTime(date);
+                tmstruckAbnormalResult.setAbnormalDuration(abnormalDuration1);
+                addTransportationAlarm(tmstruckAbnormalResult,rid);
+            }
+        }
+
+        return 1;
+    }
+
+    @Override
+    public List<Map<String, Object>> getHaveAbnormalTruckOrderInfo(Map<String, Object> mapValue) {
+        return offSiteTransportationMapper.getHaveAbnormalTruckOrderInfo(mapValue);
+    }
+
+    @Override
+    public List<Map<String, Object>> getTransportAbnormalInfo(Map<String, Object> mapValue) {
+        return offSiteTransportationMapper.getTransportAbnormalInfo(mapValue);
+    }
+
+
+    public synchronized int addTransportationAlarm(TmstruckAbnormalResult tmstruckAbnormalResult,String tripId) {
+        long id;
+        if(tmstruckAbnormalResultMapper.selectMaxId()==null){
+            id = 1;
+        }else {
+            id = tmstruckAbnormalResultMapper.selectMaxId().longValue()+1;
+        }
+        //生成主键id
+        tmstruckAbnormalResult.setAbnormalId(new BigDecimal(id));
+        //获取并插入总实绩Id
+        BigDecimal truckTotalId = tmstruckAbnormalResultMapper.getTotalIdByTripId(tripId);
+        tmstruckAbnormalResult.setResultTotalId(truckTotalId);
+        //常规字段
+        tmstruckAbnormalResult.setInsertUsername("admin");
+        tmstruckAbnormalResult.setInsertTime(new Date());
+        tmstruckAbnormalResult.setUpdateUsername("admin");
+        tmstruckAbnormalResult.setUpdateTime(new Date());
+        tmstruckAbnormalResult.setInsertUpdateRemark("无");
+        return tmstruckAbnormalResultMapper.insert(tmstruckAbnormalResult);
+    }
+
+
+    public String savePath() throws Exception {
+
+        Map<String, Object> parem=offSiteTransportationMapper.getTruckFactoryResult("WYSDD2021091000000002");
+        parem.put("turnOf","0");
+        return routeService.saveRoute(parem).toString();
+        //运输订单号:orderNumber、车牌号:capacityNumber、出厂时间:resultOutGateTime、预警开关:turnOf、发货地址:shipperName、收货地址:receiveAddress
+        //初始化请求参数
+//        HashMap<String,Object> mapValue=new HashMap<>();
+//        mapValue.put("orderNumber","WYSDD2021091000000001");
+//        mapValue.put("capacityNumber","豫SB6238");
+//        mapValue.put("resultOutGateTime","2021-11-17 14:20:19");
+//        mapValue.put("turnOf","0");
+//        mapValue.put("shipperName","四川达州钢铁集团有限");
+//        mapValue.put("receiveAddress","长沙市");
+//        return routeService.saveRoute(parem).toString();
+    }
+
+    public Integer addTmstruckReceiptResult(@RequestBody(required = false) Map<String,Object> map){
+        BigDecimal alreadyExistsArrivalResult = tmstruckArrivalResultMapper.alreadyExistsArrivalResult((String) map.get("orderNumber"));
+        if(alreadyExistsArrivalResult!=null){
+            TmstruckReceiptResult tmstruckReceiptResult = new TmstruckReceiptResult();
+            //获取运输订单号和收货点地址
+            String orderNumber = (String) map.get("orderNumber");
+            String resultArrivalAddress = (String) map.get("resultArrivalAddress");
+            //获取空货箱照片、已签字的送货单照片
+            String resultEmptyContainerPhoto = (String) map.get("url0");
+            String resultSignedNotePhoto = (String) map.get("url1");
+            tmstruckReceiptResult.setResultArrivalAddress(resultArrivalAddress);
+            tmstruckReceiptResult.setResultEmptyContainerPhoto(resultEmptyContainerPhoto);
+            tmstruckReceiptResult.setResultSignedNotePhoto(resultSignedNotePhoto);
+            if(map.containsKey("url2")){
+                //如果有,获取客户签收单照片
+                String resultReceiveNotePhoto = (String) map.get("url2");
+                tmstruckReceiptResult.setResultReceiveNotePhoto(resultReceiveNotePhoto);
+            }
+            //新增收货实绩主表
+            BigDecimal receiptResultId = tmstruckReceiptResultService.addTmstruckReceiptResult(orderNumber, tmstruckReceiptResult);
+            //初始化收货实绩子表信息
+            TmstruckReceiptResultChild tmstruckReceiptResultChild = new TmstruckReceiptResultChild();
+            //关联收货实绩主表
+            tmstruckReceiptResultChild.setReceiptResultId(receiptResultId);
+            //如果有,获取最多三张其他照片
+            if(map.containsKey("fourFiles")){
+                List<String> fourFiles = (List<String>) map.get("fourFiles");
+                if(fourFiles.size()==0){}
+                else if(fourFiles.size()==1){
+                    tmstruckReceiptResultChild.setOtherPhoto1(fourFiles.get(0));
+                }else if(fourFiles.size()==2){
+                    tmstruckReceiptResultChild.setOtherPhoto1(fourFiles.get(0));
+                    tmstruckReceiptResultChild.setOtherPhoto2(fourFiles.get(1));
+                }else {
+                    tmstruckReceiptResultChild.setOtherPhoto1(fourFiles.get(0));
+                    tmstruckReceiptResultChild.setOtherPhoto2(fourFiles.get(1));
+                    tmstruckReceiptResultChild.setOtherPhoto3(fourFiles.get(2));
+                }
+            }
+            //新增收货实绩子表
+            int i = tmstruckReceiptResultChildService.addTmstruckReceiptResultChild(tmstruckReceiptResultChild);
+            return i;
+        }else{
+            return 4;
+        }
+
+    }
+
+    @Override
+    public int updateWarnSwitch(String warnSwitch,String radio) {
+//        //查询数据库中是否有运输预警数据,有,则修改运输报警信息,无,则新增运输报警信息
+        TmstruckInTransitWarn tmstruckInTransitWarn = tmstruckInTransitWarnMapper.selectByPrimaryKey(new BigDecimal(1));
+        if(tmstruckInTransitWarn!=null){
+            tmstruckInTransitWarn.setWarnSwitch(warnSwitch);
+            tmstruckInTransitWarn.setWarnType(radio);
+            return tmstruckInTransitWarnMapper.updateByPrimaryKey(tmstruckInTransitWarn);
+        }else {
+            TmstruckInTransitWarn tmstruckInTransitWarn1 = new TmstruckInTransitWarn();
+            tmstruckInTransitWarn1.setWarnId(new BigDecimal(1));
+            tmstruckInTransitWarn1.setWarnSwitch(warnSwitch);
+            tmstruckInTransitWarn1.setInsertUsername("admin");
+            tmstruckInTransitWarn1.setInsertTime(new Date());
+            tmstruckInTransitWarn1.setUpdateUsername("admin");
+            tmstruckInTransitWarn1.setUpdateTime(new Date());
+            tmstruckInTransitWarn1.setInsertUpdateRemark("无");
+            tmstruckInTransitWarn1.setWarnType("0");
+            return tmstruckInTransitWarnMapper.insertSelective(tmstruckInTransitWarn1);
+        }
+    }
+}

+ 187 - 0
src/main/java/com/steerinfo/dil/service/impl/TmstruckLeaveFactoryResultServiceImpl.java

@@ -0,0 +1,187 @@
+package com.steerinfo.dil.service.impl;
+
+import com.steerinfo.dil.mapper.TmstruckLeaveFactoryResultMapper;
+import com.steerinfo.dil.mapper.UtilsMapper;
+import com.steerinfo.dil.model.TmstruckLeaveFactoryResult;
+import com.steerinfo.dil.service.ITmstruckLeaveFactoryResultService;
+import com.steerinfo.dil.util.DataChange;
+import com.steerinfo.route.service.impl.RouteServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.*;
+
+/**
+ * TmstruckLeaveFactoryResult服务实现:
+ * @author generator
+ * @version 1.0-SNAPSHORT 2021-09-11 10:32
+ * 类描述
+ * 修订历史:
+ * 日期:2021-09-11
+ * 作者:generator
+ * 参考:
+ * 描述:TmstruckLeaveFactoryResult服务实现
+ * @see null
+ * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ */
+@Service(value = "tmstruckLeaveFactoryResultService")
+public class TmstruckLeaveFactoryResultServiceImpl implements ITmstruckLeaveFactoryResultService {
+
+    @Autowired
+    private ITmstruckLeaveFactoryResultService tmstruckLeaveFactoryResultService;
+    @Autowired
+    private RouteServiceImpl routeService;
+    @Autowired
+    private TmstruckLeaveFactoryResultMapper tmstruckLeaveFactoryResultMapper;
+
+
+
+    @Autowired
+    private UtilsServiceImpl utilsService;
+
+    @Autowired
+    private UtilsMapper utilsMapper;
+
+
+
+    @Autowired
+    OffSiteTransportationServiceImpl offSiteTransportationService;
+
+
+    /**
+     * 查看运输线路是否为出厂
+     * @param orderNumber
+     * @return
+     */
+    @Override
+    public Integer selectTransportRoute(String orderNumber) {
+        return tmstruckLeaveFactoryResultMapper.selectTransportRoute(orderNumber);
+    }
+
+
+    /**
+     * 派单后新增出厂实绩
+     * 总实绩ID、线路终点
+     * @param map
+     * @return
+     */
+    @Override
+    public int addLeaveFactory(Map<String, Object> map) {
+        TmstruckLeaveFactoryResult tmstruckLeaveFactoryResult = new TmstruckLeaveFactoryResult();
+        //添加主键
+        tmstruckLeaveFactoryResult.setId(tmstruckLeaveFactoryResultMapper.selectMaxId());
+        //添加总实绩ID
+        BigDecimal resultTotalId = DataChange.dataToBigDecimal(map.get("resultTotalId"));
+        tmstruckLeaveFactoryResult.setResultTotalId(resultTotalId);
+        List<Integer> gatepostIdList = utilsMapper.getLineSegmentGateCalcId(map);
+        gatepostIdList.remove(null);
+        //随机取门岗值
+        Integer gatepostId = utilsService.randomGetValue(gatepostIdList);
+        //获取门岗ID
+        tmstruckLeaveFactoryResult.setGatepostId(new BigDecimal(gatepostId));
+        //添加路段顺序号
+        tmstruckLeaveFactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("segmentSqe")));
+        //添加门岗ID 出厂门岗为线路的终点
+        return tmstruckLeaveFactoryResultMapper.insertSelective(tmstruckLeaveFactoryResult);
+    }
+
+    @Override
+    public Map<String, Object> getTruckFactoryResult(String nu) {
+        return tmstruckLeaveFactoryResultMapper.getTruckFactoryResult(nu);
+    }
+
+    /**
+     * APP查询出厂信息
+     * @param orderNumber
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getLeaveFactoryList(String orderNumber) {
+        return tmstruckLeaveFactoryResultMapper.getLeaveFactoryList(orderNumber);
+    }
+
+
+
+
+
+
+
+
+    /**
+     * 内转订单类型
+     * @Author TXF
+     * @Date 2022/3/18 18:03
+     * @param map
+     * @param mesMap
+     * @param capacityNumber
+     * @return
+     **/
+    public int orderType11Use(Map<String, Object> map, Map<String, Object> mesMap, String capacityNumber){
+        //内转订单类型 没有生成实绩 直接新增
+        int sqe = DataChange.dataToBigDecimal(mesMap.get("Sqe")).intValue();
+        sqe = sqe + 1;
+        map.put("resultId",tmstruckLeaveFactoryResultMapper.selectMaxId());//出厂实绩ID
+        map.put("Sqe",sqe);//查询路段顺序号+1
+        map.put(("totalId"),mesMap.get("totalId"));
+        tmstruckLeaveFactoryResultMapper.insertSelective(generateLeaveFactory(map));
+        //更新路段顺序号
+        mesMap.put("orderLineSequence",sqe);
+        utilsService.updateOrderLineSqeByOrderNumber(mesMap);
+        utilsService.pushMesToWebsocket(capacityNumber, "出厂");
+        return 1;
+    }
+
+
+    //内转订单类型新增出厂实绩
+    private TmstruckLeaveFactoryResult generateLeaveFactory(Map<String, Object> map) {
+        TmstruckLeaveFactoryResult tmstruckLeaveFactoryResult = new TmstruckLeaveFactoryResult();
+        //获取出厂实绩ID
+        tmstruckLeaveFactoryResult.setResultId(DataChange.dataToBigDecimal(map.get("resultId")));
+        //添加门岗
+        tmstruckLeaveFactoryResult.setGatepostId(DataChange.dataToBigDecimal(map.get("gatepostId")));
+        //添加路段顺序号
+        tmstruckLeaveFactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("Sqe")));
+        //添加出厂时间
+        tmstruckLeaveFactoryResult.setResultOutGateTime(new Date());
+        tmstruckLeaveFactoryResult.setInsertTime(new Date());
+        tmstruckLeaveFactoryResult.setResultOutMode("手动抬杆");
+        tmstruckLeaveFactoryResult.setInsertUsername("admin");
+        if(map.get("Sqe") !=null){
+            tmstruckLeaveFactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(map.get("Sqe")));
+        }
+        if(map.get("totalId") !=null){
+            tmstruckLeaveFactoryResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("totalId")));
+        }
+        return tmstruckLeaveFactoryResult;
+    }
+
+
+    /**
+     * 通过总实绩Id修改出厂实绩出厂门岗
+     * @param resultTotalId
+     * @param gatepostId
+     * @return
+     */
+    public int updateLeaveFactoryGatepostId(Integer resultTotalId, Integer gatepostId){
+        TmstruckLeaveFactoryResult tmstruckLeaveFactoryResult = new TmstruckLeaveFactoryResult();
+        //通过总实绩ID查询出产实绩
+        BigDecimal resultId = tmstruckLeaveFactoryResultMapper.getResultIdByTotalId(resultTotalId);
+        tmstruckLeaveFactoryResult.setResultId(resultId);
+        tmstruckLeaveFactoryResult.setGatepostId(new BigDecimal(gatepostId));
+        return tmstruckLeaveFactoryResultMapper.updateByPrimaryKeySelective(tmstruckLeaveFactoryResult);
+    }
+
+    /**
+     * 查询零星物资出厂列表
+     * @param mapValue
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getSporadicLeaveFactory(Map<String, Object> mapValue) {
+        return tmstruckLeaveFactoryResultMapper.getSporadicLeaveFactory(mapValue);
+    }
+
+
+}

+ 175 - 0
src/main/java/com/steerinfo/dil/service/impl/TmstruckReceiptResultServiceImpl.java

@@ -0,0 +1,175 @@
+package com.steerinfo.dil.service.impl;
+
+import com.steerinfo.dil.mapper.TmstruckReceiptResultMapper;
+import com.steerinfo.dil.mapper.TmstruckReceiveResultMapper;
+import com.steerinfo.dil.mapper.UtilsMapper;
+import com.steerinfo.dil.model.TmstruckReceiptResult;
+import com.steerinfo.dil.service.ITmstruckReceiptResultService;
+import com.steerinfo.dil.util.DataChange;
+import com.steerinfo.route.mapper.TmstruckArrivalResultMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * TmstruckReceiptResult服务实现:
+ * @author generator
+ * @version 1.0-SNAPSHORT 2021-09-10 10:10
+ * 类描述
+ * 修订历史:
+ * 日期:2021-09-10
+ * 作者:generator
+ * 参考:
+ * 描述:TmstruckReceiptResult服务实现
+ * @see null
+ * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ */
+@Service(value = "tmstruckReceiptResultService")
+public class TmstruckReceiptResultServiceImpl implements ITmstruckReceiptResultService {
+
+    @Autowired
+    private TmstruckReceiptResultMapper tmstruckReceiptResultMapper;
+
+    @Autowired
+    private UtilsMapper utilsMapper;
+
+    @Autowired
+    private TmstruckReceiveResultMapper tmstruckReceiveResultMapper;
+
+    @Autowired
+    private TmstruckArrivalResultMapper tmstruckArrivalResultMapper;
+
+    @Override
+    public synchronized BigDecimal addTmstruckReceiptResult(String orderNumber, TmstruckReceiptResult tmstruckReceiptResult) {
+        long id;
+        if(tmstruckReceiptResultMapper.selectMaxId()==null){
+            id = 1;
+        }else {
+            id = tmstruckReceiptResultMapper.selectMaxId().longValue()+1;
+        }
+        //生成主键id
+        tmstruckReceiptResult.setResultId(new BigDecimal(id));
+        //获取并插入总实绩Id
+        BigDecimal truckTotalId = tmstruckArrivalResultMapper.getTotalIdByOrderNumber(orderNumber);
+        tmstruckReceiptResult.setResultTotalId(truckTotalId);
+        //常规字段
+        tmstruckReceiptResult.setInsertUsername("admin");
+        tmstruckReceiptResult.setInsertTime(new Date());
+        tmstruckReceiptResult.setUpdateUsername("admin");
+        tmstruckReceiptResult.setUpdateTime(new Date());
+        tmstruckReceiptResult.setInsertUpdateRemark("无");
+        tmstruckReceiptResultMapper.insertSelective(tmstruckReceiptResult);
+        return new BigDecimal(id);
+    }
+
+    @Override
+    public List<Map<String, Object>> getReceiptResultInfo(Map<String, Object> map) {
+        return tmstruckReceiptResultMapper.getReceiptResultInfo(map);
+    }
+
+    @Override
+    public String getReceiptPhoto(String orderNumber) {
+        return tmstruckReceiptResultMapper.getReceiptPhoto(orderNumber);
+    }
+
+    @Override
+    public List<Map<String, Object>> getReceivingResult(Map<String, Object> mapValue) {
+        return tmstruckReceiptResultMapper.getReceivingResult(mapValue);
+    }
+
+    @Override
+    public List<Map<String, Object>> getReceivingPhoto(String orderNumber) {
+        return tmstruckReceiptResultMapper.getReceivingPhoto(orderNumber);
+    }
+
+    /**
+     * 查询所有收货实绩
+     * @param map
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getReceiveResult(Map<String, Object> map) {
+        Integer orderType = (Integer) map.get("orderTypee");
+        switch (orderType){
+            case 1:
+                break;
+            case 2:
+                break;
+            case 3:
+                break;
+            case 4:
+                return tmstruckReceiptResultMapper.getSteelNzReceiptResult(map); //apiId: 266
+            case 5:
+            case 6:
+            case 7:
+            case 8:
+            case 17:
+            case 18:
+                return tmstruckReceiveResultMapper.getCGReceiveResult(map); //apiId: 107
+            case 9:
+            case 10:
+                return tmstruckReceiveResultMapper.getInwardReceive(map); //apiId: 107
+            case 11:
+
+        }
+        return null;
+    }
+
+    /**
+     * 新增一条虚拟收货实绩
+     * @param  {resultTotalId:总实绩ID}
+     * @return
+     */
+//    public int addReceiptResult(BigDecimal resultTotalId){
+//        //根据总实绩ID查询收货实绩查看是否已收货
+//        Integer receiptResult = tmstruckReceiptResultMapper.getReceiptResult(resultTotalId);
+//        if(receiptResult != null){
+//            return 0;
+//        }
+//        //新增完卸车实绩后新增一条收货实绩
+//        TmstruckReceiptResult tmstruckReceiptResult = new TmstruckReceiptResult();
+//        tmstruckReceiptResult.setId(tmstruckReceiptResultMapper.selectMaxId());//添加主键
+//        tmstruckReceiptResult.setResultTotalId(resultTotalId);//添加总实绩Id
+//        tmstruckReceiptResult.setStatus(new BigDecimal(0)); // 卸货完成后添加的为虚拟收货实绩
+//        return tmstruckReceiptResultMapper.insertSelective(tmstruckReceiptResult);
+//    }
+
+    /**
+     * 确认收货(修改收货实绩为真实收货实绩)
+     * @param map {resultTotalId:总实绩ID}
+     * @return
+     */
+//    public int updateReceiptResult(Map<String, Object> map){
+//        TmstruckReceiptResult tmstruckReceiptResult = new TmstruckReceiptResult();
+//        tmstruckReceiptResult.setResultTotalId(DataChange.dataToBigDecimal(map.get("resultTotalId")));
+//        tmstruckReceiptResult.setStatus(new BigDecimal(1));
+//        tmstruckReceiptResult.setInsertUsername("admin");
+//        tmstruckReceiptResult.setInsertTime(new Date());
+//        return tmstruckReceiptResultMapper.updateByTotalResultId(tmstruckReceiptResult);
+//    }
+
+    /**
+     * 新增钢材到异地库达州站驻港人员确定收货
+     * @param map
+     * @return
+     */
+    public int addSteelNzReceiptResult(Map<String, Object> map){
+        String orderNumber = (String) map.get("orderNumber");
+        //通过运输订单号获取总实绩ID
+        BigDecimal resultTotalId = utilsMapper.getTotalIdByOrderNumber(orderNumber);
+        //获取异地库ID
+        BigDecimal warehouseId =  DataChange.dataToBigDecimal(map.get("warehouseId"));
+        TmstruckReceiptResult tmstruckReceiptResult = new TmstruckReceiptResult();
+        tmstruckReceiptResult.setResultId(tmstruckReceiptResultMapper.selectMaxId());
+        tmstruckReceiptResult.setResultTotalId(resultTotalId);
+        tmstruckReceiptResult.setStatus(new BigDecimal(1));
+        tmstruckReceiptResult.setWarehouseId(warehouseId);
+        tmstruckReceiptResult.setInsertTime(new Date());
+        tmstruckReceiptResult.setInsertUsername("admin");
+        return tmstruckReceiptResultMapper.insertSelective(tmstruckReceiptResult);
+    }
+}

+ 51 - 0
src/main/java/com/steerinfo/dil/service/impl/TmstruckReceiveResultServiceImpl.java

@@ -0,0 +1,51 @@
+package com.steerinfo.dil.service.impl;
+
+import com.steerinfo.dil.mapper.TmstruckReceiveResultMapper;
+import com.steerinfo.dil.model.TmstruckReceiptResult;
+import com.steerinfo.dil.model.TmstruckReceiveResult;
+import com.steerinfo.dil.service.ITmstruckReceiveResultService;
+import com.steerinfo.framework.mapper.IBaseMapper;
+import com.steerinfo.framework.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+
+/**
+ * TmstruckReceiveResult服务实现:
+ * @author generator
+ * @version 1.0-SNAPSHORT 2022-03-29 06:27
+ * 类描述
+ * 修订历史:
+ * 日期:2022-03-29
+ * 作者:generator
+ * 参考:
+ * 描述:TmstruckReceiveResult服务实现
+ * @see null
+ * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ */
+@Service(value = "tmstruckReceiveResultService")
+public class TmstruckReceiveResultServiceImpl{
+
+    @Autowired
+    private TmstruckReceiveResultMapper tmstruckReceiveResultMapper;
+
+    /**
+     * 新增一条虚拟收货实绩
+     * @param  {resultTotalId:总实绩ID}
+     * @return
+     */
+    public int addReceiveResult(BigDecimal resultTotalId){
+        //根据总实绩ID查询收货实绩查看是否已收货
+        BigDecimal receiveResult = tmstruckReceiveResultMapper.getReceiveResult(resultTotalId);
+        if(receiveResult != null){
+            return 0;
+        }
+        //新增完卸车实绩后新增一条收货实绩
+        TmstruckReceiveResult tmstruckReceiveResult = new TmstruckReceiveResult();
+        tmstruckReceiveResult.setId(tmstruckReceiveResultMapper.selectMaxId());//添加主键
+        tmstruckReceiveResult.setResultTotalId(resultTotalId);//添加总实绩Id
+        tmstruckReceiveResult.setStatus(new BigDecimal(0)); // 卸货完成后添加的为虚拟收货实绩
+        return tmstruckReceiveResultMapper.insertSelective(tmstruckReceiveResult);
+    }
+}

+ 201 - 0
src/main/java/com/steerinfo/dil/service/impl/UtilsServiceImpl.java

@@ -0,0 +1,201 @@
+package com.steerinfo.dil.service.impl;
+
+import com.steerinfo.dil.feign.IMFeign;
+import com.steerinfo.dil.mapper.UtilsMapper;
+import com.steerinfo.dil.service.IUtilsService;
+import com.steerinfo.dil.util.DataChange;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.*;
+
+/**
+ * @ author    :TXF
+ * @ time      :2021/10/26 14:42
+ */
+
+@Service(value = "utilsService")
+public class UtilsServiceImpl implements IUtilsService {
+    @Autowired
+    private UtilsMapper utilsMapper;
+
+    @Autowired
+    private IMFeign imFeign;
+
+
+    /**
+     * 查询运输订单ID主键
+     * @return
+     */
+    @Override
+    public BigDecimal selectOrderMaxId() {
+        return utilsMapper.selectOrderMaxId();
+    }
+
+    /**
+     * 查询运输订单子表主键ID
+     * @return
+     */
+    @Override
+    public BigDecimal selectOrderMaterialMaxId() {
+        return utilsMapper.selectOrderMaterialMaxId();
+    }
+
+    /**
+     * 修改运力状态
+     * @param map {必要参数:capacityId 运力ID  或者 capacityNumber 车牌号}
+     * @param status 类型
+     * @return
+     */
+    public int updateCapacityStatus(Map<String, Object> map, Integer status){
+        map.put("capacityStatus", status);
+        return  utilsMapper.updateCapacityByCarIdOrNum(map);
+    }
+
+
+    /**
+     * 修改订单状态为结束
+     * @param map {orderId 订单Id 或运输订购单号
+     * @return
+     */
+    public int closeOrderNormally(Map<String, Object> map){
+        //查询订单路段顺序号以及查询路段顺序号
+        Map<String, Object> mesMap = utilsMapper.getLineSeqAndOrderSeq(map);
+        BigDecimal orderSeq = DataChange.dataToBigDecimal(mesMap.get("orderSeq"));
+        BigDecimal maxSeq = DataChange.dataToBigDecimal(mesMap.get("maxSeq"));
+        if(orderSeq.intValue() == maxSeq.intValue()){
+            map.put("orderStatus", 2);
+            utilsMapper.updateOrderStatusByOrderIdOrNum(map);
+
+        }
+        if(map.get("priceId")!=null){
+            //如果有价格ID 则说明需要结算 调用新增详单接口
+//            bmsTruckFeign.addDetailsOrder(DataChange.dataToBigDecimal(map.get("orderId")));
+        }
+        return 0;
+    }
+
+    /**
+     * 通过仓库名称查询仓库Id
+     * @param warehouseName
+     * @return
+     */
+    @Override
+    public Integer queryWarehouseIdByName(String warehouseName) {
+        return utilsMapper.queryWarehouseIdByName(warehouseName);
+    }
+
+    /**
+     * 用于更新路段顺序号 取实绩中的路段顺序号
+     * @param map 运输订单号 或者是运输订单ID    实绩中的路段顺序号
+     * @return
+     */
+    public int updateOrderLineSequence(Map<String, Object> map){
+        BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
+        if(orderId.intValue() == 0){
+            //如果没有传入运输订单Id则需要传入了运输订单号
+            orderId = utilsMapper.getOrderIdByOrderNumber((String) map.get("orderNumber"));
+        }
+        BigDecimal segmentSqe = DataChange.dataToBigDecimal(map.get("segmentSqe"));
+        if(segmentSqe.intValue() == 0){
+            return 0;
+        }
+        Map<String, Object> mesMap = new HashMap<>();
+        mesMap.put("orderId", orderId);
+        mesMap.put("orderLineSequence", segmentSqe);
+        return utilsMapper.updateLineSeqByOrderIdOrNum(mesMap);
+    }
+
+    /**
+     * 厂内内转订单专属更新路段顺序号方法
+     * @Author TXF
+     * @Date 2022/2/17 22:02
+     * @param map
+     * @return
+     **/
+    public int updateOrderLineSqeByOrderNumber(Map<String, Object> map){
+        return utilsMapper.updateLineSeqByOrderIdOrNum(map);
+    }
+
+
+    /**
+     * 通过月台名称查询月台Id
+     * @param platformName
+     * @return
+     */
+    @Override
+    public Integer queryPlatformIdByName(String platformName) {
+        return utilsMapper.queryPlatformIdByName(platformName);
+    }
+
+    /**
+     * 查询路段顺序号
+     * @param orderId
+     * @return
+     */
+    @Override
+    public Integer getLineSequenceByOrderId(BigDecimal orderId) {
+        return utilsMapper.getLineSequenceByOrderId(orderId);
+    }
+
+    /**
+     * 查询订单中所需要运输的物资  物资表对订单表 一对多
+     * @param map 运输订单号 orderNumber
+     * @return
+     */
+    @Override
+    public List<Integer> getAllMaterialId(Map<String, Object> map) {
+        return utilsMapper.getAllMaterialId(map);
+    }
+
+
+    /**
+     * 通过总实绩ID查询订单Id
+     * @param resultTotalId
+     * @return
+     */
+    @Override
+    public Integer getOrderIdByTotalId(Integer resultTotalId) {
+        return utilsMapper.getOrderIdByTotalId(resultTotalId);
+    }
+
+    /**
+     * 推送消息给websocket
+     * @param capacityNumber
+     * @param pushMes
+     */
+    @Override
+    public void pushMesToWebsocket(String capacityNumber, String pushMes) {
+
+        //添加消息实体
+        HashMap<Object, Object> mesMap = new HashMap<>();
+        mesMap.put("messageType", 5); //用于进厂后 刷新消息
+        mesMap.put("sendPerson", "system");
+        mesMap.put("receivePerson", capacityNumber);
+        mesMap.put("messageContent", pushMes + new Date());
+        mesMap.put("createTime", new Date());
+        ArrayList<Object> list = new ArrayList<>();
+        list.add(mesMap);
+        //调用websocket接口推送
+        HashMap<Object, Object> sendMap = new HashMap<>();
+        //将消息实体放入list中存到map中
+        sendMap.put("messages", list);
+        imFeign.sendToUser(sendMap);
+    }
+
+    public int randomGetValue(List<Integer> dataList){
+        if(dataList.size() != 0&&dataList !=null){
+            if(dataList.size() == 1){
+                return dataList.get(0);
+            }else {
+                //如果有多个值则随机取一个
+                Random random = new Random();
+                int i = random.nextInt(dataList.size());
+                return dataList.get(i);
+            }
+        }else {
+            return 0;
+        }
+    }
+}

+ 85 - 0
src/main/java/com/steerinfo/dil/util/APIUtil.java

@@ -0,0 +1,85 @@
+package com.steerinfo.dil.util;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * 远程调用接口
+ * @ author    :TXF
+ * @ time      :2021/10/15 21:37
+ *
+ */
+/*
+1,创建HttpClient对象;
+
+2,指定请求URL,并创建请求对象,如果是get请求则创建HttpGet对象,post则创建HttpPost对象;
+
+3,如果请求带有参数,对于get请求可直接在URL中加上参数请求,或者使用setParam(HetpParams params)方法设置参数,
+   对于HttpPost请求,可使用setParam(HetpParams params)方法或者调用setEntity(HttpEntity entity)方法设置参数;
+
+4,调用httpClient的execute(HttpUriRequest request)执行请求,返回结果是一个response对象;
+
+5,通过response的getHeaders(String name)或getAllHeaders()可获得请求头部信息,getEntity()方法获取HttpEntity对象,该对象包装了服务器的响应内容。
+
+实例:
+
+使用了property文件来保存不同API对应的链接,也可以除去properties文件的读取代码,直接将变量
+API换成所需URL
+ */
+public class APIUtil {
+    /**
+     * 返回API调用结果
+     * @param APIName 接口在api.properties中的名称
+     * @param params 访问api所需的参数及参数值
+     * @return 此处返回的是JSON格式的数据
+     */
+    public static String API(String APIName, Map<String, Object> params) {
+        String content = "";
+        //请求结果
+        CloseableHttpResponse response = null;
+        //实例化httpclient
+        CloseableHttpClient httpclient = HttpClients.createDefault();
+
+        try {
+            //读取配置文件的URL
+            Properties properties = new Properties();
+            URL fileURL = APIUtil.class.getClassLoader().getResource("api.properties");
+            properties.load(new FileInputStream(new File(fileURL.getFile())));
+            String API = properties.getProperty(APIName);
+            //构造url请求
+            StringBuilder url = new StringBuilder(API);
+            if(params!=null && params.size()>0) { //通过路径带过去
+                url.append("?");
+                for(Map.Entry<String, Object> entry : params.entrySet()) {
+                    url.append(entry.getKey()+"="+entry.getValue()+"&");
+                }
+                url.substring(0, url.length()-1);
+            }
+            //实例化POST方法
+            HttpPost httpPost = new HttpPost(url.toString());
+//            httpPost.setEntity();
+            //实例化get方法
+            HttpGet httpget = new HttpGet(url.toString());
+            //执行get请求
+            response = httpclient.execute(httpget);
+            if(response.getStatusLine().getStatusCode()==200) {
+                content = EntityUtils.toString(response.getEntity(),"utf-8");
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return content;
+    }
+}

+ 70 - 0
src/main/java/com/steerinfo/dil/util/BaseRESTfulController.java

@@ -0,0 +1,70 @@
+package com.steerinfo.dil.util;
+
+import com.steerinfo.framework.controller.BaseController;
+import com.steerinfo.framework.controller.RESTfulResult;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/7/8 11:33
+ * @Version 1.0
+ */
+public class BaseRESTfulController extends BaseController {
+    public BaseRESTfulController() {
+    }
+
+    protected RESTfulResult success() {
+        RESTfulResult result = new RESTfulResult();
+        result.setSucceed();
+        result.setMessage(result.getResultMessage());
+        result.setData(true);
+        result.setCode("200");
+        return result;
+    }
+
+    protected RESTfulResult success(Object obj) {
+        RESTfulResult result = new RESTfulResult();
+        result.setSucceed();
+        result.setMessage(result.getResultMessage());
+        result.setData(obj);
+        result.setCode("200");
+        return result;
+    }
+
+    protected RESTfulResult success(Object obj, String msg) {
+        RESTfulResult result = this.success(obj);
+        result.setMessage(msg);
+        result.setCode("200");
+        return result;
+    }
+
+    protected RESTfulResult success(Object obj, String code, String msg) {
+        RESTfulResult result = this.success(obj, msg);
+        result.setCode(code);
+        result.setCode("200");
+        return result;
+    }
+
+    protected RESTfulResult failed() {
+        return this.failed((Object)null);
+    }
+
+    protected RESTfulResult failed(Object obj) {
+        RESTfulResult result = new RESTfulResult("201", (String)null);
+        result.setMessage(result.getResultMessage());
+        result.setData(obj);
+        return result;
+    }
+
+    protected RESTfulResult failed(Object obj, String msg) {
+        RESTfulResult result = new RESTfulResult("201", msg);
+        result.setData(obj);
+        return result;
+    }
+
+    protected RESTfulResult failed(Object obj, String code, String msg) {
+        RESTfulResult result = this.failed(obj, msg);
+        result = new RESTfulResult("201", msg);
+        result.setCode(code);
+        return result;
+    }
+}

+ 49 - 0
src/main/java/com/steerinfo/dil/util/ColumnDataUtil.java

@@ -0,0 +1,49 @@
+package com.steerinfo.dil.util;
+
+import com.steerinfo.dil.feign.ColumnDataFeign;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+
+@Component
+public class ColumnDataUtil {
+    @Autowired
+    ColumnDataFeign columnDataFeign;
+
+    private Set<Map<String, Object>> setListMap(List<Map<String, Object>> list, String name) {
+        Set<Map<String, Object>> setString = new HashSet<>();
+        for (Map<String, Object> map : list) {//遍历每条数据
+            Map<String, Object> map1 = new HashMap<>();
+            //map.get(name)获取每条数据中对应表头字段的数据
+            map1.put("text", map.get(name));
+            if (map.get(name) != null) {
+                map1.put("value", map.get(name));
+                setString.add(map1);
+            }
+        }
+        return setString;
+    }
+
+    public PageListAdd tableColumnData(Integer apiId, List<Map<String, Object>> list,List<Map<String,Object>> data) {
+        List<Map<String, Object>> columnDataList = columnDataFeign.getColumnData(apiId);
+        for (Map<String, Object> columnData : columnDataList) {
+            //每个表头字段的过滤条件
+            columnData.put("filters", setListMap(data, columnData.get("prop").toString()));
+        }
+        PageListAdd pageList = new PageListAdd(data);
+        pageList.setColumnData(columnDataList);
+        return pageList;
+    }
+
+    public PageListAdd tableColumnData2(Integer apiId, List<Map<String, Object>> list,List<Map<String,Object>> data) {
+        List<Map<String, Object>> columnDataList = columnDataFeign.getColumnData(apiId);
+        for (Map<String, Object> columnData : columnDataList) {
+            //每个表头字段的过滤条件
+            columnData.put("filters", setListMap(list, columnData.get("prop").toString()));
+        }
+        PageListAdd pageList = new PageListAdd(data);
+        pageList.setColumnData(columnDataList);
+        return pageList;
+    }
+}

+ 260 - 0
src/main/java/com/steerinfo/dil/util/DataChange.java

@@ -0,0 +1,260 @@
+package com.steerinfo.dil.util;
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+/**
+ * @ author    :TXF
+ * @ time      :2021/8/25 11:25
+ */
+
+public class DataChange {
+
+
+    /**
+     * 时间转换类
+     * 处理了三种类型 yyyy-MM-dd HH:mm:ss  yyyy/MM/dd HH:mm:ss  时间戳类型(带毫秒数时间戳13位)
+     * @param vueDate
+     * @return
+     */
+    public static Date dataToDate(Object vueDate){
+        if(vueDate instanceof Date){
+            return (Date) vueDate;
+        } else {
+            try {
+                String str = String.valueOf(vueDate);
+                if(judgeNumber(str) && str.length() == 13){
+                    return new Date(Long.parseLong(str));
+                }else if(str.contains("-")){
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    return sdf.parse(str);
+                }else if(str.contains("/")){
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+                    return sdf.parse(str);
+                }
+            }catch (Exception e){
+                System.out.println("时间解析错误!返回null");
+                return null;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 判断是否纯数字(不带小数点)仅供上面方法使用
+     * @param str
+     * @return
+     */
+    public static boolean judgeNumber(String str){
+        Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
+        return pattern.matcher(str).matches();
+    }
+
+
+    /**
+     * 数据转换成BigDecimal
+     * @param data
+     * @return
+     */
+    public static BigDecimal dataToBigDecimal(Object data){
+        if (data != null){
+            if(data instanceof BigDecimal){
+                return (BigDecimal) data;
+            }else{
+                String str = String.valueOf(data);
+                BigDecimal decimal = null;
+                if(!"".equals(str)){
+                    try {
+                        decimal = new BigDecimal(str);
+                    } catch (Exception e) {
+                        System.out.println(data + ":数据解析失败!返回0");
+                        return new BigDecimal(0);
+                    }
+                }
+                return decimal;
+            }
+        }
+        return new BigDecimal(0);
+    }
+
+    /**
+     * 将时间截取到天  为字符串类型 用于前端只显示到天
+     * @param date 传入时间
+     * @return
+     */
+    public static String dateToDayDate(Object date){
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date changeDate = null;
+        if(date == null)
+            return null;
+        try{
+             changeDate = (Date) date;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return sdf.format(changeDate);
+    }
+
+    /**
+     * 遍历从数据库中传进来的数据
+     * @param list 从数据库查询出来的list数据列表
+     * @param key map中多个需要转换的date参数
+     */
+    public static void changeDateToDayDate(List<Map<String, Object>> list, String ...key){
+        //遍历List
+        for (Map<String, Object> map : list) {
+            for (String s : key) {
+                //从map中取 date的值 并转换成字符串类型的日期
+                String stringDate = dateToDayDate(map.get(s));
+                if(stringDate.length() == 0){
+                    break;
+                }else {
+                    //修改map中的值
+                    map.put(s, stringDate);
+                }
+            }
+        }
+    }
+
+    /**
+     * 遍历列表使只显示两位小数
+     * @param list
+     * @param key
+     */
+    public static void dataTo2Number(List<Map<String, Object>> list, String ...key){
+        DecimalFormat df =  new DecimalFormat("0.00");
+        //遍历List
+        for (Map<String, Object> map : list) {
+            for (String s : key) {
+                //修改数据为带两位小数
+                try {
+                    BigDecimal oldDate = dataToBigDecimal(map.get(s));
+                    String resultDeduction = df.format(oldDate.doubleValue());
+                    map.put(s, resultDeduction);
+                } catch (Exception e) {
+                    System.out.println("原料扣减量数据有误");
+                }
+            }
+        }
+    }
+
+    /**
+     * 计算相差时间  日时分秒
+     * @param
+     * @return
+     */
+    public static String calculatedTimeDifference(Date time1, Date time2){
+        long t1 = time1.getTime();
+        long t2 = time2.getTime();
+        if(t1 > t2){
+            long temp = t1;
+            t1 = t2;
+            t2 = temp;
+        }
+        long between = t2 - t1;
+        long day = between / (24 * 60 * 60 * 1000);
+        long hour = (between / (60 * 60 * 1000) - day * 24);
+        long min = ((between / (60 * 1000)) - day * 24 * 60 - hour * 60);
+        long s = (between / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
+        return day + "天"+  + hour+ "时" + min + "分"  + s + "秒";
+    }
+
+    /**
+     * 生成带时间的八位数顺序号
+     * @param start 前缀
+     * @param id 顺序号  主键Id
+     * @return
+     */
+    public static String generateEightDigitsNumber(String start, Integer id){
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        StringBuilder sb = new StringBuilder(start + sdf.format(new Date()));
+        sb.append(
+                id < 10
+                        ? "0000000" + id : id < 100
+                        ? "000000" + id : id < 1000
+                        ? "00000" + id : id < 10000
+                        ? "0000" + id : id < 100000
+                        ? "000" + id : id < 1000000
+                        ? "00" + id : id < 10000000
+                        ? "0" + id : id.toString()
+        );
+        return sb.toString();
+    }
+
+    /**
+     * 根据时间段查询数据 支持只选择单个时间
+     * @Author TXF
+     * @Date 2022/1/10 23:21
+     * @param startTime
+     * @param endTime
+     * @param map
+     * @param sdf
+     * @return
+     **/
+    public static void queryDataByDate(String startTime, String endTime, Map<String, Object> map, SimpleDateFormat sdf){
+        if (startTime != null && !"null".equals(startTime) && endTime != null && !"null".equals(endTime)) {
+            map.put("startDate", sdf.format(new Date(Long.parseLong(startTime))));
+            map.put("endDate", sdf.format(new Date(Long.parseLong(endTime) + 86400000)));
+        } else if (startTime != null && !"null".equals(startTime)) {
+            map.put("oneDate", sdf.format(new Date(Long.parseLong(startTime))));
+        } else if (endTime != null && !"null".equals(endTime)) {
+            map.put("oneDate", sdf.format(new Date(Long.parseLong(endTime))));
+        } else {
+            map.put("oneDate", sdf.format(new Date()));
+        }
+    }
+
+    /**
+     * 只支持两个时间查询
+     * @Author TXF
+     * @Date 2022/1/15 9:08
+     * @param startTime
+     * @param endTime
+     * @param sdf
+     * @return
+     **/
+    public static void queryDataByDateTime(String startTime, String endTime, Map<String, Object> map,SimpleDateFormat sdf){
+        SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");
+        if (startTime != null && !"null".equals(startTime) && endTime != null && !"null".equals(endTime)) {
+            map.put("startDate", sdf.format(new Date(Long.parseLong(startTime))));
+            map.put("endDate", sdf.format(new Date(Long.parseLong(endTime))));
+        }
+        //如果开始时间和结束时间有且只有一个为空 则只查那天的数据
+        else if((startTime != null && !"null".equals(startTime)) || (endTime != null && !"null".equals(endTime))){
+            if(startTime != null && !"null".equals(startTime)){
+                queryDataByTwoDateSon(map, startTime, sdfDate);
+            }
+            if(endTime != null && !"null".equals(endTime)){
+                queryDataByTwoDateSon(map, endTime, sdfDate);
+            }
+        }else {
+            //如果两者时间都为空,则查询当天数据
+            String nowDate = sdfDate.format(new Date());
+            map.put("oneDate", nowDate + " 00:00:00");
+        }
+    }
+
+    /**
+     * 上面方法的儿子方法 如果只传入了一个时间 则查询那天的数据
+     * @Author TXF
+     * @Date 2022/1/17 16:17
+     * @param map
+     * @param time
+     * @param sdfDate
+     * @return
+     **/
+    private static void queryDataByTwoDateSon(Map<String, Object> map, String time, SimpleDateFormat sdfDate){
+        Date date1 = new Date(Long.parseLong(time));
+        Date date2 = new Date(Long.parseLong(time) + 86400000);
+        String dayStartTime = sdfDate.format(date1);
+        String dayEndTime = sdfDate.format(date2);
+        map.put("startDate", dayStartTime + " 00:00:00");
+        map.put("endDate", dayEndTime + " 00:00:00");
+    }
+}

+ 131 - 0
src/main/java/com/steerinfo/dil/util/HTTPRequestUtils.java

@@ -0,0 +1,131 @@
+package com.steerinfo.dil.util;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.http.HttpEntity;
+import org.apache.http.ParseException;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicHeader;
+import org.apache.http.protocol.HTTP;
+import org.apache.http.util.EntityUtils;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+public class HTTPRequestUtils {
+    /**
+     * 发送post请求
+     * @param url  路径
+     * @param json  参数(json类型)
+     * @param encoding 编码格式
+     * @return
+     * @throws ParseException
+     * @throws IOException
+     */
+    public static String send(String url, JSONObject json, String encoding) throws ParseException, IOException {
+        String body = "";
+
+        //创建httpclient对象
+        CloseableHttpClient client = HttpClients.createDefault();
+        //创建post方式请求对象
+        HttpPost httpPost = new HttpPost(url);
+
+        //装填参数
+        StringEntity s = new StringEntity(json.toString(), "utf-8");
+        s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json"));
+        //设置参数到请求对象中
+        httpPost.setEntity(s);
+        System.out.println("请求地址:" + url);
+        System.out.println(json);
+//        System.out.println("请求参数:"+nvps.toString());
+
+        //设置header信息
+        //指定报文头【Content-type】、【User-Agent】
+//        httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");
+        httpPost.setHeader("Content-type", "application/json");
+        httpPost.setHeader("-UserAgent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
+
+        //执行请求操作,并拿到结果(同步阻塞)
+        CloseableHttpResponse response = client.execute(httpPost);
+        System.out.println(response);
+        //获取结果实体
+        HttpEntity entity = response.getEntity();
+        System.out.println(entity);
+        if (entity != null) {
+            //按指定编码转换结果实体为String类型
+            body = EntityUtils.toString(entity, encoding);
+        }
+        EntityUtils.consume(entity);
+        //释放链接
+        response.close();
+        return body;
+    }
+
+
+    public static String getJsonData(JSONObject jsonParam,String urls) {
+        StringBuffer sb=new StringBuffer();
+        try {
+            // 创建url资源
+            URL url = new URL(urls);
+            // 建立http连接
+            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+            // 设置允许输出
+            conn.setDoOutput(true);
+            // 设置允许输入
+            conn.setDoInput(true);
+            // 设置不用缓存
+            conn.setUseCaches(false);
+            // 设置传递方式
+            conn.setRequestMethod("POST");
+            // 设置维持长连接
+            conn.setRequestProperty("Connection", "Keep-Alive");
+            // 设置文件字符集:
+            conn.setRequestProperty("Charset", "UTF-8");
+            // 转换为字节数组
+            byte[] data = (jsonParam.toString()).getBytes();
+            // 设置文件长度
+            conn.setRequestProperty("Content-Length", String.valueOf(data.length));
+            // 设置文件类型:
+            conn.setRequestProperty("contentType", "application/json");
+            // 开始连接请求
+            conn.connect();
+            OutputStream out = new DataOutputStream(conn.getOutputStream()) ;
+            // 写入请求的字符串
+            out.write((jsonParam.toString()).getBytes());
+            out.flush();
+            out.close();
+            System.out.println(conn.getResponseCode());
+
+            // 请求返回的状态
+            if (HttpURLConnection.HTTP_OK == conn.getResponseCode()){
+                System.out.println("连接成功");
+                // 请求返回的数据
+                InputStream in1 = conn.getInputStream();
+                try {
+                    String readLine = new String();
+                    BufferedReader responseReader=new BufferedReader(new InputStreamReader(in1,"UTF-8"));
+                    while((readLine=responseReader.readLine())!=null){
+                        sb.append(readLine).append("\n");
+                    }
+                    responseReader.close();
+                    System.out.println(sb.toString());
+
+                } catch (Exception e1) {
+                    e1.printStackTrace();
+                }
+            } else {
+                System.out.println("error++");
+            }
+        } catch (Exception e) {
+
+        }
+        return sb.toString();
+
+    }
+
+
+}

+ 70 - 0
src/main/java/com/steerinfo/dil/util/MD5Util.java

@@ -0,0 +1,70 @@
+package com.steerinfo.dil.util;
+
+
+import java.security.MessageDigest;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.SimpleTimeZone;
+
+/**
+ * @author luobang
+ * @create 2021-10-29 10:16
+ */
+
+    public class MD5Util {
+        /***
+         * MD5加密 生成32位md5码
+         *
+         * @param inStr 待加密字符串
+         * @return 返回32位md5码
+         */
+        public static String md5Encode(String inStr) throws Exception {
+            MessageDigest md5 = null;
+            try {
+                md5 = MessageDigest.getInstance("MD5");
+            } catch (Exception e) {
+                System.out.println(e.toString());
+                e.printStackTrace();
+                return "";
+            }
+
+            byte[] byteArray = inStr.getBytes("UTF-8");
+            byte[] md5Bytes = md5.digest(byteArray);
+            StringBuffer hexValue = new StringBuffer();
+            for (int i = 0; i < md5Bytes.length; i++) {
+                int val = ((int) md5Bytes[i]) & 0xff;
+                if (val < 16) {
+                    hexValue.append("0");
+                }
+                hexValue.append(Integer.toHexString(val));
+            }
+            return hexValue.toString();
+        }
+
+        public static String formatTimeTmp(){
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+            Date date = new Date();
+            String timeTmp = simpleDateFormat.format(date);
+            return timeTmp;
+        }
+
+        public static String sign(String AppId,String secretKey) throws Exception {
+            String instr = AppId + secretKey + formatTimeTmp();
+            return md5Encode(instr);
+        }
+
+
+        /**
+         *测试
+         * @throws Exception
+         */
+        public static void main(String[] args) throws Exception {
+            String ApiId = "EUCP-EMY-SMS1-10QNI";
+            String sererct = "EE20B0B28B75E567";
+            System.out.println(formatTimeTmp());
+            System.out.println(sign(ApiId,sererct));
+        }
+
+
+    }
+

+ 33 - 0
src/main/java/com/steerinfo/dil/util/PageListAdd.java

@@ -0,0 +1,33 @@
+package com.steerinfo.dil.util;
+
+import com.steerinfo.framework.service.pagehelper.PageList;
+
+import java.util.List;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/6/7 14:31
+ * @Version 1.0
+ */
+public class PageListAdd<T> extends PageList<T> {
+    public PageListAdd() {
+    }
+
+    public PageListAdd(List<T> list) {
+        super(list, 20);
+    }
+
+    public PageListAdd(List<T> list, int navigatePages) {
+        super(list, navigatePages);
+    }
+
+    private Object columnData;
+
+    public Object getColumnData() {
+        return columnData;
+    }
+
+    public void setColumnData(Object columnData) {
+        this.columnData = columnData;
+    }
+}

+ 11 - 0
src/main/java/com/steerinfo/dil/util/util.java

@@ -0,0 +1,11 @@
+package com.steerinfo.dil.util;
+
+/**
+ * @Author zhangnan
+ * @Date 2021/5/26 8:59
+ * @Version 1.0
+ * 工具类
+ */
+public class util {
+
+}

+ 12 - 0
src/main/java/com/steerinfo/route/config/FileUtils.java

@@ -0,0 +1,12 @@
+package com.steerinfo.route.config;
+
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+public interface FileUtils {
+
+    public List<String> updateFiles(MultipartFile files[])throws Exception;
+
+     public Object downloadFile(String url) throws Exception;
+}

+ 234 - 0
src/main/java/com/steerinfo/route/config/ImageFileUtils.java

@@ -0,0 +1,234 @@
+package com.steerinfo.route.config;
+
+import com.steerinfo.framework.utils.misc.IdGenerator;
+import com.steerinfo.framework.utils.upload.UploadUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.*;
+
+@Component
+public class ImageFileUtils implements FileUtils {
+
+    @Value(value = "${piction.path:/shared}" )
+    private String path;
+
+    public static final HashMap fileTypes = new HashMap();
+
+    static {
+
+        // images
+
+        fileTypes.put("FFD8FF", "jpg");
+
+        fileTypes.put("89504E47", "png");
+
+        fileTypes.put("47494638", "gif");
+
+        fileTypes.put("49492A00", "tif");
+
+        fileTypes.put("424D", "bmp");
+
+        // CAD
+
+        fileTypes.put("41433130", "dwg");
+
+        fileTypes.put("38425053", "psd");
+
+        // 日记本
+
+        fileTypes.put("7B5C727466", "rtf");
+
+        fileTypes.put("3C3F786D6C", "xml");
+
+        fileTypes.put("68746D6C3E", "html");
+
+        // 邮件
+
+        fileTypes.put("44656C69766572792D646174653A", "eml");
+
+        fileTypes.put("D0CF11E0", "doc");
+
+        //excel2003版本文件
+
+        fileTypes.put("D0CF11E0", "xls");
+
+        fileTypes.put("5374616E64617264204A", "mdb");
+
+        fileTypes.put("252150532D41646F6265", "ps");
+
+        fileTypes.put("255044462D312E", "pdf");
+
+        fileTypes.put("504B0304", "docx");
+
+        //excel2007以上版本文件
+
+        fileTypes.put("504B0304", "xlsx");
+
+        fileTypes.put("52617221", "rar");
+
+        fileTypes.put("57415645", "wav");
+
+        fileTypes.put("41564920", "avi");
+
+        fileTypes.put("2E524D46", "rm");
+
+        fileTypes.put("000001BA", "mpg");
+
+        fileTypes.put("000001B3", "mpg");
+
+        fileTypes.put("6D6F6F76", "mov");
+
+        fileTypes.put("3026B2758E66CF11", "asf");
+
+        fileTypes.put("4D546864", "mid");
+
+        fileTypes.put("1F8B08", "gz");
+
+    }
+
+
+    /**
+     * 上传多张图片
+     * @param files
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public synchronized List<String> updateFiles(MultipartFile files[]) throws Exception {
+        //首先通过Calendard对象获得年月日
+        Calendar calendar= Calendar.getInstance();
+        int year = calendar.get(Calendar.YEAR);
+        int month = calendar.get(Calendar.MONTH);
+        int day= calendar.get(Calendar.DAY_OF_MONTH);
+        //上传文件夹路径
+        List<String> urls=new ArrayList<>();
+        for (int i=0;i<files.length;i++){
+            String url = UploadUtils.uploadFile(files[i], new IdGenerator(i, 10), path, File.separator+year+ File.separator+month+ File.separator+day+ File.separator);
+            urls.add(url);
+        }
+        return urls;
+    }
+
+
+    /**
+     * 上传单张图片
+     * @param file
+     * @return
+     * @throws Exception
+     */
+    public synchronized String updateFile(MultipartFile file) throws Exception {
+        //首先通过Calendard对象获得年月日
+        Calendar calendar= Calendar.getInstance();
+        int year = calendar.get(Calendar.YEAR);
+        int month = calendar.get(Calendar.MONTH);
+        int day= calendar.get(Calendar.DAY_OF_MONTH);
+        String url = UploadUtils.uploadFile(file, new IdGenerator(0, 10), path, File.separator+year+ File.separator+month+ File.separator+day+ File.separator);
+        return url;
+    }
+
+    /**
+     * 下载图片获得字节码
+     * @param filePath
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public Object downloadFile(String filePath) throws Exception {
+        File file = new File(filePath);
+        if(file.isDirectory()){
+
+            throw new RuntimeException("当前路径是目录");
+
+        }
+        byte[] b = bytes(file);
+        String type =getFileHeader(b);
+        String src="data:image/"+type+";base64,"+ Base64.getEncoder().encodeToString(b);
+        return src;
+    }
+
+
+
+
+    /**
+     * @return 文件头信息
+     * @author liang.pan
+     * <p>
+     * 方法描述:根据输入流获取文件头信息
+     */
+    public static String getFileHeader(byte[] b) {
+        String value = bytesToHexString(b);
+
+        if (StringUtils.startsWith(value, "FFD8FF")) {
+            value = value.substring(0, 6);
+        }
+
+        //判断什么类型的
+        Set set = fileTypes.keySet();
+        Iterator iterator = set.iterator();
+        while(iterator.hasNext()){
+            String key=iterator.next().toString();
+            if (value.contains(key)){
+                return fileTypes.get(key).toString();
+            }
+        }
+        return null;
+    }
+
+    /**
+     * @param src 要读取文件头信息的文件的byte数组
+     * @return 文件头信息
+     * @author liang.pan
+     * <p>
+     * 方法描述:将要读取文件头信息的文件的byte数组转换成string类型表示
+     */
+    private static String bytesToHexString(byte[] src) {
+        StringBuilder builder = new StringBuilder();
+        if (src == null || src.length <= 0) {
+            return null;
+        }
+        String hv;
+        for (int i = 0; i < src.length; i++) {
+            // 以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式,并转换为大写
+            hv = Integer.toHexString(src[i] & 0xFF).toUpperCase();
+            if (hv.length() < 2) {
+                builder.append(0);
+            }
+            builder.append(hv);
+        }
+        return builder.toString();
+    }
+
+
+    public byte[] bytes(File file) throws Exception {
+        FileInputStream fin = new FileInputStream(file);
+        try {
+            //可能溢出,简单起见就不考虑太多,如果太大就要另外想办法,比如一次传入固定长度byte[]
+            byte[] bytes  = new byte[fin.available()];
+            //将文件内容写入字节数组,提供测试的case
+            fin.read(bytes);
+            fin.close();
+            return bytes;
+        }catch (Exception ex){
+            throw ex;
+        }
+        finally {
+            if (null != fin) {
+
+                try {
+
+                    fin.close();
+
+                } catch (IOException e) {
+
+                }
+
+            }
+        }
+    }
+}

+ 56 - 0
src/main/java/com/steerinfo/route/config/KeyExpiredListener.java

@@ -0,0 +1,56 @@
+package com.steerinfo.route.config;
+
+import com.alibaba.fastjson.JSON;
+import com.steerinfo.route.threeRequest.ZhongJiaoXingLu;
+import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.connection.Message;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
+import org.springframework.data.redis.listener.RedisMessageListenerContainer;
+
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.concurrent.TimeUnit;
+
+@Api("redis过期的监听")
+public class KeyExpiredListener extends KeyExpirationEventMessageListener
+{
+    @Value("${redis.prefix.order}")
+    private String prefixOrder;
+    @Value("${redis.prefix.line}")
+    private String prefixLine;
+    @Value("${redis.prefix.suffix}")
+    private String suffix;
+    @Autowired
+    private RedisTemplate redisTemplate;
+    @Autowired
+    private ZhongJiaoXingLu zhongJiaoXingLu;
+    public KeyExpiredListener(RedisMessageListenerContainer listenerContainer)
+    {
+        super(listenerContainer);
+    }
+    @Override
+    public void onMessage(Message message, byte[] pattern)
+    {
+        //当订单快超过三天,这边就要对路径进行保存了
+        if (message.toString().startsWith(prefixOrder)){
+            String redisJson = (String) redisTemplate.opsForValue().get(message.toString()+suffix);
+            redisTemplate.delete(message.toString()+suffix);
+            HashMap mapValue = JSON.parseObject(redisJson, HashMap.class);
+            String json = zhongJiaoXingLu.visualRoute(mapValue);
+            //设置60天后过期
+            Calendar calendar= Calendar.getInstance();
+            long agoTime= calendar.getTime().getTime();
+            calendar.add(Calendar.MONTH,2);
+            long lateTime= calendar.getTime().getTime();
+            long saveTime=(lateTime-agoTime)/1000;
+            String orderId=message.toString().replace(prefixOrder+":","");
+            if (json!=null){
+                redisTemplate.opsForValue().set(prefixLine+":"+orderId, json, saveTime, TimeUnit.SECONDS);
+            }
+
+        }
+    }
+}

+ 124 - 0
src/main/java/com/steerinfo/route/controller/TmstruckArrivalResultController.java

@@ -0,0 +1,124 @@
+package com.steerinfo.route.controller;
+
+import com.steerinfo.dil.feign.ColumnDataFeign;
+import com.steerinfo.dil.util.BaseRESTfulController;
+import com.steerinfo.dil.util.ColumnDataUtil;
+import com.steerinfo.dil.util.PageListAdd;
+import com.steerinfo.framework.controller.RESTfulResult;
+import com.steerinfo.framework.service.pagehelper.PageHelper;
+import com.steerinfo.route.config.ImageFileUtils;
+import com.steerinfo.route.model.TmstruckArrivalResult;
+import com.steerinfo.route.service.ITmstruckArrivalResultService;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * TmstruckArrivalResult RESTful接口:
+ * @author generator
+ * @version 1.0-SNAPSHORT 2021-09-06 07:38
+ * 类描述
+ * 修订历史:
+ * 日期:2021-09-06
+ * 作者:generator
+ * 参考:
+ * 描述:TmstruckArrivalResult RESTful接口
+ * @see null
+ * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ */
+@RestController
+@RequestMapping("/${api.version}/tmstruckarrivalresults")
+public class TmstruckArrivalResultController extends BaseRESTfulController {
+
+    @Autowired
+    ImageFileUtils imageFileUtils;
+    @Autowired
+    ITmstruckArrivalResultService tmstruckArrivalResultService;
+
+    @Autowired
+    ColumnDataFeign columnDataFeign;
+
+    @Autowired
+    ColumnDataUtil columnDataUtil;
+
+    /**
+     * 新增抵达实绩信息
+     * @param map
+     * @return
+     */
+    @ApiOperation(value="新增抵达实绩信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "map", value = "抵达实绩map", required = false, dataType = "java.util.Map")
+    })
+    @PostMapping(value = "/addtmstruckArrivalResult2")
+    public RESTfulResult addtmstruckArrivalResult2(@RequestBody(required = false) Map<String, Object> map){
+        String orderNumber = (String) map.get("orderNumber");
+        String resultArrivalAddress = (String) map.get("resultArrivalAddress");
+        String resultFullContainerPhoto = (String) map.get("url");
+        TmstruckArrivalResult tmstruckArrivalResult = new TmstruckArrivalResult();
+        tmstruckArrivalResult.setResultArrivalAddress(resultArrivalAddress);
+        tmstruckArrivalResult.setResultFullContainerPhoto(resultFullContainerPhoto);
+        int i = tmstruckArrivalResultService.addtmstruckArrivalResult(orderNumber,tmstruckArrivalResult);
+        return success(i);
+    }
+
+    @PostMapping(value = "/addtmstruckArrivalResult")
+    public RESTfulResult addtmstruckArrivalResult(String orderNumber, String resultArrivalAddress, MultipartFile file) throws Exception {
+
+        String url = imageFileUtils.updateFile(file);
+        TmstruckArrivalResult tmstruckArrivalResult = new TmstruckArrivalResult();
+        tmstruckArrivalResult.setResultArrivalAddress(resultArrivalAddress);
+        tmstruckArrivalResult.setResultFullContainerPhoto(url);
+        int i = tmstruckArrivalResultService.addtmstruckArrivalResult(orderNumber,tmstruckArrivalResult);
+        return success(i);
+
+    }
+
+    @ApiOperation(value="展示抵达实绩信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "apiId(136)", value = "表头", required = false, dataType = "Interger")
+    })
+    @PostMapping("/getArrivalResultInfo")
+    public RESTfulResult getArrivalResultInfo(@RequestBody(required=false) Map<String, Object> mapValue,
+                                               Integer apiId,
+                                               Integer pageNum,
+                                               Integer pageSize){
+
+        if(mapValue.containsKey("startTime")&&mapValue.containsKey("endTime")){
+            Date startDate=new Date(Long.parseLong(mapValue.get("startTime").toString())) ;
+            Date endDate=new Date(Long.parseLong(mapValue.get("endTime").toString())) ;
+            Calendar ca = Calendar.getInstance();
+            ca.setTime(endDate);
+            ca.add(Calendar.DATE,1);
+            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+            String startTime1=simpleDateFormat.format(startDate);
+            String endTime1=simpleDateFormat.format(ca.getTime());
+            mapValue.replace("startTime",startTime1);
+            mapValue.replace("endTime",endTime1);
+        }
+        List<Map<String, Object>> arrivalResultInfo = tmstruckArrivalResultService.getArrivalResultInfo(mapValue);
+        PageHelper.startPage(pageNum,pageSize);
+        List<Map<String, Object>> arrivalResultInfo1 = tmstruckArrivalResultService.getArrivalResultInfo(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId,arrivalResultInfo,arrivalResultInfo1);
+        return success(pageList);
+    }
+    @ApiOperation("通过运输订单号获得收货地址的市区")
+    @GetMapping("/getAddressDistrict")
+    public String getAddressDistrict(@RequestParam(required = true) String orderNumber){
+        String addressDistrict=tmstruckArrivalResultService.getAddressDistrict(orderNumber);
+        return addressDistrict;
+    }
+
+    @PostMapping(value = "/uploadImage")
+    public String uploadImage(String orderNumber,MultipartFile file) throws Exception {
+        String url = imageFileUtils.updateFile(file);
+        return url;
+    }
+}

+ 30 - 0
src/main/java/com/steerinfo/route/controller/TmstruckReceiptResultChildController.java

@@ -0,0 +1,30 @@
+package com.steerinfo.route.controller;
+
+
+import com.steerinfo.dil.util.BaseRESTfulController;
+import com.steerinfo.route.service.ITmstruckReceiptResultChildService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * TmstruckReceiptResultChild RESTful接口:
+ * @author generator
+ * @version 1.0-SNAPSHORT 2021-09-06 07:38
+ * 类描述
+ * 修订历史:
+ * 日期:2021-09-06
+ * 作者:generator
+ * 参考:
+ * 描述:TmstruckReceiptResultChild RESTful接口
+ * @see null
+ * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ */
+@RestController
+@RequestMapping("/${api.version}/tmstruckreceiptresultchilds")
+public class TmstruckReceiptResultChildController extends BaseRESTfulController {
+
+    @Autowired
+    ITmstruckReceiptResultChildService tmstruckReceiptResultChildService;
+
+}

+ 54 - 0
src/main/java/com/steerinfo/route/controller/ZhongJiaoXingLuContoller.java

@@ -0,0 +1,54 @@
+package com.steerinfo.route.controller;
+
+//import com.steerinfo.route.feign.TMSFeign;
+import com.steerinfo.route.threeRequest.ZhongJiaoXingLu;
+import com.steerinfo.route.util.DataConversionTool;
+import com.steerinfo.route.vo.ResultWarn;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("apis")
+public class ZhongJiaoXingLuContoller {
+
+
+    @Autowired
+    private ZhongJiaoXingLu zhongJiaoXingLu;
+
+
+    @PostMapping("/abnormalLineWarn")
+    public String abnormalLineWarn(@RequestParam(value = "data") String data) throws Exception {
+        System.out.println("abnormalLineWarn");
+        ResultWarn resultWarn= (ResultWarn) DataConversionTool.jsonToBean(data, ResultWarn.class);
+        Map<String, Object> map=  DataConversionTool.objectToMap(resultWarn);
+        //tmsFeign.addTransportationAlarm(map);
+        System.out.println("success");
+        return "success";
+    }
+    @PostMapping("/parkWarn")
+    public String parkWarn(@RequestParam(value = "data") String data) throws Exception {
+        System.out.println("parkWarn");
+        ResultWarn resultWarn= (ResultWarn) DataConversionTool.jsonToBean(data, ResultWarn.class);
+        Map<String, Object> map=  DataConversionTool.objectToMap(resultWarn);
+       // tmsFeign.addTransportationAlarm(map);
+        System.out.println("success");
+        return "success";
+    }
+    @PostMapping("/offLineWarn")
+    public String offLineWarn(@RequestParam(value = "data") String data) throws Exception {
+        System.out.println("offLineWarn");
+        ResultWarn resultWarn= (ResultWarn) DataConversionTool.jsonToBean(data, ResultWarn.class);
+        Map<String, Object> map=  DataConversionTool.objectToMap(resultWarn);
+        //tmsFeign.addTransportationAlarm(map);
+        System.out.println("success");
+        return "success";
+    }
+
+
+
+}

+ 19 - 0
src/main/java/com/steerinfo/route/mapper/DilVersionMapper.java

@@ -0,0 +1,19 @@
+package com.steerinfo.route.mapper;
+
+import com.steerinfo.dil.model.DilVersion;
+import com.steerinfo.framework.mapper.IBaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.math.BigDecimal;
+
+@Mapper
+public interface DilVersionMapper extends IBaseMapper<DilVersion, BigDecimal> {
+    @Select("select VERSION_VALUE from DIL_VERSION where VERSION_TYPE = 3")
+    String getToken();
+
+    @Update("update DIL_VERSION set VERSION_VALUE = #{token}, UPDATE_TIME = SYSDATE where VERSION_TYPE = 3")
+    int updateToken(@Param("token") String token);
+}

+ 30 - 0
src/main/java/com/steerinfo/route/mapper/TmstruckArrivalResultMapper.java

@@ -0,0 +1,30 @@
+package com.steerinfo.route.mapper;
+
+import com.steerinfo.framework.mapper.IBaseMapper;
+import com.steerinfo.route.model.TmstruckArrivalResult;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface TmstruckArrivalResultMapper extends IBaseMapper<TmstruckArrivalResult, BigDecimal> {
+    //获取主键最大值
+    BigDecimal selectMaxId();
+    //获取抵达实绩信息
+    List<Map<String, Object>> getArrivalResultInfo(Map<String, Object> map);
+
+    //查询是否存在抵达实绩
+    BigDecimal alreadyExistsArrivalResult(String orderNumber);
+
+    String getAddressDistrict(String orderNumber);
+
+    List<String> getAdjustment();
+
+    int updateTown(@Param("city") String city, @Param("item") String item);
+
+    //通过运输订单号获取总实绩Id
+    BigDecimal getTotalIdByOrderNumber(String capacityNumber);
+}

+ 13 - 0
src/main/java/com/steerinfo/route/mapper/TmstruckReceiptResultChildMapper.java

@@ -0,0 +1,13 @@
+package com.steerinfo.route.mapper;
+
+import com.steerinfo.framework.mapper.IBaseMapper;
+import com.steerinfo.route.model.TmstruckReceiptResultChild;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.math.BigDecimal;
+
+@Mapper
+public interface TmstruckReceiptResultChildMapper extends IBaseMapper<TmstruckReceiptResultChild, BigDecimal> {
+    //获取主键最大值
+    BigDecimal selectMaxId();
+}

+ 184 - 0
src/main/java/com/steerinfo/route/model/TmstruckArrivalResult.java

@@ -0,0 +1,184 @@
+package com.steerinfo.route.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="汽运抵达实绩")
+public class TmstruckArrivalResult implements IBasePO<BigDecimal> {
+    /**
+     * 实绩ID(RESULT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="实绩ID",required=true)
+    private BigDecimal resultId;
+
+    /**
+     * 作业点ID(POINT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="作业点ID",required=false)
+    private BigDecimal pointId;
+
+    /**
+     * 总实绩ID(RESULT_TOTAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="总实绩ID",required=false)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 抵达收货点的地址(RESULT_ARRIVAL_ADDRESS,VARCHAR,20)
+     */
+    @ApiModelProperty(value="抵达收货点的地址",required=false)
+    private String resultArrivalAddress;
+
+    /**
+     * 满货箱照片(RESULT_FULL_CONTAINER_PHOTO,VARCHAR,100)
+     */
+    @ApiModelProperty(value="满货箱照片",required=false)
+    private String resultFullContainerPhoto;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.resultId;
+    }
+
+    @Override
+    public void setId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getPointId() {
+        return pointId;
+    }
+
+    public void setPointId(BigDecimal pointId) {
+        this.pointId = pointId;
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public String getResultArrivalAddress() {
+        return resultArrivalAddress;
+    }
+
+    public void setResultArrivalAddress(String resultArrivalAddress) {
+        this.resultArrivalAddress = resultArrivalAddress == null ? null : resultArrivalAddress.trim();
+    }
+
+    public String getResultFullContainerPhoto() {
+        return resultFullContainerPhoto;
+    }
+
+    public void setResultFullContainerPhoto(String resultFullContainerPhoto) {
+        this.resultFullContainerPhoto = resultFullContainerPhoto == null ? null : resultFullContainerPhoto.trim();
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", resultId=").append(resultId);
+        sb.append(", pointId=").append(pointId);
+        sb.append(", resultTotalId=").append(resultTotalId);
+        sb.append(", resultArrivalAddress=").append(resultArrivalAddress);
+        sb.append(", resultFullContainerPhoto=").append(resultFullContainerPhoto);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 227 - 0
src/main/java/com/steerinfo/route/model/TmstruckReceiptResult.java

@@ -0,0 +1,227 @@
+package com.steerinfo.route.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="收货实绩")
+public class TmstruckReceiptResult implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(RESULT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal resultId;
+
+    /**
+     * 总实绩ID(RESULT_TOTAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="总实绩ID",required=false)
+    private BigDecimal resultTotalId;
+
+    /**
+     * 空货箱照片(RESULT_EMPTY_CONTAINER_PHOTO,VARCHAR,100)
+     */
+    @ApiModelProperty(value="空货箱照片",required=false)
+    private String resultEmptyContainerPhoto;
+
+    /**
+     * 已签字的送货单照片(RESULT_SIGNED_NOTE_PHOTO,VARCHAR,100)
+     */
+    @ApiModelProperty(value="已签字的送货单照片",required=false)
+    private String resultSignedNotePhoto;
+
+    /**
+     * 客户签收单照片(RESULT_RECEIVE_NOTE_PHOTO,VARCHAR,100)
+     */
+    @ApiModelProperty(value="客户签收单照片",required=false)
+    private String resultReceiveNotePhoto;
+
+    /**
+     * 异地库ID(WAREHOUSE_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="异地库ID",required=false)
+    private BigDecimal warehouseId;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+    /**
+     * 收货状态(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="收货状态",required=false)
+    private BigDecimal status;
+
+    /**
+     * 抵达收货点的地址(RESULT_ARRIVAL_ADDRESS,VARCHAR,100)
+     */
+    @ApiModelProperty(value="抵达收货点的地址",required=false)
+    private String resultArrivalAddress;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.resultId;
+    }
+
+    @Override
+    public void setId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(BigDecimal resultId) {
+        this.resultId = resultId;
+    }
+
+    public BigDecimal getResultTotalId() {
+        return resultTotalId;
+    }
+
+    public void setResultTotalId(BigDecimal resultTotalId) {
+        this.resultTotalId = resultTotalId;
+    }
+
+    public String getResultEmptyContainerPhoto() {
+        return resultEmptyContainerPhoto;
+    }
+
+    public void setResultEmptyContainerPhoto(String resultEmptyContainerPhoto) {
+        this.resultEmptyContainerPhoto = resultEmptyContainerPhoto == null ? null : resultEmptyContainerPhoto.trim();
+    }
+
+    public String getResultSignedNotePhoto() {
+        return resultSignedNotePhoto;
+    }
+
+    public void setResultSignedNotePhoto(String resultSignedNotePhoto) {
+        this.resultSignedNotePhoto = resultSignedNotePhoto == null ? null : resultSignedNotePhoto.trim();
+    }
+
+    public String getResultReceiveNotePhoto() {
+        return resultReceiveNotePhoto;
+    }
+
+    public void setResultReceiveNotePhoto(String resultReceiveNotePhoto) {
+        this.resultReceiveNotePhoto = resultReceiveNotePhoto == null ? null : resultReceiveNotePhoto.trim();
+    }
+
+    public BigDecimal getStatus() {
+        return status;
+    }
+
+    public void setStatus(BigDecimal status) {
+        this.status = status;
+    }
+
+    public BigDecimal getWarehouseId() {
+        return warehouseId;
+    }
+
+    public void setWarehouseId(BigDecimal warehouseId) {
+        this.warehouseId = warehouseId;
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public String getResultArrivalAddress() {
+        return resultArrivalAddress;
+    }
+
+    public void setResultArrivalAddress(String resultArrivalAddress) {
+        this.resultArrivalAddress = resultArrivalAddress == null ? null : resultArrivalAddress.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", resultId=").append(resultId);
+        sb.append(", resultTotalId=").append(resultTotalId);
+        sb.append(", resultEmptyContainerPhoto=").append(resultEmptyContainerPhoto);
+        sb.append(", resultSignedNotePhoto=").append(resultSignedNotePhoto);
+        sb.append(", resultReceiveNotePhoto=").append(resultReceiveNotePhoto);
+        sb.append(", warehouseId=").append(warehouseId);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", resultArrivalAddress=").append(resultArrivalAddress);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 184 - 0
src/main/java/com/steerinfo/route/model/TmstruckReceiptResultChild.java

@@ -0,0 +1,184 @@
+package com.steerinfo.route.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="收货实绩子表")
+public class TmstruckReceiptResultChild implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(CHILD_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal childId;
+
+    /**
+     * 收货实绩ID(RECEIPT_RESULT_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="收货实绩ID",required=false)
+    private BigDecimal receiptResultId;
+
+    /**
+     * 其他照片1(OTHER_PHOTO1,VARCHAR,100)
+     */
+    @ApiModelProperty(value="其他照片1",required=false)
+    private String otherPhoto1;
+
+    /**
+     * 其他照片2(OTHER_PHOTO2,VARCHAR,100)
+     */
+    @ApiModelProperty(value="其他照片2",required=false)
+    private String otherPhoto2;
+
+    /**
+     * 其他照片3(OTHER_PHOTO3,VARCHAR,100)
+     */
+    @ApiModelProperty(value="其他照片3",required=false)
+    private String otherPhoto3;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.childId;
+    }
+
+    @Override
+    public void setId(BigDecimal childId) {
+        this.childId = childId;
+    }
+
+    public BigDecimal getChildId() {
+        return childId;
+    }
+
+    public void setChildId(BigDecimal childId) {
+        this.childId = childId;
+    }
+
+    public BigDecimal getReceiptResultId() {
+        return receiptResultId;
+    }
+
+    public void setReceiptResultId(BigDecimal receiptResultId) {
+        this.receiptResultId = receiptResultId;
+    }
+
+    public String getOtherPhoto1() {
+        return otherPhoto1;
+    }
+
+    public void setOtherPhoto1(String otherPhoto1) {
+        this.otherPhoto1 = otherPhoto1 == null ? null : otherPhoto1.trim();
+    }
+
+    public String getOtherPhoto2() {
+        return otherPhoto2;
+    }
+
+    public void setOtherPhoto2(String otherPhoto2) {
+        this.otherPhoto2 = otherPhoto2 == null ? null : otherPhoto2.trim();
+    }
+
+    public String getOtherPhoto3() {
+        return otherPhoto3;
+    }
+
+    public void setOtherPhoto3(String otherPhoto3) {
+        this.otherPhoto3 = otherPhoto3 == null ? null : otherPhoto3.trim();
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", childId=").append(childId);
+        sb.append(", receiptResultId=").append(receiptResultId);
+        sb.append(", otherPhoto1=").append(otherPhoto1);
+        sb.append(", otherPhoto2=").append(otherPhoto2);
+        sb.append(", otherPhoto3=").append(otherPhoto3);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 34 - 0
src/main/java/com/steerinfo/route/service/ITmstruckArrivalResultService.java

@@ -0,0 +1,34 @@
+package com.steerinfo.route.service;
+
+
+
+import com.steerinfo.route.model.TmstruckArrivalResult;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * TmstruckArrivalResult服务接口:
+ * @author generator
+ * @version 1.0-SNAPSHORT 2021-09-06 07:38
+ * 类描述
+ * 修订历史:
+ * 日期:2021-09-06
+ * 作者:generator
+ * 参考:
+ * 描述:TmstruckArrivalResult服务接口
+ * @see null
+ * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ */
+public interface ITmstruckArrivalResultService {
+    //新增抵达实绩
+    int addtmstruckArrivalResult(String orderNumber, TmstruckArrivalResult tmstruckArrivalResult);
+    //获取抵达实绩信息
+    List<Map<String, Object>> getArrivalResultInfo(Map<String, Object> map);
+
+    String getAddressDistrict(String orderNumber);
+
+    List<String> getAdjustment();
+
+    int updateTown(String city, String item);
+}

+ 22 - 0
src/main/java/com/steerinfo/route/service/ITmstruckReceiptResultChildService.java

@@ -0,0 +1,22 @@
+package com.steerinfo.route.service;
+
+
+import com.steerinfo.route.model.TmstruckReceiptResultChild;
+
+/**
+ * TmstruckReceiptResultChild服务接口:
+ * @author generator
+ * @version 1.0-SNAPSHORT 2021-09-06 07:38
+ * 类描述
+ * 修订历史:
+ * 日期:2021-09-06
+ * 作者:generator
+ * 参考:
+ * 描述:TmstruckReceiptResultChild服务接口
+ * @see null
+ * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ */
+public interface ITmstruckReceiptResultChildService {
+    //添加收货实绩子表
+    int addTmstruckReceiptResultChild(TmstruckReceiptResultChild tmstruckReceiptResultChild);
+}

+ 18 - 0
src/main/java/com/steerinfo/route/service/RouteService.java

@@ -0,0 +1,18 @@
+package com.steerinfo.route.service;
+
+import com.steerinfo.route.vo.Map.RouteVo;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+public interface RouteService {
+    CompletableFuture<String> saveRoute(Map mapValue) throws Exception;
+
+    CompletableFuture<RouteVo> fullPathVisualization(HashMap mapValue) throws Exception;
+
+    public CompletableFuture<String> saveRequstionDate(Map mapValue) throws Exception;
+
+    public CompletableFuture<RouteVo> fullPathVisualizationByCarNumber(HashMap mapValue) throws Exception;
+
+}

+ 849 - 0
src/main/java/com/steerinfo/route/service/impl/RouteServiceImpl.java

@@ -0,0 +1,849 @@
+package com.steerinfo.route.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+
+import com.steerinfo.dil.service.ITmstruckLeaveFactoryResultService;
+import com.steerinfo.dil.service.OffSiteTransportationService;
+import com.steerinfo.dil.service.impl.OffSiteTransportationServiceImpl;
+import com.steerinfo.dil.util.PageListAdd;
+import com.steerinfo.framework.controller.RESTfulResult;
+import com.steerinfo.framework.service.pagehelper.PageHelper;
+import com.steerinfo.route.service.RouteService;
+import com.steerinfo.route.threeRequest.ZhongJiaoXingLu;
+import com.steerinfo.route.util.DataConversionTool;
+import com.steerinfo.route.util.HTTPRequestUtils;
+import com.steerinfo.route.util.LngLonUtil;
+import com.steerinfo.route.vo.FullPathVisualizationTo.ViewVisualization;
+import com.steerinfo.route.vo.Map.Point;
+import com.steerinfo.route.vo.Map.RouteVo;
+import com.steerinfo.route.vo.Map.RunRoutePoint;
+import com.steerinfo.route.vo.Map.StartAndEndRoute;
+import com.steerinfo.route.vo.resultJson.SearchPoint;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+@Service(value = "xmsService")
+public class RouteServiceImpl implements RouteService {
+    @Autowired
+    private RedisTemplate redisTemplate;
+    @Autowired
+    private ZhongJiaoXingLu zhongJiaoXingLu;
+
+    @Autowired
+    private ITmstruckLeaveFactoryResultService tmstruckLeaveFactoryResultService;
+    @Autowired
+    private OffSiteTransportationServiceImpl offSiteTransportationService;
+    @Value("${str.tengxun.key}")
+    private String key;
+    @Value("${redis.prefix.order}")
+    private String prefixOrder;
+    @Value("${redis.prefix.line}")
+    private String prefixLine;
+    @Value("${redis.prefix.suffix}")
+    private String suffix;
+
+    //必须参数 运输订单号:orderNumber、车牌号:capacityNumber、出厂时间:resultOutGateTime、预警开关:turnOf、发货地址:shipperName、收货地址:receiveAddress
+
+    public CompletableFuture<String> createTotalResult(Map mapValue) throws Exception {
+
+        if (mapValue.containsKey("capacityNumber")&&mapValue.containsKey("receiveAddress")&&mapValue.containsKey("shipperName")&&mapValue.containsKey("orderNumber")){
+
+
+        }
+        //carryno车牌号 ,gatepostName 门岗名称 resultOutGateTime出门时间
+        SimpleDateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        if (true) {
+                //创建物质信息需要字段(本地字段名称:视图字段名称 中文解释) unitOfMeasureDesc单位、materialName:cMaterieldes:名称、 materialSpecification:cSpec:规格、materialModel:cMaterielcode:型号,
+                HashMap materieldesMap=new HashMap();
+
+
+                // System.out.println("https://apis.map.qq.com/ws/geocoder/v1/"+"address="+ URLEncoder.encode(vcMeasurerec.getcSupplydes(),"utf-8")+"&key=WDTBZ-A5VKJ-UDLFI-KYJY6-WTP2S-A6B4Y");
+                //创建托运人需要字段 (本地字段名称:视图字段名称 中文解释)cSupplyid:shipperCode 托运方代码 、cSupplydes:shipperName 托运方名称、addressLongitude 托运方地址经度、addressLatitude托运方地址纬度
+                String searchPointJson = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+URLEncoder.encode(mapValue.get("shipperName")==null?"安钢集团信阳钢铁有限责任公司":mapValue.get("shipperName").toString(),"utf-8")+"&key=WDTBZ-A5VKJ-UDLFI-KYJY6-WTP2S-A6B4Y");
+                SearchPoint searchPoint= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson, SearchPoint.class);
+                if (searchPoint.getStatus()==0){
+
+                    materieldesMap.put("addressLongitude",searchPoint.getResult().getLocation().getLng());
+                    materieldesMap.put("addressLatitude",searchPoint.getResult().getLocation().getLat());
+                }else {
+                    materieldesMap.put("addressLongitude",new BigDecimal(114.036293));
+                    materieldesMap.put("addressLatitude",new BigDecimal(32.483276));
+                }
+
+
+
+                //创建收货地址需要的字段    addressProvince 省份、addressDistrict 市区、addressTown 县镇 、addressDeliveryAddress 收货地址、 addressLongitude 收货地址经度、addressLatitude 收货地址纬度
+                String searchPointJson2 = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+URLEncoder.encode(mapValue.get("receiveAddress").toString()==null?"长沙市":mapValue.get("receiveAddress").toString(),"utf-8")+"&key=WDTBZ-A5VKJ-UDLFI-KYJY6-WTP2S-A6B4Y");
+                SearchPoint searchPoint2= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson2, SearchPoint.class);
+                if (searchPoint2.getStatus()==0&&searchPoint2.getResult()!=null){
+
+                    if (searchPoint2.getResult().getAddress_components()!=null){
+                        materieldesMap.put("addressProvince",searchPoint2.getResult().getAddress_components().getProvince()==null?"湖南省":searchPoint2.getResult().getAddress_components().getProvince());
+                        materieldesMap.put("addressDistrict",searchPoint2.getResult().getAddress_components().getDistrict()==null?"开福区":searchPoint2.getResult().getAddress_components().getDistrict());
+                        materieldesMap.put("addressTown",searchPoint2.getResult().getAddress_components().getCity()==null?"长沙市":searchPoint2.getResult().getAddress_components().getCity());
+                    }else {
+                        materieldesMap.put("addressProvince","湖南省");
+                        materieldesMap.put("addressDistrict","开福区");
+                        materieldesMap.put("addressTown","长沙市");
+                    }
+                    materieldesMap.put("addressDeliveryAddress",mapValue.get("receiveAddress").toString()==null?"长沙市":mapValue.get("receiveAddress").toString());
+                    if (searchPoint2.getResult().getLocation()!=null){
+                        materieldesMap.put("addressLongitude",searchPoint2.getResult().getLocation().getLng()==null?new BigDecimal(112.98626):searchPoint2.getResult().getLocation().getLng());
+                        materieldesMap.put("addressLatitude",searchPoint2.getResult().getLocation().getLat()==null?new BigDecimal(28.25591):searchPoint2.getResult().getLocation().getLat());
+                    }else {
+                        materieldesMap.put("addressLongitude",new BigDecimal(112.98626));
+                        materieldesMap.put("addressLatitude",new BigDecimal(28.25591));
+                    }
+                    if (searchPoint2.getResult().getAd_info()!=null){
+                        materieldesMap.put("destCode",searchPoint2.getResult().getAd_info().getAdcode()==null?"无信息":searchPoint2.getResult().getAd_info().getAdcode());
+                    }else {
+                        materieldesMap.put("destCode","无信息");
+                    }
+
+                }else {
+                    //114.03629,32.48327","endLonlat":",28.25591"}
+                    materieldesMap.put("addressProvince","湖南省");
+                    materieldesMap.put("addressDistrict","开福区");
+                    materieldesMap.put("addressTown","长沙市");
+                    materieldesMap.put("destCode","430105");
+                    materieldesMap.put("addressDeliveryAddress","长沙市");
+                    materieldesMap.put("addressLongitude",new BigDecimal(112.98626));
+                    materieldesMap.put("addressLatitude",new BigDecimal(28.25591));
+                }
+
+
+                    //入网验证
+                    String netValidationResult = zhongJiaoXingLu.netValidation(mapValue.get("capacityNumber").toString());
+                    Map netValidationMap = (Map) JSONObject.parse(netValidationResult);
+                    if (Integer.parseInt(netValidationMap.get("status").toString())==1001&&netValidationMap.get("result").toString().equals("yes")){
+
+                        //运单生成之后保存
+                        HashMap<String,String> redisMap=new HashMap<>();
+                        String startLon=searchPoint.getResult().getLocation().getLng().toString().length()>9?searchPoint.getResult().getLocation().getLng().toString().substring(0,9):searchPoint.getResult().getLocation().getLng().toString();
+                        String startLat=searchPoint.getResult().getLocation().getLat().toString().length()>9?searchPoint.getResult().getLocation().getLat().toString().substring(0,8):searchPoint.getResult().getLocation().getLat().toString();
+                        redisMap.put("startLonlat", startLon+","+startLat);
+                        String endLon= materieldesMap.get("addressLongitude").toString().length()>9?materieldesMap.get("addressLongitude").toString().substring(0,9):materieldesMap.get("addressLongitude").toString();
+                        String endLat= materieldesMap.get("addressLatitude").toString().length()>9?materieldesMap.get("addressLatitude").toString().substring(0,8):materieldesMap.get("addressLatitude").toString();
+                        redisMap.put("endLonlat",endLon+","+endLat);
+                        redisMap.put("vclN", mapValue.get("capacityNumber").toString());
+                        redisMap.put("vco","2");
+                        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
+                        String qryBtm=mapValue.get("resultOutGateTime").toString();
+
+                        //获得两天、23小时、45分钟之后的时间
+                        Date parse = simpleDateFormat.parse(qryBtm);
+                        //时间添加
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(parse);
+                        //calendar.add(Calendar.DAY_OF_MONTH, 2);
+                        calendar.add(Calendar.HOUR_OF_DAY, 23);
+                        calendar.add(Calendar.SECOND, 45);
+                        //计算时间差
+                        long agetime = parse.getTime();
+                        long lateTime = calendar.getTimeInMillis();
+                        //两天、23小时、45分钟之后的时间差毫秒
+                        long reductionTime1=lateTime-agetime;
+                        long currentTime = new Date().getTime();
+                        //减去已经过的时间(毫秒)
+                        long reductionTime2=currentTime-agetime;
+
+                        //redis 存储的时间(秒)
+                        long saveTime=(reductionTime1-reductionTime2)/1000;
+                        redisMap.put("qryBtm", simpleDateFormat.format(simpleDateFormat.parse(qryBtm)));
+                        String qryEtm= simpleDateFormat.format(calendar.getTime());
+                        redisMap.put("qryEtm",qryEtm );
+                        String orderUrl=prefixOrder+":"+mapValue.get("orderNumber").toString();
+                        String redisJson=JSON.toJSONString(redisMap);
+                        if (saveTime>0){
+                            redisTemplate.opsForValue().set(orderUrl, redisJson, saveTime, TimeUnit.SECONDS);
+                        }else {
+                            redisTemplate.opsForValue().set(orderUrl, redisJson, 36000, TimeUnit.SECONDS);
+                        }
+
+                        redisTemplate.opsForValue().set(orderUrl+suffix, redisJson);
+                        //预警开关判断0开启1关闭
+                        Map<String,Object> resTfulResultValues = offSiteTransportationService.selectWarnSwitch();
+
+
+                        if(!resTfulResultValues.get("switch").toString().equals("0")){
+
+                            redisMap.put("startCode",searchPoint.getResult().getAd_info().getAdcode());
+                            redisMap.put("destCode",materieldesMap.get("destCode").toString());
+                            redisMap.put("qryBtm",parse.toString());
+                            redisMap.put("qryEtm",calendar.getTime().toString());
+                            redisMap.put("type",resTfulResultValues.get("type").toString());
+                            String subAbnormalLineWarnV2Json = zhongJiaoXingLu.subAbnormalLineWarnV2(redisMap);
+
+                            JSONObject jsonObject = JSONObject.parseObject(subAbnormalLineWarnV2Json);
+
+
+                            if (jsonObject!=null&&jsonObject.get("status").toString().equals(1001+"")){
+                                HashMap<String,Object> tripMap=new HashMap();
+                                tripMap.put("orderNumber",mapValue.get("orderNumber").toString());
+                                tripMap.put("rid",jsonObject.get("result").toString());
+                                int i=offSiteTransportationService.insertOrderTripId(tripMap);
+                            }
+                        }
+                    }
+                    return  CompletableFuture.completedFuture("successful");
+                }
+
+
+        return CompletableFuture.completedFuture("fail");
+    }
+
+    /**
+     *
+     * @param matrial 物质名称
+     * @param selectStr 0,没有选1"带钢",2"微粉",3("螺纹钢","盘螺","盘圆"),4"钢坯",5"其他"
+     */
+    public  boolean checkTurnOff(String matrial,String selectStr) {
+        //0,没有选1"带钢",2"微粉",3("螺纹钢","盘螺","盘圆"),4"钢坯",5"其他"
+
+        int index=0;
+        String[]  matrialList=new String[]{"带钢","微粉","螺纹钢","盘螺","盘圆","钢坯","其他"};
+        //判断是那种物质
+        lable:for (int i=0;i<matrialList.length;i++){
+            if (matrial.contains(matrialList[i])) {
+                if(4>=i&&i>=2){
+                    //螺纹钢
+                    index=3;
+                }else if (i==5){
+                    //钢坯
+                    index=4;
+                }else if (i==6) {
+                    //其他
+                    index=5;
+                }else{
+                    index=i+1;
+                }
+                break lable;
+            }
+
+        }
+        //判断是否选择这种物质
+        if (index!=0&&selectStr.contains(String.valueOf(index))){
+            return true;
+        }
+        return false;
+
+    }
+
+    /**
+     * 必须参数 运输订单号:orderNumber、车牌号:capacityNumber、出厂时间:resultOutGateTime、预警开关:turnOf、发货地址:shipperName、收货地址:receiveAddress
+     * @param mapValue
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public CompletableFuture<String> saveRoute(Map mapValue) throws Exception {
+
+            //获得起点的经纬度和code
+           SimpleDateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+           Date gateTime = dateFormat.parse(mapValue.get("resultOutGateTime").toString());
+           String searchPointJson = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+ URLEncoder.encode(mapValue.get("shipperName").toString()==null?"四川省达州钢铁集团有限责任公司":mapValue.get("shipperName").toString(),"utf-8")+"&key="+key);
+           SearchPoint searchPoint= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson, SearchPoint.class);
+
+           //创建收货地址    addressProvince 省份、addressDistrict 市区、addressTown 县镇 、addressDeliveryAddress 收货地址、 addressLongitude 收货地址经度、addressLatitude 收货地址纬度
+           String searchPointJson2 = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+ URLEncoder.encode(mapValue.get("receiveAddress").toString()==null?"长沙市":mapValue.get("receiveAddress").toString(),"utf-8")+"&key="+key);
+           SearchPoint searchPoint2= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson2, SearchPoint.class);
+
+           //入网验证
+           String netValidationResult = zhongJiaoXingLu.netValidation(mapValue.get("capacityNumber").toString());
+           Map netValidationMap = (Map) JSONObject.parse(netValidationResult);
+           if (Integer.parseInt(netValidationMap.get("status").toString())==1001&&netValidationMap.get("result").toString().equals("yes")){
+
+               //运单生成之后保存
+               HashMap<String, String> redisMap=new HashMap<>();
+               redisMap.put("startLonlat", searchPoint.getResult().getLocation().getLng().toString().substring(0,9)+","+searchPoint.getResult().getLocation().getLat().toString().substring(0,8));
+               redisMap.put("endLonlat", searchPoint2.getResult().getLocation().getLng().toString().substring(0,9)+","+searchPoint2.getResult().getLocation().getLat().toString().substring(0,8));
+               redisMap.put("vclN", mapValue.get("capacityNumber").toString());
+               redisMap.put("vco","2");
+               SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
+               String qryBtm=mapValue.get("resultOutGateTime").toString();
+
+               //获得两天、23小时、45分钟之后的时间
+               Date parse = simpleDateFormat.parse(qryBtm);
+               //时间添加
+               Calendar calendar = Calendar.getInstance();
+               calendar.setTime(parse);
+               calendar.add(Calendar.DAY_OF_MONTH, 2);
+               calendar.add(Calendar.HOUR_OF_DAY, 23);
+               calendar.add(Calendar.SECOND, 45);
+               //计算时间差
+               long agetime = parse.getTime();
+               long lateTime = calendar.getTimeInMillis();
+               //两天、23小时、45分钟之后的时间差毫秒
+               long reductionTime1=lateTime-agetime;
+               long currentTime = new Date().getTime();
+               //减去已经过的时间(毫秒)
+               long reductionTime2=currentTime-agetime;
+
+               //redis 存储的时间(秒)
+               long saveTime=(reductionTime1-reductionTime2)/1000;
+               redisMap.put("qryBtm", simpleDateFormat.format(simpleDateFormat.parse(qryBtm)));
+               String qryEtm= simpleDateFormat.format(calendar.getTime());
+               redisMap.put("qryEtm",qryEtm );
+               String orderUrl=prefixOrder+":"+mapValue.get("orderNumber").toString();
+               String redisJson= JSON.toJSONString(redisMap);
+               //保存请求中交的参数
+               redisTemplate.opsForValue().set(orderUrl, redisJson, saveTime, TimeUnit.SECONDS);
+               redisTemplate.opsForValue().set(orderUrl+suffix, redisJson);
+               //预警开关判断0开启1关闭
+               if(mapValue.get("turnOf").toString().equals("0")){
+
+                   redisMap.put("startCode",searchPoint.getResult().getAd_info().getAdcode());
+                   redisMap.put("destCode",searchPoint2.getResult().getAd_info().getAdcode());
+                   redisMap.put("qryBtm",parse.toString());
+                   redisMap.put("qryEtm",calendar.getTime().toString());
+                   String subAbnormalLineWarnV2Json = zhongJiaoXingLu.subAbnormalLineWarnV2(redisMap);
+
+                   JSONObject jsonObject = JSONObject.parseObject(subAbnormalLineWarnV2Json);
+
+
+                   if (jsonObject!=null&&jsonObject.get("status").toString().equals(1001+"")) {
+                       HashMap<String, Object> tripMap = new HashMap();
+                       tripMap.put("orderNumber", mapValue.get("orderNumber").toString());
+                       tripMap.put("rid", jsonObject.get("result").toString());
+                       //omsFeign.insertOrderTripId(tripMap);
+                   }
+           }
+           return  CompletableFuture.completedFuture("successful");
+       }
+        return CompletableFuture.completedFuture("fail");
+    }
+
+    /**
+     * 必须参数 运输订单号:orderNumber、车牌号:capacityNumber、出厂时间:resultOutGateTime、预警开关:turnOf、发货地址:shipperName、收货地址:receiveAddress
+     * @param mapValue
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public CompletableFuture<String> saveRequstionDate(Map mapValue) throws Exception {
+
+        //获得起点的经纬度和code
+        SimpleDateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date gateTime = dateFormat.parse(mapValue.get("resultOutGateTime").toString());
+        String searchPointJson = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+ URLEncoder.encode(mapValue.get("shipperName").toString()==null?"四川省达州钢铁集团有限责任公司":mapValue.get("shipperName").toString(),"utf-8")+"&key="+key);
+        SearchPoint searchPoint= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson, SearchPoint.class);
+
+        //创建收货地址    addressProvince 省份、addressDistrict 市区、addressTown 县镇 、addressDeliveryAddress 收货地址、 addressLongitude 收货地址经度、addressLatitude 收货地址纬度
+        String searchPointJson2 = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+ URLEncoder.encode(mapValue.get("receiveAddress").toString()==null?"长沙市":mapValue.get("receiveAddress").toString(),"utf-8")+"&key="+key);
+        SearchPoint searchPoint2= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson2, SearchPoint.class);
+
+        //入网验证
+        String netValidationResult = zhongJiaoXingLu.netValidation(mapValue.get("capacityNumber").toString());
+        Map netValidationMap = (Map) JSONObject.parse(netValidationResult);
+        if (Integer.parseInt(netValidationMap.get("status").toString())==1001&&netValidationMap.get("result").toString().equals("yes")){
+
+            //运单生成之后保存
+            HashMap<String, String> redisMap=new HashMap<>();
+            redisMap.put("startLonlat", searchPoint.getResult().getLocation().getLng().toString().substring(0,9)+","+searchPoint.getResult().getLocation().getLat().toString().substring(0,8));
+            redisMap.put("endLonlat", searchPoint2.getResult().getLocation().getLng().toString().substring(0,9)+","+searchPoint2.getResult().getLocation().getLat().toString().substring(0,8));
+            redisMap.put("vclN", mapValue.get("capacityNumber").toString());
+            redisMap.put("vco","2");
+            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
+            String qryBtm=mapValue.get("resultOutGateTime").toString();
+
+            //获得两天、23小时、45分钟之后的时间
+            Date parse = simpleDateFormat.parse(qryBtm);
+            //时间添加
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(parse);
+            calendar.add(Calendar.DAY_OF_MONTH, 2);
+            calendar.add(Calendar.HOUR_OF_DAY, 23);
+            calendar.add(Calendar.SECOND, 45);
+            //计算时间差
+            long agetime = parse.getTime();
+            long lateTime = calendar.getTimeInMillis();
+            //两天、23小时、45分钟之后的时间差毫秒
+            long reductionTime1=lateTime-agetime;
+            long currentTime = new Date().getTime();
+            //减去已经过的时间(毫秒)
+            long reductionTime2=currentTime-agetime;
+
+            //redis 存储的时间(秒)
+            long saveTime=(reductionTime1-reductionTime2)/1000;
+            redisMap.put("qryBtm", simpleDateFormat.format(simpleDateFormat.parse(qryBtm)));
+            String qryEtm= simpleDateFormat.format(calendar.getTime());
+            redisMap.put("qryEtm",qryEtm );
+            String orderUrl=prefixOrder+":"+mapValue.get("orderNumber").toString();
+            String redisJson= JSON.toJSONString(redisMap);
+            //保存请求中交的参数
+            redisTemplate.opsForValue().set(orderUrl, redisJson, saveTime, TimeUnit.SECONDS);
+            redisTemplate.opsForValue().set(orderUrl+suffix, redisJson);
+            //预警开关判断0开启1关闭
+            if(mapValue.get("turnOf").toString().equals("0")){
+
+                redisMap.put("startCode",searchPoint.getResult().getAd_info().getAdcode());
+                redisMap.put("destCode",searchPoint2.getResult().getAd_info().getAdcode());
+                redisMap.put("qryBtm",parse.toString());
+                redisMap.put("qryEtm",calendar.getTime().toString());
+                String subAbnormalLineWarnV2Json = zhongJiaoXingLu.subAbnormalLineWarnV2(redisMap);
+
+                JSONObject jsonObject = JSONObject.parseObject(subAbnormalLineWarnV2Json);
+
+
+                if (jsonObject!=null&&jsonObject.get("status").toString().equals(1001+"")) {
+                    HashMap<String, Object> tripMap = new HashMap();
+                    tripMap.put("orderNumber", mapValue.get("orderNumber").toString());
+                    tripMap.put("rid", jsonObject.get("result").toString());
+                    //omsFeign.insertOrderTripId(tripMap);
+                }
+            }
+            return  CompletableFuture.completedFuture("successful");
+        }
+        return CompletableFuture.completedFuture("fail");
+    }
+
+    @Override
+    public CompletableFuture<RouteVo> fullPathVisualization(HashMap mapValue) throws Exception {
+
+        String redisJson =null;
+        if (redisTemplate.hasKey(prefixOrder + ":" + mapValue.get("orderNumber"))){
+            redisJson=(String) redisTemplate.opsForValue().get(prefixOrder + ":" + mapValue.get("orderNumber"));
+        }
+
+        HashMap routeMap = JSON.parseObject(redisJson, HashMap.class);
+        String json="";
+        if (routeMap!=null)
+        {
+            json =zhongJiaoXingLu.visualRoute(routeMap);
+        }else{
+            String j=prefixLine + ":" + mapValue.get("orderNumber");
+            if (redisTemplate.hasKey(prefixLine + ":" + mapValue.get("orderNumber"))){
+                json  = (String) redisTemplate.opsForValue().get(prefixLine + ":" + mapValue.get("orderNumber"));
+            }
+
+            if (json==null||json.equals("")){
+                HashMap<String,Object> hashMap=new HashMap();
+                hashMap.put("orderNumber",mapValue.get("orderNumber"));
+//                RESTfulResult startAndEndCapacityNumber = tmsFeign.getStartAndEndCapacityNumber(hashMap);
+//                HashMap<String,Object> resultMap= (HashMap<String, Object>) startAndEndCapacityNumber.getData();
+                Map<String, Object> resultMap=tmstruckLeaveFactoryResultService.getTruckFactoryResult(mapValue.get("orderNumber").toString());
+                //入网验证
+                String netValidationResult = zhongJiaoXingLu.netValidation(resultMap.get("capacityNumber").toString());
+                Map netValidationMap = (Map) JSONObject.parse(netValidationResult);
+                if (Integer.parseInt(netValidationMap.get("status").toString())==1001&&netValidationMap.get("result").toString().equals("yes")){
+                    String searchPointJson = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+URLEncoder.encode("四川省达州钢铁集团有限责任公司","utf-8")+"&key=WDTBZ-A5VKJ-UDLFI-KYJY6-WTP2S-A6B4Y");
+                    SearchPoint searchPoint= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson, SearchPoint.class);
+
+                    String searchPointJson2 = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+URLEncoder.encode(resultMap.get("receiveAddress")==null||"".equals(String.valueOf(resultMap.get("receiveAddress")))?"长沙市":resultMap.get("receiveAddress").toString(),"utf-8")+"&key=WDTBZ-A5VKJ-UDLFI-KYJY6-WTP2S-A6B4Y");
+                    SearchPoint searchPoint2= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson2, SearchPoint.class);
+                    //运单生成之后保存
+                    HashMap<String,String> redisMap=new HashMap<>();
+                    String startLon=searchPoint.getResult().getLocation().getLng().toString().length()>9?searchPoint.getResult().getLocation().getLng().toString().substring(0,9):searchPoint.getResult().getLocation().getLng().toString();
+                    String startLat=searchPoint.getResult().getLocation().getLat().toString().length()>9?searchPoint.getResult().getLocation().getLat().toString().substring(0,8):searchPoint.getResult().getLocation().getLat().toString();
+                    redisMap.put("startLonlat", startLon+","+startLat);
+                    String endLon= searchPoint2.getResult().getLocation().getLng().toString().length()>9?searchPoint2.getResult().getLocation().getLng().toString().substring(0,9):searchPoint2.getResult().getLocation().getLng().toString();
+                    String endLat= searchPoint2.getResult().getLocation().getLat().toString().length()>9?searchPoint2.getResult().getLocation().getLat().toString().substring(0,8):searchPoint2.getResult().getLocation().getLat().toString();
+                    redisMap.put("endLonlat",endLon+","+endLat);
+                    redisMap.put("vclN", resultMap.get("capacityNumber").toString());
+                    redisMap.put("vco","2");
+                    SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
+                    String qryBtm=resultMap.get("resultOutGateTime").toString();
+
+                    //获得两天、23小时、45分钟之后的时间
+                    Date parse = simpleDateFormat.parse(qryBtm);
+                    //时间添加
+                    Calendar calendar = Calendar.getInstance();
+                    calendar.setTime(parse);
+                    // calendar.add(Calendar.DAY_OF_MONTH, 2);
+                    calendar.add(Calendar.HOUR_OF_DAY, 23);
+                    calendar.add(Calendar.SECOND, 45);
+                    //计算时间差
+                    long agetime = parse.getTime();
+                    long lateTime = calendar.getTimeInMillis();
+                    //两天、23小时、45分钟之后的时间差毫秒
+                    long reductionTime1=lateTime-agetime;
+                    long currentTime = new Date().getTime();
+                    //减去已经过的时间(毫秒)
+                    long reductionTime2=currentTime-agetime;
+
+                    //redis 存储的时间(秒)
+                    long saveTime=(reductionTime1-reductionTime2)/1000;
+                    redisMap.put("qryBtm", simpleDateFormat.format(simpleDateFormat.parse(qryBtm)));
+                    String qryEtm= simpleDateFormat.format(calendar.getTime());
+                    redisMap.put("qryEtm", qryEtm);
+                    if (saveTime>1800){
+                        String orderUrl=prefixOrder+":"+mapValue.get("orderNumber").toString();
+
+                        String redisStr=JSON.toJSONString(redisMap);
+                        json = zhongJiaoXingLu.visualRoute(redisMap);
+                        redisTemplate.opsForValue().set(orderUrl, redisStr, saveTime<0?1000:saveTime, TimeUnit.SECONDS);
+                        redisTemplate.opsForValue().set(orderUrl+suffix, redisStr);
+
+                    }else {
+
+                        //设置60天后过期
+                        Calendar calendar2=Calendar.getInstance();
+                        long agoTime= calendar2.getTime().getTime();
+                        calendar2.add(Calendar.MONTH,2);
+                        long late= calendar2.getTime().getTime();
+                        long save=(lateTime-agoTime)/1000;
+
+                        json = zhongJiaoXingLu.visualRoute(redisMap);
+                        if (json!=null){
+                            redisTemplate.opsForValue().set(prefixLine+":"+mapValue.get("orderNumber").toString(), json, save>0?save:3184000, TimeUnit.SECONDS);
+                        }
+
+                    }
+
+                }
+            }else {
+
+            }
+        }
+        JSONObject jsonObject = JSONObject.parseObject(json);
+        if (json!=null&&jsonObject!=null&&jsonObject.get("status").toString().equals(1001+"")){
+            //初始开始链路和结束线路、开始点、结束点、当前点的集合
+            List<StartAndEndRoute> startAndEndRouteList=new ArrayList<>();
+            //一条路线,开始链路和结束线路、开始点、结束点、当前点
+            StartAndEndRoute startAndEndRoute=new StartAndEndRoute();
+
+            ViewVisualization to= (ViewVisualization) DataConversionTool.jsonToBean(json,ViewVisualization.class);
+            //初始化vo对象
+            RouteVo vo=new RouteVo();
+            //当前所在的点
+            if ((!StringUtils.isEmpty(to.getResult().getLat()))&& (!StringUtils.isEmpty(to.getResult().getLon()))){
+                Double[] centerpoint = LngLonUtil.gps84_To_Gcj02((Double.valueOf(to.getResult().getLat()) / 600000), (Double.valueOf(to.getResult().getLon()) / 600000));
+                //当前所在的点
+                Point currentPoint=new Point();
+                currentPoint.setLat(centerpoint[0]+"");
+                currentPoint.setLon(centerpoint[1]+"");
+                startAndEndRoute.setCurrentPoint(currentPoint);
+            }
+            //当前所在地名称
+            startAndEndRoute.setCurrentPointName(to.getResult().getAdr());
+            //初始已行驶轨迹集合
+            if (to.getResult().getRunRoute()!=null){
+                List<RunRoutePoint> routes =new ArrayList();
+                List<Double[]> routesPath =new ArrayList();
+                for(RunRoutePoint item : to.getResult().getRunRoute()){
+                    RunRoutePoint runRoutePoint=item;
+                    //将已行驶轨迹转义数据格式
+                    Double[] points = LngLonUtil.gps84_To_Gcj02((Double.valueOf(item.getLat()) / 600000), (Double.valueOf(item.getLon()) / 600000));
+                    routesPath.add(new Double[]{points[1],points[0]});
+                    //经纬度
+                    runRoutePoint.setLat(points[0]+"");
+                    runRoutePoint.setLon(points[1]+"");
+                    //坐标点
+                    routes.add(runRoutePoint);
+                }
+                //初始化起始点,已经经过路段的第一个点
+                Point startPoint=new Point();
+                startPoint.setLat(routes.get(0).getLat());
+                startPoint.setLon(routes.get(0).getLon());
+                startAndEndRoute.setStartPoint(startPoint);
+                //点集合
+                startAndEndRoute.setRunPath(routesPath);
+                //已经完成路线点集合
+                startAndEndRoute.setRunRoute(routes);
+            }
+            //预估轨迹
+            if (to.getResult().getEstimateRoute()!=null){
+                List<Point> estimateRoute= new ArrayList<>();
+                List<Double[]> estimatePath =new ArrayList();
+                for(Point item :to.getResult().getEstimateRoute()){
+                    Point er=new Point();
+                    Double[] points = LngLonUtil.gps84_To_Gcj02((Double.valueOf(item.getLat()) / 600000), (Double.valueOf(item.getLon()) / 600000));
+                    estimatePath.add(new Double[]{points[1],points[0]});
+                    er.setLat(points[0]+"");
+                    er.setLon(points[1]+"");
+                    estimateRoute.add(er);
+                }
+                //路径
+                startAndEndRoute.setEstimatePath(estimatePath);
+                //结束点
+                startAndEndRoute.setEndPoint(estimateRoute.get(estimateRoute.size()-1));
+                //预估轨迹赋值
+                startAndEndRoute.setEstimateRoute(estimateRoute);
+            }
+            //当前所行驶历程数
+            String mil=to.getResult().getRunDistance()+"km";
+            startAndEndRoute.setMiled(mil);
+            startAndEndRouteList.add(startAndEndRoute);
+            vo.setStartAndEndRoutes(startAndEndRouteList);
+            //
+            //设置返回值对象
+            return CompletableFuture.completedFuture(vo) ;
+        }else {
+            return  CompletableFuture.completedFuture(new RouteVo());
+        }
+
+    }
+
+    /**
+     * 必须参数 orderNumber 运输订单号
+     * 获得运输全路径
+     * @param mapValue
+     * @return
+     * @throws Exception
+     */
+
+    public CompletableFuture<RouteVo> fullPaht(HashMap mapValue) throws Exception {
+
+        //获得saveRoute()保存在redis请求中交的查询
+        String redisJson = (String) redisTemplate.opsForValue().get(prefixOrder + ":" + mapValue.get("orderNumber"));
+
+        HashMap routeMap = JSON.parseObject(redisJson, HashMap.class);
+        String json="";
+        //判断请求参数是否为空
+        if (routeMap!=null)
+        {
+            //获得路径
+            json =zhongJiaoXingLu.visualRoute(routeMap);
+        //可能中交请求参数已经过期、已经成了路线、可以直接获取路径
+        }else{
+
+            json  = (String) redisTemplate.opsForValue().get(prefixLine + ":" + mapValue.get("orderNumber"));
+            //当redis获取不到参数的备选方案从数据库获取
+            if (json==null){
+                HashMap<String, Object> hashMap=new HashMap();
+                hashMap.put("orderNumber",mapValue.get("orderNumber"));
+                //从数据库获取参数
+                RESTfulResult startAndEndCapacityNumber =null; //tmsFeign.getStartAndEndCapacityNumber(hashMap);
+                HashMap<String, Object> resultMap= (HashMap<String, Object>) startAndEndCapacityNumber.getData();
+                //入网验证
+                String netValidationResult = zhongJiaoXingLu.netValidation(resultMap.get("capacityNumber").toString());
+                Map netValidationMap = (Map) JSONObject.parse(netValidationResult);
+                if (Integer.parseInt(netValidationMap.get("status").toString())==1001&&netValidationMap.get("result").toString().equals("yes")){
+                    String searchPointJson = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+ URLEncoder.encode(resultMap.get("shipperName").toString(),"utf-8")+"&key="+key);
+                    SearchPoint searchPoint= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson, SearchPoint.class);
+                    String searchPointJson2 = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+ URLEncoder.encode(resultMap.get("addressDeliveryAddress").toString(),"utf-8")+"&key="+key);
+                    SearchPoint searchPoint2= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson2, SearchPoint.class);
+                    //运单生成之后保存
+                    HashMap<String, String> redisMap=new HashMap<>();
+                    redisMap.put("startLonlat", searchPoint.getResult().getLocation().getLng().toString().substring(0,9)+","+searchPoint.getResult().getLocation().getLat().toString().substring(0,8));
+                    redisMap.put("endLonlat", searchPoint2.getResult().getLocation().getLng().toString().substring(0,9)+","+searchPoint2.getResult().getLocation().getLat().toString().substring(0,8));
+                    redisMap.put("vclN", resultMap.get("capacityNumber").toString());
+                    redisMap.put("vco","2");
+                    SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
+                    String qryBtm=resultMap.get("resultOutGateTime").toString();
+
+                    //获得两天、23小时、45分钟之后的时间
+                    Date parse = simpleDateFormat.parse(qryBtm);
+                    //时间添加
+                    Calendar calendar = Calendar.getInstance();
+                    calendar.setTime(parse);
+                    calendar.add(Calendar.DAY_OF_MONTH, 2);
+                    calendar.add(Calendar.HOUR_OF_DAY, 23);
+                    calendar.add(Calendar.SECOND, 45);
+                    //计算时间差
+                    long agetime = parse.getTime();
+                    long lateTime = calendar.getTimeInMillis();
+                    //两天、23小时、45分钟之后的时间差毫秒
+                    long reductionTime1=lateTime-agetime;
+                    long currentTime = new Date().getTime();
+                    //减去已经过的时间(毫秒)
+                    long reductionTime2=currentTime-agetime;
+
+                    //redis 存储的时间(秒)
+                    long saveTime=(reductionTime1-reductionTime2)/1000;
+                    redisMap.put("qryBtm", simpleDateFormat.format(simpleDateFormat.parse(qryBtm)));
+                    String qryEtm= simpleDateFormat.format(calendar.getTime());
+                    redisMap.put("qryEtm",qryEtm );
+                    if (saveTime>1800){
+                        String orderUrl=prefixOrder+":"+mapValue.get("orderNumber").toString();
+
+                        String redisStr= JSON.toJSONString(redisMap);
+                        redisTemplate.opsForValue().set(orderUrl, redisStr, saveTime, TimeUnit.SECONDS);
+
+                    }else {
+
+                        //设置60天后过期
+                        Calendar calendar2= Calendar.getInstance();
+                        long agoTime= calendar2.getTime().getTime();
+                        calendar2.add(Calendar.MONTH,2);
+                        long late= calendar2.getTime().getTime();
+                        long save=(lateTime-agoTime)/1000;
+
+                        json = zhongJiaoXingLu.visualRoute(redisMap);
+                        redisTemplate.opsForValue().set(prefixLine+":"+mapValue.get("orderNumber").toString(), json, save, TimeUnit.SECONDS);
+                    }
+
+                }
+            }
+        }
+        //获得路线之后封装成路线对象
+        JSONObject jsonObject = JSONObject.parseObject(json);
+        if (json!=null&&jsonObject.get("status").toString().equals(1001+"")){
+            //初始开始链路和结束线路、开始点、结束点、当前点的集合
+            List<StartAndEndRoute> startAndEndRouteList=new ArrayList<>();
+            //一条路线,开始链路和结束线路、开始点、结束点、当前点
+            StartAndEndRoute startAndEndRoute=new StartAndEndRoute();
+
+            ViewVisualization to= (ViewVisualization) DataConversionTool.jsonToBean(json,ViewVisualization.class);
+            //初始化vo对象
+            RouteVo vo=new RouteVo();
+            //当前所在的点
+            if ((!StringUtils.isEmpty(to.getResult().getLat()))&& (!StringUtils.isEmpty(to.getResult().getLon()))){
+                Double[] centerpoint = LngLonUtil.gps84_To_Gcj02((Double.valueOf(to.getResult().getLat()) / 600000), (Double.valueOf(to.getResult().getLon()) / 600000));
+                //当前所在的点
+                Point currentPoint=new Point();
+                currentPoint.setLat(centerpoint[0]+"");
+                currentPoint.setLon(centerpoint[1]+"");
+                startAndEndRoute.setCurrentPoint(currentPoint);
+            }
+            //当前所在地名称
+            startAndEndRoute.setCurrentPointName(to.getResult().getAdr());
+            //初始已行驶轨迹集合
+            if (to.getResult().getRunRoute()!=null){
+                List<RunRoutePoint> routes =new ArrayList();
+                List<Double[]> routesPath =new ArrayList();
+                 for(RunRoutePoint item : to.getResult().getRunRoute()){
+                    RunRoutePoint runRoutePoint=item;
+                    //将已行驶轨迹转义数据格式
+                    Double[] points = LngLonUtil.gps84_To_Gcj02((Double.valueOf(item.getLat()) / 600000), (Double.valueOf(item.getLon()) / 600000));
+                    routesPath.add(new Double[]{points[1],points[0]});
+                    //经纬度
+                    runRoutePoint.setLat(points[0]+"");
+                    runRoutePoint.setLon(points[1]+"");
+                    //坐标点
+                     routes.add(runRoutePoint);
+                }
+                //初始化起始点,已经经过路段的第一个点
+                Point startPoint=new Point();
+                startPoint.setLat(routes.get(0).getLat());
+                startPoint.setLon(routes.get(0).getLon());
+                startAndEndRoute.setStartPoint(startPoint);
+                //点集合
+                startAndEndRoute.setRunPath(routesPath);
+                //已经完成路线点集合
+                startAndEndRoute.setRunRoute(routes);
+            }
+            //预估轨迹
+            if (to.getResult().getEstimateRoute()!=null){
+                List<Point> estimateRoute= new ArrayList<>();
+                List<Double[]> estimatePath =new ArrayList();
+                for(Point item :to.getResult().getEstimateRoute()){
+                    Point er=new Point();
+                    Double[] points = LngLonUtil.gps84_To_Gcj02((Double.valueOf(item.getLat()) / 600000), (Double.valueOf(item.getLon()) / 600000));
+                    estimatePath.add(new Double[]{points[1],points[0]});
+                    er.setLat(points[0]+"");
+                    er.setLon(points[1]+"");
+                    estimateRoute.add(er);
+                }
+                //路径
+                startAndEndRoute.setEstimatePath(estimatePath);
+                //结束点
+                startAndEndRoute.setEndPoint(estimateRoute.get(estimateRoute.size()-1));
+                //预估轨迹赋值
+                startAndEndRoute.setEstimateRoute(estimateRoute);
+            }
+            //当前所行驶历程数
+            String mil=to.getResult().getRunDistance()+"km";
+            startAndEndRoute.setMiled(mil);
+            startAndEndRouteList.add(startAndEndRoute);
+            vo.setStartAndEndRoutes(startAndEndRouteList);
+            //
+            //设置返回值对象
+            return CompletableFuture.completedFuture(vo) ;
+        }else {
+            return  CompletableFuture.completedFuture(new RouteVo());
+        }
+
+    }
+    @Override
+    public CompletableFuture<RouteVo> fullPathVisualizationByCarNumber(HashMap mapValue) throws Exception {
+
+        String searchPointJson = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+URLEncoder.encode("四川省达州钢铁集团有限责任公司","utf-8")+"&key=WDTBZ-A5VKJ-UDLFI-KYJY6-WTP2S-A6B4Y");
+        SearchPoint searchPoint= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson, SearchPoint.class);
+        String searchPointJson2 = HTTPRequestUtils.sendGet("https://apis.map.qq.com/ws/geocoder/v1/", "address="+URLEncoder.encode("四川省达川区","utf-8")+"&key=WDTBZ-A5VKJ-UDLFI-KYJY6-WTP2S-A6B4Y");
+        SearchPoint searchPoint2= (SearchPoint) DataConversionTool.jsonToBean(searchPointJson2, SearchPoint.class);
+        //运单生成之后保存
+        HashMap<String,String> redisMap=new HashMap<>();
+        String startLon=searchPoint.getResult().getLocation().getLng().toString().length()>9?searchPoint.getResult().getLocation().getLng().toString().substring(0,9):searchPoint.getResult().getLocation().getLng().toString();
+        String startLat=searchPoint.getResult().getLocation().getLat().toString().length()>9?searchPoint.getResult().getLocation().getLat().toString().substring(0,8):searchPoint.getResult().getLocation().getLat().toString();
+        redisMap.put("startLonlat", startLon+","+startLat);
+        String endLon= searchPoint2.getResult().getLocation().getLng().toString().length()>9?searchPoint2.getResult().getLocation().getLng().toString().substring(0,9):searchPoint2.getResult().getLocation().getLng().toString();
+        String endLat= searchPoint2.getResult().getLocation().getLat().toString().length()>9?searchPoint2.getResult().getLocation().getLat().toString().substring(0,8):searchPoint2.getResult().getLocation().getLat().toString();
+        redisMap.put("endLonlat",endLon+","+endLat);
+        redisMap.put("vclN", mapValue.get("capacityNumber").toString());
+        redisMap.put("vco","2");
+        redisMap.put("qryBtm", mapValue.get("startTime").toString());
+        redisMap.put("qryEtm",mapValue.get("endTime").toString());
+        String json = zhongJiaoXingLu.visualRoute2(redisMap);
+
+        JSONObject jsonObject = JSONObject.parseObject(json);
+        if (json!=null&&jsonObject.get("status").toString().equals(1001+"")){
+            //初始开始链路和结束线路、开始点、结束点、当前点的集合
+            List<StartAndEndRoute> startAndEndRouteList=new ArrayList<>();
+            //一条路线,开始链路和结束线路、开始点、结束点、当前点
+            StartAndEndRoute startAndEndRoute=new StartAndEndRoute();
+
+            ViewVisualization to= (ViewVisualization) DataConversionTool.jsonToBean(json,ViewVisualization.class);
+            //初始化vo对象
+            RouteVo vo=new RouteVo();
+            //当前所在的点
+            //当前所在的点
+            if ((!StringUtils.isEmpty(to.getResult().getLat()))&& (!StringUtils.isEmpty(to.getResult().getLon()))){
+                Double[] centerpoint = LngLonUtil.gps84_To_Gcj02((Double.valueOf(to.getResult().getLat()) / 600000), (Double.valueOf(to.getResult().getLon()) / 600000));
+                //当前所在的点
+                Point currentPoint=new Point();
+                currentPoint.setLat(centerpoint[0]+"");
+                currentPoint.setLon(centerpoint[1]+"");
+                startAndEndRoute.setCurrentPoint(currentPoint);
+            }
+            //当前所在地名称
+            startAndEndRoute.setCurrentPointName(to.getResult().getAdr());
+            //初始已行驶轨迹集合
+            if (to.getResult().getRunRoute()!=null){
+                List<RunRoutePoint> routes =new ArrayList();
+                List<Double[]> routesPath =new ArrayList();
+                for(RunRoutePoint item : to.getResult().getRunRoute()){
+                    RunRoutePoint runRoutePoint=item;
+                    //将已行驶轨迹转义数据格式
+                    Double[] points = LngLonUtil.gps84_To_Gcj02((Double.valueOf(item.getLat()) / 600000), (Double.valueOf(item.getLon()) / 600000));
+                    routesPath.add(new Double[]{points[1],points[0]});
+                    //经纬度
+                    runRoutePoint.setLat(points[0]+"");
+                    runRoutePoint.setLon(points[1]+"");
+                    //坐标点
+                    routes.add(runRoutePoint);
+                }
+                //初始化起始点,已经经过路段的第一个点
+                Point startPoint=new Point();
+                startPoint.setLat(routes.get(0).getLat());
+                startPoint.setLon(routes.get(0).getLon());
+                startAndEndRoute.setStartPoint(startPoint);
+                //点集合
+                startAndEndRoute.setRunPath(routesPath);
+                //已经完成路线点集合
+                startAndEndRoute.setRunRoute(routes);
+            }
+            //当前所行驶历程数
+            String mil=to.getResult().getRunDistance()+"km";
+            startAndEndRoute.setMiled(mil);
+            startAndEndRouteList.add(startAndEndRoute);
+            vo.setStartAndEndRoutes(startAndEndRouteList);
+            //
+            //设置返回值对象
+            return CompletableFuture.completedFuture(vo) ;
+        }else {
+            return  CompletableFuture.completedFuture(new RouteVo());
+        }
+
+    }
+
+
+}

+ 106 - 0
src/main/java/com/steerinfo/route/service/impl/TmstruckArrivalResultServiceImpl.java

@@ -0,0 +1,106 @@
+package com.steerinfo.route.service.impl;
+
+
+import com.steerinfo.route.mapper.TmstruckArrivalResultMapper;
+import com.steerinfo.route.model.TmstruckArrivalResult;
+import com.steerinfo.route.service.ITmstruckArrivalResultService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * TmstruckArrivalResult服务实现:
+ * @author generator
+ * @version 1.0-SNAPSHORT 2021-09-06 07:38
+ * 类描述
+ * 修订历史:
+ * 日期:2021-09-06
+ * 作者:generator
+ * 参考:
+ * 描述:TmstruckArrivalResult服务实现
+ * @see null
+ * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ */
+@Service(value = "tmstruckArrivalResultService")
+public class TmstruckArrivalResultServiceImpl implements ITmstruckArrivalResultService {
+
+    @Autowired
+    private TmstruckArrivalResultMapper tmstruckArrivalResultMapper;
+
+
+//    @Override
+//    public synchronized int addtmstruckArrivalResult(String orderNumber,TmstruckArrivalResult tmstruckArrivalResult) {
+//        long id;
+//        if(tmstruckArrivalResultMapper.selectMaxId()==null){
+//            id = 1;
+//        }else {
+//            id = tmstruckArrivalResultMapper.selectMaxId().longValue()+1;
+//        }
+//        //生成主键id
+//        tmstruckArrivalResult.setResultId(new BigDecimal(id));
+//        //获取并插入总实绩Id
+//        BigDecimal truckTotalId = tmstruckAbnormalResultMapper.getTotalIdByOrderNumber(orderNumber);
+//        tmstruckArrivalResult.setResultTotalId(truckTotalId);
+//        //常规字段
+//        tmstruckArrivalResult.setInsertUsername("admin");
+//        tmstruckArrivalResult.setInsertTime(new Date());
+//        tmstruckArrivalResult.setUpdateUsername("admin");
+//        tmstruckArrivalResult.setUpdateTime(new Date());
+//        tmstruckArrivalResult.setInsertUpdateRemark("无");
+//        return tmstruckArrivalResultMapper.insert(tmstruckArrivalResult);
+//    }
+
+    @Override
+    public synchronized int addtmstruckArrivalResult(String orderNumber, TmstruckArrivalResult tmstruckArrivalResult) {
+        //通过运输订单号查询是否已存在抵达实绩
+        BigDecimal alreadyExistsArrivalResult = tmstruckArrivalResultMapper.alreadyExistsArrivalResult(orderNumber);
+        if(alreadyExistsArrivalResult==null){
+            long id;
+            if(tmstruckArrivalResultMapper.selectMaxId()==null){
+                id = 1;
+            }else {
+                id = tmstruckArrivalResultMapper.selectMaxId().longValue()+1;
+            }
+            //生成主键id
+            tmstruckArrivalResult.setResultId(new BigDecimal(id));
+            //获取并插入总实绩Id
+            BigDecimal truckTotalId = tmstruckArrivalResultMapper.getTotalIdByOrderNumber(orderNumber);
+            tmstruckArrivalResult.setResultTotalId(truckTotalId);
+            //常规字段
+            tmstruckArrivalResult.setInsertUsername("admin");
+            tmstruckArrivalResult.setInsertTime(new Date());
+            tmstruckArrivalResult.setUpdateUsername("admin");
+            tmstruckArrivalResult.setUpdateTime(new Date());
+            tmstruckArrivalResult.setInsertUpdateRemark("无");
+            return tmstruckArrivalResultMapper.insert(tmstruckArrivalResult);
+        }else{
+            return 3;
+        }
+
+    }
+
+    @Override
+    public List<Map<String, Object>> getArrivalResultInfo(Map<String, Object> map) {
+        return tmstruckArrivalResultMapper.getArrivalResultInfo(map);
+    }
+
+    @Override
+    public String getAddressDistrict(String orderNumber) {
+        return tmstruckArrivalResultMapper.getAddressDistrict(orderNumber);
+    }
+
+    @Override
+    public List<String> getAdjustment() {
+        return tmstruckArrivalResultMapper.getAdjustment();
+
+    }
+
+    @Override
+    public int updateTown(String city, String item) {
+        return tmstruckArrivalResultMapper.updateTown(city,item);
+    }
+}

+ 50 - 0
src/main/java/com/steerinfo/route/service/impl/TmstruckReceiptResultChildServiceImpl.java

@@ -0,0 +1,50 @@
+package com.steerinfo.route.service.impl;
+
+
+import com.steerinfo.route.mapper.TmstruckReceiptResultChildMapper;
+import com.steerinfo.route.model.TmstruckReceiptResultChild;
+import com.steerinfo.route.service.ITmstruckReceiptResultChildService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * TmstruckReceiptResultChild服务实现:
+ * @author generator
+ * @version 1.0-SNAPSHORT 2021-09-06 07:38
+ * 类描述
+ * 修订历史:
+ * 日期:2021-09-06
+ * 作者:generator
+ * 参考:
+ * 描述:TmstruckReceiptResultChild服务实现
+ * @see null
+ * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
+ */
+@Service(value = "tmstruckReceiptResultChildService")
+public class TmstruckReceiptResultChildServiceImpl implements ITmstruckReceiptResultChildService {
+
+    @Autowired
+    private TmstruckReceiptResultChildMapper tmstruckReceiptResultChildMapper;
+
+    @Override
+    public synchronized int addTmstruckReceiptResultChild(TmstruckReceiptResultChild tmstruckReceiptResultChild) {
+        long id;
+        if(tmstruckReceiptResultChildMapper.selectMaxId()==null){
+            id = 1;
+        }else {
+            id = tmstruckReceiptResultChildMapper.selectMaxId().longValue()+1;
+        }
+        //生成主键id
+        tmstruckReceiptResultChild.setChildId(new BigDecimal(id));
+        //常规字段
+        tmstruckReceiptResultChild.setInsertUsername("admin");
+        tmstruckReceiptResultChild.setInsertTime(new Date());
+        tmstruckReceiptResultChild.setUpdateUsername("admin");
+        tmstruckReceiptResultChild.setUpdateTime(new Date());
+        tmstruckReceiptResultChild.setInsertUpdateRemark("无");
+        return tmstruckReceiptResultChildMapper.insertSelective(tmstruckReceiptResultChild);
+    }
+}

+ 258 - 0
src/main/java/com/steerinfo/route/threeRequest/ZhongJiaoXingLu.java

@@ -0,0 +1,258 @@
+package com.steerinfo.route.threeRequest;
+
+import com.alibaba.fastjson.JSONObject;
+import com.openapi.sdk.service.DataExchangeService;
+
+import com.steerinfo.route.mapper.DilVersionMapper;
+import com.steerinfo.route.util.DataConversionTool;
+import com.steerinfo.route.util.LngLonUtil;
+import com.steerinfo.route.vo.FullPathVisualizationTo.ViewVisualization;
+import com.steerinfo.route.vo.Map.RouteVo;
+import com.steerinfo.route.vo.Map.StartAndEndRoute;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.stream.Collectors;
+
+@Component
+public class ZhongJiaoXingLu {
+
+
+    @Value("${str.ZhongJiaoXingLu.parkMins}")
+    private String parkMins;
+    @Value("${str.ZhongJiaoXingLu.abnMins}")
+    private String abnMins;
+    @Value("${str.ZhongJiaoXingLu.outMins}")
+    private String outMins;
+    @Value("${str.ZhongJiaoXingLu.type}")
+    private String type;
+//    private  String token="238684c3-1817-4e5e-8695-a8c85f8fd231";
+    @Value("${str.ZhongJiaoXingLu.cid}")
+    private  String cid;
+    @Value("${str.ZhongJiaoXingLu.srt}")
+    private  String srt;
+    @Value("${str.ZhongJiaoXingLu.user}")
+    private  String user;
+    @Value("${str.ZhongJiaoXingLu.pwd}")
+    private  String pwd;
+    @Autowired
+    private DilVersionMapper dilVersionMapper;
+
+
+    public  String visualRoute(HashMap routeMap) {
+        try {
+            //登陆之后返回的token:d21661ca-e0fe-4934-866a-7d78a0756bd4
+            Map<String, String> map = new HashMap<String, String>(3);
+            String token=dilVersionMapper.getToken();
+            map.put("token",token);
+            map.put("cid", cid);
+            map.put("srt", srt);
+            map.put("startLonlat", routeMap.get("startLonlat").toString());
+            map.put("endLonlat", routeMap.get("endLonlat").toString());
+            map.put("vclN", routeMap.get("vclN").toString());
+            map.put("vco",routeMap.get("vco").toString());
+            map.put("qryBtm", routeMap.get("qryBtm").toString());
+            //判断结束时间是否大于现在时间
+            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            SimpleDateFormat simpleDateFormat2=new SimpleDateFormat("yyyy-MM-dd 23:59:59");
+            Date nowDate=simpleDateFormat.parse(simpleDateFormat2.format(new Date()));
+            if (nowDate.getTime()<simpleDateFormat.parse(routeMap.get("qryEtm").toString()).getTime()){
+                map.put("qryEtm", simpleDateFormat.format(nowDate));
+            }else {
+                Date qryEtm = simpleDateFormat.parse(routeMap.get("qryEtm").toString());
+                map.put("qryEtm", simpleDateFormat2.format(qryEtm));
+            }
+            //routeMap.get("qryEtm").toString()
+            map.put("timeNearby", "30");
+            String url = "https://openapi.sinoiov.cn/save/apis/visualRoute";
+            DataExchangeService des = new DataExchangeService(5000, 8000);
+
+            // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送
+            String res = des.postHttps(url, map);
+            System.out.println("visualRoute"+res);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            if (jsonObject.get("status").toString().equals(1016+"")){
+                login();
+                return visualRoute( routeMap);
+            }
+            return res;
+        } catch (Exception e) {
+            System.out.println("e:" + e.getMessage());
+        }
+        return null;
+    }
+
+    public  String visualRoute2(HashMap routeMap) {
+        try {
+            //登陆之后返回的token:d21661ca-e0fe-4934-866a-7d78a0756bd4
+            Map<String, String> map = new HashMap<String, String>(3);
+            String token=dilVersionMapper.getToken();
+            map.put("token", token);
+            map.put("cid", cid);
+            map.put("srt", srt);
+            map.put("startLonlat", routeMap.get("startLonlat").toString());
+            map.put("endLonlat", routeMap.get("endLonlat").toString());
+            map.put("vclN", routeMap.get("vclN").toString());
+            map.put("vco",routeMap.get("vco").toString());
+            map.put("qryBtm", routeMap.get("qryBtm").toString());
+            map.put("qryEtm", routeMap.get("qryEtm").toString());
+
+            //routeMap.get("qryEtm").toString()
+            map.put("timeNearby", "30");
+            String url = "https://openapi.sinoiov.cn/save/apis/visualRoute";
+            DataExchangeService des = new DataExchangeService(5000, 8000);
+
+            // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送
+            String res = des.postHttps(url, map);
+
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            if (jsonObject.get("status").toString().equals(1016+"")){
+                login();
+                return visualRoute( routeMap);
+            }
+            System.out.println(res);
+            return res;
+        } catch (Exception e) {
+            System.out.println("e:" + e.getMessage());
+        }
+        return null;
+    }
+    //String startLonlat,String endLonlat,String vclN,String vco,String qryBtm,String qryEtm
+    public  String subAbnormalLineWarnV2(HashMap routeMap ) {
+        try {
+            //登陆之后返回的token:d21661ca-e0fe-4934-866a-7d78a0756bd4
+            Map<String, String> map = new HashMap<String, String>(3);
+            String token=dilVersionMapper.getToken();
+            map.put("token", token);
+            map.put("cid", cid);
+            map.put("srt", srt);
+            map.put("vclN", routeMap.get("vclN").toString());
+            map.put("vco","2");
+            map.put("startCode", routeMap.get("startCode").toString());
+            map.put("destCode", routeMap.get("destCode").toString());
+            map.put("startCoor", routeMap.get("startLonlat").toString());
+            map.put("destCoor", routeMap.get("endLonlat").toString());
+            //把字符串转换成CST日期类型
+            map.put("stime", cstToGMT(new Date().toString()).toString());
+            map.put("etime", cstToGMT(routeMap.get("qryEtm").toString()).toString());
+            map.put("parkMins", parkMins);
+            map.put("outMins", outMins);
+            map.put("abnMins", abnMins);
+            map.put("type", routeMap.get("type").toString());
+            String url = "https://openapi.sinoiov.cn/save/apis/subAbnormalLineWarnV2";
+            DataExchangeService des = new DataExchangeService(5000, 8000);
+
+            // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送
+            String res = des.postHttps(url, map);
+            System.out.println("subAbnormalLineWarnV2"+res);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            if (jsonObject.get("status").toString().equals(1016+"")){
+                login();
+                return subAbnormalLineWarnV2(routeMap);
+            }
+
+            return res;
+        } catch (Exception e) {
+            System.out.println("e:" + e.getMessage());
+        }
+        return null;
+    }
+
+    public String cstToGMT(String data) throws InterruptedException, ParseException {
+
+        SimpleDateFormat sdf1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
+        SimpleDateFormat sdf = new SimpleDateFormat("EEE d MMM yyyy HH:mm:ss 'GMT'", Locale.US);
+        sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); // 设置时区为GMT  +8为北京时间东八区
+        String str = String.valueOf(sdf1.parse(data).getTime()+60000);
+        return str;
+    }
+    public  String netValidation(String vclN) {
+        try {
+            //登陆之后返回的token:d21661ca-e0fe-4934-866a-7d78a0756bd4
+            Map<String, String> map = new HashMap<String, String>(4);
+            String token=dilVersionMapper.getToken();
+            map.put("token", token);
+            map.put("cid", cid);
+            map.put("srt", srt);
+            map.put("vclN", vclN+"_2");
+            String url = "https://openapi.sinoiov.cn/save/apis/checkTruckExistV2";
+            DataExchangeService des = new DataExchangeService(5000, 8000);
+
+            // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送
+            String res = des.postHttps(url, map);
+            System.out.println("netValidation"+res);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            if (jsonObject.get("status").toString().equals(1016+"")){
+                login();
+                return netValidation(vclN);
+            }
+            return res;
+        } catch (Exception e) {
+            System.out.println("e:" + e.getMessage());
+        }
+        return null;
+    }
+    public  void login() {
+        try {
+            Map<String, String> map = new HashMap<String, String>(4);
+            map.put("user", user);
+            map.put("pwd", pwd);
+            map.put("cid", cid);
+            map.put("srt", srt);
+            String url = "https://openapi.sinoiov.cn/save/apis/login/";
+            DataExchangeService des = new DataExchangeService(5000, 8000);
+            // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送
+            String res = des.postHttps(url, map);
+            System.out.println("login"+res);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            String token=jsonObject.get("result").toString();
+            dilVersionMapper.updateToken(token);
+            //System.out.println("返回:"+ res);
+        } catch (Exception e) {
+            System.out.println("e:" + e.getMessage());
+        }
+    }
+
+
+    public  String getCid() {
+        return cid;
+    }
+
+    public  void setCid(String cid) {
+        this.cid = cid;
+    }
+
+    public  String getSrt() {
+        return srt;
+    }
+
+    public  void setSrt(String srt) {
+        this.srt = srt;
+    }
+
+    public  String getUser() {
+        return user;
+    }
+
+    public  void setUser(String user) {
+        this.user = user;
+    }
+
+    public  String getPwd() {
+        return pwd;
+    }
+
+    public  void setPwd(String pwd) {
+        this.pwd = pwd;
+    }
+
+
+}

+ 228 - 0
src/main/java/com/steerinfo/route/util/DataConversionTool.java

@@ -0,0 +1,228 @@
+package com.steerinfo.route.util;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.logging.SimpleFormatter;
+
+//@Auther Tiroble
+//@meil 2439003195@qq.com
+public class DataConversionTool {
+
+
+    /**
+     *
+     * @param json
+     * @param type
+     * @return
+     * @throws Exception
+     */
+    public static Object jsonToBean(Object json, Object type) throws Exception {
+        try{
+            JSONObject jsonObject=null;
+            //首先需要判断是否是json字符串如果是解析为jsonObject如果是JsonObject就直接赋值给jsonObject
+            if (json instanceof String){
+                //将json转为JSONOject
+                jsonObject= JSONObject.parseObject(json.toString());
+            }
+            else {
+                jsonObject= (JSONObject) json;
+            }
+            //获得Class对象
+            //Class clazz=type.getClass().getDeclaringClass();
+            Class clazz= (Class) type;
+            //通过空参构造器创建实例
+            Constructor constructor = clazz.getDeclaredConstructor();
+            constructor.setAccessible(true);
+            Object classObject =  constructor.newInstance();
+            //获得对象的所有属性名
+            Field[] fields = clazz.getDeclaredFields();
+            //遍历属性集合
+            for (int i=0;i<fields.length;i++){
+                Field field=fields[i];
+                //开启权限
+                field.setAccessible(true);
+                //判断是否保护属性值
+                if(jsonObject.containsKey(field.getName())){
+                    Object objectValue =jsonObject.get(field.getName());
+                    //判断jsonObject的item是否是String或者Integer,是简单类型直接赋值
+                    if ((objectValue instanceof Long)||(objectValue instanceof String)||(objectValue instanceof Integer)||(objectValue instanceof Boolean)||(objectValue instanceof BigDecimal)){
+                        //进行数据判断
+                        if (field.getType()==BigDecimal.class){
+                            field.set(classObject,new BigDecimal(objectValue.toString()));
+                        } else if (field.getType()==Short.class){
+                            field.set(classObject,Short.parseShort(objectValue.toString()));
+                        }else if (field.getType()==Date.class){
+                            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                            Date time = formatter.parse(objectValue.toString());
+                            field.set(classObject,time);
+                        }
+                        else {
+                            if(field.getType()==Long.class||field.getType()==String.class||field.getType()==Integer.class||field.getType()==Boolean.class){
+                                field.set(classObject,objectValue);
+                            }
+
+                        }
+                    }
+                    //集合类型类型
+                    else if(objectValue instanceof JSONArray){
+                        Iterator<Object> iterator = ((JSONArray) objectValue).iterator();
+                        //这里使用的是arryList接收
+                        List list=new ArrayList<>();
+                        // 如果是List类型,得到其Generic的类型
+                        Type genericType = field.getGenericType();
+                        //如果是空的
+                        if(genericType == null) {
+                            genericType=Object.class;
+                        }
+                        // 如果是泛型参数的类型
+                        else if(genericType instanceof ParameterizedType){
+                            ParameterizedType pt = (ParameterizedType) genericType;
+                            //得到泛型里的class类型对象
+                            Class<?> genericClazz = (Class<?>)pt.getActualTypeArguments()[0];
+                            genericType=genericClazz;
+                        }
+                        while (iterator.hasNext()){
+                            Object nextObject = iterator.next();
+                            Object fieldValue =  jsonToBean(nextObject, genericType);
+                            list.add(fieldValue);
+                        }
+                        field.set(classObject,list);
+                    }
+//                    else if(field.getType()==Object.class){
+//                        field.set(classObject,objectValue);
+//                    }
+                    //如果不是再判断是否是JSONOArray,复杂数据类型
+                    else{
+                        //如果是JSONObject需要判断是否是引用类型,如果是引用类型就还需要将值转为对应类型
+                        Object fieldValue =  jsonToBean(objectValue, field.getType());
+                        field.set(classObject,fieldValue);
+                    }
+
+                }
+
+
+            }
+
+            return classObject;
+        }catch (Exception ex){
+            throw ex;
+        }
+    }
+
+    /**
+     * 将Object对象里面的属性和值转化成Map对象
+     *
+     * @param obj
+     * @return
+     * @throws IllegalAccessException
+     */
+    public static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException {
+        Map<String, Object> map = new HashMap<String,Object>();
+        Class<?> clazz = obj.getClass();
+        for (Field field : clazz.getDeclaredFields()) {
+            field.setAccessible(true);
+            String fieldName = field.getName();
+            Object value = field.get(obj);
+            map.put(fieldName, value);
+        }
+        return map;
+    }
+    /**
+     *
+     * @param map
+     * @param type
+     * @return
+     * @throws Exception
+     */
+    public static Object mapToBean(Map map, Object type) throws Exception {
+
+        try{
+            //获得Class对象
+            //Class clazz=type.getClass().getDeclaringClass();
+            Class clazz= (Class) type;
+            //通过空参构造器创建实例
+            Constructor constructor = clazz.getDeclaredConstructor();
+            constructor.setAccessible(true);
+            Object classObject =  constructor.newInstance();
+            //获得对象的所有属性名
+            Field[] fields = clazz.getDeclaredFields();
+            //遍历属性集合
+            for (int i=0;i<fields.length;i++){
+                Field field=fields[i];
+                //开启权限
+                field.setAccessible(true);
+                //判断是否保护属性值
+                if(map.containsKey(field.getName())){
+                    Object objectValue =map.get(field.getName());
+                    //判断jsonObject的item是否是String或者Integer,是简单类型直接赋值
+                    if ((objectValue instanceof String)||(objectValue instanceof Integer)||(objectValue instanceof Boolean)){
+                        //进行数据判断
+                        if (field.getType()==BigDecimal.class){
+                            field.set(classObject,new BigDecimal(objectValue.toString()));
+                        } else if (field.getType()==Short.class){
+                            if(objectValue.toString()=="0.00"){
+                                field.set(classObject,0);
+                            }
+                            field.set(classObject,Short.parseShort(objectValue.toString()));
+                        }else if (field.getType()==Date.class){
+                            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                            Date time = formatter.parse(objectValue.toString());
+                            field.set(classObject,time);
+                        }
+                        else {
+                            field.set(classObject,objectValue);
+                        }
+
+                    }
+                    //集合类型类型
+                    else if(objectValue instanceof List){
+                        Iterator<Object> iterator = ((List)objectValue).iterator();
+                        //这里使用的是arryList接收
+                        List list=new ArrayList<>();
+                        // 如果是List类型,得到其Generic的类型
+                        Type genericType = field.getGenericType();
+                        //如果是空的
+                        if(genericType == null) {
+                            genericType=Object.class;
+                        }
+                        // 如果是泛型参数的类型
+                        else if(genericType instanceof ParameterizedType){
+                            ParameterizedType pt = (ParameterizedType) genericType;
+                            //得到泛型里的class类型对象
+                            Class<?> genericClazz = (Class<?>)pt.getActualTypeArguments()[0];
+                            genericType=genericClazz;
+                        }
+                        while (iterator.hasNext()){
+                            Object nextObject = iterator.next();
+                            Object fieldValue =  jsonToBean(nextObject, genericType);
+                            list.add(fieldValue);
+                        }
+                        field.set(classObject,list);
+                    }
+                    //如果不是再判断是否是JSONOArray,复杂数据类型
+                    else{
+                        //如果是JSONObject需要判断是否是引用类型,如果是引用类型就还需要将值转为对应类型
+                        Object fieldValue =  jsonToBean(objectValue, field.getType());
+                        field.set(classObject,fieldValue);
+                    }
+
+                }
+
+
+            }
+
+            return classObject;
+        }catch (Exception ex){
+            throw ex;
+        }
+
+    }
+}

+ 136 - 0
src/main/java/com/steerinfo/route/util/HTTPRequestUtils.java

@@ -0,0 +1,136 @@
+package com.steerinfo.route.util;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.List;
+import java.util.Map;
+
+public class HTTPRequestUtils {
+    /**
+     * 向指定URL发送GET方法的请求
+     * @param url:发送请求的URL
+     * @param param:请求参数,请求参数应该是 name1=value1&name2=value2&name3=value3 的形式。
+     * @return String[result]:所代表远程资源的响应结果
+     */
+    public static String sendGet(String url, String param) {
+        String result = "";
+        BufferedReader in = null;
+        try {
+            String urlNameString = url + "?" + param;
+            URL realUrl = new URL(urlNameString);
+
+            // 打开和URL之间的连接
+            URLConnection connection = realUrl.openConnection();
+
+            // 设置通用的请求属性
+            connection.setRequestProperty("accept", "*/*");
+            connection.setRequestProperty("connection", "Keep-Alive");
+            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+
+            // 建立实际的连接
+            connection.connect();
+
+            // 获取所有响应头字段
+            Map<String, List<String>> map = connection.getHeaderFields();
+
+            // 遍历所有的响应头字段
+//            for (String key : map.keySet()) {
+//                System.out.println(key + "--->" + map.get(key));
+//            }
+
+            // 定义 BufferedReader输入流来读取URL的响应
+            in = new BufferedReader(new InputStreamReader(
+                    connection.getInputStream(),"utf-8"));
+            String line;
+            while ((line = in.readLine()) != null) {
+                result += line;
+            }
+            System.out.println("result");
+            System.out.println(result);
+        } catch (Exception e) {
+            System.out.println("发送GET请求出现异常!" + e);
+            e.printStackTrace();
+        }
+
+        // 使用finally块来关闭输入流
+        finally {
+            try {
+                if (in != null) {
+                    in.close();
+                }
+            } catch (Exception e2) {
+                e2.printStackTrace();
+            }
+        }
+        return result;
+    }
+
+    /**
+     * 向指定 URL 发送POST方法的请求
+     *
+     * @param url:发送请求的 URL
+     * @param param:请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @return String[result]:所代表远程资源的响应结果
+     */
+    public static String sendPost(String url, String param) {
+        PrintWriter out = null;
+        BufferedReader in = null;
+        String result = "";
+        try {
+            URL realUrl = new URL(url);
+
+            // 打开和URL之间的连接
+            URLConnection conn = realUrl.openConnection();
+
+            // 设置通用的请求属性
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+
+            // 发送POST请求必须设置如下两行
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+
+            // 获取URLConnection对象对应的输出流
+            out = new PrintWriter(conn.getOutputStream());
+
+            // 发送请求参数
+            out.print(param);
+
+            // flush输出流的缓冲
+            out.flush();
+
+            // 定义BufferedReader输入流来读取URL的响应
+            in = new BufferedReader(
+                    new InputStreamReader(conn.getInputStream()));
+            String line;
+            while ((line = in.readLine()) != null) {
+                result += line;
+            }
+        } catch (Exception e) {
+            System.out.println("发送 POST 请求出现异常!"+e);
+            e.printStackTrace();
+        }
+
+        //使用finally块来关闭输出流、输入流
+        finally{
+            try{
+                if(out!=null){
+                    out.close();
+                }
+                if(in!=null){
+                    in.close();
+                }
+            }
+            catch(IOException ex){
+                ex.printStackTrace();
+            }
+        }
+        return result;
+    }
+
+}

+ 157 - 0
src/main/java/com/steerinfo/route/util/LngLonUtil.java

@@ -0,0 +1,157 @@
+package com.steerinfo.route.util;
+
+/**
+ * GPS84、高德、百度、腾讯编码互转
+ */
+public class LngLonUtil {
+
+    public static double pi = 3.1415926535897932384626;
+    public static double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
+    public static double a = 6378245.0;
+    public static double ee = 0.00669342162296594323;
+
+    public static double transformLat(double x, double y) {
+        double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
+        ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
+        ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
+        ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
+        return ret;
+    }
+
+    public static double transformLon(double x, double y) {
+        double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
+        ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
+        ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
+        ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;
+        return ret;
+    }
+    public static double[] transform(double lat, double lon) {
+        if (outOfChina(lat, lon)) {
+            return new double[]{lat,lon};
+        }
+        double dLat = transformLat(lon - 105.0, lat - 35.0);
+        double dLon = transformLon(lon - 105.0, lat - 35.0);
+        double radLat = lat / 180.0 * pi;
+        double magic = Math.sin(radLat);
+        magic = 1 - ee * magic * magic;
+        double sqrtMagic = Math.sqrt(magic);
+        dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
+        dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
+        double mgLat = lat + dLat;
+        double mgLon = lon + dLon;
+        return new double[]{mgLat,mgLon};
+    }
+    /**
+     * 判断是否在中国
+     * @param lat
+     * @param lon
+     * @return
+     */
+    public static boolean outOfChina(double lat, double lon) {
+        if (lon < 72.004 || lon > 137.8347)
+            return true;
+        if (lat < 0.8293 || lat > 55.8271)
+            return true;
+        return false;
+    }
+    /**
+     * 84 ==》 高德/腾讯
+     * @param lat
+     * @param lon
+     * @return
+     */
+    public static Double[] gps84_To_Gcj02(double lat, double lon) {
+        if (outOfChina(lat, lon)) {
+            return new Double[]{lat,lon};
+        }
+        double dLat = transformLat(lon - 105.0, lat - 35.0);
+        double dLon = transformLon(lon - 105.0, lat - 35.0);
+        double radLat = lat / 180.0 * pi;
+        double magic = Math.sin(radLat);
+        magic = 1 - ee * magic * magic;
+        double sqrtMagic = Math.sqrt(magic);
+        dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
+        dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
+        double mgLat = lat + dLat;
+        double mgLon = lon + dLon;
+        return new Double[]{mgLat, mgLon};
+    }
+
+
+    /**
+     * 高德/腾讯 ==》 84
+     * @param lon * @param lat * @return
+     * */
+    public static double[] gcj02_To_Gps84(double lat, double lon) {
+        double[] gps = transform(lat, lon);
+        double lontitude = lon * 2 - gps[1];
+        double latitude = lat * 2 - gps[0];
+        return new double[]{latitude, lontitude};
+    }
+    /**
+     * 高德/腾讯 == 》 百度
+     * @param lat
+     * @param lon
+     */
+    public static double[] gcj02_To_Bd09(double lat, double lon) {
+        double x = lon, y = lat;
+        double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
+        double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
+        double tempLon = z * Math.cos(theta) + 0.0065;
+        double tempLat = z * Math.sin(theta) + 0.006;
+        double[] gps = {tempLat,tempLon};
+        return gps;
+    }
+
+    /**
+     * 百度 == 》 高德/腾讯
+     * @param lat
+     * @param lon
+     */
+    public static double[] bd09_To_Gcj02(double lat, double lon) {
+        double x = lon - 0.0065, y = lat - 0.006;
+        double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
+        double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
+        double tempLon = z * Math.cos(theta);
+        double tempLat = z * Math.sin(theta);
+        double[] gps = {tempLat,tempLon};
+        return gps;
+    }
+
+    /**
+     * 84 == 》 百度
+     * @param lat
+     * @param lon
+     * @return
+     */
+    public static double[] gps84_To_bd09(double lat,double lon){
+        Double[] gcj02 = gps84_To_Gcj02(lat,lon);
+        double[] bd09 = gcj02_To_Bd09(gcj02[0],gcj02[1]);
+        return bd09;
+    }
+
+    /**
+     * 百度 == 》 84
+     * @param lat
+     * @param lon
+     * @return
+     */
+    public static double[] bd09_To_gps84(double lat,double lon){
+        double[] gcj02 = bd09_To_Gcj02(lat, lon);
+        double[] gps84 = gcj02_To_Gps84(gcj02[0], gcj02[1]);
+        //保留小数点后六位
+        gps84[0] = retain6(gps84[0]);
+        gps84[1] = retain6(gps84[1]);
+        return gps84;
+    }
+
+    /*
+     * 保留小数点后六位
+     * @param num
+     * @return
+     */
+    private static double retain6(double num){
+        String result = String.format("%.6f", num);
+        return Double.valueOf(result);
+    }
+}

+ 154 - 0
src/main/java/com/steerinfo/route/vo/FullPathVisualizationTo/Result.java

@@ -0,0 +1,154 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.steerinfo.route.vo.FullPathVisualizationTo;
+import com.steerinfo.route.vo.Map.Point;
+import com.steerinfo.route.vo.Map.RunRoutePoint;
+
+import java.util.List;
+
+/**
+ * Auto-generated: 2021-10-16 11:56:24
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+public class Result {
+
+    private String adr;
+    private String city;
+    private String country;
+    private String drc;
+    private String estimateArriveTime;
+    private List<Point> estimateRoute;
+    private String lat;
+    private String lon;
+    private String mil;
+    private boolean offlineState;
+    private String offlineTime;
+    private String province;
+    private String remainDistance;
+    private String runDistance;
+    private List<RunRoutePoint> runRoute;
+    private String spd;
+    private String utc;
+    public void setAdr(String adr) {
+         this.adr = adr;
+     }
+     public String getAdr() {
+         return adr;
+     }
+
+    public void setCity(String city) {
+         this.city = city;
+     }
+     public String getCity() {
+         return city;
+     }
+
+    public void setCountry(String country) {
+         this.country = country;
+     }
+     public String getCountry() {
+         return country;
+     }
+
+    public void setDrc(String drc) {
+         this.drc = drc;
+     }
+     public String getDrc() {
+         return drc;
+     }
+
+    public void setEstimateArriveTime(String estimateArriveTime) {
+         this.estimateArriveTime = estimateArriveTime;
+     }
+     public String getEstimateArriveTime() {
+         return estimateArriveTime;
+     }
+
+    public void setEstimateRoute(List<Point> estimateRoute) {
+         this.estimateRoute = estimateRoute;
+     }
+     public List<Point> getEstimateRoute() {
+         return estimateRoute;
+     }
+
+    public void setLat(String lat) {
+         this.lat = lat;
+     }
+     public String getLat() {
+         return lat;
+     }
+
+    public void setLon(String lon) {
+         this.lon = lon;
+     }
+     public String getLon() {
+         return lon;
+     }
+
+    public void setMil(String mil) {
+         this.mil = mil;
+     }
+     public String getMil() {
+         return mil;
+     }
+
+    public void setOfflineState(boolean offlineState) {
+         this.offlineState = offlineState;
+     }
+     public boolean getOfflineState() {
+         return offlineState;
+     }
+
+    public void setOfflineTime(String offlineTime) {
+         this.offlineTime = offlineTime;
+     }
+     public String getOfflineTime() {
+         return offlineTime;
+     }
+
+    public void setProvince(String province) {
+         this.province = province;
+     }
+     public String getProvince() {
+         return province;
+     }
+
+    public void setRemainDistance(String remainDistance) {
+         this.remainDistance = remainDistance;
+     }
+     public String getRemainDistance() {
+         return remainDistance;
+     }
+
+    public void setRunDistance(String runDistance) {
+         this.runDistance = runDistance;
+     }
+     public String getRunDistance() {
+         return runDistance;
+     }
+
+    public void setRunRoute(List<RunRoutePoint> runRoute) {
+         this.runRoute = runRoute;
+     }
+     public List<RunRoutePoint> getRunRoute() {
+         return runRoute;
+     }
+
+    public void setSpd(String spd) {
+         this.spd = spd;
+     }
+     public String getSpd() {
+         return spd;
+     }
+
+    public void setUtc(String utc) {
+         this.utc = utc;
+     }
+     public String getUtc() {
+         return utc;
+     }
+
+}

+ 70 - 0
src/main/java/com/steerinfo/route/vo/FullPathVisualizationTo/RunRoute.java

@@ -0,0 +1,70 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.steerinfo.route.vo.FullPathVisualizationTo;
+
+/**
+ * Auto-generated: 2021-10-16 11:56:24
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+public class RunRoute {
+
+    private String agl;
+    private String gtm;
+    private String hgt;
+    private String lat;
+    private String lon;
+    private String mil;
+    private String spd;
+    public void setAgl(String agl) {
+         this.agl = agl;
+     }
+     public String getAgl() {
+         return agl;
+     }
+
+    public void setGtm(String gtm) {
+         this.gtm = gtm;
+     }
+     public String getGtm() {
+         return gtm;
+     }
+
+    public void setHgt(String hgt) {
+         this.hgt = hgt;
+     }
+     public String getHgt() {
+         return hgt;
+     }
+
+    public void setLat(String lat) {
+         this.lat = lat;
+     }
+     public String getLat() {
+         return lat;
+     }
+
+    public void setLon(String lon) {
+         this.lon = lon;
+     }
+     public String getLon() {
+         return lon;
+     }
+
+    public void setMil(String mil) {
+         this.mil = mil;
+     }
+     public String getMil() {
+         return mil;
+     }
+
+    public void setSpd(String spd) {
+         this.spd = spd;
+     }
+     public String getSpd() {
+         return spd;
+     }
+
+}

+ 30 - 0
src/main/java/com/steerinfo/route/vo/FullPathVisualizationTo/ViewVisualization.java

@@ -0,0 +1,30 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.steerinfo.route.vo.FullPathVisualizationTo;
+
+/**
+ * Auto-generated: 2021-10-16 11:56:24
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+public class ViewVisualization {
+
+    private Result result;
+    private int status;
+    public void setResult(Result result) {
+         this.result = result;
+     }
+     public Result getResult() {
+         return result;
+     }
+
+    public void setStatus(int status) {
+         this.status = status;
+     }
+     public int getStatus() {
+         return status;
+     }
+
+}

+ 40 - 0
src/main/java/com/steerinfo/route/vo/Map/Point.java

@@ -0,0 +1,40 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.steerinfo.route.vo.Map;
+
+/**
+ * Auto-generated: 2021-09-28 10:36:43
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+public class Point {
+
+    private String lat;
+    private String lon;
+
+    public String getLat() {
+        return lat;
+    }
+
+    public void setLat(String lat) {
+        this.lat = lat;
+    }
+
+    public String getLon() {
+        return lon;
+    }
+
+    public void setLon(String lon) {
+        this.lon = lon;
+    }
+
+    @Override
+    public String toString() {
+        return "Point{" +
+                "lat='" + lat + '\'' +
+                ", lon='" + lon + '\'' +
+                '}';
+    }
+}

+ 26 - 0
src/main/java/com/steerinfo/route/vo/Map/RouteVo.java

@@ -0,0 +1,26 @@
+package com.steerinfo.route.vo.Map;
+
+import java.util.List;
+
+public class RouteVo {
+
+
+
+
+    private List<StartAndEndRoute> startAndEndRoutes;
+
+    public List<StartAndEndRoute> getStartAndEndRoutes() {
+        return startAndEndRoutes;
+    }
+
+    public void setStartAndEndRoutes(List<StartAndEndRoute> startAndEndRoutes) {
+        this.startAndEndRoutes = startAndEndRoutes;
+    }
+
+    @Override
+    public String toString() {
+        return "RouteVo{" +
+                "startAndEndRoutes=" + startAndEndRoutes +
+                '}';
+    }
+}

+ 82 - 0
src/main/java/com/steerinfo/route/vo/Map/RunRoutePoint.java

@@ -0,0 +1,82 @@
+package com.steerinfo.route.vo.Map; /**
+  * Copyright 2021 bejson.com 
+  */
+
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+
+/**
+ * Auto-generated: 2021-10-16 11:56:24
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+public class RunRoutePoint {
+
+    SimpleDateFormat startSimpleDateFormat=new SimpleDateFormat("yyyyMMdd/HHmmss");
+    SimpleDateFormat endSimpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
+    private String agl;
+    private String gtm;
+    private String hgt;
+    private String lat;
+    private String lon;
+    private String mil;
+    private String spd;
+    public void setAgl(String agl) {
+         this.agl = agl;
+     }
+     public String getAgl() {
+         return agl;
+     }
+
+    public void setGtm(String gtm) throws ParseException {
+        this.gtm = gtm;
+     }
+
+     public String getGtm() throws ParseException {
+         Date parse = startSimpleDateFormat.parse(this.gtm);
+        return endSimpleDateFormat.format(parse);
+     }
+
+    public void setHgt(String hgt) {
+         this.hgt = hgt;
+     }
+     public String getHgt() {
+         return hgt;
+     }
+
+    public void setLat(String lat) {
+
+         this.lat = lat;
+     }
+     public String getLat() {
+         return lat;
+     }
+
+    public void setLon(String lon) {
+         this.lon = lon;
+     }
+     public String getLon() {
+         return lon;
+     }
+
+
+
+    public void setMil(String mil) {
+         this.mil = mil;
+     }
+     public String getMil() {
+         return mil;
+     }
+
+    public void setSpd(String spd) {
+         this.spd = spd;
+     }
+     public String getSpd() {
+         return spd;
+     }
+
+}

+ 132 - 0
src/main/java/com/steerinfo/route/vo/Map/StartAndEndRoute.java

@@ -0,0 +1,132 @@
+package com.steerinfo.route.vo.Map;
+
+import java.util.List;
+
+public class StartAndEndRoute {
+    //开始点名称
+    private String startPointName;
+    //开始点
+    private Point startPoint;
+    //结束点名称
+    private String endPointName;
+    //结束点
+    private Point endPoint;
+    //当前点名称
+    private String currentPointName;
+    //当前点
+    private Point currentPoint;
+    //行驶里程数
+    private String miled;
+
+    //已经行驶点的集合,绘制已行驶路径使用的
+    private List<RunRoutePoint> runRoute;
+    //预计行驶点的集合,绘制预计行驶径使用的
+    private List<Point> estimateRoute;
+
+    private List<Double[]> estimatePath;
+
+    private List<Double[]> runPath;
+
+    public List<Double[]> getEstimatePath() {
+        return estimatePath;
+    }
+
+    public void setEstimatePath(List<Double[]> estimatePath) {
+        this.estimatePath = estimatePath;
+    }
+
+    public List<Double[]> getRunPath() {
+        return runPath;
+    }
+
+    public void setRunPath(List<Double[]> runPath) {
+        this.runPath = runPath;
+    }
+
+    public String getStartPointName() {
+        return startPointName;
+    }
+
+    public void setStartPointName(String startPointName) {
+        this.startPointName = startPointName;
+    }
+
+    public Point getStartPoint() {
+        return startPoint;
+    }
+
+    public void setStartPoint(Point startPoint) {
+        this.startPoint = startPoint;
+    }
+
+    public String getEndPointName() {
+        return endPointName;
+    }
+
+    public void setEndPointName(String endPointName) {
+        this.endPointName = endPointName;
+    }
+
+    public Point getEndPoint() {
+        return endPoint;
+    }
+
+    public void setEndPoint(Point endPoint) {
+        this.endPoint = endPoint;
+    }
+
+    public String getCurrentPointName() {
+        return currentPointName;
+    }
+
+    public void setCurrentPointName(String currentPointName) {
+        this.currentPointName = currentPointName;
+    }
+
+    public Point getCurrentPoint() {
+        return currentPoint;
+    }
+
+    public void setCurrentPoint(Point currentPoint) {
+        this.currentPoint = currentPoint;
+    }
+
+    public String getMiled() {
+        return miled;
+    }
+
+    public void setMiled(String miled) {
+        this.miled = miled;
+    }
+
+    public List<RunRoutePoint> getRunRoute() {
+        return runRoute;
+    }
+
+    public void setRunRoute(List<RunRoutePoint> runRoute) {
+        this.runRoute = runRoute;
+    }
+
+    public List<Point> getEstimateRoute() {
+        return estimateRoute;
+    }
+
+    public void setEstimateRoute(List<Point> estimateRoute) {
+        this.estimateRoute = estimateRoute;
+    }
+
+    @Override
+    public String toString() {
+        return "StartAndEndRoute{" +
+                "startPointName='" + startPointName + '\'' +
+                ", startPoint=" + startPoint +
+                ", endPointName='" + endPointName + '\'' +
+                ", endPoint=" + endPoint +
+                ", currentPointName='" + currentPointName + '\'' +
+                ", currentPoint=" + currentPoint +
+                ", miled='" + miled + '\'' +
+                ", runRoute=" + runRoute +
+                ", estimateRoute=" + estimateRoute +
+                '}';
+    }
+}

+ 18 - 0
src/main/java/com/steerinfo/route/vo/ResultWarn.java

@@ -0,0 +1,18 @@
+package com.steerinfo.route.vo;
+
+import lombok.Data;
+
+@Data
+public class ResultWarn {
+    private String adr;
+    private String dLoc;
+    private String label;
+    private String rid;
+    private String sLoc;
+    private long time;
+    private String type;
+    private String userName;
+    private String vno;
+    private int warnTime;
+
+}

+ 22 - 0
src/main/java/com/steerinfo/route/vo/resultJson/Ad_info.java

@@ -0,0 +1,22 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.steerinfo.route.vo.resultJson;
+
+/**
+ * Auto-generated: 2021-10-10 19:26:2
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+public class Ad_info {
+
+    private String adcode;
+    public void setAdcode(String adcode) {
+         this.adcode = adcode;
+     }
+     public String getAdcode() {
+         return adcode;
+     }
+
+}

+ 54 - 0
src/main/java/com/steerinfo/route/vo/resultJson/Address_components.java

@@ -0,0 +1,54 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.steerinfo.route.vo.resultJson;
+
+/**
+ * Auto-generated: 2021-10-10 19:26:2
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+public class Address_components {
+
+    private String province;
+    private String city;
+    private String district;
+    private String street;
+    private String street_number;
+    public void setProvince(String province) {
+         this.province = province;
+     }
+     public String getProvince() {
+         return province;
+     }
+
+    public void setCity(String city) {
+         this.city = city;
+     }
+     public String getCity() {
+         return city;
+     }
+
+    public void setDistrict(String district) {
+         this.district = district;
+     }
+     public String getDistrict() {
+         return district;
+     }
+
+    public void setStreet(String street) {
+         this.street = street;
+     }
+     public String getStreet() {
+         return street;
+     }
+
+    public void setStreet_number(String street_number) {
+         this.street_number = street_number;
+     }
+     public String getStreet_number() {
+         return street_number;
+     }
+
+}

+ 32 - 0
src/main/java/com/steerinfo/route/vo/resultJson/Location.java

@@ -0,0 +1,32 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.steerinfo.route.vo.resultJson;
+
+import java.math.BigDecimal;
+
+/**
+ * Auto-generated: 2021-10-10 19:26:2
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+public class Location {
+
+    private BigDecimal lng;
+    private BigDecimal lat;
+    public void setLng(BigDecimal lng) {
+         this.lng = lng;
+     }
+     public BigDecimal getLng() {
+         return lng;
+     }
+
+    public void setLat(BigDecimal lat) {
+         this.lat = lat;
+     }
+     public BigDecimal getLat() {
+         return lat;
+     }
+
+}

+ 80 - 0
src/main/java/com/steerinfo/route/vo/resultJson/Result.java

@@ -0,0 +1,80 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.steerinfo.route.vo.resultJson;
+
+import java.math.BigDecimal;
+
+/**
+ * Auto-generated: 2021-10-10 19:26:2
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+public class Result {
+
+    private String title;
+    private Location location;
+    private Ad_info ad_info;
+    private Address_components address_components;
+    private BigDecimal similarity;
+    private int deviation;
+    private int reliability;
+    private int level;
+    public void setTitle(String title) {
+         this.title = title;
+     }
+     public String getTitle() {
+         return title;
+     }
+
+    public void setLocation(Location location) {
+         this.location = location;
+     }
+     public Location getLocation() {
+         return location;
+     }
+
+    public void setAd_info(Ad_info ad_info) {
+         this.ad_info = ad_info;
+     }
+     public Ad_info getAd_info() {
+         return ad_info;
+     }
+
+    public void setAddress_components(Address_components address_components) {
+         this.address_components = address_components;
+     }
+     public Address_components getAddress_components() {
+         return address_components;
+     }
+
+    public void setSimilarity(BigDecimal similarity) {
+         this.similarity = similarity;
+     }
+     public BigDecimal getSimilarity() {
+         return similarity;
+     }
+
+    public void setDeviation(int deviation) {
+         this.deviation = deviation;
+     }
+     public int getDeviation() {
+         return deviation;
+     }
+
+    public void setReliability(int reliability) {
+         this.reliability = reliability;
+     }
+     public int getReliability() {
+         return reliability;
+     }
+
+    public void setLevel(int level) {
+         this.level = level;
+     }
+     public int getLevel() {
+         return level;
+     }
+
+}

+ 38 - 0
src/main/java/com/steerinfo/route/vo/resultJson/SearchPoint.java

@@ -0,0 +1,38 @@
+/**
+  * Copyright 2021 bejson.com 
+  */
+package com.steerinfo.route.vo.resultJson;
+
+/**
+ * Auto-generated: 2021-10-10 19:26:2
+ *
+ * @author bejson.com (i@bejson.com)
+ * @website http://www.bejson.com/java2pojo/
+ */
+public class SearchPoint {
+
+    private int status;
+    private String message;
+    private Result result;
+    public void setStatus(int status) {
+         this.status = status;
+     }
+     public int getStatus() {
+         return status;
+     }
+
+    public void setMessage(String message) {
+         this.message = message;
+     }
+     public String getMessage() {
+         return message;
+     }
+
+    public void setResult(Result result) {
+         this.result = result;
+     }
+     public Result getResult() {
+         return result;
+     }
+
+}

+ 1 - 0
src/main/resources/api.properties

@@ -0,0 +1 @@
+mg=https://www.baidu.com

+ 50 - 0
src/main/resources/application-dev.yml

@@ -0,0 +1,50 @@
+#测试环境
+spring:
+  datasource:
+    url: jdbc:oracle:thin:@172.16.33.163:1521:ilsdbpri
+    password: root123
+    username: dagang
+    driver-class-name: oracle.jdbc.OracleDriver
+  application:
+    name: dil-dazhou-otms-dev
+  #Redis相关配置
+  redis:
+    host: 172.16.33.161
+    port: 6379
+    password: 123456
+  cache:
+    type: redis
+    redis:
+      time-to-live: 300000
+      cache-null-values: true
+piction:
+  # path: /usr/share/nginx/html/image
+  #  path: /test/data/nginx/html/image
+  #path: C:\Users\24390\Desktop\work\a
+  path: /shared
+
+#feign设置
+openfeign:
+  ColumnDataFeign:
+    url: ${COLUMNDATAFEIGN_URL:172.16.33.166:8083}
+  BmsShipFeign:
+    url: ${BMSSHIPFEIGN_URL:172.16.33.162:8007}
+  BmsTruckFeign:
+    url: ${BMSTRUCKFEIGN_URL:172.16.33.162:8009}
+  WmshBoundFeign:
+    url: ${WMSHBOUNDFEIGN_URL:172.16.33.162:8013}
+  WMSFeign:
+    url: ${WMSFEIGN_URL:172.16.33.162:8012}
+  OmsFeign:
+    url: ${OMSFEIGN_URL:172.16.33.162:8016}
+  JoinFeign:
+    url: ${JOINFEIGN_URL:172.16.33.162:8006}
+  QmsFeign:
+    url: ${QMSFEIGN_URL:172.16.33.162:8017}
+  ImFeign:
+    url: ${IMFEIGN_URL:172.16.33.166:8055}
+  AmsFeign:
+    url: ${AMSFEIGN_URL:172.16.33.162:8015}
+
+server:
+  port: 8087

+ 49 - 0
src/main/resources/application-prod.yml

@@ -0,0 +1,49 @@
+#正式环境
+spring:
+  datasource:
+    url: jdbc:oracle:thin:@172.16.33.163:1521:ilsdbpri
+    password: Dil123789
+    username: dil
+
+    driver-class-name: oracle.jdbc.OracleDriver
+  application:
+    name: dil-dazhou-otms-prod
+  #Redis相关配置
+  redis:
+    host: 172.16.33.161
+    port: 6379
+    password: 123456
+  cache:
+    type: redis
+    redis:
+      time-to-live: 300000
+      cache-null-values: true
+piction:
+  # path: /usr/share/nginx/html/image
+  #  path: /test/data/nginx/html/image
+  path: C:\Users\24390\Desktop\work\a
+  #path: /shared
+#feign设置
+openfeign:
+  ColumnDataFeign:
+    url: ${COLUMNDATAFEIGN_URL:172.16.33.166:8083}
+  BmsShipFeign:
+    url: ${BMSSHIPFEIGN_URL:172.16.33.166:8078}
+  BmsTruckFeign:
+    url: ${BMSTRUCKFEIGN_URL:172.16.33.166:8076}
+  WmshBoundFeign:
+    url: ${WMSHBOUNDFEIGN_URL:172.16.33.166:8070}
+  WMSFeign:
+    url: ${WMSFEIGN_URL:172.16.33.166:8093}
+  OmsFeign:
+    url: ${OMSFEIGN_URL:172.16.33.166:8095}
+  JoinFeign:
+    url: ${JOINFEIGN_URL:172.16.33.166:8066}
+  QmsFeign:
+    url: ${QMSFEIGN_URL:172.16.33.166:8047}
+  ImFeign:
+    url: ${IMFEIGN_URL:172.16.33.166:8055}
+
+
+server:
+  port: 8087

+ 0 - 0
src/main/resources/application.yml


+ 86 - 0
src/main/resources/bootstrap.yml

@@ -0,0 +1,86 @@
+api.version: api/v1/otms
+spring:
+  profiles:
+    include: ${SPRING_PROFILES:prod}
+  jackson:
+    date-format: yyyy-MM-dd HH:mm:ss
+    time-zone: GMT+8
+  #    serialization: {WRITE_DATES_AS_TIMESTAMPS: true}
+  messages:
+    basename: message
+    encoding: UTF-8
+  mvc:
+    static-path-pattern:
+
+#eureka设置
+eureka:
+  client:
+    service-url:
+      defaultZone: http://root:root@${EUREKA_HOST:172.16.33.161}:${EUREKA_PORT:8081}/eureka/
+    register-with-eureka: false #表示向EurekaServer注册自己 默认为true
+    fetch-registry: false #是否从EurekaServer抓取已有的注册信息,默认为true,单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
+
+  instance:
+    prefer-ip-address: true
+    status-page-url: http://${spring.cloud.client.ip-address}:${server.port}/swagger-ui.html#/
+    instance-id: ${spring.cloud.client.ip-address}:${server.port}
+
+genxml:
+  pth: com/a
+cache:
+  level: 2
+redis:
+  host: 10.10.50.28
+  port: 6379
+  pwd: 123456
+  project:
+    prefix: sysmanage
+  pool:
+    maxTotal: 8
+    maxWaitMillis: 1000
+    maxIdle: 8
+  cache:
+    time: 864000000
+  database: 0
+
+  #自定义配置Redis相关配置
+  prefix:
+    order: order
+    line: line
+    suffix: end
+
+str:
+  tengxun:
+    key: WDTBZ-A5VKJ-UDLFI-KYJY6-WTP2S-A6B4Y
+  ZhongJiaoXingLu:
+    cid: 84254ac6-9f05-47c7-ba3c-1d3398590d70
+    srt: b7c4b6ee-09c8-4865-a0b7-934d42205012
+    user: 108e0bda-1795-4e43-9df9-426a446eb77f
+    pwd: cKyp9G98yFy3gHBHG21us7z85377S1
+    #停车
+    parkMins: 60
+    #离线时长
+    outMins : 10
+    #路线偏移时长
+    abnMins: 60
+      #处理类型type=1 异常线路预警
+      #type=2 异常线路预警
+    #+停车
+    #type=3 异常线路预警
+    #+离线
+    #type=4 异常线路预警
+    #+停车+离线
+    type: 4
+
+mybatis:
+  type-aliases-package: com.steerinfo.dil.model
+  mapper-locations: classpath:com/steerinfo/dil/mapper/*.xml
+  configuration:
+    #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    mapUnderscoreToCamelCase: true
+    call-setters-on-nulls: true
+
+
+
+
+

+ 585 - 0
src/main/resources/com/steerinfo/dil/mapper/OffSiteTransportationMapper.xml

@@ -0,0 +1,585 @@
+<?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.steerinfo.dil.mapper.OffSiteTransportationMapper">
+    <insert id="insertOrderMileage" >
+         update TMSTRUCK_RECEIPT_RESULT set ORDER_MILEAGE = #{orderMileage} where RESULT_TOTAL_ID = #{truckTotalId}
+    </insert>
+    <insert id="insertReceive">
+        insert into TMSTRUCK_RECEIVE_RESULT(RESULT_RECEIVE_ID ,result_total_id ,insert_username ,insert_time ,status) values('${RESULTID}','${RESULTTOTALID}','${INSERUSERNAME}', #{INSERTTIME,jdbcType=TIMESTAMP},'${STATUS}')
+    </insert>
+    <insert id="addTransportationAlarm">
+    
+    </insert>
+    <update id="insertOrderTripId" parameterType="java.util.Map">
+        update OMSTRUCK_ORDER set TRIP_ID = #{rid} where ORDER_NUMBER = #{orderNumber}
+  </update>
+    <update id="orderClose">
+        update OMSTRUCK_ORDER set ORDER_STATUS = '2' where ORDER_NUMBER = #{orderNumber}
+    </update>
+    
+    <select id="getInTransitTransportation" resultType="java.util.Map">
+      select
+           *
+        from (
+        select  distinct
+                    OO.ORDER_STATUS               "orderStatus",
+                    OO.ORDER_NUMBER              "orderNumber", --运单订单号
+                    RC.CAPACITY_NUMBER           "capacityNumber",--车牌号
+                    TWR.RESULT_GROSS_WEIGHT_TIME "resultGrossWeightTime",--计毛时间
+                    TWR.RESULT_NET_WEIGHT        "resultNetWeight",--净重
+                    TLFR.RESULT_OUT_GATE_TIME    "resultOutGateTime",--出厂时间
+                    RGOUT.GATEPOST_NAME          "outGatepostName",--出厂门禁
+                    RCR.CARRIER_NAME             "carrierName" , --承运商名称
+        CONCAT( CONCAT( CONCAT(RRA.ADDRESS_PROVINCE,RRA.ADDRESS_DISTRICT),RRA.Address_Town),RRP.ADDRESS_DELIVERY_ADDRESS) "deliveryAddress",  --详细收货地址
+                    RM.MATERIAL_NAME             "materialName" , --"物质名称"
+                    RM.MATERIAL_SPECIFICATION    "materialSpecification", -- "物质规格"
+                    RM.MATERIAL_MODEL            "materialModel", --"物质型号"
+                    RCON.CONSIGNEE_COMPANY_NAME   "receiveName"--客户名称
+                
+                
+                    from OMSTRUCK_ORDER OO --运输订单
+                    left join AMS_SALE_ORDER_MATERIAL ASOM --销售订单物质表
+                    on ASOM.SALE_ORDER_MATERIAL_ID = OO.ORDER_PLAN_ID
+                    left join AMS_SALE_ORDER ASO --销售订单
+                    on ASO.SALE_ORDER_ID = ASOM.SALE_ORDER_ID
+                    left join RMS_CONSIGNEE RCON --收货客户
+                    on RCON.CONSIGNEE_ID = ASO.RECEIVE_ID
+                    left join TMSTRUCK_TOTAL_RESULT TTR --运输总实绩
+                    on TTR.ORDER_ID = OO.ORDER_ID
+                    left join TMSTRUCK_LOAD_RESULT TLR --汽车运输实绩表
+                    on TLR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+                    left join RMS_WAREHOUSE RW --装卸货仓库
+                    on RW.WAREHOUSE_ID = TLR.LOADING_ID
+                
+                    left join TMSTRUCK_LEAVE_FACTORY_RESULT TLFR --离厂实绩
+                    on TLFR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+                    left join RMS_GATEPOST RGOUT --门岗
+                    on RGOUT.GATEPOST_ID = TLFR.GATEPOST_ID
+                    left join RMS_CAPACITY RC --运力
+                    on RC.CAPACITY_ID = OO.CAPACITY_ID
+                
+                
+                    left join AMS_DISPATCH_SALE_ORDER  ADSO
+                    on ASOM.SALE_ORDER_MATERIAL_ID=ADSO.SALE_ORDER_MATERIAL_ID
+                    left join RMS_CARRIER RCR --承运单位
+                    on ADSO.CARRIER_ID=RCR.CARRIER_ID
+                
+                
+                    left join RMS_RECEIVE_PLACE RRP  --收货地址
+                    on ASOM.SALE_SHIPPING_ADDRESS_ID=RRP.PLACE_ID
+                    left join RMS_RECEIVE_ADDRESS RRA
+                    on RRP.ADDRESS_ID=RRA.ADDRESS_ID
+                
+                    left join AMS_SALE_TRUCKNO_MATERIAL ASTM
+                    on ASOM.SALE_ORDER_MATERIAL_ID=ASTM.SALE_ORDER_MATERIAL_ID
+                
+                    left join AMS_SALE_MATERIAL ASM1
+                    on ASTM.MATERIAL_ID =ASM1.SALE_MATERIAL_ID
+                
+                    left join TMSTRUCK_WEIGHT_RESULT TWR --运输实绩计重
+                    on TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID  and  ASM1.MATERIAL_ID =TWR.MATERIAL_ID
+                
+                    left join RMS_MATERIAL RM
+                    on ASM1.MATERIAL_ID=RM.MATERIAL_ID
+                    where OO.ORDER_TYPE in (1) and TLFR.RESULT_OUT_GATE_TIME IS NOT NULL
+             )
+             <where>
+                <if test="orderStatus !=null">
+                    and "orderStatus" ='${orderStatus}'
+                </if>
+                <if test="orderNumbers !=null and orderNumbers !=''">
+                    and "orderNumber" like '%${orderNumbers}%'
+                </if>
+                 <if test="capacityNumbers !=null and capacityNumbers !=''">
+                     and "capacityNumber" like '%${capacityNumbers}%'
+                 </if>
+                 <if test="resultGrossWeightTimes !=null and resultGrossWeightTimes !=''">
+                     and "resultGrossWeightTime" like '%${resultGrossWeightTimes}%'
+                 </if>
+                 <if test="resultGrossWeightTimes !=null and resultGrossWeightTimes !=''">
+                     and "resultGrossWeightTime" like '%${resultGrossWeightTimes}%'
+                 </if>
+                 <if test="resultOutGateTimes !=null and resultOutGateTimes !=''">
+                     and "resultOutGateTime" like '%${resultOutGateTimes}%'
+                 </if>
+                 <if test="resultNetWeights !=null and resultNetWeights !=''">
+                     and "resultNetWeight" like '%${resultNetWeights}%'
+                 </if>
+                 <if test="resultOutGateTimes !=null and resultOutGateTimes !=''">
+                     and "resultOutGateTime" like '%${resultOutGateTimes}%'
+                 </if>
+                 <if test="outGatepostNames !=null and outGatepostNames !=''">
+                     and "outGatepostName" like '%${outGatepostNames}%'
+                 </if>
+                 <if test="carrierNames !=null and carrierNames !=''">
+                     and "carrierName" like '%${carrierNames}%'
+                 </if>
+                 <if test="deliveryAddresss !=null and deliveryAddresss !=''">
+                     and "deliveryAddress" like '%${deliveryAddresss}%'
+                 </if>
+                 <if test="materialNames !=null and materialNames !=''">
+                     and "materialName" like '%${materialNames}%'
+                 </if>
+                 <if test="materialSpecifications !=null and materialSpecifications !=''">
+                     and "materialSpecification" like '%${materialSpecifications}%'
+                 </if>
+                 <if test="materialModels !=null and materialModels !=''">
+                     and "materialModel" like '%${materialModels}%'
+                 </if>
+                 <if test="receiveNames !=null and receiveNames!=''">
+                     and "receiveName" like '%${receiveNames}%'
+                 </if>
+                 <if test="startTime != null">
+                     and "resultOutGateTime" &gt;= to_date('${startTime}','yyyy-mm-dd')
+                 </if>
+                 <if test="endTime != null">
+                     and "resultOutGateTime" &lt;= to_date('${endTime}','yyyy-mm-dd')
+                 </if>
+                 <if test="orderNumber !=null">
+                     and  "orderNumber" in
+                     <foreach collection="orderNumber" separator="," open="(" close=")" item="item" >
+                         #{item}
+                     </foreach>
+                 </if>
+                 <if test="capacityNumber !=null">
+                     and  "capacityNumber" in
+                     <foreach collection="capacityNumber" separator="," open="(" close=")" item="item" >
+                         #{item}
+                     </foreach>
+                 </if>
+                 <if test="resultGrossWeightTime !=null">
+                     and  "resultGrossWeightTime" in
+                     <foreach collection="resultGrossWeightTime" separator="," open="(" close=")" item="item" >
+                         #{item}
+                     </foreach>
+                 </if>
+                 <if test="resultNetWeight !=null">
+                     and  "resultNetWeight" in
+                     <foreach collection="resultNetWeight" separator="," open="(" close=")" item="item" >
+                         #{item}
+                     </foreach>
+                 </if>
+                 <if test="resultOutGateTime !=null">
+                     and  "resultOutGateTime" in
+                     <foreach collection="resultOutGateTime" separator="," open="(" close=")" item="item" >
+                         #{item}
+                     </foreach>
+                 </if>
+                 <if test="outGatepostName !=null">
+                     and  "outGatepostName" in
+                     <foreach collection="outGatepostName" separator="," open="(" close=")" item="item" >
+                         #{item}
+                     </foreach>
+                 </if>
+                 <if test="carrierName !=null">
+                     and  "carrierName" in
+                     <foreach collection="carrierName" separator="," open="(" close=")" item="item" >
+                         #{item}
+                     </foreach>
+                 </if>
+                 <if test="deliveryAddress !=null">
+                     and  "deliveryAddress" in
+                     <foreach collection="deliveryAddress" separator="," open="(" close=")" item="item" >
+                         #{item}
+                     </foreach>
+                 </if>
+                 <if test="materialSpecification !=null">
+                     and  "materialSpecification" in
+                     <foreach collection="materialSpecification" separator="," open="(" close=")" item="item" >
+                         #{item}
+                     </foreach>
+                 </if>
+                 <if test="materialModel !=null">
+                     and  "materialModel" in
+                     <foreach collection="materialModel" separator="," open="(" close=")" item="item" >
+                         #{item}
+                     </foreach>
+                 </if>
+                 <if test="receiveName !=null">
+                     and  "receiveName" in
+                     <foreach collection="receiveName" separator="," open="(" close=")" item="item" >
+                         #{item}
+                     </foreach>
+                 </if>
+             </where>
+        <include refid="orderBy"></include>
+    </select>
+    <select id="getTruckFactoryResult" resultType="java.util.Map">
+         SELECT   * from(
+                
+                 SELECT
+                    -- 出厂时间
+                    to_char(TLFR.RESULT_OUT_GATE_TIME,'yyyy-mm-dd hh24:mi:ss')  "resultOutGateTime",
+                    --出厂抓拍图片
+                    TLFR.RESULT_TRUCK_SNAPSHOT_PICTURE "resultTruckSnapshotPicture",
+                    --出厂方式
+                    TLFR.RESULT_OUT_MODE "resultOutMode",
+                    --门岗名称
+                    RG.GATEPOST_NAME "gatepostName",
+                    -- 运输订单号
+                    OO.ORDER_NUMBER "orderNumber",
+                    -- 车牌号
+                    RC.CAPACITY_NUMBER "capacityNumber",
+                    -- 运输订单id
+                    OO.ORDER_ID "orderId",
+                    -- 订单类型
+                    OO.ORDER_TYPE "orderType",
+                    -- 销售订单号
+                    ASO.SALE_NUMBER  "saleNum",
+                    -- 收货地址
+                    RRA.ADDRESS_DELIVERY_ADDRESS "receiveAddress",
+                    -- 收货单位
+                    RS.SUPPLIER_NAME  "supplierName" ,
+                    -- 发货单位
+                    RS2.SHIPPER_NAME "shipperName"
+                   
+                    
+                    
+                    
+                FROM
+                    -- 出厂实绩
+                    TMSTRUCK_LEAVE_FACTORY_RESULT TLFR
+                    --  总实绩
+                    LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR ON TLFR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+                    -- 运输订单
+                    LEFT JOIN OMSTRUCK_ORDER OO ON TTR.ORDER_ID = OO.ORDER_ID
+                     -- 销售订单信息
+                    LEFT JOIN  AMS_SALE_ORDER ASO ON OO.ORDER_PLAN_ID = ASO.SALE_ORDER_ID
+                    -- 托运人
+                    LEFT JOIN RMS_SUPPLIER RS ON ASO.SHIPPER_ID = RS.SUPPLIER_ID
+                    --  门岗
+                    LEFT JOIN RMS_GATEPOST RG ON TLFR.GATEPOST_ID = RG.GATEPOST_ID
+                    -- 运力信息
+                    LEFT JOIN RMS_CAPACITY RC ON OO.CAPACITY_ID = RC.CAPACITY_ID
+                     -- 销售订单中间表
+                    LEFT JOIN AMS_SALE_ORDER_MATERIAL ASOM ON    ASOM.SALE_ORDER_MATERIAL_ID =OO.ORDER_PLAN_ID
+                    -- 收货地址
+                    LEFT JOIN RMS_RECEIVE_ADDRESS RRA ON    ASOM.SALE_SHIPPING_ADDRESS_ID =RRA.ADDRESS_ID
+                    -- 收货单位
+                    LEFT JOIN RMS_SHIPPER RS2 ON ASO.SHIPPER_ID = RS2.SHIPPER_ID
+                    
+                WHERE
+                    -- 判断出厂实绩的出厂时间不为空
+                    TLFR.RESULT_OUT_GATE_TIME IS NOT NULL
+                    --   并且订单类型等于1(销售订单),2(焦炭发运计划),3(水渣发运计划)
+                    AND OO.ORDER_TYPE =1 AND OO.ORDER_NUMBER=#{orderNumber}
+                    
+                    )
+    </select>
+    <select id="getOrderStatu" resultType="java.lang.Integer">
+        select o_order.ORDER_STATUS from OMSTRUCK_ORDER o_order
+        where o_order.ORDER_NUMBER = #{orderNumber}
+    </select>
+    <select id="getStartAndEndCapacityNumber" resultType="java.util.Map">
+                SELECT
+                    -- 出厂时间
+                    to_char(TLFR.RESULT_OUT_GATE_TIME,'yyyy-mm-dd hh24:mi:ss')  "resultOutGateTime",
+                    -- 车牌号
+                    RC.CAPACITY_NUMBER "capacityNumber",
+                    -- 收货地址
+                     CONCAT( CONCAT(RRA.ADDRESS_PROVINCE,RRA.ADDRESS_DISTRICT),RRA.Address_Town) "addressDeliveryAddress"
+                    
+                FROM
+                    -- 出厂实绩
+                    TMSTRUCK_LEAVE_FACTORY_RESULT TLFR
+                    --  总实绩
+                    LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR ON TLFR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+                    -- 运输订单
+                    LEFT JOIN OMSTRUCK_ORDER OO ON TTR.ORDER_ID = OO.ORDER_ID
+                    -- 运力信息
+                    LEFT JOIN RMS_CAPACITY RC ON OO.CAPACITY_ID = RC.CAPACITY_ID
+                     -- 销售订单中间表
+                    LEFT JOIN AMS_SALE_ORDER_MATERIAL ASOM ON    ASOM.SALE_ORDER_MATERIAL_ID =OO.ORDER_PLAN_ID
+                    --收货地址
+                    left join RMS_RECEIVE_PLACE RRP  on ASOM.SALE_SHIPPING_ADDRESS_ID=RRP.PLACE_ID
+                    
+                    left join RMS_RECEIVE_ADDRESS RRA on RRP.ADDRESS_ID=RRA.ADDRESS_ID
+                    
+                    
+                WHERE
+                    -- 判断出厂实绩的出厂时间不为空
+                    TLFR.RESULT_OUT_GATE_TIME IS NOT NULL
+                    --   并且订单类型等于1(销售订单),2(焦炭发运计划),3(水渣发运计划)
+                    AND OO.ORDER_TYPE =1 AND OO.ORDER_NUMBER=#{orderNumber}
+    </select>
+    <select id="getReceiptData" resultType="java.util.Map">
+        select result_id resultId,result_total_id resultTotalId,insert_username inserUserName,insert_time insertTime,status status from TMSTRUCK_RECEIPT_RESULT
+    </select>
+    <select id="selectWarnSwitch" resultType="Map">
+    select WARN_SWITCH "switch",WARN_TYPE "type" from TMSTRUCK_IN_TRANSIT_WARN where WARN_ID = 1
+  </select>
+    <select id="selectIsReceiving" resultType="java.math.BigDecimal">
+        select RESULT_TOTAL_ID "totalId"
+        from TMSTRUCK_TOTAL_RESULT t_total
+               left join OMSTRUCK_ORDER o_order
+                         on t_total.ORDER_ID=o_order.ORDER_ID
+        where o_order.TRIP_ID = #{tripId} and o_order.ORDER_STATUS = 1
+    </select>
+    <select id="getHaveAbnormalTruckOrderInfo" resultType="java.util.Map">
+        select
+        *
+        from (
+        select  distinct
+        OO.ORDER_STATUS               "orderStatus",
+        OO.ORDER_NUMBER              "orderNumber", --运单订单号
+        RC.CAPACITY_NUMBER           "capacityNumber",--车牌号
+        TWR.RESULT_GROSS_WEIGHT_TIME "resultGrossWeightTime",--计毛时间
+        TWR.RESULT_NET_WEIGHT        "resultNetWeight",--净重
+        TLFR.RESULT_OUT_GATE_TIME    "resultOutGateTime",--出厂时间
+        RGOUT.GATEPOST_NAME          "outGatepostName",--出厂门禁
+        RCR.CARRIER_NAME             "carrierName" , --承运商名称
+        CONCAT( CONCAT( CONCAT(RRA.ADDRESS_PROVINCE,RRA.ADDRESS_DISTRICT),RRA.Address_Town),RRP.ADDRESS_DELIVERY_ADDRESS) "deliveryAddress",  --详细收货地址
+        RM.MATERIAL_NAME             "materialName" , --"物质名称"
+        RM.MATERIAL_SPECIFICATION    "materialSpecification", -- "物质规格"
+        RM.MATERIAL_MODEL            "materialModel", --"物质型号"
+        RCON.CONSIGNEE_COMPANY_NAME   "receiveName"--客户名称
+    
+        from OMSTRUCK_ORDER OO --运输订单
+        left join AMS_SALE_ORDER_MATERIAL ASOM --销售订单物质表
+        on ASOM.SALE_ORDER_MATERIAL_ID = OO.ORDER_PLAN_ID
+        left join AMS_SALE_ORDER ASO --销售订单
+        on ASO.SALE_ORDER_ID = ASOM.SALE_ORDER_ID
+        left join RMS_CONSIGNEE RCON --收货客户
+        on RCON.CONSIGNEE_ID = ASO.RECEIVE_ID
+        left join TMSTRUCK_TOTAL_RESULT TTR --运输总实绩
+        on TTR.ORDER_ID = OO.ORDER_ID
+        left join TMSTRUCK_LOAD_RESULT TLR --汽车运输实绩表
+        on TLR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+        left join RMS_WAREHOUSE RW --装卸货仓库
+        on RW.WAREHOUSE_ID = TLR.LOADING_ID
+    
+        left join TMSTRUCK_LEAVE_FACTORY_RESULT TLFR --离厂实绩
+        on TLFR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+        left join RMS_GATEPOST RGOUT --门岗
+        on RGOUT.GATEPOST_ID = TLFR.GATEPOST_ID
+        left join RMS_CAPACITY RC --运力
+        on RC.CAPACITY_ID = OO.CAPACITY_ID
+    
+    
+        left join AMS_DISPATCH_SALE_ORDER  ADSO
+        on ASOM.SALE_ORDER_MATERIAL_ID=ADSO.SALE_ORDER_MATERIAL_ID
+        left join RMS_CARRIER RCR --承运单位
+        on ADSO.CARRIER_ID=RCR.CARRIER_ID
+    
+    
+        left join RMS_RECEIVE_PLACE RRP  --收货地址
+        on ASOM.SALE_SHIPPING_ADDRESS_ID=RRP.PLACE_ID
+        left join RMS_RECEIVE_ADDRESS RRA
+        on RRP.ADDRESS_ID=RRA.ADDRESS_ID
+    
+        left join AMS_SALE_TRUCKNO_MATERIAL ASTM
+        on ASOM.SALE_ORDER_MATERIAL_ID=ASTM.SALE_ORDER_MATERIAL_ID
+    
+        left join AMS_SALE_MATERIAL ASM1
+        on ASTM.MATERIAL_ID =ASM1.SALE_MATERIAL_ID
+    
+        left join TMSTRUCK_WEIGHT_RESULT TWR --运输实绩计重
+        on TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID  and  ASM1.MATERIAL_ID =TWR.MATERIAL_ID
+    
+        left join RMS_MATERIAL RM
+        on ASM1.MATERIAL_ID=RM.MATERIAL_ID
+        left join(
+        select max(RESULT_TOTAL_ID) coun,RESULT_TOTAL_ID RESULT_TOTAL_ID from  TMSTRUCK_ABNORMAL_RESULT
+        group by RESULT_TOTAL_ID
+        ) TAR
+        on TTR.RESULT_TOTAL_ID=TAR.RESULT_TOTAL_ID
+        where TAR.coun is not null and OO.ORDER_TYPE in (1) and TLFR.RESULT_OUT_GATE_TIME IS NOT NULL
+        )
+        <where>
+            <if test="orderStatus !=null">
+                and "orderStatus" ='${orderStatus}'
+            </if>
+            <if test="orderNumbers !=null and orderNumbers !=''">
+                and "orderNumber" like '%${orderNumbers}%'
+            </if>
+            <if test="capacityNumbers !=null and capacityNumbers !=''">
+                and "capacityNumber" like '%${capacityNumbers}%'
+            </if>
+            <if test="resultGrossWeightTimes !=null and resultGrossWeightTimes !=''">
+                and "resultGrossWeightTime" like '%${resultGrossWeightTimes}%'
+            </if>
+            <if test="resultGrossWeightTimes !=null and resultGrossWeightTimes !=''">
+                and "resultGrossWeightTime" like '%${resultGrossWeightTimes}%'
+            </if>
+            <if test="resultOutGateTimes !=null and resultOutGateTimes !=''">
+                and "resultOutGateTime" like '%${resultOutGateTimes}%'
+            </if>
+            <if test="resultNetWeights !=null and resultNetWeights !=''">
+                and "resultNetWeight" like '%${resultNetWeights}%'
+            </if>
+            <if test="resultOutGateTimes !=null and resultOutGateTimes !=''">
+                and "resultOutGateTime" like '%${resultOutGateTimes}%'
+            </if>
+            <if test="outGatepostNames !=null and outGatepostNames !=''">
+                and "outGatepostName" like '%${outGatepostNames}%'
+            </if>
+            <if test="carrierNames !=null and carrierNames !=''">
+                and "carrierName" like '%${carrierNames}%'
+            </if>
+            <if test="deliveryAddresss !=null and deliveryAddresss !=''">
+                and "deliveryAddress" like '%${deliveryAddresss}%'
+            </if>
+            <if test="materialNames !=null and materialNames !=''">
+                and "materialName" like '%${materialNames}%'
+            </if>
+            <if test="materialSpecifications !=null and materialSpecifications !=''">
+                and "materialSpecification" like '%${materialSpecifications}%'
+            </if>
+            <if test="materialModels !=null and materialModels !=''">
+                and "materialModel" like '%${materialModels}%'
+            </if>
+            <if test="receiveNames !=null and receiveNames!=''">
+                and "receiveName" like '%${receiveNames}%'
+            </if>
+            <if test="startTime != null">
+                and "resultOutGateTime" &gt;= to_date('${startTime}','yyyy-mm-dd')
+            </if>
+            <if test="endTime != null">
+                and "resultOutGateTime" &lt;= to_date('${endTime}','yyyy-mm-dd')
+            </if>
+            <if test="orderNumber !=null">
+                and  "orderNumber" in
+                <foreach collection="orderNumber" separator="," open="(" close=")" item="item" >
+                    #{item}
+                </foreach>
+            </if>
+            <if test="capacityNumber !=null">
+                and  "capacityNumber" in
+                <foreach collection="capacityNumber" separator="," open="(" close=")" item="item" >
+                    #{item}
+                </foreach>
+            </if>
+            <if test="resultGrossWeightTime !=null">
+                and  "resultGrossWeightTime" in
+                <foreach collection="resultGrossWeightTime" separator="," open="(" close=")" item="item" >
+                    #{item}
+                </foreach>
+            </if>
+            <if test="resultNetWeight !=null">
+                and  "resultNetWeight" in
+                <foreach collection="resultNetWeight" separator="," open="(" close=")" item="item" >
+                    #{item}
+                </foreach>
+            </if>
+            <if test="resultOutGateTime !=null">
+                and  "resultOutGateTime" in
+                <foreach collection="resultOutGateTime" separator="," open="(" close=")" item="item" >
+                    #{item}
+                </foreach>
+            </if>
+            <if test="outGatepostName !=null">
+                and  "outGatepostName" in
+                <foreach collection="outGatepostName" separator="," open="(" close=")" item="item" >
+                    #{item}
+                </foreach>
+            </if>
+            <if test="carrierName !=null">
+                and  "carrierName" in
+                <foreach collection="carrierName" separator="," open="(" close=")" item="item" >
+                    #{item}
+                </foreach>
+            </if>
+            <if test="deliveryAddress !=null">
+                and  "deliveryAddress" in
+                <foreach collection="deliveryAddress" separator="," open="(" close=")" item="item" >
+                    #{item}
+                </foreach>
+            </if>
+            <if test="materialSpecification !=null">
+                and  "materialSpecification" in
+                <foreach collection="materialSpecification" separator="," open="(" close=")" item="item" >
+                    #{item}
+                </foreach>
+            </if>
+            <if test="materialModel !=null">
+                and  "materialModel" in
+                <foreach collection="materialModel" separator="," open="(" close=")" item="item" >
+                    #{item}
+                </foreach>
+            </if>
+            <if test="receiveName !=null">
+                and  "receiveName" in
+                <foreach collection="receiveName" separator="," open="(" close=")" item="item" >
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+        <include refid="orderBy"></include>
+    </select>
+    <select id="getTransportAbnormalInfo" parameterType="java.util.Map" resultType="java.util.LinkedHashMap">
+        select * from(
+        select r_capacity.CAPACITY_NUMBER "capacityNumber",
+        o_torder.ORDER_NUMBER "orderNumber",
+        a_s_order.SALE_NUMBER "saleNumber",
+        t_abnormal.ABNORMAL_TYPE "abnormalType",
+        t_abnormal.ABNORMAL_TIME "abnormalTime",
+        t_abnormal.ABNORMAL_ADDRESS "abnormalAddress",
+        t_abnormal.ABNORMAL_DURATION "abnormalDuration"
+        from TMSTRUCK_ABNORMAL_RESULT t_abnormal
+        left join TMSTRUCK_TOTAL_RESULT t_total
+        on t_abnormal.RESULT_TOTAL_ID=t_total.RESULT_TOTAL_ID
+        left join OMSTRUCK_ORDER o_torder
+        on t_total.ORDER_ID=o_torder.ORDER_ID
+        left join RMS_CAPACITY r_capacity
+        on o_torder.CAPACITY_ID=r_capacity.CAPACITY_ID
+        left join AMS_SALE_ORDER_MATERIAL sale_material
+        on o_torder.ORDER_PLAN_ID=sale_material.SALE_ORDER_MATERIAL_ID
+        left join AMS_SALE_ORDER a_s_order
+        on sale_material.SALE_ORDER_ID=a_s_order.SALE_ORDER_ID
+        where o_torder.ORDER_NUMBER=#{orderNumbers}
+        order by t_abnormal.ABNORMAL_TIME desc)
+        <where>
+            <if test="capacityNumber != null">
+                and
+                <foreach collection="capacityNumber" item="item" open="(" separator="or" close=")">
+                    "capacityNumber" like '%${item}%'
+                </foreach>
+            </if>
+            <if test="orderNumber != null">
+                and
+                <foreach collection="orderNumber" item="item" open="(" separator="or" close=")">
+                    "orderNumber" like '%${item}%'
+                </foreach>
+            </if>
+            <if test="saleNumber != null">
+                and
+                <foreach collection="saleNumber" item="item" open="(" separator="or" close=")">
+                    "saleNumber" like '%${item}%'
+                </foreach>
+            </if>
+            <if test="abnormalCondition != null">
+                and
+                <foreach collection="abnormalCondition" item="item" open="(" separator="or" close=")">
+                    "abnormalCondition" like '%${item}%'
+                </foreach>
+            </if>
+            <if test="abnormalTime != null">
+                and
+                <foreach collection="abnormalTime" item="item" open="(" separator="or" close=")">
+                    "abnormalTime" like '%${item}%'
+                </foreach>
+            </if>
+            <if test="abnormalAddress != null">
+                and
+                <foreach collection="abnormalAddress" item="item" open="(" separator="or" close=")">
+                    "abnormalAddress" like '%${item}%'
+                </foreach>
+            </if>
+            <if test="abnormalDuration != null">
+                and
+                <foreach collection="abnormalDuration" item="item" open="(" separator="or" close=")">
+                    "abnormalDuration" like '%${item}%'
+                </foreach>
+            </if>
+            <include refid="orderBy"></include>
+        </where>
+    </select>
+    <sql id="orderBy">
+        <if test="orderField != null and orderField != ''">
+            order by  "${orderField}"
+            <if test="orderType != null and orderType != ''">
+                ${orderType}
+            </if>
+        </if>
+    </sql>
+</mapper>

+ 410 - 0
src/main/resources/com/steerinfo/dil/mapper/TmstruckAbnormalResultMapper.xml

@@ -0,0 +1,410 @@
+<?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.steerinfo.dil.mapper.TmstruckAbnormalResultMapper">
+  <resultMap id="BaseResultMap" type="com.steerinfo.dil.model.TmstruckAbnormalResult">
+    <id column="ABNORMAL_ID" jdbcType="DECIMAL" property="abnormalId" />
+    <result column="RESULT_TOTAL_ID" jdbcType="DECIMAL" property="resultTotalId" />
+    <result column="ABNORMAL_TYPE" jdbcType="DECIMAL" property="abnormalType" />
+    <result column="ABNORMAL_TIME" jdbcType="TIMESTAMP" property="abnormalTime" />
+    <result column="ABNORMAL_ADDRESS" jdbcType="VARCHAR" property="abnormalAddress" />
+    <result column="ABNORMAL_DURATION" jdbcType="DECIMAL" property="abnormalDuration" />
+    <result column="INSERT_USERNAME" jdbcType="VARCHAR" property="insertUsername" />
+    <result column="INSERT_TIME" jdbcType="TIMESTAMP" property="insertTime" />
+    <result column="UPDATE_USERNAME" jdbcType="VARCHAR" property="updateUsername" />
+    <result column="UPDATE_TIME" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="INSERT_UPDATE_REMARK" jdbcType="VARCHAR" property="insertUpdateRemark" />
+    <result column="ABNORMAL_CONDITION" jdbcType="VARCHAR" property="abnormalCondition" />
+  </resultMap>
+  <sql id="columns">
+    ABNORMAL_ID, RESULT_TOTAL_ID, ABNORMAL_TYPE, ABNORMAL_TIME, ABNORMAL_ADDRESS, ABNORMAL_DURATION, 
+    INSERT_USERNAME, INSERT_TIME, UPDATE_USERNAME, UPDATE_TIME, INSERT_UPDATE_REMARK, 
+    ABNORMAL_CONDITION
+  </sql>
+  <sql id="columns_alias">
+    t.ABNORMAL_ID, t.RESULT_TOTAL_ID, t.ABNORMAL_TYPE, t.ABNORMAL_TIME, t.ABNORMAL_ADDRESS, 
+    t.ABNORMAL_DURATION, t.INSERT_USERNAME, t.INSERT_TIME, t.UPDATE_USERNAME, t.UPDATE_TIME, 
+    t.INSERT_UPDATE_REMARK, t.ABNORMAL_CONDITION
+  </sql>
+  <sql id="select">
+    SELECT <include refid="columns" /> FROM TMSTRUCK_ABNORMAL_RESULT
+  </sql>
+  <sql id="select_alias">
+    SELECT <include refid="columns_alias" /> FROM TMSTRUCK_ABNORMAL_RESULT t
+  </sql>
+  <sql id="where">
+    <where> 
+      <if test="abnormalId != null">
+        and ABNORMAL_ID = #{abnormalId}
+      </if>
+      <if test="resultTotalId != null">
+        and RESULT_TOTAL_ID = #{resultTotalId}
+      </if>
+      <if test="abnormalType != null">
+        and ABNORMAL_TYPE = #{abnormalType}
+      </if>
+      <if test="abnormalTime != null">
+        and TO_CHAR(ABNORMAL_TIME,'yyyy-MM-dd') = #{abnormalTime}
+      </if>
+      <if test="abnormalAddress != null and abnormalAddress != ''">
+        and ABNORMAL_ADDRESS = #{abnormalAddress}
+      </if>
+      <if test="abnormalDuration != null">
+        and ABNORMAL_DURATION = #{abnormalDuration}
+      </if>
+      <if test="insertUsername != null and insertUsername != ''">
+        and INSERT_USERNAME = #{insertUsername}
+      </if>
+      <if test="insertTime != null">
+        and TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = #{insertTime}
+      </if>
+      <if test="updateUsername != null and updateUsername != ''">
+        and UPDATE_USERNAME = #{updateUsername}
+      </if>
+      <if test="updateTime != null">
+        and TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = #{updateTime}
+      </if>
+      <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+        and INSERT_UPDATE_REMARK = #{insertUpdateRemark}
+      </if>
+      <if test="abnormalCondition != null and abnormalCondition != ''">
+        and ABNORMAL_CONDITION = #{abnormalCondition}
+      </if>
+    </where>
+  </sql>
+  <sql id="whereLike">
+    <where> 
+      <if test="abnormalId != null">
+        and ABNORMAL_ID = #{abnormalId}
+      </if>
+      <if test="resultTotalId != null">
+        and RESULT_TOTAL_ID = #{resultTotalId}
+      </if>
+      <if test="abnormalType != null">
+        and ABNORMAL_TYPE = #{abnormalType}
+      </if>
+      <if test="abnormalTime != null">
+        and TO_CHAR(ABNORMAL_TIME,'yyyy-MM-dd') = #{abnormalTime}
+      </if>
+      <if test="abnormalAddress != null and abnormalAddress != ''">
+        and ABNORMAL_ADDRESS LIKE '%${abnormalAddress}%'
+      </if>
+      <if test="abnormalDuration != null">
+        and ABNORMAL_DURATION = #{abnormalDuration}
+      </if>
+      <if test="insertUsername != null and insertUsername != ''">
+        and INSERT_USERNAME LIKE '%${insertUsername}%'
+      </if>
+      <if test="insertTime != null">
+        and TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = #{insertTime}
+      </if>
+      <if test="updateUsername != null and updateUsername != ''">
+        and UPDATE_USERNAME LIKE '%${updateUsername}%'
+      </if>
+      <if test="updateTime != null">
+        and TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = #{updateTime}
+      </if>
+      <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+        and INSERT_UPDATE_REMARK LIKE '%${insertUpdateRemark}%'
+      </if>
+      <if test="abnormalCondition != null and abnormalCondition != ''">
+        and ABNORMAL_CONDITION LIKE '%${abnormalCondition}%'
+      </if>
+    </where>
+  </sql>
+  <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
+    delete from TMSTRUCK_ABNORMAL_RESULT
+    where ABNORMAL_ID = #{abnormalId,jdbcType=DECIMAL}
+  </delete>
+  <delete id="deleteBySelectiveElement" parameterType="java.util.HashMap">
+    delete from TMSTRUCK_ABNORMAL_RESULT
+    where 1!=1 
+      <if test="resultTotalId != null">
+        or RESULT_TOTAL_ID = #{resultTotalId}
+      </if>
+      <if test="abnormalType != null">
+        or ABNORMAL_TYPE = #{abnormalType}
+      </if>
+      <if test="abnormalTime != null">
+        or TO_CHAR(ABNORMAL_TIME,'yyyy-MM-dd') = '#{abnormalTime}'
+      </if>
+      <if test="abnormalAddress != null and abnormalAddress != ''">
+        or ABNORMAL_ADDRESS = #{abnormalAddress}
+      </if>
+      <if test="abnormalDuration != null">
+        or ABNORMAL_DURATION = #{abnormalDuration}
+      </if>
+      <if test="insertUsername != null and insertUsername != ''">
+        or INSERT_USERNAME = #{insertUsername}
+      </if>
+      <if test="insertTime != null">
+        or TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = '#{insertTime}'
+      </if>
+      <if test="updateUsername != null and updateUsername != ''">
+        or UPDATE_USERNAME = #{updateUsername}
+      </if>
+      <if test="updateTime != null">
+        or TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = '#{updateTime}'
+      </if>
+      <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+        or INSERT_UPDATE_REMARK = #{insertUpdateRemark}
+      </if>
+      <if test="abnormalCondition != null and abnormalCondition != ''">
+        or ABNORMAL_CONDITION = #{abnormalCondition}
+      </if>
+  </delete>
+  <insert id="insert" parameterType="com.steerinfo.dil.model.TmstruckAbnormalResult">
+    insert into TMSTRUCK_ABNORMAL_RESULT (ABNORMAL_ID, RESULT_TOTAL_ID, ABNORMAL_TYPE, 
+      ABNORMAL_TIME, ABNORMAL_ADDRESS, ABNORMAL_DURATION, 
+      INSERT_USERNAME, INSERT_TIME, UPDATE_USERNAME, 
+      UPDATE_TIME, INSERT_UPDATE_REMARK, ABNORMAL_CONDITION
+      )
+    values (#{abnormalId,jdbcType=DECIMAL}, #{resultTotalId,jdbcType=DECIMAL}, #{abnormalType,jdbcType=DECIMAL}, 
+      #{abnormalTime,jdbcType=TIMESTAMP}, #{abnormalAddress,jdbcType=VARCHAR}, #{abnormalDuration,jdbcType=DECIMAL}, 
+      #{insertUsername,jdbcType=VARCHAR}, #{insertTime,jdbcType=TIMESTAMP}, #{updateUsername,jdbcType=VARCHAR}, 
+      #{updateTime,jdbcType=TIMESTAMP}, #{insertUpdateRemark,jdbcType=VARCHAR}, #{abnormalCondition,jdbcType=VARCHAR}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.steerinfo.dil.model.TmstruckAbnormalResult">
+    insert into TMSTRUCK_ABNORMAL_RESULT
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="abnormalId != null">
+        ABNORMAL_ID,
+      </if>
+      <if test="resultTotalId != null">
+        RESULT_TOTAL_ID,
+      </if>
+      <if test="abnormalType != null">
+        ABNORMAL_TYPE,
+      </if>
+      <if test="abnormalTime != null">
+        ABNORMAL_TIME,
+      </if>
+      <if test="abnormalAddress != null">
+        ABNORMAL_ADDRESS,
+      </if>
+      <if test="abnormalDuration != null">
+        ABNORMAL_DURATION,
+      </if>
+      <if test="insertUsername != null">
+        INSERT_USERNAME,
+      </if>
+      <if test="insertTime != null">
+        INSERT_TIME,
+      </if>
+      <if test="updateUsername != null">
+        UPDATE_USERNAME,
+      </if>
+      <if test="updateTime != null">
+        UPDATE_TIME,
+      </if>
+      <if test="insertUpdateRemark != null">
+        INSERT_UPDATE_REMARK,
+      </if>
+      <if test="abnormalCondition != null">
+        ABNORMAL_CONDITION,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="abnormalId != null">
+        #{abnormalId,jdbcType=DECIMAL},
+      </if>
+      <if test="resultTotalId != null">
+        #{resultTotalId,jdbcType=DECIMAL},
+      </if>
+      <if test="abnormalType != null">
+        #{abnormalType,jdbcType=DECIMAL},
+      </if>
+      <if test="abnormalTime != null">
+        #{abnormalTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="abnormalAddress != null">
+        #{abnormalAddress,jdbcType=VARCHAR},
+      </if>
+      <if test="abnormalDuration != null">
+        #{abnormalDuration,jdbcType=DECIMAL},
+      </if>
+      <if test="insertUsername != null">
+        #{insertUsername,jdbcType=VARCHAR},
+      </if>
+      <if test="insertTime != null">
+        #{insertTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateUsername != null">
+        #{updateUsername,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="insertUpdateRemark != null">
+        #{insertUpdateRemark,jdbcType=VARCHAR},
+      </if>
+      <if test="abnormalCondition != null">
+        #{abnormalCondition,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKey" parameterType="com.steerinfo.dil.model.TmstruckAbnormalResult">
+    update TMSTRUCK_ABNORMAL_RESULT
+    set RESULT_TOTAL_ID = #{resultTotalId,jdbcType=DECIMAL},
+      ABNORMAL_TYPE = #{abnormalType,jdbcType=DECIMAL},
+      ABNORMAL_TIME = #{abnormalTime,jdbcType=TIMESTAMP},
+      ABNORMAL_ADDRESS = #{abnormalAddress,jdbcType=VARCHAR},
+      ABNORMAL_DURATION = #{abnormalDuration,jdbcType=DECIMAL},
+      INSERT_USERNAME = #{insertUsername,jdbcType=VARCHAR},
+      INSERT_TIME = #{insertTime,jdbcType=TIMESTAMP},
+      UPDATE_USERNAME = #{updateUsername,jdbcType=VARCHAR},
+      UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
+      INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR},
+      ABNORMAL_CONDITION = #{abnormalCondition,jdbcType=VARCHAR}
+    where ABNORMAL_ID = #{abnormalId,jdbcType=DECIMAL}
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.steerinfo.dil.model.TmstruckAbnormalResult">
+    update TMSTRUCK_ABNORMAL_RESULT
+    <set>
+      <if test="resultTotalId != null">
+        RESULT_TOTAL_ID = #{resultTotalId,jdbcType=DECIMAL},
+      </if>
+      <if test="abnormalType != null">
+        ABNORMAL_TYPE = #{abnormalType,jdbcType=DECIMAL},
+      </if>
+      <if test="abnormalTime != null">
+        ABNORMAL_TIME = #{abnormalTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="abnormalAddress != null">
+        ABNORMAL_ADDRESS = #{abnormalAddress,jdbcType=VARCHAR},
+      </if>
+      <if test="abnormalDuration != null">
+        ABNORMAL_DURATION = #{abnormalDuration,jdbcType=DECIMAL},
+      </if>
+      <if test="insertUsername != null">
+        INSERT_USERNAME = #{insertUsername,jdbcType=VARCHAR},
+      </if>
+      <if test="insertTime != null">
+        INSERT_TIME = #{insertTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateUsername != null">
+        UPDATE_USERNAME = #{updateUsername,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="insertUpdateRemark != null">
+        INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR},
+      </if>
+      <if test="abnormalCondition != null">
+        ABNORMAL_CONDITION = #{abnormalCondition,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where ABNORMAL_ID = #{abnormalId,jdbcType=DECIMAL}
+  </update>
+  <select id="selectByPrimaryKey" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
+    <include refid="select" />
+    where ABNORMAL_ID = #{abnormalId,jdbcType=DECIMAL}
+  </select>
+  <select id="selectByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
+    <include refid="select" />
+    <include refid="where" />
+  </select>
+  <select id="selectLikeByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
+    <include refid="select" />
+    <include refid="whereLike" />
+  </select>
+  <select id="selectMaxId" resultType="java.math.BigDecimal">
+  
+  </select>
+  <select id="getTotalIdByTripId" resultType="java.math.BigDecimal">
+     select RESULT_TOTAL_ID "totalId"
+    from TMSTRUCK_TOTAL_RESULT t_total
+           left join OMSTRUCK_ORDER o_order
+                     on t_total.ORDER_ID=o_order.ORDER_ID
+    where o_order.TRIP_ID = #{tripId} and o_order.ORDER_STATUS = 1
+  </select>
+  <insert id="batchInsert" parameterType="java.util.List">
+    insert into TMSTRUCK_ABNORMAL_RESULT 
+      (ABNORMAL_ID, 
+      RESULT_TOTAL_ID, ABNORMAL_TYPE, 
+      ABNORMAL_TIME, ABNORMAL_ADDRESS, 
+      ABNORMAL_DURATION, INSERT_USERNAME, 
+      INSERT_TIME, UPDATE_USERNAME, 
+      UPDATE_TIME, INSERT_UPDATE_REMARK, 
+      ABNORMAL_CONDITION)
+    ( <foreach collection="list" item="item" separator="union all"> 
+   select  
+      #{item.abnormalId,jdbcType=DECIMAL}, 
+      #{item.resultTotalId,jdbcType=DECIMAL}, #{item.abnormalType,jdbcType=DECIMAL}, 
+      #{item.abnormalTime,jdbcType=TIMESTAMP}, #{item.abnormalAddress,jdbcType=VARCHAR}, 
+      #{item.abnormalDuration,jdbcType=DECIMAL}, #{item.insertUsername,jdbcType=VARCHAR}, 
+      #{item.insertTime,jdbcType=TIMESTAMP}, #{item.updateUsername,jdbcType=VARCHAR}, 
+      #{item.updateTime,jdbcType=TIMESTAMP}, #{item.insertUpdateRemark,jdbcType=VARCHAR}, 
+      #{item.abnormalCondition,jdbcType=VARCHAR} from dual  
+   </foreach> )
+  </insert>
+  <update id="batchUpdate" parameterType="java.util.List">
+     update TMSTRUCK_ABNORMAL_RESULT
+     set
+       ABNORMAL_ID=
+       <foreach close="end" collection="list" index="index" item="item" open="case ABNORMAL_ID" separator=" ">
+          when #{item.abnormalId,jdbcType=DECIMAL} then #{item.abnormalId,jdbcType=DECIMAL}
+       </foreach>
+       ,RESULT_TOTAL_ID=
+       <foreach close="end" collection="list" index="index" item="item" open="case ABNORMAL_ID" separator=" ">
+          when #{item.abnormalId,jdbcType=DECIMAL} then #{item.resultTotalId,jdbcType=DECIMAL}
+       </foreach>
+       ,ABNORMAL_TYPE=
+       <foreach close="end" collection="list" index="index" item="item" open="case ABNORMAL_ID" separator=" ">
+          when #{item.abnormalId,jdbcType=DECIMAL} then #{item.abnormalType,jdbcType=DECIMAL}
+       </foreach>
+       ,ABNORMAL_TIME=
+       <foreach close="end" collection="list" index="index" item="item" open="case ABNORMAL_ID" separator=" ">
+          when #{item.abnormalId,jdbcType=DECIMAL} then #{item.abnormalTime,jdbcType=TIMESTAMP}
+       </foreach>
+       ,ABNORMAL_ADDRESS=
+       <foreach close="end" collection="list" index="index" item="item" open="case ABNORMAL_ID" separator=" ">
+          when #{item.abnormalId,jdbcType=DECIMAL} then #{item.abnormalAddress,jdbcType=VARCHAR}
+       </foreach>
+       ,ABNORMAL_DURATION=
+       <foreach close="end" collection="list" index="index" item="item" open="case ABNORMAL_ID" separator=" ">
+          when #{item.abnormalId,jdbcType=DECIMAL} then #{item.abnormalDuration,jdbcType=DECIMAL}
+       </foreach>
+       ,INSERT_USERNAME=
+       <foreach close="end" collection="list" index="index" item="item" open="case ABNORMAL_ID" separator=" ">
+          when #{item.abnormalId,jdbcType=DECIMAL} then #{item.insertUsername,jdbcType=VARCHAR}
+       </foreach>
+       ,INSERT_TIME=
+       <foreach close="end" collection="list" index="index" item="item" open="case ABNORMAL_ID" separator=" ">
+          when #{item.abnormalId,jdbcType=DECIMAL} then #{item.insertTime,jdbcType=TIMESTAMP}
+       </foreach>
+       ,UPDATE_USERNAME=
+       <foreach close="end" collection="list" index="index" item="item" open="case ABNORMAL_ID" separator=" ">
+          when #{item.abnormalId,jdbcType=DECIMAL} then #{item.updateUsername,jdbcType=VARCHAR}
+       </foreach>
+       ,UPDATE_TIME=
+       <foreach close="end" collection="list" index="index" item="item" open="case ABNORMAL_ID" separator=" ">
+          when #{item.abnormalId,jdbcType=DECIMAL} then #{item.updateTime,jdbcType=TIMESTAMP}
+       </foreach>
+       ,INSERT_UPDATE_REMARK=
+       <foreach close="end" collection="list" index="index" item="item" open="case ABNORMAL_ID" separator=" ">
+          when #{item.abnormalId,jdbcType=DECIMAL} then #{item.insertUpdateRemark,jdbcType=VARCHAR}
+       </foreach>
+       ,ABNORMAL_CONDITION=
+       <foreach close="end" collection="list" index="index" item="item" open="case ABNORMAL_ID" separator=" ">
+          when #{item.abnormalId,jdbcType=DECIMAL} then #{item.abnormalCondition,jdbcType=VARCHAR}
+       </foreach>
+     where ABNORMAL_ID in 
+     <foreach close=")" collection="list" index="index" item="item" open="(" separator=",">
+    #{item.abnormalId,jdbcType=DECIMAL}
+     </foreach> 
+  </update>
+  <delete id="batchDelete" parameterType="java.util.List">
+    delete from TMSTRUCK_ABNORMAL_RESULT
+    where ABNORMAL_ID in 
+    <foreach close=")" collection="list" item="id" open="(" separator=",">
+      #{id}
+    </foreach>
+  </delete>
+  <!-- 友情提示!!!-->
+  <!-- 请将自己写的代码放在此标签之下,方便以后粘贴复制。-->
+
+ 
+  
+</mapper>

Some files were not shown because too many files changed in this diff