Browse Source

Merge branch 'master' of http://47.100.3.209:3000/gdc/yiliangyiyun

ccjgmwz 4 years ago
parent
commit
70a22d0f8d
61 changed files with 3440 additions and 651 deletions
  1. 1 1
      winsea-haixin-platform-backend/src/main/resources/application-test.yml
  2. 0 4
      winsea-haixin-plugin-base/target/maven-archiver/pom.properties
  3. 0 68
      winsea-haixin-plugin-base/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  4. 0 52
      winsea-haixin-plugin-base/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  5. 0 4
      winsea-haixin-plugin-clouddisk/target/maven-archiver/pom.properties
  6. 0 22
      winsea-haixin-plugin-clouddisk/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  7. 0 17
      winsea-haixin-plugin-clouddisk/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  8. 0 4
      winsea-haixin-plugin-configuration/target/maven-archiver/pom.properties
  9. 0 31
      winsea-haixin-plugin-configuration/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  10. 0 24
      winsea-haixin-plugin-configuration/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  11. 0 4
      winsea-haixin-plugin-news/target/maven-archiver/pom.properties
  12. 0 103
      winsea-haixin-plugin-news/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  13. 0 89
      winsea-haixin-plugin-news/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  14. 0 4
      winsea-haixin-plugin-operation/target/maven-archiver/pom.properties
  15. 0 33
      winsea-haixin-plugin-operation/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  16. 0 28
      winsea-haixin-plugin-operation/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  17. 0 4
      winsea-haixin-plugin-servicer/target/maven-archiver/pom.properties
  18. 0 44
      winsea-haixin-plugin-servicer/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  19. 0 37
      winsea-haixin-plugin-servicer/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  20. 6 0
      winsea-haixin-plugin-yiliangyiyun/pom.xml
  21. 1 1
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/GeneratorCodeByTables.java
  22. 62 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/controller/CommonUserController.java
  23. 247 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/controller/NewWorkflowController.java
  24. 2 2
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/controller/WarehouseBaseInfoController.java
  25. 175 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/entity/CacheComponent.java
  26. 96 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/entity/CommonUser.java
  27. 2 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/entity/DriverViewInfo.java
  28. 4 2
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/entity/InOutWarehouseTask.java
  29. 4 2
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/entity/TranProcessInfo.java
  30. 15 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/AppServiceException.java
  31. 192 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/ExceptionDefinition.java
  32. 36 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/ServiceException.java
  33. 13 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/ServiceExceptionDefinition.java
  34. 17 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/ThirdPartServiceException.java
  35. 1 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/YExceptionEnum.java
  36. 19 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/mapper/CommonUserMapper.java
  37. 41 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/ICommonUserService.java
  38. 255 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/INewWorkflowService.java
  39. 1 1
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/ITranTaskInfoService.java
  40. 2 1
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/IWarehouseBaseInfoService.java
  41. 330 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/CommonUserServiceImpl.java
  42. 1 1
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/DriverViewInfoServiceImpl.java
  43. 96 41
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/InOutWarehouseTaskServiceImpl.java
  44. 1229 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/NewWorkflowServiceImpl.java
  45. 3 2
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/TranTaskInfoServiceImpl.java
  46. 68 6
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/WarehouseBaseInfoServiceImpl.java
  47. 46 1
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/WarehouseInOutInfoServiceImpl.java
  48. 98 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/AliyunSMSClient.java
  49. 37 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/Const.java
  50. 48 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/GeneratorUtil.java
  51. 44 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/MD5Util.java
  52. 45 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/MockSMSClient.java
  53. 82 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/QCloudSMSClient.java
  54. 19 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/SMSClient.java
  55. 15 0
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/SMSResult.java
  56. 1 1
      winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/workflow/InOutWharehoseTaskListener.java
  57. 18 0
      winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/CommonUserMapper.xml
  58. 46 7
      winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/InOutWarehouseTaskMapper.xml
  59. 8 4
      winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/TranProcessInfoMapper.xml
  60. 13 6
      winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/TranTaskInfoMapper.xml
  61. 1 0
      winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/WarehouseInOutInfoMapper.xml

+ 1 - 1
winsea-haixin-platform-backend/src/main/resources/application-test.yml

@@ -25,7 +25,7 @@ spring:
 
 auth:
   default-user-kind: STAFF
-  test-domain-name: hf
+  test-domain-name: YLYY
 bi:
   server:
     context-path: /WebReport/ReportServer

+ 0 - 4
winsea-haixin-plugin-base/target/maven-archiver/pom.properties

@@ -1,4 +0,0 @@
-#Created by Apache Maven 3.6.3
-version=0.7.0
-groupId=com.yh.haixin
-artifactId=winsea-haixin-plugin-base

+ 0 - 68
winsea-haixin-plugin-base/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -1,68 +0,0 @@
-com\winsea\svc\crew\entity\CrewSeafarerInfo.class
-com\winsea\svc\common\mq\MessageQueueConfig.class
-com\winsea\svc\crew\entity\CrewSeafarerInfo$QueryFields.class
-com\yh\saas\plugin\base\entity\view\ExportPrintStylesView$ExportPrintStylesViewBuilder.class
-com\yh\saas\plugin\base\entity\CommonBillOperateHis$QueryFields.class
-com\yh\saas\plugin\base\entity\bean\navigation\InBean$InfoBean.class
-com\winsea\svc\crew\service\ICrewSeafarerInfoService.class
-com\yh\saas\plugin\base\entity\CommonBillOperateHis.class
-com\yh\saas\plugin\base\entity\EOVDBillBasicDataInfo.class
-com\yh\saas\plugin\base\entity\view\ExportPrintStylesView.class
-com\winsea\svc\crew\entity\CrewSeafarerInfo$CrewSeafarerInfoBuilder.class
-com\yh\saas\plugin\base\entity\view\ExportCellStyleView$ExportCellStyleViewBuilder.class
-com\yh\saas\plugin\base\entity\view\ExportCellStyleView.class
-com\yh\saas\plugin\base\entity\bean\sparepart\SpInStoreBean.class
-com\yh\saas\plugin\base\service\impl\ExportCommonStylesImpl.class
-com\winsea\svc\common\international\InternationalSerializer.class
-com\yh\saas\plugin\base\entity\bean\material\PurMatApplInfoBean.class
-com\yh\saas\plugin\base\utils\ExcelCellAutoHeight.class
-com\yh\saas\plugin\base\entity\bean\material\ApplPurBean.class
-com\yh\saas\plugin\base\entity\bean\material\MatInStoreBean$InfoBean.class
-com\yh\saas\plugin\base\config\PluginBaseConfig.class
-com\yh\saas\plugin\base\entity\bean\navigation\InBean.class
-com\winsea\svc\common\config\WebConfig.class
-com\yh\saas\plugin\base\service\impl\CommonBillOperateHisServiceImpl.class
-com\yh\saas\plugin\base\entity\view\FinanceManageIncomeInfoView.class
-com\yh\saas\plugin\base\utils\CurrencyUtils.class
-com\yh\saas\plugin\base\entity\CommonBillOperateHis$CommonBillOperateHisBuilder.class
-com\winsea\svc\common\international\International.class
-com\winsea\svc\crew\entity\view\CrewSeafarerInfoView.class
-com\yh\saas\plugin\base\mapper\CommonBillOperateHisMapper.class
-com\yh\saas\plugin\base\entity\EOBase.class
-com\yh\saas\plugin\base\service\ICommonBillOperateHisService.class
-com\yh\saas\plugin\base\entity\EOXTAppendixInfo.class
-com\yh\saas\plugin\base\service\impl\CommonInfoImpl.class
-com\yh\saas\plugin\base\entity\bean\material\MatInStoreBean$DetailBean.class
-com\yh\saas\plugin\base\entity\view\CommonSoapView.class
-com\yh\saas\plugin\base\utils\ConvertUpMoney.class
-com\winsea\svc\common\mq\MessageListener.class
-com\yh\saas\plugin\base\entity\view\FinanceManageIncomeDetailView.class
-com\yh\saas\plugin\base\entity\bean\navigation\InBean$DetailBean.class
-com\yh\saas\plugin\base\entity\view\CommonFinanceCostSoapView.class
-com\alibaba\fastjson\support\spring\PropertyPreFilters.class
-com\winsea\svc\common\international\InternationalProperties$RequestLangParamPosition.class
-com\winsea\svc\common\config\MybatisPlusConfig.class
-com\winsea\svc\common\international\InternationalResourceProvider.class
-com\yh\saas\plugin\base\entity\bean\sparepart\PurSpApplInfoBean.class
-com\alibaba\fastjson\support\spring\PropertyPreFilters$MySimplePropertyPreFilter.class
-com\winsea\svc\common\international\InternationalResourceProviderAdapter.class
-com\yh\saas\plugin\base\utils\ExportCommonStyles.class
-com\winsea\svc\crew\constant\CrewSeafarerStatusEnum.class
-com\yh\saas\plugin\base\entity\bean\ApplBean.class
-com\yh\saas\plugin\base\entity\bean\sparepart\SpInStoreBean$InfoBean.class
-com\winsea\svc\common\config\WebConfig$1.class
-com\yh\saas\plugin\base\entity\bean\navigation\PurMapApplDetailBean.class
-com\yh\saas\plugin\base\entity\bean\navigation\PurMapApplInfoBean.class
-com\yh\saas\plugin\base\entity\bean\sparepart\SpInStoreBean$DetailBean.class
-com\winsea\svc\common\mq\MessageQueueClient.class
-com\yh\saas\plugin\base\entity\bean\navigation\ApplPurBean.class
-com\winsea\svc\common\config\MybatisPlusConfig$1.class
-com\winsea\svc\common\international\InternationalProperties.class
-com\winsea\svc\common\international\InternationalConfig.class
-com\winsea\svc\common\annotation\EnableService.class
-com\yh\saas\plugin\base\entity\bean\sparepart\PurSpApplDetailBean.class
-com\yh\saas\plugin\base\entity\bean\material\MatInStoreBean.class
-com\winsea\svc\common\config\CommonConfig.class
-com\yh\saas\plugin\base\entity\bean\material\PurMatApplDetailBean.class
-com\yh\saas\plugin\base\entity\bean\sparepart\ApplPurBean.class
-com\yh\saas\plugin\base\utils\DownFileZipUtils.class

+ 0 - 52
winsea-haixin-plugin-base/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -1,52 +0,0 @@
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\bean\sparepart\PurSpApplDetailBean.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\mapper\CommonBillOperateHisMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\bean\material\PurMatApplInfoBean.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\bean\material\PurMatApplDetailBean.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\bean\navigation\PurMapApplDetailBean.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\bean\sparepart\SpInStoreBean.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\CommonBillOperateHis.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\crew\service\ICrewSeafarerInfoService.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\EOBase.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\bean\navigation\ApplPurBean.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\bean\material\ApplPurBean.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\view\ExportCellStyleView.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\view\CommonFinanceCostSoapView.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\view\FinanceManageIncomeDetailView.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\utils\ExcelCellAutoHeight.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\config\PluginBaseConfig.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\common\international\International.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\service\impl\CommonInfoImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\alibaba\fastjson\support\spring\PropertyPreFilters.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\EOVDBillBasicDataInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\bean\ApplBean.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\common\config\WebConfig.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\common\international\InternationalConfig.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\crew\entity\CrewSeafarerInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\utils\ExportCommonStyles.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\common\international\InternationalResourceProviderAdapter.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\bean\navigation\InBean.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\common\mq\MessageQueueConfig.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\service\impl\ExportCommonStylesImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\common\config\MybatisPlusConfig.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\common\mq\MessageListener.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\utils\ConvertUpMoney.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\common\config\CommonConfig.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\bean\sparepart\ApplPurBean.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\bean\navigation\PurMapApplInfoBean.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\utils\CurrencyUtils.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\common\mq\MessageQueueClient.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\bean\material\MatInStoreBean.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\view\FinanceManageIncomeInfoView.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\common\international\InternationalProperties.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\service\ICommonBillOperateHisService.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\EOXTAppendixInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\view\ExportPrintStylesView.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\bean\sparepart\PurSpApplInfoBean.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\entity\view\CommonSoapView.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\crew\entity\view\CrewSeafarerInfoView.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\common\international\InternationalSerializer.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\crew\constant\CrewSeafarerStatusEnum.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\common\international\InternationalResourceProvider.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\winsea\svc\common\annotation\EnableService.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\service\impl\CommonBillOperateHisServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-base\src\main\java\com\yh\saas\plugin\base\utils\DownFileZipUtils.java

+ 0 - 4
winsea-haixin-plugin-clouddisk/target/maven-archiver/pom.properties

@@ -1,4 +0,0 @@
-#Created by Apache Maven 3.6.3
-version=0.7.0
-groupId=com.yh.haixin
-artifactId=winsea-haixin-plugin-clouddisk

+ 0 - 22
winsea-haixin-plugin-clouddisk/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -1,22 +0,0 @@
-com\yh\saas\plugin\clouddisk\service\impl\DataManagerFolderServiceImpl.class
-com\winsea\svc\clouddisk\annotation\DateTimeValidator.class
-com\yh\saas\plugin\clouddisk\entity\DataManagerFileInfo$QueryFields.class
-com\yh\saas\plugin\clouddisk\entity\DataManagerFolderFileView.class
-com\yh\saas\plugin\clouddisk\GeneratorCodeByTables.class
-com\winsea\svc\clouddisk\annotation\DateTime.class
-com\yh\saas\plugin\clouddisk\service\IDataManagerFolderService.class
-com\yh\saas\plugin\clouddisk\exception\DataManagerException.class
-com\yh\saas\plugin\clouddisk\GeneratorCodeByTables$MyAutoGenerator.class
-com\yh\saas\plugin\clouddisk\service\IDataManagerFileService.class
-com\yh\saas\plugin\clouddisk\config\CloudDiskConfig.class
-com\yh\saas\plugin\clouddisk\controller\DataManagerFileController.class
-com\yh\saas\plugin\clouddisk\mapper\DataManagerFileMapper.class
-com\yh\saas\plugin\clouddisk\entity\DataManagerFileInfo.class
-com\yh\saas\plugin\clouddisk\mapper\DataManagerFolderMapper.class
-com\yh\saas\plugin\clouddisk\controller\DataManagerFolderController.class
-com\yh\saas\plugin\clouddisk\entity\DataManagerFolder$QueryFields.class
-com\yh\saas\plugin\clouddisk\GeneratorCodeByTables$1.class
-com\yh\saas\plugin\clouddisk\GeneratorCodeByTables$2.class
-com\yh\saas\plugin\clouddisk\service\impl\DataManagerFileServiceImpl.class
-com\yh\saas\plugin\clouddisk\entity\DataManagerFolder.class
-com\yh\saas\plugin\clouddisk\exception\DataManagerExceptionEnums.class

+ 0 - 17
winsea-haixin-plugin-clouddisk/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -1,17 +0,0 @@
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\service\impl\DataManagerFolderServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\entity\DataManagerFolder.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\entity\DataManagerFileInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\mapper\DataManagerFolderMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\service\impl\DataManagerFileServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\annotation\DateTimeValidator.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\entity\DataManagerFolderFileView.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\controller\DataManagerFolderController.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\controller\DataManagerFileController.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\mapper\DataManagerFileMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\service\IDataManagerFolderService.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\config\CloudDiskConfig.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\exception\DataManagerException.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\exception\DataManagerExceptionEnums.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\annotation\DateTime.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\GeneratorCodeByTables.java
-E:\yiliangyiyun\winsea-haixin-plugin-clouddisk\src\main\java\com\yh\saas\plugin\clouddisk\service\IDataManagerFileService.java

+ 0 - 4
winsea-haixin-plugin-configuration/target/maven-archiver/pom.properties

@@ -1,4 +0,0 @@
-#Created by Apache Maven 3.6.3
-version=0.7.0
-groupId=com.yh.haixin
-artifactId=winsea-haixin-plugin-configuration

+ 0 - 31
winsea-haixin-plugin-configuration/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -1,31 +0,0 @@
-com\yh\saas\plugin\configuration\announcement\entity\AnnoTypeInfo.class
-com\yh\saas\plugin\configuration\announcement\service\IAnnoIssueInfoService.class
-com\yh\saas\plugin\configuration\announcement\entity\AnnoIssueInfo$QueryFiles.class
-com\yh\saas\plugin\configuration\announcement\mapper\AnnoTypeInfoMapper.class
-com\yh\saas\plugin\configuration\announcement\entity\Recipient.class
-com\yh\saas\plugin\configuration\announcement\entity\AnnoTypeInfo$QueryFiles.class
-com\yh\saas\plugin\configuration\GeneratorCodeByTables$2.class
-com\yh\saas\plugin\configuration\vessel\controller\SystemVesselController.class
-com\yh\saas\plugin\configuration\announcement\service\impl\AnnoTypeInfoServiceImpl.class
-com\yh\saas\plugin\configuration\announcement\controller\AnnoTypeInfoController.class
-com\yh\saas\plugin\configuration\GeneratorCodeByTables$1.class
-com\yh\saas\plugin\configuration\announcement\entity\AnnoReadUserInfo$QueryFiles.class
-com\yh\saas\plugin\configuration\announcement\entity\AnnoIssueInfo.class
-com\yh\saas\plugin\configuration\announcement\service\IAnnoReadUserInfoService.class
-com\yh\saas\plugin\configuration\GeneratorCodeByTables$MyAutoGenerator.class
-com\yh\saas\plugin\configuration\basic\controller\DutyBasicController.class
-com\yh\saas\plugin\configuration\announcement\entity\AnnoTypeInfo$OrderFiles.class
-com\yh\saas\plugin\configuration\config\ConfigurationConfig.class
-com\yh\saas\plugin\configuration\announcement\service\impl\AnnoIssueInfoServiceImpl.class
-com\yh\saas\plugin\configuration\exception\EnterpriseErrorCodeEnums.class
-com\yh\saas\plugin\configuration\announcement\entity\view\DeptStaffTreeView.class
-com\yh\saas\plugin\configuration\announcement\service\IAnnoTypeInfoService.class
-com\yh\saas\plugin\configuration\GeneratorCodeByTables.class
-com\yh\saas\plugin\configuration\vessel\service\imp\SystemVesselServiceImpl.class
-com\yh\saas\plugin\configuration\announcement\controller\AnnoIssueInfoController.class
-com\yh\saas\plugin\configuration\announcement\mapper\AnnoReadUserInfoMapper.class
-com\yh\saas\plugin\configuration\announcement\entity\AnnoReadUserInfo.class
-com\yh\saas\plugin\configuration\vessel\service\ISystemVesselService.class
-com\yh\saas\plugin\configuration\announcement\mapper\AnnoIssueInfoMapper.class
-com\yh\saas\plugin\configuration\exception\EnterpriseException.class
-com\yh\saas\plugin\configuration\announcement\service\impl\AnnoReadUserInfoServiceImpl.class

+ 0 - 24
winsea-haixin-plugin-configuration/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -1,24 +0,0 @@
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\service\IAnnoIssueInfoService.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\service\IAnnoReadUserInfoService.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\service\impl\AnnoReadUserInfoServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\mapper\AnnoTypeInfoMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\vessel\service\ISystemVesselService.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\exception\EnterpriseException.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\service\impl\AnnoTypeInfoServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\vessel\controller\SystemVesselController.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\entity\AnnoReadUserInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\vessel\service\imp\SystemVesselServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\entity\AnnoIssueInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\exception\EnterpriseErrorCodeEnums.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\mapper\AnnoIssueInfoMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\basic\controller\DutyBasicController.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\entity\view\DeptStaffTreeView.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\entity\Recipient.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\entity\AnnoTypeInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\service\impl\AnnoIssueInfoServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\controller\AnnoTypeInfoController.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\mapper\AnnoReadUserInfoMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\config\ConfigurationConfig.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\GeneratorCodeByTables.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\controller\AnnoIssueInfoController.java
-E:\yiliangyiyun\winsea-haixin-plugin-configuration\src\main\java\com\yh\saas\plugin\configuration\announcement\service\IAnnoTypeInfoService.java

+ 0 - 4
winsea-haixin-plugin-news/target/maven-archiver/pom.properties

@@ -1,4 +0,0 @@
-#Created by Apache Maven 3.6.3
-version=0.7.0
-groupId=com.yh.haixin
-artifactId=winsea-haixin-plugin-news

+ 0 - 103
winsea-haixin-plugin-news/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -1,103 +0,0 @@
-com\yh\saas\plugin\news\mapper\NewsBasicParameterCompanyMapper.class
-com\yh\saas\plugin\news\mapper\NationalityMapper.class
-com\yh\saas\plugin\news\service\INewsAnnoReadUserInfoService.class
-com\yh\saas\plugin\news\entity\Recipient.class
-com\yh\saas\plugin\news\entity\AnnoReadUserInfo.class
-com\yh\saas\plugin\news\entity\AnnoTypeInfo.class
-com\yh\saas\plugin\news\entity\CommonAnnouncementIssueInfo$QueryFields.class
-com\yh\saas\plugin\news\entity\NewsBasicParameterCompany.class
-com\yh\saas\plugin\news\service\impl\NewsAnnoIssueInfoServiceImpl.class
-com\yh\saas\plugin\news\controller\NationalityController.class
-com\yh\saas\plugin\news\service\impl\NewsAnnoTypeInfoServiceImpl.class
-com\yh\saas\plugin\news\service\impl\NationalityServiceImpl.class
-com\yh\saas\plugin\news\controller\NewsCircularManagementReceiveController.class
-com\yh\saas\plugin\news\command\CircularManagementCommand.class
-com\yh\saas\plugin\news\command\CircularManagementInfoSearchCommand.class
-com\yh\saas\plugin\news\service\INewsCircularManagementReceiveService.class
-com\yh\saas\plugin\news\service\INewsAnnoReadUserLikeService.class
-com\yh\saas\plugin\news\service\INewsParameterCompanyService.class
-com\yh\saas\plugin\news\mapper\NewsCircularManagementReceiveMapper.class
-com\yh\saas\plugin\news\annotation\DateTime.class
-com\yh\saas\plugin\news\util\thread\ObservableRunnable$RunnableEvent.class
-com\yh\saas\plugin\news\enums\NewsEnums.class
-com\yh\saas\plugin\news\service\impl\ExchangeRateServiceImpl.class
-com\yh\saas\plugin\news\service\IExchangeRateService.class
-com\yh\saas\plugin\news\enums\NewsExceptionEnums.class
-com\yh\saas\plugin\news\service\INewsAnnoTypeInfoService.class
-com\yh\saas\plugin\news\command\CircularManagementInfoSaveCommand.class
-com\yh\saas\plugin\news\exception\NewsException.class
-com\yh\saas\plugin\news\mapper\NewsParameterCompanyMapper.class
-com\yh\saas\plugin\news\service\impl\NewsCircularManagementInfoServiceImpl.class
-com\yh\saas\plugin\news\mapper\NewsAnnoReadUserInfoMapper.class
-com\yh\saas\plugin\news\entity\CommonNationality$QueryFields.class
-com\yh\saas\plugin\news\mapper\NewsCircularManagementInfoMapper.class
-com\yh\saas\plugin\news\service\INationalityService.class
-com\yh\saas\plugin\news\service\INewsBasicParameterCompanyService.class
-com\yh\saas\plugin\news\command\CircularManagementReceiveCommand.class
-com\yh\saas\plugin\news\service\impl\NewsParameterCompanyServiceImpl.class
-com\yh\saas\plugin\news\vo\CircularManagementReceiveVo.class
-com\yh\saas\plugin\news\constant\CircularConstant.class
-com\yh\saas\plugin\news\entity\ExchangeRate.class
-com\yh\saas\plugin\news\entity\OperationHis.class
-com\yh\saas\plugin\news\vo\ParameterCompanyVo.class
-com\yh\saas\plugin\news\enums\CircularStatusEnum.class
-com\yh\saas\plugin\news\entity\CommonAnnouncementIssueInfo.class
-com\yh\saas\plugin\news\service\IAnnoIssueInfoService.class
-com\yh\saas\plugin\news\entity\AnnoIssueInfo$QueryFiles.class
-com\yh\saas\plugin\news\service\impl\NewsAnnouncementInfoServiceImpl.class
-com\yh\saas\plugin\news\entity\view\DeptStaffTreeView.class
-com\yh\saas\plugin\news\entity\CircularManagementInfo$QueryFields.class
-com\yh\saas\plugin\news\service\impl\NewsAnnoReadUserInfoServiceImpl.class
-com\yh\saas\plugin\news\mapper\NewsOperationHisMapper.class
-com\yh\saas\plugin\news\util\thread\ObservableRunnable$RunnableState.class
-com\yh\saas\plugin\news\entity\AnnoReadUserLike$QueryFiles.class
-com\yh\saas\plugin\news\entity\AnnoTypeInfo$QueryFiles.class
-com\yh\saas\plugin\news\controller\NewsAnnoTypeInfoController.class
-com\yh\saas\plugin\news\service\impl\NewsCircularManagementReceiveServiceImpl.class
-com\yh\saas\plugin\news\util\HtmlUtil.class
-com\yh\saas\plugin\news\util\thread\ThreadLifeCycleClient.class
-com\yh\saas\plugin\news\controller\NewsAnnoIssueInfoController.class
-com\yh\saas\plugin\news\vo\CircularManagementInfoVo.class
-com\yh\saas\plugin\news\service\INewsOperationHisService.class
-com\yh\saas\plugin\news\controller\NewsCommonAnnIssueInfoController.class
-com\yh\saas\plugin\news\service\impl\NewsAnnoReadUserLikeServiceImpl.class
-com\yh\saas\plugin\news\mapper\NewsAnnoReadUserLikeMapper.class
-com\yh\saas\plugin\news\annotation\DateTimeValidator.class
-com\yh\saas\plugin\news\service\impl\NewsBasicParameterCompanyServiceImpl.class
-com\yh\saas\plugin\news\command\CircularManagementInfoSendCommand.class
-com\yh\saas\plugin\news\util\thread\ThreadLifeCycleObserver.class
-com\yh\saas\plugin\news\controller\NewsCircularManagementInfoController.class
-com\yh\saas\plugin\news\entity\CircularManagementReceive.class
-com\yh\saas\plugin\news\entity\ParameterCompany$QueryFields.class
-com\yh\saas\plugin\news\util\thread\LifeCycleListener.class
-com\yh\saas\plugin\news\entity\OperationHis$QueryFields.class
-com\yh\saas\plugin\news\controller\NewsExchangeRateController.class
-com\yh\saas\plugin\news\entity\view\ExchangeRateView.class
-com\yh\saas\plugin\news\config\NewsConfig.class
-com\yh\saas\plugin\news\util\thread\ObservableRunnable.class
-com\yh\saas\plugin\news\vo\OperationHisVo.class
-com\yh\saas\plugin\news\mapper\NewsAnnoIssueInfoMapper.class
-com\yh\saas\plugin\news\entity\AnnoIssueInfo.class
-com\yh\saas\plugin\news\entity\AnnoReadUserLike.class
-com\yh\saas\plugin\news\entity\CommonNationality.class
-com\yh\saas\plugin\news\util\thread\ExcelCellAutoHeight.class
-com\yh\saas\plugin\news\entity\CircularManagementReceive$QueryFields.class
-com\yh\saas\plugin\news\mapper\ExchangeRateMapper.class
-com\yh\saas\plugin\news\controller\NewsAnnoReadUserLikeController.class
-com\yh\saas\plugin\news\entity\AnnoTypeInfo$OrderFiles.class
-com\yh\saas\plugin\news\service\INewsAnnouncementInfoService.class
-com\yh\saas\plugin\news\entity\CircularManagementInfo.class
-com\yh\saas\plugin\news\command\CircularManagementReceiveSearchCommand.class
-com\yh\saas\plugin\news\controller\NewsParameterCompanyController.class
-com\yh\saas\plugin\news\entity\ParameterCompany.class
-com\yh\saas\plugin\news\mapper\NewsAnnouncementIssueInfoMapper.class
-com\yh\saas\plugin\news\service\INewsCircularManagementInfoService.class
-com\yh\saas\plugin\news\mapper\NewsAnnoTypeInfoMapper.class
-com\yh\saas\plugin\news\entity\ExchangeRate$QueryFileds.class
-com\yh\saas\plugin\news\vo\DeptInfoVo.class
-com\yh\saas\plugin\news\command\ParameterCompanyCommand.class
-com\yh\saas\plugin\news\exception\EnterpriseErrorCodeEnums.class
-com\yh\saas\plugin\news\service\impl\NewsOperationHisServiceImpl.class
-com\yh\saas\plugin\news\enums\DefaultNewsEnums.class
-com\yh\saas\plugin\news\exception\EnterpriseException.class
-com\yh\saas\plugin\news\entity\AnnoReadUserInfo$QueryFiles.class

+ 0 - 89
winsea-haixin-plugin-news/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -1,89 +0,0 @@
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\INewsAnnoTypeInfoService.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\controller\NewsAnnoTypeInfoController.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\NewsBasicParameterCompany.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\util\thread\ThreadLifeCycleObserver.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\command\CircularManagementReceiveSearchCommand.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\mapper\NewsCircularManagementInfoMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\IExchangeRateService.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\command\ParameterCompanyCommand.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\util\HtmlUtil.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\vo\DeptInfoVo.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\Recipient.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\view\DeptStaffTreeView.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\CommonNationality.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\mapper\NewsParameterCompanyMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\vo\ParameterCompanyVo.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\mapper\NewsAnnoIssueInfoMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\annotation\DateTimeValidator.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\controller\NewsExchangeRateController.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\impl\NewsAnnoReadUserLikeServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\impl\NewsAnnoIssueInfoServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\INewsOperationHisService.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\controller\NewsCommonAnnIssueInfoController.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\AnnoReadUserLike.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\CircularManagementReceive.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\vo\CircularManagementReceiveVo.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\INewsAnnouncementInfoService.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\impl\ExchangeRateServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\vo\CircularManagementInfoVo.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\exception\EnterpriseErrorCodeEnums.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\INationalityService.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\util\thread\ExcelCellAutoHeight.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\enums\NewsExceptionEnums.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\INewsCircularManagementReceiveService.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\config\NewsConfig.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\controller\NewsAnnoIssueInfoController.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\impl\NewsCircularManagementInfoServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\ParameterCompany.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\enums\DefaultNewsEnums.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\mapper\NewsAnnouncementIssueInfoMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\ExchangeRate.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\impl\NewsAnnouncementInfoServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\util\thread\ObservableRunnable.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\OperationHis.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\constant\CircularConstant.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\command\CircularManagementInfoSaveCommand.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\impl\NewsAnnoReadUserInfoServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\controller\NationalityController.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\command\CircularManagementCommand.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\command\CircularManagementInfoSendCommand.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\CircularManagementInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\mapper\NewsCircularManagementReceiveMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\controller\NewsParameterCompanyController.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\AnnoReadUserInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\view\ExchangeRateView.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\command\CircularManagementInfoSearchCommand.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\impl\NewsParameterCompanyServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\AnnoIssueInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\mapper\NewsBasicParameterCompanyMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\impl\NewsBasicParameterCompanyServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\mapper\NewsAnnoReadUserInfoMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\INewsBasicParameterCompanyService.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\INewsAnnoReadUserInfoService.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\CommonAnnouncementIssueInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\INewsCircularManagementInfoService.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\annotation\DateTime.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\enums\NewsEnums.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\command\CircularManagementReceiveCommand.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\impl\NewsCircularManagementReceiveServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\util\thread\ThreadLifeCycleClient.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\impl\NewsOperationHisServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\exception\EnterpriseException.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\enums\CircularStatusEnum.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\mapper\NewsAnnoTypeInfoMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\impl\NationalityServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\controller\NewsCircularManagementReceiveController.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\impl\NewsAnnoTypeInfoServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\controller\NewsCircularManagementInfoController.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\mapper\ExchangeRateMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\util\thread\LifeCycleListener.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\entity\AnnoTypeInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\mapper\NewsAnnoReadUserLikeMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\controller\NewsAnnoReadUserLikeController.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\mapper\NationalityMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\exception\NewsException.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\INewsAnnoReadUserLikeService.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\vo\OperationHisVo.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\IAnnoIssueInfoService.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\mapper\NewsOperationHisMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-news\src\main\java\com\yh\saas\plugin\news\service\INewsParameterCompanyService.java

+ 0 - 4
winsea-haixin-plugin-operation/target/maven-archiver/pom.properties

@@ -1,4 +0,0 @@
-#Created by Apache Maven 3.6.3
-version=0.7.0
-groupId=com.yh.haixin
-artifactId=winsea-haixin-plugin-operation

+ 0 - 33
winsea-haixin-plugin-operation/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -1,33 +0,0 @@
-com\yh\saas\plugin\operation\service\impl\OperationTenantServiceImpl.class
-com\yh\saas\plugin\operation\controller\OperatorController.class
-com\yh\saas\plugin\operation\exception\OperationErrorCodeEnums.class
-com\yh\saas\plugin\operation\service\IOperatorService.class
-com\yh\saas\plugin\operation\entity\CommonTenant$QueryFields.class
-com\yh\saas\plugin\operation\entity\TenantOperateHis.class
-com\yh\saas\plugin\operation\service\IOperateHisService.class
-com\yh\saas\plugin\operation\entity\CommonTenant$SERVICE_TYPE_STATUS.class
-com\yh\saas\plugin\operation\controller\OperationParameterPluginController.class
-com\yh\saas\plugin\operation\entity\CommonOperator$QueryFields.class
-com\yh\saas\plugin\operation\config\OperationConfig.class
-com\yh\saas\plugin\operation\controller\TenantController.class
-com\yh\saas\plugin\operation\entity\TenantOperateHis$QueryFields.class
-com\yh\saas\plugin\operation\mapper\OperatorMapper.class
-com\yh\saas\plugin\operation\enums\TenantStatusEnums.class
-com\yh\saas\plugin\operation\entity\CommonOperator.class
-com\yh\saas\plugin\operation\entity\CommonTenant$TENANT_SOURCE.class
-com\yh\saas\plugin\operation\service\impl\VisitorRegisterServiceImpl.class
-com\yh\saas\plugin\operation\controller\TrialTenantController.class
-com\yh\saas\plugin\operation\service\IOperationTenantService.class
-com\yh\saas\plugin\operation\controller\TenantOprateHisController.class
-com\yh\saas\plugin\operation\qo\TenantQO.class
-com\yh\saas\plugin\operation\qo\ResourceGroupQO.class
-com\yh\saas\plugin\operation\controller\OperationTenantPluginController.class
-com\yh\saas\plugin\operation\qo\OperatorQO.class
-com\yh\saas\plugin\operation\controller\OperationTenantServiceController.class
-com\yh\saas\plugin\operation\controller\VisitorRegisterController.class
-com\yh\saas\plugin\operation\service\impl\OperateHisServiceImpl.class
-com\yh\saas\plugin\operation\entity\CommonTenant.class
-com\yh\saas\plugin\operation\service\impl\OperatorPluginServiceImpl.class
-com\yh\saas\plugin\operation\mapper\OperateHisMapper.class
-com\yh\saas\plugin\operation\exception\OperationException.class
-com\yh\saas\plugin\operation\service\IVisitorRegisterService.class

+ 0 - 28
winsea-haixin-plugin-operation/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -1,28 +0,0 @@
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\enums\TenantStatusEnums.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\controller\OperationTenantServiceController.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\exception\OperationErrorCodeEnums.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\entity\CommonOperator.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\service\impl\OperatorPluginServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\controller\TenantController.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\qo\OperatorQO.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\controller\TenantOprateHisController.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\service\IVisitorRegisterService.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\service\IOperationTenantService.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\mapper\OperateHisMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\controller\OperationParameterPluginController.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\entity\CommonTenant.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\service\IOperatorService.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\config\OperationConfig.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\controller\TrialTenantController.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\controller\VisitorRegisterController.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\qo\ResourceGroupQO.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\service\impl\OperateHisServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\service\impl\VisitorRegisterServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\controller\OperationTenantPluginController.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\controller\OperatorController.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\entity\TenantOperateHis.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\mapper\OperatorMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\exception\OperationException.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\service\impl\OperationTenantServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\qo\TenantQO.java
-E:\yiliangyiyun\winsea-haixin-plugin-operation\src\main\java\com\yh\saas\plugin\operation\service\IOperateHisService.java

+ 0 - 4
winsea-haixin-plugin-servicer/target/maven-archiver/pom.properties

@@ -1,4 +0,0 @@
-#Created by Apache Maven 3.6.3
-version=0.7.0
-groupId=com.yh.haixin
-artifactId=winsea-haixin-plugin-servicer

+ 0 - 44
winsea-haixin-plugin-servicer/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -1,44 +0,0 @@
-com\yh\saas\plugin\servicer\entity\ServicerMerchantBankInfo$QueryFields.class
-com\yh\saas\plugin\servicer\entity\ServicerMerchantContactsInfo$QueryFields.class
-com\yh\saas\plugin\servicer\annotation\DateTimeValidator.class
-com\yh\saas\plugin\servicer\constant\ServicerVariable.class
-com\yh\saas\plugin\servicer\service\impl\ServicerMerchantBankInfoServiceImpl.class
-com\yh\saas\plugin\servicer\ws\client\SupplyWsClientAuthHandler.class
-com\yh\saas\plugin\servicer\constant\ServicerWorkFlow.class
-com\yh\saas\plugin\supply\servicer\entity\SupplyServicerMerchantInfo.class
-com\yh\saas\plugin\supply\servicer\service\ISupplyServicerMerchantContactsInfoService.class
-com\yh\saas\plugin\servicer\service\IServicerMerchantBankInfoService.class
-com\yh\saas\plugin\supply\servicer\entity\SupplyServicerMerchantBankInfo.class
-com\yh\saas\plugin\servicer\mapper\ServicerMerchantContactsInfoMapper.class
-com\yh\saas\plugin\servicer\entity\ServicerMerchantInfo$QueryFields.class
-com\yh\saas\plugin\servicer\exception\ServicerExceptionEnum.class
-com\yh\saas\plugin\servicer\workflow\ServicerMerchantInfoListener.class
-com\yh\saas\plugin\servicer\exception\ServicerException.class
-com\yh\saas\plugin\servicer\entity\ServicerMerchantBankInfo.class
-com\yh\saas\plugin\servicer\annotation\DateTime.class
-com\yh\saas\plugin\servicer\ws\client\SupplyWebServiceClient.class
-com\yh\saas\plugin\servicer\service\impl\ServicerBillOperateHisServiceImpl.class
-com\yh\saas\plugin\supply\servicer\entity\SupplyServicerMerchantBankInfo$QueryFields.class
-com\yh\saas\plugin\servicer\entity\ServicerBillOperateHis$QueryFields.class
-com\yh\saas\plugin\servicer\entity\view\ServicerView.class
-com\yh\saas\plugin\servicer\mapper\ServicerBillOperateHisMapper.class
-com\yh\saas\plugin\servicer\service\IServicerMerchantInfoService.class
-com\yh\saas\plugin\servicer\constant\ServicerFeatureConstant.class
-com\yh\saas\plugin\servicer\config\ServiceConfig.class
-com\yh\saas\plugin\servicer\service\IServicerMerchantContactsInfoService.class
-com\yh\saas\plugin\servicer\enums\ServicerStatusEnum.class
-com\yh\saas\plugin\servicer\entity\ServicerMerchantInfo.class
-com\yh\saas\plugin\servicer\service\impl\ServicerMerchantContactsInfoServiceImpl.class
-com\yh\saas\plugin\servicer\service\impl\ServicerMerchantInfoServiceImpl.class
-com\yh\saas\plugin\supply\servicer\service\ISupplyServicerMerchantInfoService.class
-com\yh\saas\plugin\supply\servicer\entity\SupplyServicerMerchantInfo$QueryFields.class
-com\yh\saas\plugin\servicer\entity\ServicerMerchantContactsInfo.class
-com\yh\saas\plugin\supply\servicer\service\ISupplyServicerMerchantBankInfoService.class
-com\yh\saas\plugin\supply\servicer\entity\SupplyServicerMerchantContactsInfo$QueryFields.class
-com\yh\saas\plugin\supply\servicer\entity\view\ServicerView.class
-com\yh\saas\plugin\servicer\mapper\ServicerMerchantInfoMapper.class
-com\yh\saas\plugin\servicer\mapper\ServicerMerchantBankInfoMapper.class
-com\yh\saas\plugin\servicer\service\IServicerBillOperateHisService.class
-com\yh\saas\plugin\supply\servicer\entity\SupplyServicerMerchantContactsInfo.class
-com\yh\saas\plugin\servicer\controller\ServicerMerchantInfoController.class
-com\yh\saas\plugin\servicer\entity\ServicerBillOperateHis.class

+ 0 - 37
winsea-haixin-plugin-servicer/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -1,37 +0,0 @@
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\exception\ServicerExceptionEnum.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\service\IServicerBillOperateHisService.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\service\impl\ServicerMerchantContactsInfoServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\entity\ServicerMerchantContactsInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\entity\ServicerMerchantInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\supply\servicer\service\ISupplyServicerMerchantBankInfoService.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\constant\ServicerWorkFlow.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\enums\ServicerStatusEnum.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\config\ServiceConfig.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\ws\client\SupplyWsClientAuthHandler.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\controller\ServicerMerchantInfoController.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\mapper\ServicerBillOperateHisMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\mapper\ServicerMerchantBankInfoMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\annotation\DateTimeValidator.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\mapper\ServicerMerchantInfoMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\supply\servicer\entity\view\ServicerView.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\constant\ServicerFeatureConstant.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\supply\servicer\entity\SupplyServicerMerchantContactsInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\mapper\ServicerMerchantContactsInfoMapper.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\supply\servicer\service\ISupplyServicerMerchantInfoService.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\supply\servicer\service\ISupplyServicerMerchantContactsInfoService.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\entity\ServicerMerchantBankInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\service\impl\ServicerMerchantInfoServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\service\IServicerMerchantContactsInfoService.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\ws\client\SupplyWebServiceClient.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\supply\servicer\entity\SupplyServicerMerchantInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\exception\ServicerException.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\service\IServicerMerchantBankInfoService.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\service\impl\ServicerMerchantBankInfoServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\annotation\DateTime.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\workflow\ServicerMerchantInfoListener.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\entity\ServicerBillOperateHis.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\service\impl\ServicerBillOperateHisServiceImpl.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\supply\servicer\entity\SupplyServicerMerchantBankInfo.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\constant\ServicerVariable.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\entity\view\ServicerView.java
-E:\yiliangyiyun\winsea-haixin-plugin-servicer\src\main\java\com\yh\saas\plugin\servicer\service\IServicerMerchantInfoService.java

+ 6 - 0
winsea-haixin-plugin-yiliangyiyun/pom.xml

@@ -42,6 +42,12 @@
             <artifactId>japidocs</artifactId>
             <version>1.4.3</version>
         </dependency>
+        <!-- 良心云 sms -->
+        <dependency>
+            <groupId>com.github.qcloudsms</groupId>
+            <artifactId>qcloudsms</artifactId>
+            <version>1.0.5</version>
+        </dependency>
     </dependencies>
 
 

+ 1 - 1
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/GeneratorCodeByTables.java

@@ -53,7 +53,7 @@ public class GeneratorCodeByTables {
     }
 
     public static void main(String[] args) throws IOException {
-        generateByTables("Gongdc", "com.yh.saas.plugin.yiliangyiyun","in_out_warehouse_task");
+        generateByTables("Gongdc", "com.yh.saas.plugin.yiliangyiyun","common_user");
     }
 
     /**

+ 62 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/controller/CommonUserController.java

@@ -0,0 +1,62 @@
+package com.yh.saas.plugin.yiliangyiyun.controller;
+
+
+import com.yh.saas.plugin.yiliangyiyun.entity.CommonUser;
+import com.yh.saas.plugin.yiliangyiyun.exception.ServiceException;
+import com.yh.saas.plugin.yiliangyiyun.service.ICommonUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Gongdc
+ * @since 2021-07-12
+ */
+@RestController
+@RequestMapping("/commonUser")
+public class CommonUserController {
+
+    @Autowired
+    private ICommonUserService commonUserService;
+
+
+    /**
+     * 注册
+     * @param commonUser
+     * @return
+     */
+    @PostMapping("/register")
+    public  String register(CommonUser commonUser) throws ServiceException {
+        return commonUserService.register(commonUser);
+    }
+
+    /**
+     * 发送验证码
+     * @param phone
+     * @return
+     * @throws ServiceException
+     */
+    @GetMapping("/sendVerifyCode")
+    public  String sendVerifyCode(String phone) throws ServiceException {
+        return commonUserService.sendVerifyCode(phone);
+    }
+
+    /**
+     * 发送验证码
+     * @param commonUser
+     * @return
+     * @throws ServiceException
+     */
+    @GetMapping("/login")
+    public CommonUser login(CommonUser commonUser) throws ServiceException {
+        return commonUserService.login(commonUser);
+    }
+}
+

+ 247 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/controller/NewWorkflowController.java

@@ -0,0 +1,247 @@
+package com.yh.saas.plugin.yiliangyiyun.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.winsea.svc.base.security.util.AuthSecurityUtils;
+import com.winsea.svc.base.workflow.entity.Workflow;
+import com.yh.saas.common.support.util.StringUtils;
+import com.yh.saas.plugin.yiliangyiyun.service.INewWorkflowService;
+import com.yh.saas.toolkit.workflow.command.WorkflowCommand;
+import com.yh.saas.toolkit.workflow.service.IWorkflowService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StreamUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 工作流API
+ *
+ * @author gdc
+ */
+@RequestMapping("/newWorkflow")
+@RestController
+public class NewWorkflowController {
+
+    @Autowired
+    private HttpServletResponse response;
+
+    @Autowired
+    private INewWorkflowService workflowService;
+
+    /**
+     * 创建工作流
+     *
+     * @param workflow 工作流对象
+     * @return 工作流ID
+     */
+    @PostMapping("/api/create")
+    public String create(@RequestBody Workflow workflow) {
+        if (StringUtils.isEmpty(workflow.getCompId())) {
+            workflow.setCompId(AuthSecurityUtils.getCurrentUserInfo().getCompId());
+        }
+        return workflowService.create(workflow);
+    }
+
+    /**
+     * 修改工作流信息
+     *
+     * @param workflow 工作流对象
+     * @return 工作流ID
+     */
+    @PostMapping("/api/changeInfo")
+    public String changeInfo(@RequestBody Workflow workflow) {
+        if (StringUtils.isEmpty(workflow.getCompId())) {
+            workflow.setCompId(AuthSecurityUtils.getCurrentUserInfo().getCompId());
+        }
+        return workflowService.changeInfo(workflow);
+    }
+
+    /**
+     * 开始工作流
+     *
+     * @param command 开始命令
+     */
+    @PostMapping("/api/startInstance")
+    public void startInstance(@RequestBody WorkflowCommand.StartInstance command) {
+        workflowService.startInstance(command.getWorkflowId(), command.getBusinessKey());
+    }
+
+    /**
+     * 激活工作流
+     *
+     * @param command 激活命令
+     */
+    @PostMapping("/api/activateInstance")
+    public void activateInstance(@RequestBody WorkflowCommand.ActivateInstance command) {
+        workflowService.activateInstance(command.getWorkflowId(), command.getBusinessKey());
+    }
+
+    /**
+     * 挂起工作流
+     *
+     * @param command 挂起命令
+     */
+    @PostMapping("/api/suspendInstance")
+    public void suspendInstance(@RequestBody WorkflowCommand.SuspendInstance command) {
+        workflowService.suspendInstance(command.getWorkflowId(), command.getBusinessKey());
+    }
+
+    /**
+     * 签收
+     *
+     * @param command 签收命令
+     */
+    @PostMapping("/api/claim")
+    public void claim(@RequestBody WorkflowCommand.ClaimTask command) {
+        if (StringUtils.isEmpty(command.getUserId())) {
+            workflowService.claim(command.getTaskId());
+        } else {
+            workflowService.claim(command.getTaskId(), command.getUserId());
+        }
+    }
+
+    /**
+     * 处理任务
+     *
+     * @param command 处理任务命令
+     */
+    @PostMapping("/api/handle")
+    public void handle(@RequestBody WorkflowCommand.HandleTask command) {
+        workflowService.handle(command.getTaskId(), command.getApproved(), command.getAuditMind(),
+                command.getNeedReapply());
+    }
+
+    /**
+     * 获取流程图
+     *
+     * @param workflowId 工作流ID
+     * @throws IOException
+     */
+    @GetMapping("/query/processDiagram")
+    public void getInstancePicture(@RequestParam String workflowId) throws IOException {
+        InputStream processDiagram = workflowService.getProcessDiagram(workflowId);
+        if (null != processDiagram) {
+            response.setContentType("application/force-download");
+            response.setHeader("Content-Disposition", "attachment;fileName=" + workflowId + ".png");
+
+            StreamUtils.copy(processDiagram, response.getOutputStream());
+            response.getOutputStream().close();
+        }
+    }
+
+    /**
+     * 获取工作流定义列表
+     *
+     * @param businessCode 业务编码
+     * @param tmpCompId    公司ID
+     * @return 工作流定义列表
+     */
+    @GetMapping("/query/workflowDefinitions")
+    public List<Workflow> getWorkflowDefinitions(@RequestParam String businessCode,
+                                                 @RequestParam(name = "compId", required = false) String tmpCompId) {
+        String compId = tmpCompId;
+        if (StringUtils.isEmpty(tmpCompId)) {
+            compId = AuthSecurityUtils.getCurrentUserInfo().getCompId();
+        }
+        return workflowService.getWorkflowDefinitions(businessCode, compId);
+    }
+
+    /**
+     * 通过业务编码查询工作流列表
+     *
+     * @param businessCode 业务编号
+     * @return 工作流列表
+     */
+    @GetMapping("/query/workflowsByBusinessCode")
+    public List<Workflow> findWorkflowsByBusinessCode(@RequestParam String businessCode) {
+        return workflowService.findWorkflowsByBusinessCode(businessCode);
+    }
+
+    /**
+     * 获取工作流详情
+     *
+     * @param workflowId 工作流ID
+     * @return 工作流详情
+     */
+    @GetMapping("/query/workflowInfo")
+    public Workflow getWorkflowInfo(@RequestParam String workflowId) {
+        return workflowService.getWorkflowDetail(workflowId);
+    }
+
+    /**
+     * 获取任务列表
+     *
+     * @param workflowIds 工作流ID列表
+     * @param currentPage 页码
+     * @param pageSize    分页大小
+     * @return 任务列表
+     */
+    @GetMapping("/query/tasks")
+    public Page<Object> getTaskList(@RequestParam String workflowIds, @RequestParam Integer currentPage,
+                                    @RequestParam Integer pageSize) {
+        return workflowService.getTaskList(Arrays.asList(workflowIds.split(",")), currentPage, pageSize);
+    }
+
+    /**
+     * 获取活动的任务
+     *
+     * @param workflowIds 工作流ID列表
+     * @param businessKey 业务编码
+     * @return 活动的任务
+     */
+    @GetMapping("/query/activeTask")
+    public JSONObject getActiveTask(@RequestParam String workflowIds, @RequestParam String businessKey) {
+        return workflowService.getActiveTask(Arrays.asList(workflowIds.split(",")), businessKey);
+    }
+
+    /**
+     * 获取活动的任务
+     *
+     * @param workflowIds 工作流ID列表
+     * @param businessKey 业务编码
+     * @return 活动的任务
+     */
+    @GetMapping("/query/preActiveTask")
+    public JSONObject getActiveTask(@RequestParam String staffId,@RequestParam String workflowIds, @RequestParam String businessKey) {
+        return workflowService.getActiveTask(staffId,Arrays.asList(workflowIds.split(",")), businessKey);
+    }
+
+    /**
+     * 查询 - 当前审核流业务实例处于第几步骤
+     *
+     * @param workflowId  审核流id
+     * @param businessKey 主键业务
+     * @return 第几步
+     */
+    @GetMapping("/query/findWorkflowStepNumber")
+    public Integer findWorkflowStepNumber(@RequestParam String workflowId, @RequestParam String businessKey) {
+        return workflowService.findWorkflowStepNumber(workflowId, businessKey);
+    }
+
+    /**
+     * 判断当前任务是否处于最后一级节点
+     * <p>
+     * `     * @param taskId 任务id
+     *
+     * @return 是||否
+     */
+    @GetMapping("/query/judgeBusinessLastStep")
+    public boolean judgeBusinessLastStep(@RequestParam String taskId) {
+        return workflowService.judgeBusinessLastStep(taskId);
+    }
+
+    /**
+     * 删除  - 删除最新审核流(改为旧审核流)
+     *
+     * @param workflow 审核流配置对象
+     */
+    @PostMapping("/api/removeLatestWorkflow")
+    public void removeLatestWorkflow(@RequestBody Workflow workflow) {
+        workflowService.removeLatestWorkflow(workflow.getId());
+    }
+}

+ 2 - 2
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/controller/WarehouseBaseInfoController.java

@@ -118,8 +118,8 @@ public class WarehouseBaseInfoController {
      * @return
      */
     @GetMapping("/selectContractNoList")
-    public List<ContractManagementInfo> selectContractNoList(String compId) {
-        return warehouseBaseInfoService.selectContractNoList(compId);
+    public List<ContractManagementInfo> selectContractNoList(String compId,Integer flag) {
+        return warehouseBaseInfoService.selectContractNoList(compId,flag);
     }
 }
 

+ 175 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/entity/CacheComponent.java

@@ -0,0 +1,175 @@
+package com.yh.saas.plugin.yiliangyiyun.entity;
+
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Created by rize on 2019/3/22.
+ */
+@Component
+public class CacheComponent {
+
+    @Autowired
+    private StringRedisTemplate stringRedisTemplate;
+
+    public void putObj(String key, Object obj, Integer expireSec) {
+        if (expireSec != null) {
+            stringRedisTemplate.opsForValue().set(key, JSONObject.toJSONString(obj), expireSec, TimeUnit.SECONDS);
+        } else {
+            stringRedisTemplate.opsForValue().set(key, JSONObject.toJSONString(obj));
+        }
+    }
+
+    public Long incRaw(String key) {
+        return stringRedisTemplate.opsForValue().increment(key);
+    }
+
+    public  <T> T getObj(String key, Class<T> clazz) {
+        String json = stringRedisTemplate.opsForValue().get(key);
+        if (StringUtils.isEmpty(json)) {
+            return null;
+        }
+        return JSONObject.parseObject(json, clazz);
+    }
+
+    public <T> List<T> getObjList(String key, Class<T> clazz) {
+        String json = stringRedisTemplate.opsForValue().get(key);
+        if (StringUtils.isEmpty(json)) {
+            return null;
+        }
+        return JSONObject.parseArray(json, clazz);
+    }
+
+    public void putHashAll(String key, Map<String, String> map, Integer expireSec) {
+        stringRedisTemplate.opsForHash().putAll(key, map);
+        stringRedisTemplate.expire(key, expireSec, TimeUnit.SECONDS);
+    }
+
+    public Map<String,String> getHashAll(String key) {
+        if (!stringRedisTemplate.hasKey(key)) {
+            return null;
+        }
+        return (Map)stringRedisTemplate.opsForHash().entries(key);
+    }
+
+    public <T> T getHashObj(String hashName, String key, Class<T> clazz) {
+        String o = (String) stringRedisTemplate.opsForHash().get(hashName, key);
+        if (StringUtils.isEmpty(o)) {
+            return null;
+        }
+        return JSONObject.parseObject(o, clazz);
+    }
+
+    public String getHashRaw(String hashName, String key) {
+        String o = (String) stringRedisTemplate.opsForHash().get(hashName, key);
+        if (StringUtils.isEmpty(o)) {
+            return null;
+        }
+        return o;
+    }
+
+    public <T> List<T> getHashArray(String hashName, String key, Class<T> clazz) {
+        String o = (String) stringRedisTemplate.opsForHash().get(hashName, key);
+        if (StringUtils.isEmpty(o)) {
+            return null;
+        }
+        return JSONObject.parseArray(o, clazz);
+    }
+
+    public Long incHashRaw(String hashName, String key, long delta) {
+        return stringRedisTemplate.opsForHash().increment(hashName, key, delta);
+    }
+
+    public void putHashRaw(String hashName, String key, String str, Integer expireSec) {
+        boolean hasKey = stringRedisTemplate.hasKey(key);
+        stringRedisTemplate.opsForHash().put(hashName, key, str);
+        if (!hasKey) {
+            stringRedisTemplate.expire(key, expireSec, TimeUnit.SECONDS);
+        }
+    }
+
+    public void putHashRaw(String hashName, String key, String str) {
+        stringRedisTemplate.opsForHash().put(hashName, key, str);
+    }
+
+    public void putHashObj(String hashName, String key, Object obj, Integer expireSec) {
+        boolean hasKey = stringRedisTemplate.hasKey(key);
+        stringRedisTemplate.opsForHash().put(hashName, key, JSONObject.toJSONString(obj));
+        if (!hasKey) {
+            stringRedisTemplate.expire(key, expireSec, TimeUnit.SECONDS);
+        }
+    }
+
+    public void delHashObj(String hashName, String key) {
+        stringRedisTemplate.opsForHash().delete(hashName, key);
+    }
+
+
+    public void putRaw(String key, String value) {
+        putRaw(key, value, null);
+    }
+
+    public void putRaw(String key, String value, Integer expireSec) {
+        if (expireSec != null) {
+            stringRedisTemplate.opsForValue().set(key, value, expireSec, TimeUnit.SECONDS);
+        } else {
+            stringRedisTemplate.opsForValue().set(key, value);
+        }
+    }
+
+    public String getRaw(String key) {
+        return stringRedisTemplate.opsForValue().get(key);
+    }
+
+    public void del(String key) {
+        stringRedisTemplate.delete(key);
+    }
+
+    public boolean hasKey(String key) {
+        return stringRedisTemplate.hasKey(key);
+    }
+
+    public void putSetRaw(String key, String member, Integer expireSec) {
+        stringRedisTemplate.opsForSet().add(key, member);
+        stringRedisTemplate.expire(key, expireSec, TimeUnit.SECONDS);
+    }
+
+    public void putSetRawAll(String key, String[] set, Integer expireSec) {
+        stringRedisTemplate.opsForSet().add(key, set);
+        stringRedisTemplate.expire(key, expireSec, TimeUnit.SECONDS);
+    }
+
+    public void removeSetRaw(String key, String member) {
+        stringRedisTemplate.opsForSet().remove(key, member);
+    }
+
+    public boolean isSetMember(String key, String member) {
+        return stringRedisTemplate.opsForSet().isMember(key, member);
+    }
+
+    /**
+     * 获取指定前缀的Key
+     * @param prefix
+     * @return
+     */
+    public Set<String> getPrefixKeySet(String prefix) {
+        return stringRedisTemplate.keys(prefix + "*");
+    }
+
+    public void delPrefixKey(String prefix) {
+        Set<String> prefixKeySet = getPrefixKeySet(prefix);
+        for (String key : prefixKeySet) {
+            stringRedisTemplate.delete(key);
+        }
+    }
+
+
+}

+ 96 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/entity/CommonUser.java

@@ -0,0 +1,96 @@
+package com.yh.saas.plugin.yiliangyiyun.entity;
+
+import com.baomidou.mybatisplus.activerecord.Model;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.annotations.Version;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import com.yh.saas.common.support.entity.BaseModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author Gongdc
+ * @since 2021-07-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("common_user")
+public class CommonUser extends BaseModel<CommonUser> {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.UUID)
+    private String id;
+    /**
+     * 手机号
+     */
+    private String phone;
+    /**
+     * 密码
+     */
+    private String password;
+    /**
+     * 角色ID
+     */
+    private String roleIds;
+    /**
+     * 头像
+     */
+    private String avatarUrl;
+    /**
+     * 用户名
+     */
+    private String userName;
+    /**
+     * 状态:1 正常 0 冻结
+     */
+    private Integer status;
+    /**
+     * 签名图片
+     */
+    private String signImg;
+    /**
+     * 微信号
+     */
+    private String wechatNo;
+    /**
+     * 所属公司ID
+     */
+    private String companyId;
+    /**
+     * 登录token
+     */
+    private String accessToken;
+    /**
+     * 粮信userID
+     */
+    private String liangxinId;
+    /**
+     * 推送id
+     */
+    private String cid;
+    /**
+     * 注册码
+     */
+    @TableField(exist = false)
+    private String verifyCode;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 2 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/entity/DriverViewInfo.java

@@ -97,6 +97,8 @@ public class DriverViewInfo extends BaseModel<DriverViewInfo> {
 
         public static final String DELETE_FLAG = "delete_flag";
 
+        public static final String DISABLE_STATUS_FLAG ="disable_status_flag";
+
         public static final String DRIVER_NAME = "driver_name";
 
         public static final String NUMBER_CARD = "number_card";

+ 4 - 2
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/entity/InOutWarehouseTask.java

@@ -234,17 +234,19 @@ public class InOutWarehouseTask extends BaseModel<InOutWarehouseTask> {
     private String warehouseNameIn;
 
     /**
-     * 重量(吨)
+     * 移库入库重量(吨)
      */
     @TableField(exist = false)
     private Float weightIn;
 
     /**
-     * 重量(吨)
+     * 退库详情集合
      */
     @TableField(exist = false)
     private List<InOutWarehouseTask> inOutWarehouseTaskList;
 
+    @TableField(exist = false)
+    private String taskId;
 
     @Override
     protected Serializable pkVal() {

+ 4 - 2
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/entity/TranProcessInfo.java

@@ -146,8 +146,8 @@ public class TranProcessInfo extends BaseModel<TranProcessInfo> {
     /**
      * 接单时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date receivingDate;
     /**
      * 状态标识
@@ -234,5 +234,7 @@ public class TranProcessInfo extends BaseModel<TranProcessInfo> {
         public static final String INFO_ID = "info_id";
 
         public static final String DELETE_FLAG = "delete_flag";
+
+        public static final String SORT = "sort";
     }
 }

+ 15 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/AppServiceException.java

@@ -0,0 +1,15 @@
+package com.yh.saas.plugin.yiliangyiyun.exception;
+
+/**
+ * Created by rize on 2019/7/1.
+ */
+public class AppServiceException extends ServiceException {
+
+    public AppServiceException(ServiceExceptionDefinition definition) {
+        super(definition);
+    }
+
+    public AppServiceException(String message, int code) {
+        super(message,code);
+    }
+}

+ 192 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/ExceptionDefinition.java

@@ -0,0 +1,192 @@
+package com.yh.saas.plugin.yiliangyiyun.exception;
+
+/**
+ * Created by rize on 2019/7/1.
+ */
+public class ExceptionDefinition {
+
+    public static  ServiceExceptionDefinition THIRD_PART_SERVICE_EXCEPTION =
+            new ServiceExceptionDefinition(0, "第三方服务异常");
+
+    public static  ServiceExceptionDefinition PLUGIN_EXCEPTION =
+            new ServiceExceptionDefinition(1, "插件异常: ${0}");
+
+    public static  ServiceExceptionDefinition THIRD_PART_IO_EXCEPTION =
+            new ServiceExceptionDefinition(2, "第三方网络异常");
+
+    public static  ServiceExceptionDefinition APP_UNKNOWN_EXCEPTION =
+            new ServiceExceptionDefinition(10000, "系统未知异常");
+
+    public static  ServiceExceptionDefinition PARAM_CHECK_FAILED =
+            new ServiceExceptionDefinition(10002, "参数校验失败");
+
+    public static  ServiceExceptionDefinition SYSTEM_BUSY =
+            new ServiceExceptionDefinition(10007, "系统繁忙~");
+
+    public static  ServiceExceptionDefinition USER_UNKNOWN_EXCEPTION =
+            new ServiceExceptionDefinition(11000, "用户系统未知异常");
+
+    public static  ServiceExceptionDefinition USER_SEND_VERIFY_FAILED =
+            new ServiceExceptionDefinition(11001, "发送验证码失败");
+
+    public static  ServiceExceptionDefinition USER_VERIFY_CODE_NOT_EXIST =
+            new ServiceExceptionDefinition(11002, "验证码未发送或已过期");
+
+    public static  ServiceExceptionDefinition USER_VERIFY_CODE_NOT_CORRECT =
+            new ServiceExceptionDefinition(11003, "验证码不正确");
+
+    public static  ServiceExceptionDefinition USER_PHONE_HAS_EXISTED =
+            new ServiceExceptionDefinition(11004, "手机已经被注册");
+
+    public static  ServiceExceptionDefinition USER_PHONE_NOT_EXIST =
+            new ServiceExceptionDefinition(11005, "手机尚未绑定账号");
+
+    public static  ServiceExceptionDefinition USER_PHONE_OR_PASSWORD_NOT_CORRECT =
+            new ServiceExceptionDefinition(11006, "手机号或密码错误!");
+
+    public static  ServiceExceptionDefinition USER_THIRD_PART_LOGIN_FAILED =
+            new ServiceExceptionDefinition(11007, "用户第三方登录失败");
+
+    public static  ServiceExceptionDefinition USER_THIRD_UNEXPECT_RESPONSE =
+            new ServiceExceptionDefinition(11008, "第三方登录期望之外的错误");
+
+    public static  ServiceExceptionDefinition USER_THIRD_PART_NOT_SUPPORT =
+            new ServiceExceptionDefinition(11009, "未知的第三方登录平台");
+
+    public static  ServiceExceptionDefinition USER_INFORMATION_MISSING =
+            new ServiceExceptionDefinition(11010, "用户信息缺失,不能添加");
+
+    public static  ServiceExceptionDefinition USER_PHONE_ALREADY_EXIST =
+            new ServiceExceptionDefinition(11011, "用户电话已经存在,不能添加");
+
+    public static  ServiceExceptionDefinition USER_CAN_NOT_ACTICE =
+            new ServiceExceptionDefinition(11012, "用户处于冻结状态,请联系管理员");
+
+    public static  ServiceExceptionDefinition ADDRESS_DATABASE_QUERY_FAILED  =
+            new ServiceExceptionDefinition(16002, "执行语句失败");
+    public static  ServiceExceptionDefinition PURCHASE_OVER_NUM  =
+            new ServiceExceptionDefinition(16002, "送粮人每年收购总量不得超过五百吨");
+
+    public static  ServiceExceptionDefinition ADVERTISEMENT_SQL_ADD_FAILED =
+            new ServiceExceptionDefinition(22001, "添加广告数据库失败");
+
+    public static  ServiceExceptionDefinition ADVERTISEMENT_SQL_DELETE_FAILED =
+            new ServiceExceptionDefinition(22002, "删除广告数据库失败");
+
+    public static  ServiceExceptionDefinition ADVERTISEMENT_SQL_UPDATE_FAILED =
+            new ServiceExceptionDefinition(22003, "修改广告数据库失败");
+
+
+    public static  ServiceExceptionDefinition ADMIN_UNKNOWN_EXCEPTION =
+            new ServiceExceptionDefinition(50000, "管理员系统未知异常");
+
+    public static  ServiceExceptionDefinition COLLECT_ERROR =
+            new ServiceExceptionDefinition(50000, "预收款不足,请仔细检查");
+    public static  ServiceExceptionDefinition ADMIN_NOT_EXIST =
+            new ServiceExceptionDefinition(50001, "管理员不存在");
+
+    public static  ServiceExceptionDefinition ADMIN_PASSWORD_ERROR =
+            new ServiceExceptionDefinition(50002, "密码错误");
+
+    public static  ServiceExceptionDefinition ADMIN_NOT_BIND_WECHAT =
+            new ServiceExceptionDefinition(50003, "管理员尚未绑定微信");
+
+    public static  ServiceExceptionDefinition ADMIN_APPLY_NOT_BELONGS_TO_YOU =
+            new ServiceExceptionDefinition(50004, "用户申请表并不属于您");
+
+    public static  ServiceExceptionDefinition ADMIN_APPLY_NOT_SUPPORT_ONE_KEY =
+            new ServiceExceptionDefinition(50005, "未定义类型不支持一键发布");
+
+    public static  ServiceExceptionDefinition ADMIN_ROLE_IS_EMPTY =
+            new ServiceExceptionDefinition(50006, "管理员角色为空!");
+
+    public static  ServiceExceptionDefinition ADMIN_USER_NAME_REPEAT =
+            new ServiceExceptionDefinition(50007, "管理员用户名重复");
+
+    public static  ServiceExceptionDefinition ADMIN_VERIFYCODE_ERROR =
+            new ServiceExceptionDefinition(50008, "登陆验证码错误");
+
+    public static  ServiceExceptionDefinition ADMIN_USER_NOT_EXITS =
+            new ServiceExceptionDefinition(50009, "管理员不存在,请输入正确账号密码");
+
+    public static  ServiceExceptionDefinition ADMIN_GUEST_NOT_NEED_VERIFY_CODE =
+            new ServiceExceptionDefinition(50010, "游客用户无须验证码,请直接输入666666");
+
+    public static  ServiceExceptionDefinition ADMIN_VERIFY_CODE_SEND_FAIL=
+            new ServiceExceptionDefinition(50011, "登陆验证码发送失败");
+
+    public static  ServiceExceptionDefinition ADMIN_GENERATOR_WORK_DIR_NOT_EXIST =
+            new ServiceExceptionDefinition(50012, "工作路径不正确");
+
+    public static  ServiceExceptionDefinition ADMIN_GENERATOR_FILE_ALREADY_EXIST =
+            new ServiceExceptionDefinition(50013, "欲生成的文件已经存在");
+
+    public static  ServiceExceptionDefinition ADMIN_GENERATOR_IO_EXCEPTION =
+            new ServiceExceptionDefinition(50013, "代码生成网络异常");
+
+    public static  ServiceExceptionDefinition ADMIN_GENERATOR_TEMPLATE_EXCEPTION =
+            new ServiceExceptionDefinition(50013, "代码生成模板异常");
+
+
+    public static  ServiceExceptionDefinition SALE_NEED_STATUS_ERROR =
+            new ServiceExceptionDefinition(53015, "销售信息是该状态,无法改变");
+    public static  ServiceExceptionDefinition SALE_UPDATE_SQL_FAILED =
+            new ServiceExceptionDefinition(53015, "销售信息执行修改SQL失败");
+    public static  ServiceExceptionDefinition SALE_NOT_EXIST =
+            new ServiceExceptionDefinition(53015, "销售信息并不存在");
+    public static  ServiceExceptionDefinition SALE_TITLE_NOT_EXIST =
+            new ServiceExceptionDefinition(53015, "未维护标题");
+    public static  ServiceExceptionDefinition SALE_DINGJIA_STATUS_ERROR =
+            new ServiceExceptionDefinition(53015, "只能申请状态为未申请的数据");
+    public static  ServiceExceptionDefinition ROLE_NOT_EXIST =
+            new ServiceExceptionDefinition(53015, "并未决策人角色,无法申请定价");
+    public static  ServiceExceptionDefinition PRICE_ERROR =
+            new ServiceExceptionDefinition(53015, "指导价不正确");
+    public static  ServiceExceptionDefinition WANSHAN_ERROR =
+            new ServiceExceptionDefinition(53015, "完善承运信息失败");
+    public static  ServiceExceptionDefinition JIEDAN_ERROR =
+            new ServiceExceptionDefinition(53015, "接单失败");
+    public static  ServiceExceptionDefinition JUJIE_ERROR =
+            new ServiceExceptionDefinition(53015, "拒接失败");
+    public static  ServiceExceptionDefinition TUIHUI_ERROR =
+            new ServiceExceptionDefinition(53015, "退回失败");
+    public static  ServiceExceptionDefinition CONTRACT_ERROR =
+            new ServiceExceptionDefinition(53015, "生成运输合同异常");
+    public static  ServiceExceptionDefinition SIGN_CONTRACT_ERROR =
+            new ServiceExceptionDefinition(53015, "签订运输合同异常");
+    public static  ServiceExceptionDefinition TRAN_COUNT_ERROR =
+            new ServiceExceptionDefinition(53015, "运量任务不足,请额外申请运量");
+    public static  ServiceExceptionDefinition WORK_STATUS_ERROR =
+            new ServiceExceptionDefinition(53015, "存在未交货的车辆,请完成交货后再完货");
+    public static  ServiceExceptionDefinition WORK_STATUS_ERROR1 =
+            new ServiceExceptionDefinition(53015, "存在未放货的车辆,请完成放货后再完货");
+    public static  ServiceExceptionDefinition WORK_STATUS_ERROR2 =
+            new ServiceExceptionDefinition(53015, "存在未完成接货的车辆,请接货后再完成");
+    public static  ServiceExceptionDefinition BANK_PERSON_CHECK =
+            new ServiceExceptionDefinition(53015, "收款人姓名、身份证号、银行卡号不匹配");
+    public static  ServiceExceptionDefinition TIME_EXCEED_RANGE =
+            new ServiceExceptionDefinition(53015, "此时间(8:00-11:30/12:30-15:00/20:00-23:00)不可点价");
+    public static  ServiceExceptionDefinition TIME_EXCEED_STATUS =
+            new ServiceExceptionDefinition(53015, "已受理的合同不可点价");
+    public static  ServiceExceptionDefinition  CONTRACT_NO_ERRO=
+            new ServiceExceptionDefinition(53015, "采购合同编号重复");
+    public static  ServiceExceptionDefinition  CONTRACT_NO_COPY=
+            new ServiceExceptionDefinition(53015, "合同编号已存在");
+    public static ServiceExceptionDefinition buildVariableException(ServiceExceptionDefinition definition, String ...args) {
+        String msg = definition.getMsg();
+        for (int i = 0; i < args.length; i++) {
+            msg = msg.replace("${" + i + "}", args[i]);
+        }
+        return new ServiceExceptionDefinition(definition.getCode(), msg);
+    }
+
+    public static  ServiceExceptionDefinition IMPORT_STORE_NAME_ERROR =
+            new ServiceExceptionDefinition(50000, "存在不正确的库点名称,请检查后重新导入");
+    public static  ServiceExceptionDefinition IN_STORE_ERROR =
+            new ServiceExceptionDefinition(50000, "入库任务异常");
+    public static  ServiceExceptionDefinition FLAT_COUNT_ERROR =
+            new ServiceExceptionDefinition(50000, "可平仓数量不足");
+
+
+
+}

+ 36 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/ServiceException.java

@@ -0,0 +1,36 @@
+package com.yh.saas.plugin.yiliangyiyun.exception;
+
+import java.io.Serializable;
+
+/**
+ * Created with IntelliJ IDEA.
+ * Description:
+ * User: rize
+ * Date: 2019-01-31
+ * Time: 下午8:07
+ */
+public abstract class ServiceException extends Exception implements Serializable {
+
+    private int code;
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public ServiceException() {
+    }
+
+    public ServiceException(String message, int code) {
+        super(message);
+        this.code = code;
+    }
+
+    public ServiceException(ServiceExceptionDefinition definition) {
+        super(definition.getMsg());
+        this.code = definition.getCode();
+    }
+}

+ 13 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/ServiceExceptionDefinition.java

@@ -0,0 +1,13 @@
+package com.yh.saas.plugin.yiliangyiyun.exception;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ServiceExceptionDefinition {
+    private int code;
+    private String msg;
+}

+ 17 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/ThirdPartServiceException.java

@@ -0,0 +1,17 @@
+package com.yh.saas.plugin.yiliangyiyun.exception;
+
+/**
+ * 第三方接口服务异常
+ * Created by rize on 2019/7/3.
+ */
+public class ThirdPartServiceException extends ServiceException {
+
+    public ThirdPartServiceException(ServiceExceptionDefinition definition) {
+        super(definition);
+    }
+
+    public ThirdPartServiceException(String message, int code) {
+        super(message, code);
+    }
+
+}

+ 1 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/YExceptionEnum.java

@@ -17,6 +17,7 @@ public enum YExceptionEnum {
 	POSITION_NO_ERROR("ERROR","库位不存在"),
 	POSITIONSTORAGE_NO_ERROR("ERROR","没有储存量"),
 	INVENTORY_NO_ERROR("ERROR","出库量大于库存量"),
+	INNETWEIGHT_NO_ERROR("ERROR","出库量大于入库量"),
 	TASK_NO_ERROR("ERROR","任务编号已存在,不可重复!"),
 	TRAN_PROCESS_SORT_ERROR("ERROR","多阶段任务,不可删除!"),
 	TRAN_PROCESS_ERROR("ERROR","运输阶段已完成,不可修改!"),

+ 19 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/mapper/CommonUserMapper.java

@@ -0,0 +1,19 @@
+package com.yh.saas.plugin.yiliangyiyun.mapper;
+
+import com.yh.saas.plugin.yiliangyiyun.entity.CommonUser;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Gongdc
+ * @since 2021-07-12
+ */
+public interface CommonUserMapper extends BaseMapper<CommonUser> {
+
+
+    CommonUser login(@Param("phone") String phone, @Param("cryptPassword") String cryptPassword);
+}

+ 41 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/ICommonUserService.java

@@ -0,0 +1,41 @@
+package com.yh.saas.plugin.yiliangyiyun.service;
+
+import com.yh.saas.plugin.yiliangyiyun.entity.CommonUser;
+import com.baomidou.mybatisplus.service.IService;
+import com.yh.saas.plugin.yiliangyiyun.exception.ServiceException;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Gongdc
+ * @since 2021-07-12
+ */
+public interface ICommonUserService extends IService<CommonUser> {
+
+    /**
+     * 注册
+     * @param commonUser
+     * @return
+     * @throws ServiceException
+     */
+    String register(CommonUser commonUser) throws ServiceException;
+
+    /**
+     * 发送验证码
+     * @param phone
+     * @return
+     * @throws ServiceException
+     */
+    String sendVerifyCode(String phone) throws ServiceException;
+
+
+    /**
+     * 登录
+     * @param commonUser
+     * @return
+     * @throws ServiceException
+     */
+    CommonUser login(CommonUser commonUser) throws ServiceException;
+}

+ 255 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/INewWorkflowService.java

@@ -0,0 +1,255 @@
+package com.yh.saas.plugin.yiliangyiyun.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.winsea.svc.base.workflow.entity.Workflow;
+
+import java.io.InputStream;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 工作流服务
+ *
+ * @author gdc
+ */
+public interface INewWorkflowService {
+
+    /**
+     * 创建工作流
+     *
+     * @param workflow 工作流对象
+     * @return 工作流ID
+     */
+    String create(Workflow workflow);
+
+    /**
+     * 修改工作流信息
+     *
+     * @param workflow 工作流对象
+     * @return 工作流ID
+     */
+    String changeInfo(Workflow workflow);
+
+    /**
+     * 获取工作流详情
+     *
+     * @param workflowId 工作流ID
+     * @return 工作流详情
+     */
+    Workflow getWorkflowDetail(String workflowId);
+
+    /**
+     * 通过业务编码获取最新工作流定义列表<br/>
+     * 查询公司下所有
+     *
+     * @param businessCode 业务编码
+     * @param compId       公司ID
+     * @return 最新工作流定义列表
+     */
+    List<Workflow> getWorkflowDefinitions(String businessCode, String compId);
+
+    /**
+     * 通过业务编码查询最新工作流<br/>
+     * 根据用户和角色查询
+     *
+     * @param businessCode 业务编码
+     * @return 最新关联工作流
+     */
+    Workflow findLatestWorkflowByBusinessCode(String businessCode);
+
+    /**
+     * 通过业务编码和公司ID获取最新工作流
+     *
+     * @param businessCode 业务编码
+     * @param compId       公司ID
+     * @return 最新关联工作流
+     */
+    Workflow getLatestWorkflowByBusinessCodeAndCompId(String businessCode, String compId);
+
+    /**
+     * 通过业务编码查询工作流列表<br/>
+     * 根据用户和角色查询
+     *
+     * @param businessCode 业务编码
+     * @return 关联工作流列表
+     */
+    List<Workflow> findWorkflowsByBusinessCode(String businessCode);
+
+    /**
+     * 通过业务编码查询工作流ID列表
+     *
+     * @param businessCode 业务编码
+     * @return 关联工作流ID列表
+     */
+    List<String> findWorkflowIdsByBusinessCode(String businessCode);
+
+    /**
+     * 获取流程图
+     *
+     * @param workflowId 工作流ID
+     * @return InputStream
+     */
+    InputStream getProcessDiagram(String workflowId);
+
+    /**
+     * 开始一个工作流
+     *
+     * @param processId   工作流ID
+     * @param businessKey 业务码
+     */
+    void startInstance(String workflowId, String businessKey);
+
+    /**
+     * 开始一个工作流
+     *
+     * @param processId   工作流ID
+     * @param businessKey 业务码
+     * @param startUserId 申请用户ID
+     */
+    void startInstance(String workflowId, String businessKey, String startUserId);
+
+    /**
+     * 激活工作流
+     *
+     * @param processId   工作流ID
+     * @param businessKey 业务码
+     * 
+     * @return 工作流ID
+     */
+    String activateInstance(String workflowId, String businessKey);
+
+    /**
+     * 挂起工作流
+     *
+     * @param processId   工作流ID
+     * @param businessKey 业务码
+     */
+    void suspendInstance(String workflowId, String businessKey);
+
+    /**
+     * 结束工作流
+     *
+     * @param workflowId  工作流ID
+     * @param businessKey 业务码
+     * @param reason      结束原因
+     */
+    void stopInstance(String workflowId, String businessKey, String reason);
+
+    /**
+     * 当前登录人签收
+     *
+     * @param taskId 任务ID
+     */
+    void claim(String taskId);
+
+    /**
+     * 签收
+     *
+     * @param taskId 任务ID
+     * @param userId 用户ID
+     */
+    void claim(String taskId, String userId);
+
+    /**
+     * 任务ID
+     *
+     * @param taskId      任务ID
+     * @param approved    是否同意
+     * @param auditMind   审核意见
+     * @param needReapply 是否需要重新申请
+     */
+    void handle(String taskId, boolean approved, String auditMind, boolean needReapply);
+
+    /**
+     * 获取任务分页列表
+     *
+     * @param workflowIds 工作流ID列表
+     * @param current     页码
+     * @param size        分页大小
+     * @return 任务分页列表<br />
+     * records->任务列表<br/>
+     * taskId->任务ID,taskName->任务名称,workflowId->工作流ID,businessKey->业务编码
+     */
+    Page<Object> getTaskList(List<String> workflowIds, int current, int size);
+
+    /**
+     * 获得审批人代办的所有任务相关businessKey
+     *
+     * @param businessCode 业务编码
+     * @return businessKeys
+     */
+    List<String> getTaskBusinessKeysByCode(String businessCode);
+
+    /**
+     * 获得审批人代办的所有任务相关businessKey
+     *
+     * @param workflowId 工作流ID
+     * @return businessKeys
+     */
+    List<String> getTaskBusinessKeysByFlowId(String workflowId);
+
+    /**
+     * 获得审批人已办的所有任务相关businessKey
+     *
+     * @param businessCode 业务编码
+     * @return businessKeys
+     */
+    List<String> getDoneTaskBusinessKeysByCode(String businessCode);
+
+    /**
+     * 获得审批人已办的所有任务相关businessKey
+     *
+     * @param workflowId 工作流ID
+     * @return businessKeys
+     */
+    List<String> getDoneTaskBusinessKeysByFlowId(String workflowId);
+
+    /**
+     * 获取活动的任务
+     *
+     * @param workflowIds 工作流ID列表
+     * @param businessKey 业务编码
+     * @return 活动的任务<br />
+     * taskId->任务ID,taskName->任务名称,workflowId->工作流ID
+     */
+    JSONObject getActiveTask(List<String> workflowIds, String businessKey);
+
+    /**
+     * 获取活动的任务
+     *
+     * @param workflowIds 工作流ID列表
+     * @param businessKey 业务编码
+     * @return 活动的任务<br />
+     * taskId->任务ID,taskName->任务名称,workflowId->工作流ID
+     */
+    JSONObject getActiveTask(String staffId, List<String> workflowIds, String businessKey);
+
+    /**
+     * Mybatis plus
+     */
+    Workflow selectById(Serializable id);
+
+    /**
+     * 查询 - 当前审核流业务实例处于第几步骤
+     *
+     * @param workflowId  审核流id
+     * @param businessKey 主键业务
+     * @return 第几步
+     */
+    Integer findWorkflowStepNumber(String workflowId, String businessKey);
+
+    /**
+     * 判断当前任务是否处于最后一级节点
+     *
+     * @param businessKey 业务主键id
+     * @return 是||否
+     */
+    boolean judgeBusinessLastStep(String businessKey);
+
+    /**
+     * 删除最新审核流(改为旧审核流)
+     * @param workflowId 审核流id
+     */
+    void removeLatestWorkflow(String workflowId);
+}

+ 1 - 1
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/ITranTaskInfoService.java

@@ -28,7 +28,7 @@ public interface ITranTaskInfoService extends IService<TranTaskInfo> {
 
     /**
      * 查看运输任务
-     * @param id
+     * @param id,processNo
      * @return
      */
     TranTaskInfo getTranTask (String id);

+ 2 - 1
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/IWarehouseBaseInfoService.java

@@ -80,6 +80,7 @@ public interface IWarehouseBaseInfoService extends IService<WarehouseBaseInfo> {
      * 出入库合同编号下拉列表
      *
      * @param compId
+     * @param flag 0 采购合同编号 1销售合同编号 2 移库任务编号+采购、销售合同编号 null 采购、销售合同编号
      */
-    List<ContractManagementInfo> selectContractNoList(String compId);
+    List<ContractManagementInfo> selectContractNoList(String compId,Integer flag);
 }

+ 330 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/CommonUserServiceImpl.java

@@ -0,0 +1,330 @@
+package com.yh.saas.plugin.yiliangyiyun.service.impl;
+
+import cn.hutool.core.lang.UUID;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.yh.saas.plugin.yiliangyiyun.entity.CacheComponent;
+import com.yh.saas.plugin.yiliangyiyun.entity.CommonUser;
+import com.yh.saas.plugin.yiliangyiyun.exception.AppServiceException;
+import com.yh.saas.plugin.yiliangyiyun.exception.ExceptionDefinition;
+import com.yh.saas.plugin.yiliangyiyun.exception.ServiceException;
+import com.yh.saas.plugin.yiliangyiyun.mapper.CommonUserMapper;
+import com.yh.saas.plugin.yiliangyiyun.util.SMSClient;
+import com.yh.saas.plugin.yiliangyiyun.util.SMSResult;
+import com.yh.saas.plugin.yiliangyiyun.service.ICommonUserService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.yh.saas.plugin.yiliangyiyun.util.Const;
+import com.yh.saas.plugin.yiliangyiyun.util.GeneratorUtil;
+import com.yh.saas.plugin.yiliangyiyun.util.MD5Util;
+import org.apache.commons.codec.digest.Md5Crypt;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+
+import java.sql.*;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Gongdc
+ * @since 2021-07-12
+ */
+@Service
+public class CommonUserServiceImpl extends ServiceImpl<CommonUserMapper, CommonUser> implements ICommonUserService {
+    private static  String VERIFY_CODE_PREFIX = "VERIFY_CODE_";
+    @Autowired
+    private CacheComponent cacheComponent;
+
+//    @Autowired
+//    private SMSClient smsClient;
+
+    @Autowired
+    private CommonUserMapper commonUserMapper;
+
+    @Autowired
+    private StringRedisTemplate userRedisTemplate;
+
+    Connection  coon=null;
+    Connection  coon1=null;
+    @Value("com.mysql.jdbc.Driver")
+    private String driverClassName;
+    @Value("jdbc:mysql://47.100.3.209:3306/talk-portal?createDatabaseIfNotExist=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true")
+    private String url;
+    @Value("root")
+    private String username;
+    @Value("Ccj841968545")
+    private String password;
+    @Value("wxce2e964b11803018")
+    private String gzhAppId;
+    @Value("122059c777309ff3efc7448ec8794fd5")
+    private String gzhAppSecret;
+    @Value("jdbc:mysql://47.100.3.209:3306/talk-core?createDatabaseIfNotExist=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true")
+    private String url1;
+    @Value("root")
+    private String username1;
+    @Value("Ccj841968545")
+    private String password1;
+
+    /**
+     * 注册
+     * @param commonUser
+     * @return
+     * @throws ServiceException
+     */
+    @Override
+    public String register(CommonUser commonUser) throws ServiceException {
+        //1.校验验证码
+        checkVerifyCode(commonUser.getPhone(), commonUser.getVerifyCode());
+        //2.校验用户是否存在
+        Integer count = this.selectCount(
+                new EntityWrapper<CommonUser>()
+                        .eq("phone", commonUser.getPhone()));
+        if (count > 0) {
+            throw new AppServiceException(ExceptionDefinition.USER_PHONE_HAS_EXISTED);
+        }
+        //3.校验成功,注册用户
+        CommonUser user = new CommonUser();
+        user.setPhone(commonUser.getPhone());
+        user.setPassword(Md5Crypt.md5Crypt(commonUser.getPassword().getBytes(), "$1$" + commonUser.getPhone().substring(0, 7)));
+        this.insert(user);
+        //返回用户DTO
+        cacheComponent.del(VERIFY_CODE_PREFIX + commonUser.getPhone());
+        return commonUser.getPhone();
+    }
+
+    /**
+     * 发送验证码
+     * @param phone
+     * @return
+     * @throws ServiceException
+     */
+    @Override
+    public String sendVerifyCode(String phone) throws ServiceException {
+//        String verifyCode = GeneratorUtil.genSixVerifyCode();
+//        System.out.println("verifyCode:"+verifyCode);
+//        SMSResult res = smsClient.sendRegisterVerify(phone, verifyCode);
+//        if (res.isSucc()) {
+//            cacheComponent.putRaw(VERIFY_CODE_PREFIX + phone, verifyCode, 300);
+            return "ok";
+//        } else {
+//            throw new AppServiceException(res.getMsg(), ExceptionDefinition.USER_SEND_VERIFY_FAILED.getCode());
+//        }
+
+    }
+
+
+    /**
+     * 登录
+     * @param commonUser
+     * @return
+     * @throws ServiceException
+     */
+    @Override
+    @Transactional
+    public CommonUser login(CommonUser commonUser) throws ServiceException {
+        String cryptPassword = Md5Crypt.md5Crypt(commonUser.getPassword().getBytes(), "$1$" + commonUser.getPhone().substring(0, 7));
+        CommonUser user = commonUserMapper.login(commonUser.getPhone(), cryptPassword);
+
+        if (user == null) {
+            throw new AppServiceException(ExceptionDefinition.USER_PHONE_OR_PASSWORD_NOT_CORRECT);
+        }
+        CommonUser userDO = this.selectById(user.getId());
+        //检查帐号是否已经冻结
+        if (userDO.getStatus() == 0) {
+            throw new AppServiceException(ExceptionDefinition.USER_CAN_NOT_ACTICE);
+        }
+        if(commonUser.getPhone() != null){
+            DBConnection();
+            String sUserId = null;
+            password = null;
+            if(excSelect("select * from t_user t where t.MOBILE = '"+commonUser.getPhone()+"'",this.coon) > 0){
+                excUpdate("update t_user t set t.LAST_LOGIN_TIME = now() where t.MOBILE = '"+commonUser.getPhone()+"'",this.coon);
+                sUserId=excSelect1("select * from t_user t where t.MOBILE = '"+commonUser.getPhone()+"'",this.coon);
+            }
+            else{
+                password = MD5Util.encrypt(commonUser.getPhone(), "123456");
+                excInsert("insert into t_user (USERNAME,PASSWORD,REALNAME,STATUS,MOBILE,CREATE_TIME,MODIFY_TIME,LAST_LOGIN_TIME,AVATAR,OPER_ID) " +
+                        "VALUES ('"+commonUser.getPhone()+"','"+ password +"','"+userDO.getUserName()+"',1,'"+commonUser.getPhone()+"',NOW(),NOW(),NOW(),'https://liangxin.zthymaoyi.com/upload/default.jpg','"
+                        + UUID.randomUUID().toString(true)+"')",this.coon);
+                Long user_id = excSelect("select * from t_user t where t.MOBILE = '"+commonUser.getPhone()+"'",this.coon);
+                sUserId=excSelect1("select * from t_user t where t.MOBILE = '"+commonUser.getPhone()+"'",this.coon);
+                excInsert("insert into t_user_role (USER_ID,ROLE_ID) " +
+                        "VALUES ("+user_id+",7)",this.coon);
+                excInsert("insert into t_user_config (USER_ID,THEME,LAYOUT,MULTI_PAGE,FIX_SIDERBAR,FIX_HEADER,COLOR) " +
+                        "VALUES ("+user_id+",'dark','side','0','1','1','rgb(66, 185, 131)')",this.coon);
+
+            }
+            close();
+            DBConnection1();
+            if( excSelect2("select * from s_user t where t.id = '"+sUserId+"'",this.coon1)!= null){
+                excUpdate("update s_user t set t.last_oper_time = now() where t.id = '"+sUserId+"'",this.coon1);
+            }
+            else{
+                excInsert("insert into s_user (id,nick_name,user_name,password,avatar,money,status,oper_time,last_oper_time) " +
+                        "VALUES ('"+sUserId+"','"+ userDO.getUserName()+"','"+commonUser.getPhone()+"','"+password+"','https://liangxin.zthymaoyi.com/upload/default.jpg','0.0',0,NOW(),NOW())",this.coon1);
+            }
+            close1();
+            userDO.setLiangxinId(sUserId);
+            this.updateById(userDO);
+        }
+        //返回用户DTO
+        cacheComponent.del(VERIFY_CODE_PREFIX + commonUser.getPhone());
+        String accessToken = GeneratorUtil.genSessionId();
+        BeanUtils.copyProperties(userDO,user);
+        user.setAccessToken(accessToken);
+        //放入SESSION专用Redis数据源中
+        userRedisTemplate.opsForValue().set(Const.USER_REDIS_PREFIX + accessToken, JSONObject.toJSONString(user));
+        this.updateById(userDO);
+        return user;
+    }
+
+    public void DBConnection(){
+        try{
+            //加载驱动程序
+            Class.forName(driverClassName);
+            coon=(Connection) DriverManager.getConnection(url,username,password);
+            if(!coon.isClosed()){
+                System.out.println("成功连接数据库!");
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    //    查询s_user表
+    public String excSelect2(String sql,Connection  coon){
+        try{
+            Statement stmt=(Statement)coon.createStatement();
+            ResultSet rs=(ResultSet)stmt.executeQuery(sql);//得到的是结果的集合
+
+            while(rs.next()){
+                String id=rs.getString("ID");
+                if(id != null && !id.isEmpty()){
+                    return id;
+                }
+            }
+            stmt.close();
+            return null;
+        }catch(Exception e){
+            e.printStackTrace();
+            return null;
+        }
+    }
+    //    增加数据
+    public void excInsert(String sql,Connection  coon){
+        try{
+            PreparedStatement preStmt=(PreparedStatement)coon.prepareStatement(sql);
+            preStmt.executeUpdate();
+            System.out.println("插入数据成功!");
+            preStmt.close();
+        }catch(Exception e){
+            System.out.println("粮信插入数据异常!");
+            e.printStackTrace();
+        }
+    }
+    //    查询t_user表
+    public String excSelect1(String sql,Connection  coon){
+        try{
+            Statement stmt=(Statement)coon.createStatement();
+            ResultSet rs=(ResultSet)stmt.executeQuery(sql);//得到的是结果的集合
+
+            while(rs.next()){
+                String id=rs.getString("OPER_ID");
+                if(id != null && !id.isEmpty()){
+                    return id;
+                }
+            }
+            stmt.close();
+            return null;
+        }catch(Exception e){
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public void close(){
+        try{
+            this.coon.close();
+            System.out.println("成功关闭数据库连接!");
+        }catch(Exception e){
+            e.printStackTrace();
+            System.out.println("关闭数据库连接异常!");
+        }
+    }
+
+    public void close1(){
+        try{
+            this.coon1.close();
+            System.out.println("成功关闭数据库连接!");
+        }catch(Exception e){
+            e.printStackTrace();
+            System.out.println("关闭数据库连接异常!");
+        }
+    }
+    //    更改数据
+    public void excUpdate(String sql,Connection  coon){
+        try{
+            PreparedStatement prestmt=(PreparedStatement)coon.prepareStatement(sql);
+            prestmt.executeUpdate();
+            System.out.println("更改数据成功!");
+            prestmt.close();
+        }catch(Exception e){
+            System.out.println("粮信更改数据异常!");
+            e.printStackTrace();
+        }
+    }
+
+    //    查询t_user表
+    public Long excSelect(String sql,Connection  coon){
+        try{
+            Statement stmt=(Statement)coon.createStatement();
+            ResultSet rs=(ResultSet)stmt.executeQuery(sql);//得到的是结果的集合
+
+            while(rs.next()){
+                Long name=rs.getLong("USER_ID");
+                if(name != null && name > 0){
+                    return name;
+                }
+            }
+            stmt.close();
+            return -1l;
+        }catch(Exception e){
+            e.printStackTrace();
+            return -1l;
+        }
+    }
+    public void DBConnection1(){
+        try{
+            //加载驱动程序
+            Class.forName(driverClassName);
+            coon1=(Connection)DriverManager.getConnection(url1,username1,password1);
+            if(!coon1.isClosed()){
+                System.out.println("成功连接数据库!");
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+    /**
+     * 验证码抽取校验
+     *
+     * @param phone
+     * @param verifyCode
+     * @throws ServiceException
+     */
+    private void checkVerifyCode(String phone, String verifyCode) throws ServiceException {
+        String raw = cacheComponent.getRaw(VERIFY_CODE_PREFIX + phone);
+        if (StringUtils.isEmpty(raw)) {
+            throw new AppServiceException(ExceptionDefinition.USER_VERIFY_CODE_NOT_EXIST);
+        }
+        if (!raw.equals(verifyCode)) {
+            throw new AppServiceException(ExceptionDefinition.USER_VERIFY_CODE_NOT_CORRECT);
+        }
+    }
+}

+ 1 - 1
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/DriverViewInfoServiceImpl.java

@@ -258,7 +258,7 @@ public class DriverViewInfoServiceImpl extends ServiceImpl<DriverViewInfoMapper,
     @Override
     public List<DriverViewInfo> selectDriverName(String compId){
         List<DriverViewInfo> driverViewInfoList = this.selectList(new EntityWrapper<DriverViewInfo>()
-                .eq(DriverViewInfo.QueryFiles.COMP_ID,compId).eq(DriverViewInfo.QueryFiles.DELETE_FLAG, NumberConstant.CONSTANT0));
+                .eq(DriverViewInfo.QueryFiles.COMP_ID,compId).eq(DriverViewInfo.QueryFiles.DISABLE_STATUS_FLAG, NumberConstant.CONSTANT0).eq(DriverViewInfo.QueryFiles.DELETE_FLAG, NumberConstant.CONSTANT0));
         return driverViewInfoList;
     }
 

+ 96 - 41
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/InOutWarehouseTaskServiceImpl.java

@@ -1,8 +1,11 @@
 package com.yh.saas.plugin.yiliangyiyun.service.impl;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.winsea.svc.base.base.entity.CommonRole;
+import com.winsea.svc.base.security.util.AuthSecurityUtils;
 import com.winsea.svc.base.workflow.entity.Workflow;
 import com.yh.saas.common.support.util.IdGenerator;
 //import com.yh.saas.common.support.util.StringUtils;
@@ -23,7 +26,9 @@ import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.apache.commons.lang3.StringUtils;
+
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -36,13 +41,15 @@ import java.util.*;
 @Service
 public class InOutWarehouseTaskServiceImpl extends ServiceImpl<InOutWarehouseTaskMapper, InOutWarehouseTask> implements IInOutWarehouseTaskService {
     @Autowired
-     private IInOutWarehouseTaskService inOutWarehouseTaskService;
+    private IInOutWarehouseTaskService inOutWarehouseTaskService;
     @Autowired
     private ICommonBillOperateHisService billOperateHisService;
     @Autowired
     private IWorkflowService workflowService;
+
     /**
      * 出入库任务新增 编辑
+     *
      * @param inOutWarehouseTask
      * @return
      */
@@ -57,9 +64,19 @@ public class InOutWarehouseTaskServiceImpl extends ServiceImpl<InOutWarehouseTas
             inOutWarehouseTask.setTaskStatus(StatusEnum.TASK_REVIEWED.getName());
             inOutWarehouseTask.setEstablishDate(new Date());
             //出库任务,入库任务,赋值关联id
-            if ("1".equals(inOutWarehouseTask.getTaskTypeKey()) || "2".equals(inOutWarehouseTask.getTaskTypeKey())){
+            if ("1".equals(inOutWarehouseTask.getTaskTypeKey()) || "2".equals(inOutWarehouseTask.getTaskTypeKey())) {
                 inOutWarehouseTask.setRelevanceId(inOutWarehouseTask.getId());
             }
+            //新增移库出库任务时,获取发货库和出库量
+            else if ("3".equals(inOutWarehouseTask.getTaskTypeKey()) && "1".equals(inOutWarehouseTask.getInOutFlag())) {
+                inOutWarehouseTask.setSendWarehouse(inOutWarehouseTask.getWarehouseName());
+                inOutWarehouseTask.setDeliveryVolume(inOutWarehouseTask.getWeight());
+            }
+            //新增移库入库任务时,获取收货库和入库量
+            else if ("3".equals(inOutWarehouseTask.getTaskTypeKey()) && "2".equals(inOutWarehouseTask.getInOutFlag())) {
+                inOutWarehouseTask.setReceiveWarehouse(inOutWarehouseTask.getWarehouseNameIn());
+                inOutWarehouseTask.setStorageVolume(inOutWarehouseTask.getWeightIn());
+            }
             // 操作主表数据
             this.insert(inOutWarehouseTask);
 
@@ -68,14 +85,14 @@ public class InOutWarehouseTaskServiceImpl extends ServiceImpl<InOutWarehouseTas
             if (isStartWorkflow) {
                 Workflow workflow = workflowService
                         .findLatestWorkflowByBusinessCode("INOUTTASK-TASK-APPROVE");
-                // 调配没配置审核流程,直接结束调配并处理信息
+                // 没配置审核流程,直接结束并处理信息
                 if (workflow == null) {
                     throw new YException(YExceptionEnum.INTERVER_WORKFLOW_ERROR);
                 }
                 // 开启审核流
                 else {
 
-                    // 设置调配状态 已提交审核
+                    // 设置状态 已提交审核
                     inOutWarehouseTask.setWorkflowId(workflow.getId());
                     this.updateById(inOutWarehouseTask);
                     workflowService.startInstance(workflow.getId(), inOutWarehouseTask.getId());
@@ -98,14 +115,14 @@ public class InOutWarehouseTaskServiceImpl extends ServiceImpl<InOutWarehouseTas
             if (isStartWorkflow) {
                 Workflow workflow = workflowService
                         .findLatestWorkflowByBusinessCode("INOUTTASK-TASK-APPROVE");
-                // 调配没配置审核流程,直接结束调配并处理信息
+                // 没配置审核流程,直接结束并处理信息
                 if (workflow == null) {
                     throw new YException(YExceptionEnum.INTERVER_WORKFLOW_ERROR);
                 }
                 // 开启审核流
                 else {
 
-                    // 设置调配状态 已提交审核
+                    // 设置状态 已提交审核
                     inOutWarehouseTask.setWorkflowId(workflow.getId());
                     this.updateById(inOutWarehouseTask);
                     workflowService.startInstance(workflow.getId(), inOutWarehouseTask.getId());
@@ -130,7 +147,7 @@ public class InOutWarehouseTaskServiceImpl extends ServiceImpl<InOutWarehouseTas
     @Override
     public boolean selectTaskNo(String moveTaskNo) {
         // 根据出入出入库编号查询数据
-        InOutWarehouseTask inOutWarehouseTask= this.selectOne(new EntityWrapper<InOutWarehouseTask>().eq(InOutWarehouseTask.QueryFiles.MOVE_TASK_NO, moveTaskNo)
+        InOutWarehouseTask inOutWarehouseTask = this.selectOne(new EntityWrapper<InOutWarehouseTask>().eq(InOutWarehouseTask.QueryFiles.MOVE_TASK_NO, moveTaskNo)
                 .eq(InOutWarehouseTask.QueryFiles.DELETE_FLAG, NumberConstant.CONSTANT0));
         //如果没有可以使用
         if (inOutWarehouseTask == null) {
@@ -142,23 +159,36 @@ public class InOutWarehouseTaskServiceImpl extends ServiceImpl<InOutWarehouseTas
 
     /**
      * 出入库任务列表
+     *
      * @param inOutWarehouseTask
      * @return
      */
     @Override
-    public Page<InOutWarehouseTask> selectInOutWarehouseTask(InOutWarehouseTask inOutWarehouseTask){
+    public Page<InOutWarehouseTask> selectInOutWarehouseTask(InOutWarehouseTask inOutWarehouseTask) {
         Map<String, Object> pageView = new HashMap<>();
         pageView.put("startRecord", (inOutWarehouseTask.getCurrentPage() - 1)
                 * inOutWarehouseTask.getPageSize());
         //公司id
-        pageView.put("compId",inOutWarehouseTask.getCompId());
-        pageView.put("searchKeyWord",inOutWarehouseTask.getSearchKeyWord());
+        pageView.put("compId", inOutWarehouseTask.getCompId());
+        pageView.put("searchKeyWord", inOutWarehouseTask.getSearchKeyWord());
         pageView.put("searchType", inOutWarehouseTask.getSearchType());
-        pageView.put("pageSize",inOutWarehouseTask.getPageSize());
-        pageView.put("currentPage",inOutWarehouseTask.getCurrentPage());
+        pageView.put("pageSize", inOutWarehouseTask.getPageSize());
+        pageView.put("currentPage", inOutWarehouseTask.getCurrentPage());
         // 查询出入库任务总数
         Integer dataCount = baseMapper.getCountByCondition(pageView);
         List<InOutWarehouseTask> dataList = baseMapper.getListByCondition(pageView);
+        if (CollectionUtils.isNotEmpty(dataList)) {
+//            dataList.forEach(inOutWarehouseTask1 -> {
+            for (InOutWarehouseTask inOutWarehouseTask1 : dataList) {
+                String taskId = "";
+                // 只有待审核状态才有taskId
+                if (StringUtils.isNotBlank(inOutWarehouseTask1.getWorkflowId())) {
+                    JSONObject jsonObject = workflowService.getActiveTask(Lists.newArrayList(inOutWarehouseTask1.getWorkflowId()), inOutWarehouseTask1.getId());
+                    taskId = jsonObject.getString("taskId");
+                    inOutWarehouseTask1.setTaskId(taskId);
+                }
+            }
+        }
         Page<InOutWarehouseTask> page = new Page<>();
         page.setRecords(dataList == null ? Lists.newArrayList() : dataList);
         page.setTotal(dataCount == null ? 0 : dataCount);
@@ -169,28 +199,42 @@ public class InOutWarehouseTaskServiceImpl extends ServiceImpl<InOutWarehouseTas
 
     /**
      * 查看出入库任务
+     *
      * @param relevanceId
      * @return
      */
     @Override
-    public List<InOutWarehouseTask> getInOutWarehouseTask(String relevanceId){
+    public List<InOutWarehouseTask> getInOutWarehouseTask(String relevanceId) {
         List<InOutWarehouseTask> inOutWarehouseTaskList = inOutWarehouseTaskService.selectList(new EntityWrapper<InOutWarehouseTask>()
-            .eq(InOutWarehouseTask.QueryFiles.relevanceId,relevanceId).eq(InOutWarehouseTask.QueryFiles.DELETE_FLAG,NumberConstant.CONSTANT0));
+                .eq(InOutWarehouseTask.QueryFiles.relevanceId, relevanceId).eq(InOutWarehouseTask.QueryFiles.DELETE_FLAG, NumberConstant.CONSTANT0));
+        if (CollectionUtils.isNotEmpty(inOutWarehouseTaskList)) {
+            for (InOutWarehouseTask inOutWarehouseTask1 : inOutWarehouseTaskList) {
+                String taskId = "";
+                // 只有待审核状态才有taskId
+                if (StringUtils.isNotBlank(inOutWarehouseTask1.getWorkflowId())) {
+                    JSONObject jsonObject = workflowService.getActiveTask(Lists.newArrayList(inOutWarehouseTask1.getWorkflowId()), inOutWarehouseTask1.getId());
+                    taskId = jsonObject.getString("taskId");
+                    inOutWarehouseTask1.setTaskId(taskId);
+                }
+            }
+        }
+
         return inOutWarehouseTaskList;
     }
 
     /**
      * 删除出入库任务
+     *
      * @param id
      */
     @Override
-    public void deleteInOutWarehouseTask(String id ,String relevanceId){
+    public void deleteInOutWarehouseTask(String id, String relevanceId) {
         //查询出入库任务
         InOutWarehouseTask inOutWarehouseTask = this.selectById(id);
         if (inOutWarehouseTask != null) {
             //出库任务,入库任务,移库先删入库
             if ("1".equals(inOutWarehouseTask.getTaskTypeKey()) || "2".equals(inOutWarehouseTask.getTaskTypeKey()) ||
-                    ("3".equals(inOutWarehouseTask.getTaskTypeKey()) && "2".equals(inOutWarehouseTask.getInOutFlag())) ) {
+                    ("3".equals(inOutWarehouseTask.getTaskTypeKey()) && "2".equals(inOutWarehouseTask.getInOutFlag()))) {
                 inOutWarehouseTaskService.deleteById(inOutWarehouseTask.getId());
             }
             //移库先删出库,退库并出库
@@ -208,15 +252,16 @@ public class InOutWarehouseTaskServiceImpl extends ServiceImpl<InOutWarehouseTas
 
     /**
      * 更改状态
+     *
      * @param id
      * @return
      */
     @Override
-    public String editStatus(String id){
+    public String editStatus(String id) {
         //查询出入库任务
         InOutWarehouseTask inOutWarehouseTask = this.selectById(id);
         //更改状态
-        if (inOutWarehouseTask != null ){
+        if (inOutWarehouseTask != null) {
             if (StatusEnum.TASK_DO.getFlag().equals(inOutWarehouseTask.getTaskStatusKey())) {
                 inOutWarehouseTask.setTaskStatusKey(StatusEnum.TASK_COMPLETED.getFlag());
                 inOutWarehouseTask.setTaskStatus(StatusEnum.TASK_COMPLETED.getName());
@@ -250,6 +295,7 @@ public class InOutWarehouseTaskServiceImpl extends ServiceImpl<InOutWarehouseTas
         //公司id
         pageView.put("compId", inOutWarehouseTask.getCompId());
         pageView.put("searchKeyWord", inOutWarehouseTask.getSearchKeyWord());
+        pageView.put("searchType", inOutWarehouseTask.getSearchType());
         pageView.put("pageSize", inOutWarehouseTask.getPageSize());
         pageView.put("currentPage", inOutWarehouseTask.getCurrentPage());
 
@@ -258,26 +304,27 @@ public class InOutWarehouseTaskServiceImpl extends ServiceImpl<InOutWarehouseTas
         Integer dataCount = this.baseMapper.getMoveCountByCondition(pageView);
 
 
-        if(!CollectionUtils.isEmpty(dataList)){
-            for(InOutWarehouseTask inOutWarehouseTaska : dataList){
+        if (!CollectionUtils.isEmpty(dataList)) {
+            for (InOutWarehouseTask inOutWarehouseTaska : dataList) {
 
                 //定义累计退库量
                 String stockReturnCount = "";
 
                 //查询退库量
                 List<InOutWarehouseTask> inOutWarehouseTaskList = inOutWarehouseTaskService.selectList(new EntityWrapper<InOutWarehouseTask>()
-                        .eq("task_type_key","4")
                         .eq("contract_no",inOutWarehouseTaska.getMoveTaskNo())
-                        .eq("in_out_flag","2").orderBy("send_warehouse_name").groupBy("send_warehouse_name"));
-                if(!CollectionUtils.isEmpty(inOutWarehouseTaskList)){
-                    Float stockReturn = 0f;
-                    for(InOutWarehouseTask inoutwarehouse :inOutWarehouseTaskList){
-                        stockReturn = stockReturn + inoutwarehouse.getStockReturn();
+                        .eq("in_out_type_key","6")
+                        .eq("delete_flag","0"));
+                if (!CollectionUtils.isEmpty(inOutWarehouseTaskList)) {
+                    for (InOutWarehouseTask inoutwarehouse : inOutWarehouseTaskList) {
+                        if (StringUtils.isEmpty(stockReturnCount)) {
+                            stockReturnCount = "0";
+                        }
+                        stockReturnCount = String.valueOf(Float.valueOf(stockReturnCount) + inoutwarehouse.getWeight());
                     }
-                    inOutWarehouseTask.setStockReturnCount(String.valueOf(stockReturn));
-                    inOutWarehouseTask.setInOutWarehouseTaskList(inOutWarehouseTaskList);
                 }
-
+                inOutWarehouseTaska.setInOutWarehouseTaskList(inOutWarehouseTaskList);
+                inOutWarehouseTaska.setStockReturnCount(stockReturnCount);
             }
         }
 
@@ -299,29 +346,37 @@ public class InOutWarehouseTaskServiceImpl extends ServiceImpl<InOutWarehouseTas
         List<InOutWarehouseTask> inOutWarehouseTaskList = inOutWarehouseTaskService.selectList(new EntityWrapper<InOutWarehouseTask>()
                 .eq("move_task_no",moveTaskNo));
         if(!CollectionUtils.isEmpty(inOutWarehouseTaskList)){
-            inOutWarehouseTaskList.forEach(inOutWarehouseTask -> {
-                 List<InOutWarehouseTask> inOutWarehouseTaskList1 = inOutWarehouseTaskService.selectList(new EntityWrapper<InOutWarehouseTask>()
-                    .eq("task_type_key","4")
-                    .eq("in_out_flag","2")
-                    .eq("contract_no",inOutWarehouseTask.getContractNo().equals(inOutWarehouseTask.getMoveTaskNo())));
-            //累计退库量
-            String stockReturnCount = "";
-            for(InOutWarehouseTask inOutWarehouseTask1 : inOutWarehouseTaskList1){
-                stockReturnCount = stockReturnCount + inOutWarehouseTask1.getStockReturnCount();
-            }
+            for(InOutWarehouseTask inOutWarehouseTask:inOutWarehouseTaskList) {
+                //定义累计退库量
+                String stockReturnCount = "";
+                //查询退库量
+                List<InOutWarehouseTask> inOutWarehouseTaskList1 = inOutWarehouseTaskService.selectList(new EntityWrapper<InOutWarehouseTask>()
+                        .eq("in_out_type_key", "6")
+                        .eq("contract_no", inOutWarehouseTask.getMoveTaskNo())
+                        .eq("delete_flag", "0"));
+                if (!CollectionUtils.isEmpty(inOutWarehouseTaskList1)) {
+                    for (InOutWarehouseTask inoutwarehouse : inOutWarehouseTaskList1) {
+                        if (StringUtils.isEmpty(stockReturnCount)) {
+                            stockReturnCount = "0";
+                        }
+                        stockReturnCount = String.valueOf(Float.valueOf(stockReturnCount) + inoutwarehouse.getWeight());
+                    }
+                }
+                inOutWarehouseTask.setInOutWarehouseTaskList(inOutWarehouseTaskList1);
                 inOutWarehouseTask.setStockReturnCount(stockReturnCount);
-            });
+            }
         }
         return inOutWarehouseTaskList;
     }
 
     /**
      * 出入库任务审核 编辑
+     *
      * @param inOutWarehouseTask
      * @return
      */
     @Override
-    public String checkOrUpdateInOutTask(InOutWarehouseTask inOutWarehouseTask){
+    public String checkOrUpdateInOutTask(InOutWarehouseTask inOutWarehouseTask) {
         this.updateById(inOutWarehouseTask);
         return inOutWarehouseTask.getId();
     }

+ 1229 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/NewWorkflowServiceImpl.java

@@ -0,0 +1,1229 @@
+package com.yh.saas.plugin.yiliangyiyun.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alipay.sofa.runtime.api.annotation.SofaReference;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.google.common.collect.Lists;
+import com.winsea.svc.base.base.entity.*;
+import com.winsea.svc.base.base.service.*;
+import com.winsea.svc.base.base.util.ObjectUtils;
+import com.winsea.svc.base.base.util.provider.BeanWorkFlowProvider;
+import com.winsea.svc.base.security.entity.User;
+import com.winsea.svc.base.security.util.AuthSecurityUtils;
+import com.winsea.svc.base.workflow.configservice.IWorkflowConfigService;
+import com.winsea.svc.base.workflow.entity.Workflow;
+import com.winsea.svc.base.workflow.entity.WorkflowListener;
+import com.winsea.svc.base.workflow.entity.WorkflowStep;
+import com.yh.saas.common.support.util.ContextWrapper;
+import com.yh.saas.common.support.util.IdGenerator;
+import com.yh.saas.common.support.util.StringUtils;
+import com.yh.saas.common.support.workflow.AbstractWorkflowTaskListener;
+import com.yh.saas.common.support.workflow.IWorkflowTaskChecklist;
+import com.yh.saas.plugin.yiliangyiyun.service.INewWorkflowService;
+import com.yh.saas.toolkit.workflow.activiti.ActivitiWorkflowBuilder;
+import com.yh.saas.toolkit.workflow.activiti.cmd.DeleteTaskCmd;
+import com.yh.saas.toolkit.workflow.activiti.util.ActivitiCountersignUtils;
+import com.yh.saas.toolkit.workflow.activiti.util.ActivitiHistoryUtils;
+import com.yh.saas.toolkit.workflow.activiti.util.ActivitiProcessUtils;
+import com.yh.saas.toolkit.workflow.activiti.util.ActivitiTaskUtils;
+import com.yh.saas.toolkit.workflow.config.WorkflowProperties;
+import com.yh.saas.toolkit.workflow.constants.ActivitiVariableNameConstants;
+import com.yh.saas.toolkit.workflow.exception.WorkflowErrorCodeEnums;
+import com.yh.saas.toolkit.workflow.exception.WorkflowException;
+import com.yh.saas.toolkit.workflow.service.IWorkflowHistoryService;
+import com.yh.saas.toolkit.workflow.service.IWorkflowListenerService;
+import com.yh.saas.toolkit.workflow.service.IWorkflowService;
+import com.yh.saas.toolkit.workflow.service.IWorkflowStepService;
+import lombok.extern.slf4j.Slf4j;
+import org.activiti.bpmn.model.FlowElement;
+import org.activiti.bpmn.model.Process;
+import org.activiti.bpmn.model.UserTask;
+import org.activiti.engine.*;
+import org.activiti.engine.history.HistoricProcessInstance;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.activiti.engine.task.Task;
+import org.activiti.engine.task.TaskInfo;
+import org.activiti.engine.task.TaskQuery;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.InputStream;
+import java.io.Serializable;
+import java.lang.reflect.ParameterizedType;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
+
+/**
+ * 工作流服务实现
+ *
+ * @author gdc
+ */
+@Transactional
+@Service
+@Slf4j
+public class NewWorkflowServiceImpl implements INewWorkflowService {
+
+    private static final String TASK_QUERY_TASK_ID = "taskId";
+
+    private static final String TASK_QUERY_TASK_NAME = "taskName";
+
+    private static final String TASK_QUERY_WORKFLOW_ID = "workflowId";
+
+    private static final String TASK_QUERY_BUSINESS_KEY = "businessKey";
+
+    private static final String WORKFLOW_ID_FIELD = "workflowId";
+
+    private static final String WORK_FLOW_ID_FIELD = "workFlowId";
+
+    public static final String SERVICE_NAME_SPAREPART = "sparepart";
+    public static final String SERVICE_NAME_MATERIEL = "materiel";
+    public static final String SERVICE_NAME_NAVIGATION = "navigation";
+    public static final String SERVICE_NAME_PURCHASE = "purchase";
+
+    private Map<String, BaseMapper<?>> entityClassBaseMapperMap = new ConcurrentHashMap<>();
+
+    @Autowired
+    private WorkflowProperties workflowProperties;
+
+    @Autowired
+    private RedisTemplate<String, String> redisTemplate;
+
+    @Autowired
+    private ProcessEngine processEngine;
+
+    @Autowired
+    private ManagementService managementService;
+
+    @Autowired
+    private RuntimeService runtimeService;
+
+    @Autowired
+    private TaskService taskService;
+
+    @Autowired
+    private IdentityService identityService;
+
+    @Autowired
+    private IWorkflowStepService workflowStepService;
+
+    @Autowired
+    private IWorkflowListenerService workflowListenerService;
+
+    @Autowired
+    private IWorkflowHistoryService workflowHistoryService;
+
+    @SofaReference
+    private IWorkflowConfigService workflowConfigService;
+
+    @SofaReference
+    private ICommonStaffService staffService;
+
+    @SofaReference
+    private ICommonCompanyService companyService;
+
+    @SofaReference
+    private ILanguageChangeService languageChangeService;
+
+    @SofaReference
+    private IAuditHistoryService auditHistoryService;
+
+    @SofaReference
+    private ICommonFlowBusinessTableService flowBusinessTableService;
+
+    @SofaReference
+    private ICommonStaffVesselService staffVesselService;
+
+    private ThreadLocal<String> localUserId = new ThreadLocal<>();
+
+    @Override
+    public String create(Workflow workflow) {
+        workflow.setId(generateFlowId()); // 工作流ID将作为Activiti流程定义ID,必须以字母或下划线开头
+        workflow.setLatest(1); // 最新版
+        insert(workflow);
+
+        // 创建步骤和全局监听器
+        createStepsAndListeners(workflow.getId(), workflow.getSteps(), workflow.getListeners());
+
+        // 将全局监听器绑定到所有步骤
+        workflow.getSteps().stream().forEach(step -> {
+            if (CollectionUtils.isEmpty(step.getListeners())) {
+                step.setListeners(workflow.getListeners());
+            } else {
+                step.getListeners().addAll(workflow.getListeners());
+            }
+        });
+
+        // 如果是租户创建的工作流则部署工作流
+        if (!StringUtils.isEmpty(workflow.getCompId())) {
+            // 设置租户ID
+            workflow.setTenantId(companyService.selectById(workflow.getCompId()).getTenantId());
+
+            buildActivitiWorkflow(workflow);
+        }
+        return workflow.getId();
+    }
+
+    @Override
+    public String changeInfo(Workflow workflow) {
+        Workflow originalWorkflow = this.selectById(workflow.getId());
+
+        // 模板修改
+        if (null == originalWorkflow.getCompId()) {
+            // 删除步骤和全局监听器
+            workflowStepService.removeByWorkflowId(workflow.getId());
+            workflowListenerService.removeByFlowId(workflow.getId());
+
+            // 创建步骤和全局监听器
+            createStepsAndListeners(workflow.getId(), workflow.getSteps(), workflow.getListeners());
+
+            updateById(workflow);
+            return workflow.getId();
+        }
+        // 工作流修改
+        else {
+            // 设置原始工作流为旧版
+            originalWorkflow.setLatest(0);
+            updateById(originalWorkflow);
+
+            // 创建新版工作流
+            return create(workflow);
+        }
+    }
+
+    @Override
+    public Workflow getWorkflowDetail(String workflowId) {
+        return workflowConfigService.getWorkflowDetail(workflowId);
+    }
+
+    @Override
+    public List<Workflow> getWorkflowDefinitions(String businessCode, String compId) {
+        return workflowConfigService.getWorkflowDefinitions(businessCode, compId);
+    }
+
+    @Override
+    public Workflow findLatestWorkflowByBusinessCode(String businessCode) {
+        return workflowConfigService.findLatestWorkflowByBusinessCode(businessCode, getCurrentCompId(), getCurrentUserRoles());
+    }
+
+    @Override
+    public Workflow getLatestWorkflowByBusinessCodeAndCompId(String businessCode, String compId) {
+        return workflowConfigService.getLatestWorkflowByBusinessCodeAndCompId(businessCode, compId);
+    }
+
+    @Override
+    public List<Workflow> findWorkflowsByBusinessCode(String businessCode) {
+        return workflowConfigService.findWorkflowsByBusinessCode(businessCode, getCurrentCompId(),
+                getCurrentUserRoles());
+    }
+
+    @Override
+    public List<String> findWorkflowIdsByBusinessCode(String businessCode) {
+        return findWorkflowsByBusinessCode(businessCode).stream().map(Workflow::getId).collect(Collectors.toList());
+    }
+
+    @Override
+    public InputStream getProcessDiagram(String workflowId) {
+        return ActivitiProcessUtils.getProcessDiagram(workflowId);
+    }
+
+    @Override
+    public void startInstance(String workflowId, String businessKey) {
+        startInstance(workflowId, businessKey, getCurrentUserId());
+    }
+
+    @Override
+    public void startInstance(String workflowId, String businessKey, String startUserId) {
+        // 设置发起人ID
+        identityService.setAuthenticatedUserId(startUserId);
+
+        // 开始流程
+        Map<String, Object> vars = new HashMap<>();
+        vars.put(ActivitiVariableNameConstants.START_USER_ID, startUserId);
+        vars.put(ActivitiVariableNameConstants.STEP_NUMBER, 1);
+        runtimeService.startProcessInstanceByKey(workflowId, businessKey, vars);
+
+        ProcessInstance processInstance = ActivitiProcessUtils.findInstanceByWorkflowIdAndBusinessKey(workflowId,
+                businessKey);
+
+        if (null == processInstance) {
+            notify(workflowId,
+                    taskListener -> taskListener.handleStatusChanged(businessKey, "已完成", "Completed", true));
+        } else {
+            // 跳过占位步骤
+            skipPlaceholder(processInstance.getProcessInstanceId());
+
+            // 设置审批状态
+            setApprovedOnStart(processInstance);
+
+            if ("1".equals(getWorkflowDetail(workflowId).getCreatorQuickAuditFlag())) {
+                // 跳过相邻步骤是同一人
+                skipAdjacentSameApprover(processInstance);
+            }
+        }
+    }
+
+    @Override
+    public String activateInstance(String workflowId, String businessKey) {
+        ProcessInstance instance = ActivitiProcessUtils.findInstanceByWorkflowIdAndBusinessKey(workflowId, businessKey);
+        String currentWorkflowId = reaunchAudit(instance.getId());
+        if (!workflowId.equals(currentWorkflowId)) {
+            return currentWorkflowId;
+        }
+
+        String processExecutionId = instance.getId();
+
+        // 首先激活流程实例,否则跳转不了
+        runtimeService.activateProcessInstanceById(instance.getId());
+
+        // 设置审核历史用变量
+        String startInfos = ActivitiProcessUtils.getProcessVariable(processExecutionId,
+                ActivitiVariableNameConstants.START_INFOS, String.class);
+        String staffId = null == getCurrentUserId() ? instance.getStartUserId() : getCurrentUserId();
+
+        String startInfo = getStartInfo(staffId, System.currentTimeMillis());
+        if (StringUtils.isEmpty(startInfos)) {
+            startInfos = getStartInfo(staffId, instance.getStartTime().getTime()) + "," + startInfo;
+        } else {
+            startInfos = startInfos + "," + startInfo;
+        }
+        ActivitiProcessUtils.setProcessVariable(processExecutionId, ActivitiVariableNameConstants.START_INFOS,
+                startInfos);
+
+        // 获取跳转用变量
+        String jumpPreTaskId = ActivitiProcessUtils.getProcessVariable(processExecutionId,
+                ActivitiVariableNameConstants.JUMP_PRE_TASK_ID, String.class);
+        String jumpToUserTaskId = ActivitiProcessUtils.getProcessVariable(processExecutionId,
+                ActivitiVariableNameConstants.JUMP_TO_USER_TASK_ID, String.class);
+
+        // 如果有跳转标识则进行流程跳转
+        if (null != jumpPreTaskId && null != jumpToUserTaskId) {
+            ActivitiTaskUtils.jump(jumpPreTaskId, jumpToUserTaskId);
+        }
+
+        // 清理跳转用变量
+        ActivitiProcessUtils.removeProcessVariable(processExecutionId, ActivitiVariableNameConstants.JUMP_PRE_TASK_ID);
+        ActivitiProcessUtils.removeProcessVariable(processExecutionId,
+                ActivitiVariableNameConstants.JUMP_TO_USER_TASK_ID);
+
+        // 设置当前步骤
+        ActivitiProcessUtils.setProcessVariable(processExecutionId, ActivitiVariableNameConstants.STEP_NUMBER, 1);
+
+        // 跳过占位步骤
+        skipPlaceholder(instance.getProcessInstanceId());
+
+        // 设置审批状态
+        setApprovedOnStart(instance);
+
+        return workflowId;
+    }
+
+    @Override
+    public void suspendInstance(String workflowId, String businessKey) {
+        ProcessInstance instance = ActivitiProcessUtils.findInstanceByWorkflowIdAndBusinessKey(workflowId, businessKey);
+        if (null != instance) {
+            runtimeService.suspendProcessInstanceById(instance.getProcessInstanceId());
+        }
+    }
+
+    @Override
+    public void stopInstance(String workflowId, String businessKey, String reason) {
+        ProcessInstance instance = ActivitiProcessUtils.findInstanceByWorkflowIdAndBusinessKey(workflowId, businessKey);
+        if (null != instance) {
+            notifyStatusChanged(workflowId, businessKey, reason);
+
+            deleteProcessInstanceWrapper(instance.getProcessInstanceId(), reason);
+        }
+    }
+
+    @Override
+    public void claim(String taskId) {
+        claim(taskId, getCurrentUserId());
+    }
+
+    @Override
+    public void claim(String taskId, String userId) {
+        try {
+            taskService.claim(taskId, userId);
+        } catch (ActivitiTaskAlreadyClaimedException ex) {
+            throw new WorkflowException(WorkflowErrorCodeEnums.TASK_REPEATED_CLAIMED);
+        }
+    }
+
+    @Override
+    public void handle(String taskId, boolean approved, String auditMind, boolean needReapply) {
+        // 先签收,保证审核历史有数据
+        claim(taskId);
+
+        Task task = ActivitiTaskUtils.getTaskById(taskId);
+        if (null != task) {
+            ProcessInstance instance = ActivitiProcessUtils.getInstanceById(task.getProcessInstanceId());
+            String processExecutionId = instance.getId();
+
+            // 设置任务自己的变量信息
+            ActivitiTaskUtils.setTaskVariableLocal(taskId, ActivitiVariableNameConstants.APPROVAL_FLAG, approved);
+            ActivitiTaskUtils.setTaskVariableLocal(taskId, ActivitiVariableNameConstants.AUDIT_MIND, auditMind);
+            ActivitiTaskUtils.setTaskVariableLocal(taskId, ActivitiVariableNameConstants.OPERATOR_USER_ID,
+                    getCurrentUserId());
+
+            // 设置流程id
+            ActivitiProcessUtils.setProcessVariable(processExecutionId,
+                    ActivitiVariableNameConstants.TASK_DEFINITION_KEY, task.getTaskDefinitionKey());
+
+            // 如果是会签则增加访问计数
+            if (ActivitiCountersignUtils.isCountersignTask(task)) {
+                ActivitiCountersignUtils.increaseLoopCounter(task.getId());
+            }
+
+            // 通过
+            if (approved) {
+                // 当前状态,如果节点没有走下去(会签),会用作状态恢复
+                String currentStatus = ActivitiProcessUtils.getProcessVariable(instance.getId(),
+                        ActivitiVariableNameConstants.APPROVAL_STATUS, String.class);
+
+                // 更新最后审批状态
+                ActivitiProcessUtils.setProcessVariable(processExecutionId, ActivitiVariableNameConstants.APPROVAL_FLAG,
+                        approved);
+
+                // 将状态先至诚“已完成”,解决流程结束状态改变不了问题
+                ActivitiProcessUtils.setProcessVariable(instance.getId(), ActivitiVariableNameConstants.APPROVAL_STATUS,
+                        "已完成");
+
+                // 设置流程
+                ActivitiProcessUtils.setProcessVariable(processExecutionId,
+                        ActivitiVariableNameConstants.TASK_DEFINITION_KEY, task.getTaskDefinitionKey());
+
+                taskService.complete(taskId, getConditionMap(instance.getProcessInstanceId()));
+
+                // 记录当前是哪个步骤
+                Task activeTask = ActivitiTaskUtils.getActiveTask(instance.getProcessInstanceId());
+                if (null != activeTask) {
+                    String definitionKey = ActivitiProcessUtils.getProcessVariable(processExecutionId,
+                            ActivitiVariableNameConstants.TASK_DEFINITION_KEY, String.class);
+                    if (!StringUtils.isEmpty(definitionKey)
+                            && !definitionKey.equals(activeTask.getTaskDefinitionKey())) {
+                        Integer stepNumber = ActivitiProcessUtils.getProcessVariable(processExecutionId,
+                                ActivitiVariableNameConstants.STEP_NUMBER, Integer.class);
+                        if (null != stepNumber) {
+                            ActivitiProcessUtils.setProcessVariable(processExecutionId,
+                                    ActivitiVariableNameConstants.STEP_NUMBER, ++stepNumber);
+                        }
+                    }
+                }
+
+                // 跳过占位步骤
+                skipPlaceholder(instance.getProcessInstanceId());
+
+                // 设置审批状态
+                setApprovedStatusOnApproved(instance, task, currentStatus);
+
+                if ("1".equals(getWorkflowDetail(instance.getProcessDefinitionKey()).getSkipAdjacentFlag())) {
+                    // 跳过相邻步骤是同一人
+                    skipAdjacentSameApprover(instance);
+                }
+
+            }
+            // 拒绝
+            else {
+                if (ActivitiCountersignUtils.isCountersignTask(task)
+                        && !ActivitiCountersignUtils.canCompleteCountersign(task)
+                        || !ActivitiCountersignUtils.isCountersignTask(task)) {
+
+                    // 更新最后审批状态
+                    // 必须先执行,否则流程挂起执行不了
+                    ActivitiProcessUtils.setProcessVariable(processExecutionId,
+                            ActivitiVariableNameConstants.APPROVAL_FLAG, approved);
+
+                    // 驳回
+                    reject(task, needReapply);
+
+                    // 发送申请被拒绝通知,申请被驳回
+                    notifyApplicationRejected(instance.getProcessDefinitionKey(), instance.getBusinessKey(), true,
+                            needReapply);
+                } else {
+                    // 发送申请被拒绝通知,申请还在进行中
+                    notifyApplicationRejected(instance.getProcessDefinitionKey(), instance.getBusinessKey(), false,
+                            needReapply);
+
+                    // 删除任务
+                    managementService.executeCommand(new DeleteTaskCmd(taskId));
+                }
+            }
+
+            String businessId = instance.getBusinessKey();
+            String taskName = task.getName();
+            String staffId = getCurrentUserId();
+            saveHistory(businessId, taskName, staffId, auditMind, approved);
+        }
+    }
+
+    @Override
+    public Page<Object> getTaskList(List<String> workflowIds, int current, int size) {
+        TaskQuery taskQuery = ActivitiTaskUtils.getTaskQueryByUserAndRoles(getCurrentUserId(), getCurrentUserRoles(),
+                workflowIds);
+        List<TaskInfo> tasks = taskQuery.listPage((current - 1) * size, size).stream().map(task -> (TaskInfo) task)
+                .collect(Collectors.toList());
+        return generateIPage(current, size, taskQuery.count(), getTaskDetailInfos(workflowIds.get(0), tasks));
+    }
+
+    @Override
+    public List<String> getTaskBusinessKeysByCode(String businessCode) {
+        List<String> workflowIds = findWorkflowIdsByBusinessCode(businessCode);
+        if (CollectionUtils.isEmpty(workflowIds)) {
+            return new ArrayList<>();
+        }
+        return getTaskBusinessKeys(workflowIds);
+    }
+
+    @Override
+    public List<String> getTaskBusinessKeysByFlowId(String workflowId) {
+        return getTaskBusinessKeys(Lists.newArrayList(workflowId));
+    }
+
+    @Override
+    public List<String> getDoneTaskBusinessKeysByCode(String businessCode) {
+        List<String> doneTaskBusinessKeys = workflowHistoryService
+                .getCheckerHisInstBusinessKeysByCode(getCurrentUserId(), businessCode);
+
+        // 删除待办任务
+        List<String> currentTaskBusinessKeys = getTaskBusinessKeysByCode(businessCode);
+        doneTaskBusinessKeys.removeAll(currentTaskBusinessKeys);
+
+        return doneTaskBusinessKeys;
+    }
+
+    @Override
+    public List<String> getDoneTaskBusinessKeysByFlowId(String workflowId) {
+        List<String> doneTaskBusinessKeys = workflowHistoryService
+                .getCheckerHisInstBusinessKeysByFlowId(getCurrentUserId(), workflowId);
+
+        // 删除待办任务
+        List<String> currentTaskBusinessKeys = getTaskBusinessKeysByFlowId(workflowId);
+        doneTaskBusinessKeys.removeAll(currentTaskBusinessKeys);
+
+        return doneTaskBusinessKeys;
+    }
+
+    @Override
+    public JSONObject getActiveTask(List<String> workflowIds, String businessKey) {
+        Task activeTask = ActivitiTaskUtils.getActiveTask(getCurrentUserId(), getCurrentUserRoles(), workflowIds,
+                businessKey);
+        JSONObject activeTaskJsonObj = new JSONObject();
+        if (activeTask != null) {
+            activeTaskJsonObj.put(TASK_QUERY_TASK_ID, activeTask.getId());
+            activeTaskJsonObj.put(TASK_QUERY_TASK_NAME, activeTask.getName());
+            activeTaskJsonObj.put(TASK_QUERY_WORKFLOW_ID, getTaskWorkflowId(activeTask));
+        }
+        return activeTaskJsonObj;
+    }
+
+    @Override
+    public JSONObject getActiveTask(String staffId, List<String> workflowIds, String businessKey) {
+        List<String> roleIds = AuthSecurityUtils.getUserRoles(staffId).stream().map(CommonRole::getRoleId).collect(Collectors.toList());
+        Task activeTask = ActivitiTaskUtils.getActiveTask(staffId, roleIds, workflowIds,
+                businessKey);
+        JSONObject activeTaskJsonObj = new JSONObject();
+        if (activeTask != null) {
+            activeTaskJsonObj.put(TASK_QUERY_TASK_ID, activeTask.getId());
+            activeTaskJsonObj.put(TASK_QUERY_TASK_NAME, activeTask.getName());
+            activeTaskJsonObj.put(TASK_QUERY_WORKFLOW_ID, getTaskWorkflowId(activeTask));
+        }
+        return activeTaskJsonObj;
+    }
+
+    @Override
+    public Workflow selectById(Serializable id) {
+        return workflowConfigService.selectById(id);
+    }
+
+    @Override
+    public Integer findWorkflowStepNumber(String workflowId, String businessKey) {
+        HistoricProcessInstance historicProcessInstance = ActivitiHistoryUtils.findHistoricProcessInstance(workflowId, businessKey);
+        Map<String, Object> map = historicProcessInstance.getProcessVariables();
+        if (null == map.get(ActivitiVariableNameConstants.STEP_NUMBER)) {
+            return 0;
+        }
+        return Integer.parseInt(map.get(ActivitiVariableNameConstants.STEP_NUMBER).toString());
+    }
+
+    @Override
+    public boolean judgeBusinessLastStep(String taskId) {
+        // 当前任务
+        Task currentTask = taskService.createTaskQuery().taskId(taskId).singleResult();
+        String sequenceFlowId = currentTask.getTaskDefinitionKey() + "-" + "endEvent";
+        // 获取流程定义
+        Process process = ActivitiProcessUtils.getMainProcess(currentTask.getProcessDefinitionId());
+        Map<String, FlowElement> map = process.getFlowElementMap();
+        return map.containsKey(sequenceFlowId);
+    }
+
+    @Override
+    public void removeLatestWorkflow(String workflowId) {
+        Workflow workflow = this.selectById(workflowId);
+        if (workflow == null) {
+            return;
+        }
+        workflow.setLatest(0);
+        this.updateById(workflow);
+    }
+
+
+    /**
+     * 审核被驳回
+     *
+     * @param task        task
+     * @param needReapply 是否需要重新申请
+     */
+    private void reject(Task task, boolean needReapply) {
+        ProcessInstance instance = ActivitiProcessUtils.getInstanceById(task.getProcessInstanceId());
+        String processExecutionId = instance.getId();
+        String firstUserTaskId = ActivitiTaskUtils.getFirstUserTask(task.getProcessDefinitionId()).getId();
+
+        // 清除会签变量,防止回退不能完整走会签节点
+        ActivitiCountersignUtils.clearCountersignVars(task);
+
+        // 删除未审批的任务
+        deleteUnapprovedTask(instance.getProcessInstanceId());
+
+        if (needReapply) {
+            // 设置用户重新申请要跳转的节点
+            ActivitiProcessUtils.setProcessVariable(processExecutionId, ActivitiVariableNameConstants.JUMP_PRE_TASK_ID,
+                    task.getId());
+            ActivitiProcessUtils.setProcessVariable(processExecutionId,
+                    ActivitiVariableNameConstants.JUMP_TO_USER_TASK_ID, firstUserTaskId);
+
+            // 设置审批状态
+            setApprovedStatusOnRejected(instance, task, needReapply);
+
+            // 挂起流程
+            runtimeService.suspendProcessInstanceById(instance.getProcessInstanceId());
+        } else {
+            ActivitiTaskUtils.jump(task.getId(), firstUserTaskId);
+
+            // 跳过占位步骤
+            skipPlaceholder(instance.getProcessInstanceId());
+
+            // 设置审批状态
+            setApprovedStatusOnRejected(instance, task, needReapply);
+        }
+    }
+
+    /**
+     * 重新发起审核流
+     *
+     * @param instanceId 流程实例ID
+     * @return 新流程ID
+     */
+    @SuppressWarnings({"rawtypes", "unchecked"})
+    private String reaunchAudit(String instanceId) {
+        ProcessInstance instance = ActivitiProcessUtils.getInstanceById(instanceId);
+        String businessCode = selectById(instance.getProcessDefinitionKey()).getBusinessCode();
+
+        String staffId = null == getCurrentUserId() ? instance.getStartUserId() : getCurrentUserId();
+        CommonStaff staff = staffService.selectById(staffId);
+
+        Workflow workflow = getLatestWorkflowByBusinessCodeAndCompId(businessCode, staff.getCompId());
+
+        // 如果审核流被修改,则废弃旧的审核流并开启新的审核流
+        if (null != workflow && !workflow.getId().equals(instance.getProcessDefinitionKey())) {
+            deleteProcessInstanceWrapper(instance.getId(), "");
+            startInstance(workflow.getId(), instance.getBusinessKey(), instance.getStartUserId());
+
+            CommonFlowBusinessTable flowBusinessTable = flowBusinessTableService.selectById(businessCode);
+            if (null != flowBusinessTable) {
+                BaseMapper baseMapper = getEntityClassBaseMapperMap()
+                        .get(flowBusinessTable.getBusinessTableEntityClass());
+                if (null != baseMapper) {
+                    Object entity = baseMapper.selectById(instance.getBusinessKey());
+                    if (setEntityWorkflowId(entity, instance.getProcessDefinitionKey(), workflow.getId())) {
+                        baseMapper.updateById(entity);
+                    }
+                }
+            }
+            return workflow.getId();
+        }
+        return instance.getProcessDefinitionKey();
+    }
+
+    /**
+     * 获取实体中的流程ID
+     *
+     * @param entity 实体
+     * @return 流程ID
+     */
+    private String getEntityWorkflowId(Object entity) {
+        Object workflowId = null;
+
+        try {
+            workflowId = ObjectUtils.getFieldValue(entity, WORKFLOW_ID_FIELD);
+        } catch (Exception e) {
+            // ignore
+        }
+
+        if (null == workflowId) {
+            try {
+                workflowId = ObjectUtils.getFieldValue(entity, WORK_FLOW_ID_FIELD);
+            } catch (Exception e) {
+                // ignore
+            }
+        }
+        return null != workflowId ? workflowId.toString() : null;
+    }
+
+    /**
+     * 设置实体流程ID
+     *
+     * @param entity            实体
+     * @param originalWrkflowId 原流程ID
+     * @param currentWorkflowId 新流程ID
+     * @return 是否设置成功
+     */
+    private boolean setEntityWorkflowId(Object entity, String originalWrkflowId, String currentWorkflowId) {
+        if (null == entity) {
+            return false;
+        }
+
+        String originalWrkflowIds = getEntityWorkflowId(entity);
+        if (null == originalWrkflowIds || originalWrkflowIds.isEmpty()) {
+            return false;
+        }
+
+        String workflowIds = originalWrkflowIds.replace(originalWrkflowId, currentWorkflowId);
+
+        try {
+            ObjectUtils.setFieldValue(entity, WORKFLOW_ID_FIELD, workflowIds);
+        } catch (Exception e) {
+            // ignore
+        }
+
+        try {
+            ObjectUtils.setFieldValue(entity, WORK_FLOW_ID_FIELD, workflowIds);
+        } catch (Exception e) {
+            // ignore
+        }
+        return true;
+    }
+
+    /**
+     * 跳过占位步骤
+     *
+     * @param processInstanceId 流程实例ID
+     */
+    private void skipPlaceholder(String processInstanceId) {
+        Task task = ActivitiTaskUtils.getActiveTask(processInstanceId);
+        if (null != task && "_PLACEHOLDER_".equals(task.getName())) {
+            // 完成占位步骤
+            taskService.complete(task.getId(), getConditionMap(processInstanceId));
+
+            // 跳过占位步骤
+            skipPlaceholder(processInstanceId);
+        }
+    }
+
+    /**
+     * 删除未审批的任务
+     *
+     * @param processInstanceId 流程ID
+     */
+    private void deleteUnapprovedTask(String processInstanceId) {
+        ActivitiTaskUtils.getActiveTasks(processInstanceId).stream().filter(activeTask -> !activeTask.isSuspended())
+                .filter(activeTask -> null == ActivitiTaskUtils.getTaskVariableLocal(activeTask.getId(),
+                        ActivitiVariableNameConstants.APPROVAL_FLAG))
+                .forEach(activeTask -> managementService.executeCommand(new DeleteTaskCmd(activeTask.getId())));
+    }
+
+    /**
+     * 设置审批状态,流程启动场景
+     *
+     * @param instance 流程实例
+     */
+    private void setApprovedOnStart(ProcessInstance instance) {
+        Task nextTask = ActivitiTaskUtils.getActiveTask(instance.getProcessInstanceId());
+        String workflowId = instance.getProcessDefinitionKey();
+        String businessKey = instance.getBusinessKey();
+
+        String status = null;
+        if (null == nextTask) {
+            status = "已完成";
+        } else {
+            status = "待" + nextTask.getName();
+            ActivitiProcessUtils.setProcessVariable(instance.getId(), ActivitiVariableNameConstants.APPROVAL_STATUS,
+                    status);
+        }
+        notifyStatusChanged(workflowId, businessKey, status);
+    }
+
+    /**
+     * 设置审批状态,审核通过场景
+     *
+     * @param instance      流程实例
+     * @param preTask       上一步
+     * @param currentStatus 当前状态
+     */
+    private void setApprovedStatusOnApproved(ProcessInstance instance, Task preTask, String currentStatus) {
+        Task nextTask = ActivitiTaskUtils.getActiveTask(instance.getProcessInstanceId());
+        String workflowId = instance.getProcessDefinitionKey();
+        String businessKey = instance.getBusinessKey();
+
+        String status = null;
+        if (null != nextTask) {
+            if (!nextTask.getTaskDefinitionKey().equals(preTask.getTaskDefinitionKey())) {
+                status = "待" + nextTask.getName();
+            } else {
+                status = currentStatus;
+            }
+        } else {
+            notifyStatusChanged(workflowId, businessKey, "已完成");
+        }
+
+        if (null != status) {
+            ActivitiProcessUtils.setProcessVariable(instance.getId(), ActivitiVariableNameConstants.APPROVAL_STATUS,
+                    status);
+
+            notifyStatusChanged(workflowId, businessKey, status);
+        }
+    }
+
+    /**
+     * 结束流程
+     *
+     * @param processInstanceId 流程实例ID
+     * @param deleteReason      结束原因
+     */
+    private void deleteProcessInstanceWrapper(String processInstanceId, String deleteReason) {
+        try {
+            ContextWrapper.getApplicationContext().getBean(this.getClass()).deleteProcessInstance(processInstanceId,
+                    deleteReason);
+        } catch (ActivitiObjectNotFoundException ex) {
+            // 流程已结束
+        }
+    }
+
+    /**
+     * 结束流程
+     *
+     * @param processInstanceId 流程实例ID
+     * @param deleteReason      结束原因
+     */
+    @Transactional(propagation = Propagation.NESTED)
+    public void deleteProcessInstance(String processInstanceId, String deleteReason) {
+        runtimeService.deleteProcessInstance(processInstanceId, deleteReason);
+    }
+
+    /**
+     * 设置审批状态,审核不通过场景
+     *
+     * @param instance    流程实例
+     * @param preTask     上一步
+     * @param needReapply 是否需要重新申请
+     */
+    private void setApprovedStatusOnRejected(ProcessInstance instance, Task preTask, Boolean needReapply) {
+        Task nextTask = ActivitiTaskUtils.getActiveTask(instance.getProcessInstanceId());
+        String workflowId = instance.getProcessDefinitionKey();
+        String businessKey = instance.getBusinessKey();
+
+        String status = null;
+        if (needReapply) {
+            status = preTask.getName() + "失败";
+        } else {
+            status = "待" + nextTask.getName();
+        }
+
+        ActivitiProcessUtils.setProcessVariable(instance.getId(), ActivitiVariableNameConstants.APPROVAL_STATUS,
+                status);
+
+        notifyStatusChanged(workflowId, businessKey, status);
+    }
+
+    /**
+     * 通知状态变更
+     *
+     * @param workflowId  工作流ID
+     * @param businessKey 业务ID
+     * @param status      状态
+     */
+    private void notifyStatusChanged(String workflowId, String businessKey, String status) {
+        boolean processIsEnd = "已完成".equals(status);
+        String compId = null;
+        User user = AuthSecurityUtils.getCurrentUserInfo();
+        if (null != user) {
+            compId = user.getCompId();
+        } else {
+            ProcessInstance processInstance = ActivitiProcessUtils.findInstanceByWorkflowIdAndBusinessKey(workflowId,
+                    businessKey);
+            compId = staffService.selectById(processInstance.getStartUserId()).getCompId();
+        }
+
+        String statusEn = languageChangeService.findLanguageBySourceType(compId, LanguageChange.LanguageStataus.CHINESE,
+                processIsEnd ? status : status.substring(1), LanguageChange.LanguageStataus.ENGLISH);
+        notify(workflowId, taskListener -> taskListener.handleStatusChanged(businessKey, status,
+                !StringUtils.isEmpty(statusEn) ? "Waiting for the " + statusEn : null, processIsEnd));
+    }
+
+    /**
+     * 通知申请被拒绝
+     *
+     * @param workflowId          工作流ID
+     * @param businessKey         业务ID
+     * @param applicationRepulsed 申请被打回
+     * @param needReapply         是否需要重新填写
+     */
+    private void notifyApplicationRejected(String workflowId, String businessKey, boolean applicationRepulsed,
+                                           boolean needReapply) {
+        notify(workflowId, taskListener -> {
+            if (applicationRepulsed) {
+                taskListener.handleRejectApplicationRepulsed(workflowId, businessKey, needReapply);
+            } else {
+                taskListener.handleRejectApplicationProcessing(workflowId, businessKey);
+            }
+        });
+    }
+
+    /**
+     * 通知
+     *
+     * @param workflowId 工作流ID
+     * @param consumer   通知业务
+     */
+    private void notify(String workflowId, Consumer<AbstractWorkflowTaskListener> consumer) {
+        List<WorkflowListener> workflowListeners = workflowListenerService.findByFlowId(workflowId);
+
+        // 调用默认任务监听器
+        final String defaultTaskListenerId = "defaultWorkflowTaskListener";
+        WorkflowListener defaultWorkflowTaskListener = workflowListeners.stream()
+                .filter(workflowListener -> defaultTaskListenerId.equals(workflowListener.getListenerId())).findAny()
+                .orElse(null);
+        if (null == defaultWorkflowTaskListener) {
+            AbstractWorkflowTaskListener defaultTaskListener = ContextWrapper.getApplicationContext()
+                    .getBean(defaultTaskListenerId, AbstractWorkflowTaskListener.class);
+            consumer.accept(defaultTaskListener);
+        }
+
+        // 通知
+        workflowListeners.stream().forEach(workflowListener -> {
+            AbstractWorkflowTaskListener taskListener = ContextWrapper.getApplicationContext()
+                    .getBean(workflowListener.getListenerId(), AbstractWorkflowTaskListener.class);
+            consumer.accept(taskListener);
+        });
+    }
+
+    /**
+     * 获取流程分支条件
+     *
+     * @param processInstanceId 流程ID
+     * @return 分支条件
+     */
+    private Map<String, Object> getConditionMap(String processInstanceId) {
+        ProcessInstance processInstance = ActivitiProcessUtils.getInstanceById(processInstanceId);
+        Workflow workflow = selectById(processInstance.getProcessDefinitionKey());
+
+        Map<String, Object> conditionValueMap = null;
+        if (null != workflow) {
+            IWorkflowTaskChecklist<?> checklistImpl = getChecklistImpl(workflow.getChecklistId());
+            if (null != checklistImpl) {
+                conditionValueMap = checklistImpl.getCondtionValueMap(processInstance.getBusinessKey());
+            }
+        }
+        return null != conditionValueMap ? conditionValueMap : new HashMap<>();
+    }
+
+    /**
+     * 获取任务详情
+     *
+     * @param workflowId 工作流ID
+     * @param tasks      任务列表
+     * @return 任务详情列表
+     */
+    private JSONArray getTaskDetailInfos(String workflowId, List<TaskInfo> tasks) {
+        Workflow workflow = selectById(workflowId);
+        IWorkflowTaskChecklist<?> checklistImpl = getChecklistImpl(workflow.getChecklistId());
+        if (null == workflow.getChecklistId() || null == checklistImpl) {
+            JSONArray jsonArray = new JSONArray();
+            tasks.forEach(task -> jsonArray.add(getTaskJsonInfo(task)));
+            return jsonArray;
+        }
+
+        // 通过checklist服务获取具体record对象
+        List<?> results = checklistImpl.getRecords(tasks.stream()
+                .map(task -> ActivitiProcessUtils.getInstanceById(task.getProcessInstanceId()).getBusinessKey())
+                .collect(Collectors.toList()));
+
+        // 为checklist添加任务Id和任务名称
+        JSONArray jsonArray = JSONObject.parseArray(JSONObject.toJSONString(results));
+        for (int i = 0; i < jsonArray.size(); i++) {
+            JSONObject taskJsonObj = jsonArray.getJSONObject(i);
+            taskJsonObj.putAll(getTaskJsonInfo(tasks.get(i)));
+
+            // 设置审核状态
+            String approvalStatus = ActivitiProcessUtils.getProcessVariable(tasks.get(i).getProcessInstanceId(),
+                    ActivitiVariableNameConstants.APPROVAL_STATUS, String.class);
+            taskJsonObj.put(ActivitiVariableNameConstants.APPROVAL_STATUS, approvalStatus);
+        }
+        return jsonArray;
+    }
+
+    /**
+     * 获取任务JSON信息
+     *
+     * @param task 任务信息
+     * @return 任务JSON信息
+     */
+    private JSONObject getTaskJsonInfo(TaskInfo task) {
+        JSONObject taskJsonObj = new JSONObject();
+        taskJsonObj.put(TASK_QUERY_TASK_ID, task.getId());
+        taskJsonObj.put(TASK_QUERY_TASK_NAME, task.getName());
+        taskJsonObj.put(TASK_QUERY_WORKFLOW_ID, getTaskWorkflowId(task));
+        taskJsonObj.put(TASK_QUERY_BUSINESS_KEY,
+                ActivitiProcessUtils.getInstanceById(task.getProcessInstanceId()).getBusinessKey());
+        return taskJsonObj;
+    }
+
+    /**
+     * 获取checklist实现类
+     *
+     * @param checklistId checklist id
+     * @return checklist实现类
+     */
+    private IWorkflowTaskChecklist<?> getChecklistImpl(String checklistId) {
+        if (StringUtils.isEmpty(checklistId)) {
+            return null;
+        }
+
+        return (IWorkflowTaskChecklist<?>) ContextWrapper.getApplicationContext().getBean(checklistId);
+    }
+
+    /**
+     * 生成工作流ID
+     *
+     * @return 工作流ID
+     */
+    private String generateFlowId() {
+        return "_" + IdGenerator.generateLongIncrId(); // 工作流ID规则与Activiti流程ID命名规则保持一致
+    }
+
+    /**
+     * 获取当前用户角色列表
+     *
+     * @return 角色列表
+     */
+    private List<String> getCurrentUserRoles() {
+        return getUserRoles(getCurrentUserId());
+    }
+
+    /**
+     * 获取用户角色列表
+     *
+     * @param userId 用户ID
+     * @return 角色列表
+     */
+    private List<String> getUserRoles(String userId) {
+        return AuthSecurityUtils.getUserRoles(userId).stream().map(role -> role.getRoleId())
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 获取当前用户ID
+     *
+     * @return 当前用户ID
+     */
+    private String getCurrentUserId() {
+        if (!StringUtils.isEmpty(localUserId.get())) {
+            return localUserId.get();
+        }
+        return null == AuthSecurityUtils.getCurrentUserInfo() ? null
+                : AuthSecurityUtils.getCurrentUserInfo().getUserId();
+    }
+
+    /**
+     * 获取当前用户所属公司ID
+     *
+     * @return 当前用户所属公司ID
+     */
+    private String getCurrentCompId() {
+        return AuthSecurityUtils.getCurrentUserInfo().getCompId();
+    }
+
+    /**
+     * 生成page对象
+     *
+     * @param current 页码
+     * @param size    分页大小
+     * @param total   总数
+     * @param records 数据
+     * @return page
+     */
+    private Page<Object> generateIPage(int current, int size, long total, List<Object> records) {
+        Page<Object> page = new Page<>(current, size);
+        page.setTotal(total);
+        page.setRecords(records);
+        return page;
+    }
+
+    /**
+     * 创建工作流步骤和全局监听
+     *
+     * @param workflowId 工作流ID
+     * @param steps      工作流步骤
+     * @param listeners  工作流全局监听器
+     */
+    private void createStepsAndListeners(String workflowId, List<WorkflowStep> steps,
+                                         List<WorkflowListener> listeners) {
+        // 创建工作流步骤
+        if (!CollectionUtils.isEmpty(steps)) {
+            steps.stream().forEach(step -> step.setWorkflowId(workflowId));
+            workflowStepService.createBatch(steps);
+        }
+
+        // 创建工作流全局监听器
+        if (!CollectionUtils.isEmpty(listeners)) {
+            listeners.stream().forEach(listener -> listener.setWorkflowId(workflowId));
+            workflowListenerService.createBatch(listeners);
+        }
+    }
+
+    /**
+     * 获取任务工作流ID
+     *
+     * @param task 任务
+     * @return 任务所属工作流ID
+     */
+    private String getTaskWorkflowId(TaskInfo task) {
+        return null != task ? task.getProcessDefinitionId().substring(0, task.getProcessDefinitionId().indexOf(':'))
+                : null;
+    }
+
+    /**
+     * 获取工作流任务业务编码
+     *
+     * @param workflowIds 工作流ID列表
+     * @return 工作流任务业务编码列表
+     */
+    private List<String> getTaskBusinessKeys(List<String> workflowIds) {
+        return ActivitiTaskUtils.getTaskQueryByUserAndRoles(getCurrentUserId(), getCurrentUserRoles(), workflowIds)
+                .list().stream()
+                .map(task -> ActivitiProcessUtils.getInstanceById(task.getProcessInstanceId()).getBusinessKey())
+                .collect(Collectors.toList());
+    }
+
+    private void saveHistory(String businessId, String taskName, String staffId, String auditMind, boolean approved) {
+        AuditHistory auditHistory = new AuditHistory();
+        auditHistory.setBusinessId(businessId);
+        auditHistory.setStaffId(staffId);
+        auditHistory.setTaskName(taskName);
+        auditHistory.setAuditOpinion(auditMind);
+        auditHistory.setAdoptFlag(approved ? "1" : "0");
+        auditHistoryService.create(auditHistory);
+    }
+
+    /**
+     * 跳过相邻审核人
+     */
+    private void skipAdjacentSameApprover(ProcessInstance instance) {
+        if (null == getCurrentUserId()) {
+            return;
+        }
+        // 获取服务code
+        String businessCode = selectById(instance.getProcessDefinitionKey()).getBusinessCode();
+
+        String vesselId = null;
+        Map<String, BeanWorkFlowProvider> beanMap = ContextWrapper.getApplicationContext()
+                .getBeansOfType(BeanWorkFlowProvider.class);
+        if (null != beanMap) {
+            BeanWorkFlowProvider service = beanMap
+                    .get(StringUtils.underlineToCamel(businessCode.toLowerCase().replace("-", "_")));
+            if (null != service) {
+                vesselId = service.getVesselId(instance.getBusinessKey());
+            }
+        }
+        Task task = ActivitiTaskUtils.getActiveTask(getCurrentUserId(), getCurrentUserRoles(),
+                Lists.newArrayList(instance.getProcessDefinitionKey()), instance.getBusinessKey());
+        // 如果业务关联要求过滤船舶
+        if (!StringUtils.isEmpty(vesselId)) {
+            // 1.先获取船舶关联人员
+            List<String> staffIds = staffVesselService.findStaffIdsWithVesselAndRoles(vesselId, getCurrentUserRoles());
+            if (!staffIds.contains(getCurrentUserId())) {
+                return;
+            } else {
+                // 2.查看是否是会签
+                if (task != null && ActivitiCountersignUtils.isCountersignTask(task)) {
+                    UserTask userTask = ActivitiTaskUtils.getFirstUserTask(task.getProcessDefinitionId());
+                    if (null != userTask) {
+                        if (ActivitiCountersignUtils.isCountersignatureTask(userTask)) {
+                            handle(task.getId(), true, "_PLACEHOLDER_", false);
+                            return;
+                        } else {
+                            handle(task.getId(), false, "_PLACEHOLDER_", false);
+                            return;
+                        }
+                    }
+                }
+            }
+        }
+        if (null != task) {
+            handle(task.getId(), true, "_PLACEHOLDER_", false);
+        }
+    }
+
+    /**
+     * 创建工作流<br>
+     * 自动判断创建远程的还是本地的
+     */
+    private void buildActivitiWorkflow(Workflow workflow) {
+        String businessCode = workflow.getBusinessCode();
+        String moduleName = businessCode.substring(0, businessCode.indexOf('-')).toLowerCase();
+        String serviceName = moduleName;
+        if (null != workflowProperties.getConsumerModules()) {
+            Entry<String, List<String>> targetEntry = workflowProperties.getConsumerModules().entrySet().stream()
+                    .filter(entry -> entry.getValue().contains(moduleName)).findAny().orElse(null);
+            if (null != targetEntry) {
+                serviceName = targetEntry.getKey();
+            }
+        }
+
+        if ((null != workflowProperties.getConsumers() && workflowProperties.getConsumers().contains(serviceName))) {
+            redisTemplate.opsForList().leftPush("/topic/" + serviceName + "/workflow/build",
+                    JSONObject.toJSONString(workflow));
+        } else {
+            new ActivitiWorkflowBuilder(workflow).addFlowElement().addFlowLine().build(processEngine);
+        }
+    }
+
+
+    private boolean insert(Workflow entity) {
+        return workflowConfigService.insert(entity);
+    }
+
+    private boolean updateById(Workflow entity) {
+        return workflowConfigService.updateById(entity);
+    }
+
+    private String getStartInfo(String startUserId, Object startTime) {
+        return (null != startUserId ? startUserId : "") + "|" + (null != startTime ? String.valueOf(startTime) : "");
+    }
+
+    private Map<String, BaseMapper<?>> getEntityClassBaseMapperMap() {
+        if (entityClassBaseMapperMap.isEmpty()) {
+            ContextWrapper.getApplicationContext().getBeansOfType(BaseMapper.class).values().forEach(baseMapper -> {
+                try {
+                    Class<?> entityClass = (Class<?>) ((ParameterizedType) (((Class<?>) baseMapper.getClass()
+                            .getGenericInterfaces()[0]).getGenericInterfaces()[0])).getActualTypeArguments()[0];
+                    entityClassBaseMapperMap.put(entityClass.getName(), baseMapper);
+                } catch (ClassCastException ex) {
+                    // ignore
+                }
+            });
+        }
+        return entityClassBaseMapperMap;
+    }
+}

+ 3 - 2
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/TranTaskInfoServiceImpl.java

@@ -13,7 +13,6 @@ import com.yh.saas.plugin.yiliangyiyun.entity.*;
 import com.yh.saas.plugin.yiliangyiyun.exception.YException;
 import com.yh.saas.plugin.yiliangyiyun.exception.YExceptionEnum;
 import com.yh.saas.plugin.yiliangyiyun.mapper.TranTaskInfoMapper;
-import com.yh.saas.plugin.yiliangyiyun.service.ITranCarInfoService;
 import com.yh.saas.plugin.yiliangyiyun.service.ITranProcessInfoService;
 import com.yh.saas.plugin.yiliangyiyun.service.ITranTaskInfoService;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
@@ -72,6 +71,7 @@ public class TranTaskInfoServiceImpl extends ServiceImpl<TranTaskInfoMapper, Tra
                 tranProcessInfoWrapper.orderBy("sort",false);
                 tranTaskInfo.setCurrentTransferAddress(tranProcessInfo.getReceivePrivate() + tranProcessInfo.getReceiveCity()
                     + tranProcessInfo.getReceiveArea() + tranProcessInfo.getReceiveDetailedAddress() );
+                this.updateById(tranTaskInfo);
             }
         }
 
@@ -108,7 +108,8 @@ public class TranTaskInfoServiceImpl extends ServiceImpl<TranTaskInfoMapper, Tra
         TranTaskInfo tranTaskInfo = this.selectById(id);
         //查看运输阶段信息
         List<TranProcessInfo> tranProcessInfoList = tranProcessInfoService.selectList(new EntityWrapper<TranProcessInfo>()
-                .eq(TranProcessInfo.QueryFiles.INFO_ID,id).eq(TranProcessInfo.QueryFiles.DELETE_FLAG,NumberConstant.CONSTANT0));
+                .eq(TranProcessInfo.QueryFiles.INFO_ID,id).eq(TranProcessInfo.QueryFiles.DELETE_FLAG,NumberConstant.CONSTANT0)
+                .orderBy(TranProcessInfo.QueryFiles.SORT));
         if (!CollectionUtils.isEmpty(tranProcessInfoList)) {
             tranTaskInfo.setTranProcessInfoList(tranProcessInfoList);
         }

+ 68 - 6
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/WarehouseBaseInfoServiceImpl.java

@@ -2,6 +2,7 @@ package com.yh.saas.plugin.yiliangyiyun.service.impl;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.fasterxml.jackson.databind.BeanProperty;
 import com.yh.saas.common.support.util.IdGenerator;
 import com.yh.saas.common.support.util.StringUtils;
 import com.yh.saas.plugin.yiliangyiyun.constant.NumberConstant;
@@ -14,6 +15,7 @@ import com.yh.saas.plugin.yiliangyiyun.exception.YExceptionEnum;
 import com.yh.saas.plugin.yiliangyiyun.mapper.WarehouseBaseInfoMapper;
 import com.yh.saas.plugin.yiliangyiyun.service.*;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -43,6 +45,8 @@ public class WarehouseBaseInfoServiceImpl extends ServiceImpl<WarehouseBaseInfoM
     private IWarehouseBaseInfoService warehouseBaseInfoService;
     @Autowired
     private IContractManagementInfoService contractManagementInfoService;
+    @Autowired
+    private IInOutWarehouseTaskService iInOutWarehouseTaskService;
 
     /**
      * 仓库管理页面列表
@@ -544,14 +548,72 @@ public class WarehouseBaseInfoServiceImpl extends ServiceImpl<WarehouseBaseInfoM
      * 出入库合同编号下拉列表
      *
      * @param compId
+     * @param flag 0 采购合同编号 1销售合同编号 2 移库任务编号+采购、销售合同编号 null 采购、销售合同编号
      * @return
      */
     @Override
-    public List<ContractManagementInfo> selectContractNoList(String compId) {
-        List<ContractManagementInfo> contractManagementInfoList = contractManagementInfoService.selectList(new EntityWrapper<ContractManagementInfo>()
-                .eq("comp_id", compId)
-                .eq("delete_flag", "0")
-                .orderBy("update_date", false));
-        return contractManagementInfoList;
+    public List<ContractManagementInfo> selectContractNoList(String compId,Integer flag) {
+        List<ContractManagementInfo> temp=new ArrayList();
+        //查所有合同编号
+        if(flag == null){
+            List<ContractManagementInfo> contractManagementInfoList = contractManagementInfoService.selectList(new EntityWrapper<ContractManagementInfo>()
+                    .eq("comp_id", compId)
+                    .eq("delete_flag", "0")
+                    .orderBy("update_date", false));
+
+            for(ContractManagementInfo contractManagementInfo: contractManagementInfoList){
+                temp.add(contractManagementInfo);
+            }
+            return temp;
+        }
+        //查采购合同编号
+        if(flag == 0){
+            List<ContractManagementInfo> contractManagementInfoList = contractManagementInfoService.selectList(new EntityWrapper<ContractManagementInfo>()
+                    .eq("comp_id", compId)
+                    .eq("contract_type", "2")
+                    .eq("delete_flag", "0")
+                    .orderBy("update_date", false));
+
+            for(ContractManagementInfo contractManagementInfo: contractManagementInfoList){
+                temp.add(contractManagementInfo);
+            }
+            return temp;
+        }
+        //查销售合同编号
+        else if(flag == 1){
+            List<ContractManagementInfo> contractManagementInfoList = contractManagementInfoService.selectList(new EntityWrapper<ContractManagementInfo>()
+                    .eq("comp_id", compId)
+                    .eq("contract_type", "1")
+                    .eq("delete_flag", "0")
+                    .orderBy("update_date", false));
+
+            for(ContractManagementInfo contractManagementInfo: contractManagementInfoList){
+                temp.add(contractManagementInfo);
+            }
+            return temp;
+        }
+        //查采购、销售合同编号,以及移库任务编号
+        else{
+            List<ContractManagementInfo> contractManagementInfoList = contractManagementInfoService.selectList(new EntityWrapper<ContractManagementInfo>()
+                    .eq("comp_id", compId)
+                    .eq("delete_flag", "0")
+                    .orderBy("update_date", false));
+            for(ContractManagementInfo contractManagementInfo: contractManagementInfoList){
+                temp.add(contractManagementInfo);
+            }
+            List<InOutWarehouseTask> inOutWarehouseTaskList = iInOutWarehouseTaskService.selectList(new EntityWrapper<InOutWarehouseTask>()
+                    .eq("comp_id", compId)
+                    .eq("delete_flag", "0")
+                    .eq("task_type_key", "3")
+                    .eq("in_out_flag", "1")
+                    .orderBy("update_date", false));
+            for(InOutWarehouseTask inOutWarehouseTask: inOutWarehouseTaskList){
+                ContractManagementInfo contractManagementInfo = new ContractManagementInfo();
+                BeanUtils.copyProperties(inOutWarehouseTask, contractManagementInfo);
+                contractManagementInfo.setContractNo(inOutWarehouseTask.getMoveTaskNo());
+                temp.add(contractManagementInfo);
+            }
+            return temp;
+        }
     }
 }

+ 46 - 1
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/WarehouseInOutInfoServiceImpl.java

@@ -7,6 +7,8 @@ import com.yh.saas.common.support.util.IdGenerator;
 import com.yh.saas.plugin.yiliangyiyun.constant.NumberConstant;
 import com.yh.saas.plugin.yiliangyiyun.constant.StatusEnum;
 import com.yh.saas.plugin.yiliangyiyun.entity.*;
+import com.yh.saas.plugin.yiliangyiyun.entity.view.WarehouseNumView;
+import com.yh.saas.plugin.yiliangyiyun.entity.view.WarehouseView;
 import com.yh.saas.plugin.yiliangyiyun.exception.YException;
 import com.yh.saas.plugin.yiliangyiyun.exception.YExceptionEnum;
 import com.yh.saas.plugin.yiliangyiyun.mapper.WarehouseInOutInfoMapper;
@@ -25,6 +27,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import java.util.HashMap;
@@ -241,6 +244,48 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
                     throw new YException(YExceptionEnum.WAREHOUSE_NO_ERROR);
                 }
             }
+            //临时库出库
+            else if ("1".equals(warehouseInOutInfo.getInOutFlag()) && "2".equals(warehouseBaseInfo.getWarehouseType())) {
+                if (warehouseBaseInfo != null) {
+                    //定义入库
+                    String inNetWeight = "";
+                    // 查询入库量
+                    List<WarehouseInOutInfo> warehouseInOutInfoList = warehouseInOutInfoService.selectList(new EntityWrapper<WarehouseInOutInfo>()
+                            .eq("base_id", warehouseInOutInfo.getBaseId()).eq("in_out_flag", "2").eq("goods_name_key", warehouseInOutInfo.getGoodsNameKey()));
+                    if (!CollectionUtils.isEmpty(warehouseInOutInfoList)) {
+                        for (WarehouseInOutInfo warehouseInOutInfos : warehouseInOutInfoList) {
+                            if (StringUtils.isEmpty(inNetWeight)) {
+                                inNetWeight = "0";
+                            }
+                            inNetWeight = String.valueOf(Float.valueOf(inNetWeight) + warehouseInOutInfos.getNetWeight());
+                        }
+                    }
+                    //定义出库量
+                    String outNetWeight = "";
+                    // 查询出库量
+                    List<WarehouseInOutInfo> warehouseInOutInfo1 = warehouseInOutInfoService.selectList(new EntityWrapper<WarehouseInOutInfo>()
+                            .eq("base_id", warehouseInOutInfo.getBaseId()).eq("in_out_flag", "1")
+                            .eq("goods_name_key", warehouseInOutInfo.getGoodsNameKey()));
+                    //有出库记录
+                    if (!CollectionUtils.isEmpty(warehouseInOutInfo1)) {
+                        for (WarehouseInOutInfo warehouseInOutInfos : warehouseInOutInfo1) {
+                            if (StringUtils.isEmpty(outNetWeight)) {
+                                outNetWeight = "0";
+                            }
+                            outNetWeight = String.valueOf(Float.valueOf(outNetWeight) + warehouseInOutInfos.getNetWeight());
+                        }
+                        outNetWeight = String.valueOf(Float.valueOf(outNetWeight) + warehouseInOutInfo.getNetWeight());
+                    }
+                    //没有出库记录
+                    else {
+                        outNetWeight = String.valueOf(warehouseInOutInfo.getNetWeight());
+                    }
+                    //出库量大于入库量
+                    if ((outNetWeight.compareTo(inNetWeight)) > 0) {
+                        throw new YException(YExceptionEnum.INNETWEIGHT_NO_ERROR);
+                    }
+                }
+            }
             //插入记录
             if (StringUtils.isEmpty(warehouseInOutInfo.getId())) {
                 warehouseInOutInfo.setId(IdGenerator.generateUUID());
@@ -328,7 +373,7 @@ public class WarehouseInOutInfoServiceImpl extends ServiceImpl<WarehouseInOutInf
     @Override
     public List<WarehouseInOutInfo> selectTemporaryGoodsNameList(String baseId) {
         List<WarehouseInOutInfo> warehouseInOutInfoList = this.selectList(new EntityWrapper<WarehouseInOutInfo>()
-                .eq("base_id", baseId).eq("delete_flag", "0").eq("status_flag", "3"));
+                .eq("base_id", baseId).eq("delete_flag", "0").eq("status_flag", "3").groupBy("goods_name_key"));
         return warehouseInOutInfoList;
     }
 

+ 98 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/AliyunSMSClient.java

@@ -0,0 +1,98 @@
+package com.yh.saas.plugin.yiliangyiyun.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.aliyuncs.CommonRequest;
+import com.aliyuncs.CommonResponse;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.exceptions.ClientException;
+import com.aliyuncs.http.MethodType;
+import com.aliyuncs.profile.DefaultProfile;
+import com.yh.saas.plugin.yiliangyiyun.exception.ExceptionDefinition;
+import com.yh.saas.plugin.yiliangyiyun.exception.ServiceException;
+import com.yh.saas.plugin.yiliangyiyun.exception.ThirdPartServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Value;
+
+/**
+ * Created by rize on 2019/8/1.
+ */
+public class AliyunSMSClient implements SMSClient, InitializingBean {
+
+    @Value("${sms.aliyun.accessId}")
+    private String accessId;
+    @Value("${sms.aliyun.accessKey}")
+    private String accessKey;
+    @Value("${sms.aliyun.register-template-id}")
+    private String registerTemplateId;
+    @Value("${sms.aliyun.bind-phone-template-id}")
+    private String bindPhoneTemplateId;
+    @Value("${sms.aliyun.reset-password-template-id}")
+    private String resetPasswordTemplateId;
+    @Value("${sms.aliyun.admin-login-template-id}")
+    private String adminLoginTemplateId;
+    @Value("${sms.aliyun.signature}")
+    private String signature;
+
+    private IAcsClient client;
+
+    private static Logger logger = LoggerFactory.getLogger(AliyunSMSClient.class);
+
+    @Override
+    public void afterPropertiesSet() throws Exception {
+        this.client = new DefaultAcsClient(DefaultProfile.getProfile("default", accessId, accessKey));
+    }
+
+    @Override
+    public SMSResult sendRegisterVerify(String phone, String verifyCode) throws ServiceException {
+        return sendCommon(phone, verifyCode, registerTemplateId, signature);
+    }
+
+    @Override
+    public SMSResult sendBindPhoneVerify(String phone, String verifyCode) throws ServiceException {
+        return sendCommon(phone, verifyCode, bindPhoneTemplateId, signature);
+    }
+
+    @Override
+    public SMSResult sendResetPasswordVerify(String phone, String verifyCode) throws ServiceException {
+        return sendCommon(phone, verifyCode, resetPasswordTemplateId, signature);
+    }
+
+    @Override
+    public SMSResult sendAdminLoginVerify(String phone, String verifyCode) throws ServiceException {
+        return sendCommon(phone, verifyCode, adminLoginTemplateId, signature);
+    }
+
+    private SMSResult sendCommon(String phone, String verifyCode, String templateId, String signature) throws ServiceException {
+        try {
+            CommonRequest request = new CommonRequest();
+            request.setMethod(MethodType.POST);
+            request.setDomain("dysmsapi.aliyuncs.com");
+            request.setVersion("2017-05-25");
+            request.setAction("SendSms");
+            request.putQueryParameter("RegionId", "default");
+            request.putQueryParameter("PhoneNumbers", phone);
+            request.putQueryParameter("SignName", signature);
+            request.putQueryParameter("TemplateCode", templateId);
+            request.putQueryParameter("TemplateParam", "{\"code\":\"" + verifyCode + "\"}");
+            CommonResponse commonResponse = client.getCommonResponse(request);
+            String data = commonResponse.getData();
+            JSONObject jsonObject = JSONObject.parseObject(data);
+            String message = jsonObject.getString("Message");
+            SMSResult smsResult = new SMSResult();
+            smsResult.setSucc("OK".equalsIgnoreCase(message));
+            smsResult.setMsg(message);
+            return smsResult;
+        } catch (ClientException e) {
+            throw new ThirdPartServiceException(e.getMessage(), ExceptionDefinition.THIRD_PART_SERVICE_EXCEPTION.getCode());
+        } catch (Exception e) {
+            logger.error("[阿里云短信发送] 异常", e);
+            throw new ThirdPartServiceException(ExceptionDefinition.APP_UNKNOWN_EXCEPTION.getMsg(), ExceptionDefinition.APP_UNKNOWN_EXCEPTION.getCode());
+        }
+    }
+
+
+
+}

+ 37 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/Const.java

@@ -0,0 +1,37 @@
+package com.yh.saas.plugin.yiliangyiyun.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created with IntelliJ IDEA.
+ * Description:
+ * User: rize
+ * Date: 2018-08-11
+ * Time: 下午11:43
+ */
+public class Const {
+
+    public static  List<Class> IGNORE_PARAM_LIST = new ArrayList<>();
+
+    static {
+        IGNORE_PARAM_LIST.add(Integer.class);
+        IGNORE_PARAM_LIST.add(Long.class);
+        IGNORE_PARAM_LIST.add(String.class);
+        IGNORE_PARAM_LIST.add(Float.class);
+        IGNORE_PARAM_LIST.add(Double.class);
+        IGNORE_PARAM_LIST.add(Boolean.class);
+    }
+
+    public static  Integer CACHE_ONE_DAY = 60 * 60 * 24;
+
+
+    public static final String USER_ACCESS_TOKEN = "ACCESSTOKEN";
+
+    public static final String USER_REDIS_PREFIX = "USER_SESSION_";
+
+    public static final String ADMIN_ACCESS_TOKEN = "ADMINTOKEN";
+
+    public static final String ADMIN_REDIS_PREFIX = "ADMIN_SESSION_";
+
+}

+ 48 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/GeneratorUtil.java

@@ -0,0 +1,48 @@
+package com.yh.saas.plugin.yiliangyiyun.util;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Created by rize on 2019/7/1.
+ */
+public class GeneratorUtil {
+
+    private static  AtomicInteger orderIdCount = new AtomicInteger();
+    private static  AtomicInteger tranContractCount = new AtomicInteger();
+
+    private static  SimpleDateFormat ORDER_ID_FORMAT = new SimpleDateFormat("yyyyMMDDHHmmss");
+
+    public static String genSixVerifyCode() {
+        String time = System.nanoTime() + "";
+        return time.substring(time.length() - 6);
+    }
+
+    public static String genSessionId() {
+        return UUID.randomUUID().toString().replace("-","").toUpperCase();
+    }
+
+
+    public static String genOrderId(String head) {
+        int i = orderIdCount.incrementAndGet() % 100;
+        if (i < 100)
+            i += 100;
+        return head + ORDER_ID_FORMAT.format(new Date()) + i;
+    }
+    public static String genContractNo(String head) {
+        int i = tranContractCount.incrementAndGet() % 100;
+        if (i < 100)
+            i += 100;
+        return head + ORDER_ID_FORMAT.format(new Date()) + i;
+    }
+    public static String genFileName(){
+        return UUID.randomUUID().toString().replaceAll("-", "");
+    }
+
+    public static String genUUId() {
+        return UUID.randomUUID().toString().replace("-", "");
+    }
+
+}

+ 44 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/MD5Util.java

@@ -0,0 +1,44 @@
+package com.yh.saas.plugin.yiliangyiyun.util;
+
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.shiro.crypto.hash.SimpleHash;
+import org.apache.shiro.util.ByteSource;
+
+/**
+ * MD5通用类
+ */
+public class MD5Util {
+    /**
+     * MD5方法
+     *
+     * @param text 明文
+     * @param key  密钥
+     * @return 密文
+     * @throws Exception
+     */
+    public static String md5(String text, String key) {
+        //加密后的字符串
+        return DigestUtils.md5Hex(text + key);
+    }
+
+    private static final String ALGORITH_NAME = "md5";
+    private static final int HASH_ITERATIONS = 2;
+    public static String encrypt(String username, String password) {
+        return new SimpleHash(ALGORITH_NAME, password, ByteSource.Util.bytes(username.toLowerCase() + password),
+                HASH_ITERATIONS).toHex();
+    }
+    /**
+     * MD5验证方法
+     *
+     * @param text 明文
+     * @param key  密钥
+     * @param md5  密文
+     * @return true/false
+     * @throws Exception
+     */
+    public static boolean verify(String text, String key, String md5) {
+        //根据传入的密钥进行验证
+        String md5Text = md5(text, key);
+        return md5Text.equalsIgnoreCase(md5);
+    }
+}

+ 45 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/MockSMSClient.java

@@ -0,0 +1,45 @@
+package com.yh.saas.plugin.yiliangyiyun.util;
+
+import com.yh.saas.plugin.yiliangyiyun.exception.ServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created with IntelliJ IDEA.
+ * Description:
+ * User: rize
+ * Date: 2019/11/17
+ * Time: 15:50
+ */
+public class MockSMSClient implements SMSClient {
+
+    private static Logger logger = LoggerFactory.getLogger(MockSMSClient.class);
+
+    @Override
+    public SMSResult sendRegisterVerify(String phone, String verifyCode) throws ServiceException {
+        return send(phone, verifyCode);
+    }
+
+    @Override
+    public SMSResult sendBindPhoneVerify(String phone, String verifyCode) throws ServiceException {
+        return send(phone, verifyCode);
+    }
+
+    @Override
+    public SMSResult sendResetPasswordVerify(String phone, String verifyCode) throws ServiceException {
+        return send(phone, verifyCode);
+    }
+
+    @Override
+    public SMSResult sendAdminLoginVerify(String phone, String verifyCode) throws ServiceException {
+        return send(phone, verifyCode);
+    }
+
+    public SMSResult send(String phone, String verifyCode) {
+        logger.info("[模拟短信发送] phone=" + phone + "; verifyCode=" + verifyCode);
+        SMSResult smsResult = new SMSResult();
+        smsResult.setSucc(true);
+        smsResult.setMsg("OK");
+        return smsResult;
+    }
+}

+ 82 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/QCloudSMSClient.java

@@ -0,0 +1,82 @@
+package com.yh.saas.plugin.yiliangyiyun.util;
+
+import com.github.qcloudsms.SmsSingleSender;
+import com.github.qcloudsms.SmsSingleSenderResult;
+import com.yh.saas.plugin.yiliangyiyun.exception.ExceptionDefinition;
+import com.yh.saas.plugin.yiliangyiyun.exception.ServiceException;
+import com.yh.saas.plugin.yiliangyiyun.exception.ThirdPartServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Value;
+
+/**
+ * Created by rize on 2019/7/1.
+ */
+public class QCloudSMSClient implements SMSClient, InitializingBean {
+
+    private SmsSingleSender sender;
+
+    @Value("${sms.qcloud.app-id}")
+    private Integer appid;
+    @Value("${sms.qcloud.app-key}")
+    private String appkey;
+    @Value("${sms.qcloud.register-template-id}")
+    private Integer registerTemplateId;
+    @Value("${sms.qcloud.bind-phone-template-id}")
+    private Integer bindPhoneTemplateId;
+    @Value("${sms.qcloud.reset-password-template-id}")
+    private Integer resetPasswordTemplateId;
+    @Value("${sms.qcloud.admin-login-template-id}")
+    private Integer adminLoginTemplateId;
+    @Value("${sms.qcloud.sign}")
+    private String sign;
+
+    private static Logger logger = LoggerFactory.getLogger(QCloudSMSClient.class);
+
+    @Override
+    public void afterPropertiesSet() throws Exception {
+        sender = new SmsSingleSender(appid, appkey);
+    }
+
+    public SMSResult sendMsg(String phone, int templateId, String ...params) throws ServiceException {
+        try {
+            SmsSingleSenderResult smsSingleSenderResult = sender.sendWithParam("86", phone, templateId, params, this.sign, "", "");
+            if (smsSingleSenderResult.result == 0) {
+                SMSResult smsResult = new SMSResult();
+                smsResult.setSucc(true);
+                smsResult.setMsg("成功");
+                return smsResult;
+            } else {
+                logger.info("[腾讯短信发送] 回复与预期不一致 result=" + smsSingleSenderResult.result + ";errMsg=" + smsSingleSenderResult.errMsg);
+                throw new ThirdPartServiceException(smsSingleSenderResult.errMsg, smsSingleSenderResult.result);
+            }
+        } catch (ServiceException e) {
+            throw e;
+        } catch (Exception e) {
+            logger.error("[腾讯短信发送] 异常", e);
+            throw new ThirdPartServiceException("腾讯云短信发送未知异常", ExceptionDefinition.THIRD_PART_SERVICE_EXCEPTION.getCode());
+        }
+    }
+
+
+    @Override
+    public SMSResult sendRegisterVerify(String phone, String verifyCode) throws ServiceException {
+        return sendMsg(phone, registerTemplateId, verifyCode);
+    }
+
+    @Override
+    public SMSResult sendBindPhoneVerify(String phone, String verifyCode) throws ServiceException {
+        return sendMsg(phone, registerTemplateId, verifyCode);
+    }
+
+    @Override
+    public SMSResult sendResetPasswordVerify(String phone, String verifyCode) throws ServiceException {
+        return sendMsg(phone, registerTemplateId, verifyCode);
+    }
+
+    @Override
+    public SMSResult sendAdminLoginVerify(String phone, String verifyCode) throws ServiceException {
+        return sendMsg(phone, adminLoginTemplateId,verifyCode);
+    }
+}

+ 19 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/SMSClient.java

@@ -0,0 +1,19 @@
+package com.yh.saas.plugin.yiliangyiyun.util;
+
+import com.yh.saas.plugin.yiliangyiyun.exception.ServiceException;
+
+/**
+ * Created by rize on 2019/7/1.
+ */
+public interface SMSClient {
+
+    SMSResult sendRegisterVerify(String phone, String verifyCode) throws ServiceException;
+
+    SMSResult sendBindPhoneVerify(String phone, String verifyCode) throws ServiceException;
+
+    SMSResult sendResetPasswordVerify(String phone, String verifyCode) throws ServiceException;
+
+    SMSResult sendAdminLoginVerify(String phone, String verifyCode) throws ServiceException, ServiceException;
+
+
+}

+ 15 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/util/SMSResult.java

@@ -0,0 +1,15 @@
+package com.yh.saas.plugin.yiliangyiyun.util;
+
+import lombok.Data;
+
+/**
+ * Created by rize on 2019/7/1.
+ */
+@Data
+public class SMSResult {
+
+    private boolean succ;
+
+    private String msg;
+
+}

+ 1 - 1
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/workflow/InOutWharehoseTaskListener.java

@@ -9,7 +9,7 @@ import com.yh.saas.plugin.yiliangyiyun.service.IInOutWarehouseTaskService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 
-@WorkflowTaskListener(name = "出入库任务", group = "出入库任务")
+@WorkflowTaskListener(name = "仓库管理", group = "出入库任务")
 public class InOutWharehoseTaskListener extends AbstractWorkflowTaskListener {
 
     private static final long serialVersionUID = 4103656734835351132L;

+ 18 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/CommonUserMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yh.saas.plugin.yiliangyiyun.mapper.CommonUserMapper">
+    <select id="login" resultType="com.yh.saas.plugin.yiliangyiyun.entity.CommonUser">
+        SELECT
+            id,
+            phone,
+            access_token as accessToken,
+            liangxin_id as liangxinId,
+            user_name as userName,
+            avatar_url AS avatarUrl,
+            status
+        FROM
+            common_user
+        WHERE
+            phone = #{phone} AND `password` = #{cryptPassword}
+    </select>
+</mapper>

+ 46 - 7
winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/InOutWarehouseTaskMapper.xml

@@ -25,7 +25,7 @@
         </if>
         <if test="searchKeyWord != null and searchKeyWord != ''">
             AND (lower(contract_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
-            OR lower(in_out_task_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
+            OR lower(in_out_task_no) like lower(CONCAT('%',#{searchKeyWord},'%')))
         </if>
     </select>
     <!-- 获得出入库任务列表 -->
@@ -35,6 +35,7 @@
         id,
         contract_no as contractNo,
         in_out_task_no as inOutTaskNo,
+        move_task_no as moveTaskNo,
         warehouse_name as warehouseName,
         in_out_type as inOutType,
         goods_name as goodsName,
@@ -45,6 +46,8 @@
         establish_date as establishDate,
         relevance_id as relevanceId,
         task_type_key as taskTypeKey,
+        task_status_key as taskStatusKey,
+        workflow_id as workflowId,
         in_out_flag as inOutFlag
         FROM in_out_warehouse_task
         WHERE
@@ -66,7 +69,7 @@
         </if>
         <if test="searchKeyWord != null and searchKeyWord != ''">
             AND (lower(contract_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
-            OR lower(in_out_task_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
+            OR lower(in_out_task_no) like lower(CONCAT('%',#{searchKeyWord},'%')))
         </if>
         ORDER BY task_status DESC , establish_date DESC
         <if test="currentPage != null and currentPage != ''">
@@ -83,6 +86,7 @@
         a.id as id,
         a.contract_no as contractNo,
         a.in_out_task_no as inOutTaskNo,
+        a.move_task_no as moveTaskNo,
         a.warehouse_name as warehouseName,
         b.warehouse_name as warehouseNameIn,
         a.in_out_type as inOutType,
@@ -95,6 +99,7 @@
         a.establish_date as establishDate,
         a.relevance_id as relevanceId,
         a.task_type_key as taskTypeKey,
+        a.task_status_key as taskStatusKey,
         a.in_out_flag as inOutFlag
         FROM in_out_warehouse_task a
         left join
@@ -103,12 +108,29 @@
         a.relevance_id = b.relevance_id
         WHERE
         a.comp_id = #{compId}
+        and a.in_out_flag='1'
+        and b.in_out_flag='2'
         and
         a.task_type_key = '3'
         and a.delete_flag = '0'
         <if test="searchKeyWord != null and searchKeyWord != ''">
-            AND (lower(a.contract_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
-            OR lower(a.in_out_task_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
+            AND (lower(a.move_task_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
+            OR lower(a.warehouse_name) like lower(CONCAT('%',#{searchKeyWord},'%'))
+            OR lower(b.warehouse_name) like lower(CONCAT('%',#{searchKeyWord},'%')))
+        </if>
+        <if test="searchType != null and searchType != ''">
+            <if test="searchType == 1">
+                AND a.task_status_key = '1'
+            </if>
+            <if test="searchType == 2">
+                AND a.task_status_key = '3'
+            </if>
+            <if test="searchType == 3">
+                AND a.task_status_key = '5'
+            </if>
+            <if test="searchType == 4">
+                AND a.task_status_key = '7'
+            </if>
         </if>
         ORDER BY a.task_status DESC , a.establish_date DESC
         <if test="currentPage != null and currentPage != ''">
@@ -120,7 +142,7 @@
     <!-- 获得移库任务总数 -->
     <select id="getMoveCountByCondition" parameterType="Map" resultType="java.lang.Integer">
         SELECT
-        COUNT(id)
+        COUNT(a.id)
         FROM in_out_warehouse_task a
         left join
         in_out_warehouse_task b
@@ -128,12 +150,29 @@
         a.relevance_id = b.relevance_id
         WHERE
         a.comp_id = #{compId}
+        and a.in_out_flag='1'
+        and b.in_out_flag='2'
         and
         a.task_type_key = '3'
         and a.delete_flag = '0'
         <if test="searchKeyWord != null and searchKeyWord != ''">
-            AND (lower(a.contract_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
-            OR lower(a.in_out_task_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
+            AND (lower(a.move_task_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
+            OR lower(a.warehouse_name) like lower(CONCAT('%',#{searchKeyWord},'%'))
+            OR lower(b.warehouse_name) like lower(CONCAT('%',#{searchKeyWord},'%')))
+        </if>
+        <if test="searchType != null and searchType != ''">
+            <if test="searchType == 1">
+                AND a.task_status_key = '1'
+            </if>
+            <if test="searchType == 2">
+                AND a.task_status_key = '3'
+            </if>
+            <if test="searchType == 3">
+                AND a.task_status_key = '5'
+            </if>
+            <if test="searchType == 4">
+                AND a.task_status_key = '7'
+            </if>
         </if>
     </select>
 </mapper>

+ 8 - 4
winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/TranProcessInfoMapper.xml

@@ -49,7 +49,7 @@
         <if test="searchKeyWord != null and searchKeyWord != ''">
             AND (lower(p.sender) like lower(CONCAT('%',#{searchKeyWord},'%'))
             OR lower(p.receiver) like lower(CONCAT('%',#{searchKeyWord},'%'))
-            OR lower(p.process_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
+            OR lower(p.process_no) like lower(CONCAT('%',#{searchKeyWord},'%')))
         </if>
         ORDER BY t.status DESC,t.update_date DESC
     </select>
@@ -63,14 +63,15 @@
         p.process_no AS processNo,
         p.goods_name AS goodsName,
         p.weight,
-        concat(p.send_private,p.send_city,p.send_area,p.send_detailed_address,p.sender,p.sender_phone) AS send,
-        concat(p.receive_private,p.receive_city,p.receive_area,p.receive_detailed_address,p.receiver,p.receiver_phone) AS receive,
+        concat(p.send_private,p.send_city,IFNULL(p.send_area,''),p.send_detailed_address,p.sender,p.sender_phone) AS send,
+        concat(p.receive_private,p.receive_city,IFNULL(p.receive_area,''),p.receive_detailed_address,p.receiver,p.receiver_phone) AS receive,
         p.delivery_date_start AS deliveryDateStart,
         p.delivery_date_end AS deliveryDateEnd,
         p.process_status AS processStatus,
         p.process_status_flag AS processStatusFlag,
         p.tran_type AS tranType,
         p.tran_type_key AS tranTypeKey,
+        p.create_date as createDate,
         p.feedback_status AS feedbackStatus,
         p.feedback_status_flag AS feedbackStatusFlag,
         p.receiving_date AS receivingDate
@@ -117,9 +118,12 @@
         <if test="searchKeyWord != null and searchKeyWord != ''">
             AND (lower(p.sender) like lower(CONCAT('%',#{searchKeyWord},'%'))
             OR lower(p.receiver) like lower(CONCAT('%',#{searchKeyWord},'%'))
-            OR lower(p.process_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
+            OR lower(p.process_no) like lower(CONCAT('%',#{searchKeyWord},'%')))
         </if>
         ORDER BY p.process_status DESC,p.update_date DESC
+        <if test="currentPage != null and currentPage != ''">
+            LIMIT ${startRecord}, ${pageSize}
+        </if>
     </select>
 
 </mapper>

+ 13 - 6
winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/TranTaskInfoMapper.xml

@@ -4,8 +4,10 @@
     <!-- 获得运输任务总数 -->
     <select id="getCountByCondition" parameterType="Map" resultType="java.lang.Integer">
         SELECT
-        COUNT(t.id)
-        FROM tran_task_info t
+        COUNT(*) FROM
+        (
+        SELECT
+        COUNT(t.id)FROM tran_task_info t
         LEFT JOIN tran_process_info p ON t.id=p.info_id
         WHERE
         t.comp_id = #{compId}
@@ -23,17 +25,20 @@
             OR lower(t.start_city) like lower(CONCAT('%',#{start},'%'))
             OR lower(t.start_area) like lower(CONCAT('%',#{start},'%'))
             OR lower(t.start_detailed_address) like lower(CONCAT('%',#{start},'%'))
+            OR lower(CONCAT(t.start_private,t.start_city,t.start_area,t.start_detailed_address)) like lower(CONCAT('%',#{start},'%')))
         </if>
         <if test="end != null and end != ''">
             AND (lower(t.end_private) like lower(CONCAT('%',#{end},'%'))
             OR lower(t.end_city) like lower(CONCAT('%',#{end},'%'))
             OR lower(t.end_area) like lower(CONCAT('%',#{end},'%'))
             OR lower(t.end_detailed_address) like lower(CONCAT('%',#{end},'%'))
+            OR lower(CONCAT(t.end_private,t.end_city,t.end_area,t.end_detailed_address)) like lower(CONCAT('%',#{end},'%')))
         </if>
         <if test="searchKeyWord != null and searchKeyWord != ''">
             AND (lower(t.contract_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
-            OR lower(t.task_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
+            OR lower(t.task_no) like lower(CONCAT('%',#{searchKeyWord},'%')))
         </if>
+        GROUP BY p.info_id) groups
     </select>
     <!-- 获得运输任务列表 -->
     <select id="getListByCondition" parameterType="Map"
@@ -54,10 +59,9 @@
         t.end_private as endPrivate,
         t.end_city as endCity,
         t.end_area as endArea,
+        t.create_date as createDate,
         t.end_detailed_address as endDetailedAddress,
         t.receive_warehouse as receiveWarehouse,
-        p.process_status_flag as processStatusFlag,
-        p.process_status as processStatus,
         t.status
         FROM tran_task_info t
         LEFT JOIN tran_process_info p ON t.id=p.info_id
@@ -77,17 +81,20 @@
             OR lower(t.start_city) like lower(CONCAT('%',#{start},'%'))
             OR lower(t.start_area) like lower(CONCAT('%',#{start},'%'))
             OR lower(t.start_detailed_address) like lower(CONCAT('%',#{start},'%'))
+            OR lower(CONCAT(t.start_private,t.start_city,t.start_area,t.start_detailed_address)) like lower(CONCAT('%',#{start},'%')))
         </if>
         <if test="end != null and end != ''">
             AND (lower(t.end_private) like lower(CONCAT('%',#{end},'%'))
             OR lower(t.end_city) like lower(CONCAT('%',#{end},'%'))
             OR lower(t.end_area) like lower(CONCAT('%',#{end},'%'))
             OR lower(t.end_detailed_address) like lower(CONCAT('%',#{end},'%'))
+            OR lower(CONCAT(t.end_private,t.end_city,t.end_area,t.end_detailed_address)) like lower(CONCAT('%',#{end},'%')))
         </if>
         <if test="searchKeyWord != null and searchKeyWord != ''">
             AND (lower(t.contract_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
-            OR lower(t.task_no) like lower(CONCAT('%',#{searchKeyWord},'%'))
+            OR lower(t.task_no) like lower(CONCAT('%',#{searchKeyWord},'%')))
         </if>
+        group by p.info_id
         ORDER BY t.status DESC , t.update_date DESC
         <if test="currentPage != null and currentPage != ''">
             LIMIT ${startRecord}, ${pageSize}

+ 1 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/WarehouseInOutInfoMapper.xml

@@ -98,6 +98,7 @@
         w.in_out_date as inOutDate,
         w.in_out_type as inOutType,
         w.contract_no as contractNo,
+        w.temporary_out_type as temporaryOutType,
         w.car_no as carNo,
         w.agent,
         w.back_office as backOffice,