瀏覽代碼

报修二期更新

夏文涛 2 年之前
父節點
當前提交
310ae448a4
共有 100 個文件被更改,包括 3155 次插入776 次删除
  1. 254 128
      .idea/workspace.xml
  2. 10 0
      src/main/java/com/repair/api/RepairArticleBuildControllerAPI.java
  3. 5 0
      src/main/java/com/repair/api/RepairArticleTypeControllerAPI.java
  4. 1 1
      src/main/java/com/repair/api/RepairClassesSettingsControllerAPI.java
  5. 7 0
      src/main/java/com/repair/api/RepairConsumeControllerAPI.java
  6. 8 7
      src/main/java/com/repair/api/RepairPayRecordControllerAPI.java
  7. 20 4
      src/main/java/com/repair/api/RepairRecordControllerAPI.java
  8. 10 3
      src/main/java/com/repair/api/RepairUserControllerAPI.java
  9. 8 17
      src/main/java/com/repair/common/utils/TimeExchange.java
  10. 23 0
      src/main/java/com/repair/controller/LoginController.java
  11. 21 0
      src/main/java/com/repair/controller/RepairArticleBuildController.java
  12. 55 7
      src/main/java/com/repair/controller/RepairArticleTypeController.java
  13. 11 2
      src/main/java/com/repair/controller/RepairClassesSettingsController.java
  14. 47 29
      src/main/java/com/repair/controller/RepairConsumablesController.java
  15. 95 3
      src/main/java/com/repair/controller/RepairConsumeController.java
  16. 271 234
      src/main/java/com/repair/controller/RepairPayRecordController.java
  17. 464 122
      src/main/java/com/repair/controller/RepairRecordController.java
  18. 3 0
      src/main/java/com/repair/controller/RepairSystemSettingController.java
  19. 313 71
      src/main/java/com/repair/controller/RepairUserController.java
  20. 2 2
      src/main/java/com/repair/controller/RepairWorkTypeController.java
  21. 18 0
      src/main/java/com/repair/mapper/RepairArticleBuildMapper.java
  22. 20 0
      src/main/java/com/repair/mapper/RepairOfflineRecordMapper.java
  23. 5 0
      src/main/java/com/repair/mapper/RepairPayRecordMapper.java
  24. 4 0
      src/main/java/com/repair/mapper/RepairRecordMapper.java
  25. 5 1
      src/main/java/com/repair/mapper/RepairUserMapper.java
  26. 58 0
      src/main/java/com/repair/model/enumModel/eIdentityType.java
  27. 10 3
      src/main/java/com/repair/model/enumModel/ePayPageStatu.java
  28. 12 1
      src/main/java/com/repair/model/enumModel/eRecordStatu.java
  29. 1 1
      src/main/java/com/repair/model/enumModel/eUserStatu.java
  30. 6 1
      src/main/java/com/repair/model/enumModel/eUserZZ.java
  31. 68 0
      src/main/java/com/repair/model/pojo/RepairArticleBuild.java
  32. 4 0
      src/main/java/com/repair/model/pojo/RepairArticleType.java
  33. 3 0
      src/main/java/com/repair/model/pojo/RepairConsumables.java
  34. 0 1
      src/main/java/com/repair/model/pojo/RepairEvaluate.java
  35. 93 0
      src/main/java/com/repair/model/pojo/RepairOfflineRecord.java
  36. 3 0
      src/main/java/com/repair/model/pojo/RepairRecord.java
  37. 21 4
      src/main/java/com/repair/model/pojo/RepairRefundRecord.java
  38. 13 1
      src/main/java/com/repair/model/pojo/RepairSystemSetting.java
  39. 4 0
      src/main/java/com/repair/model/pojo/RepairTransferRecord.java
  40. 11 2
      src/main/java/com/repair/model/pojo/RepairUser.java
  41. 24 0
      src/main/java/com/repair/model/request/ArticleBuildRequest.java
  42. 24 0
      src/main/java/com/repair/model/request/RefundReviewRequest.java
  43. 3 0
      src/main/java/com/repair/model/request/RefundableAmountRequest.java
  44. 2 15
      src/main/java/com/repair/model/request/insertRepairUserRequest.java
  45. 44 0
      src/main/java/com/repair/model/request/offlineApplyRequest.java
  46. 6 1
      src/main/java/com/repair/model/request/transferRequest.java
  47. 22 0
      src/main/java/com/repair/model/request/updateArticleDetailRequest.java
  48. 16 0
      src/main/java/com/repair/model/request/updateArticleNumRequest.java
  49. 2 7
      src/main/java/com/repair/model/request/updateUserDataRequest.java
  50. 39 36
      src/main/java/com/repair/model/result/Wx_user.java
  51. 1 1
      src/main/java/com/repair/model/vo/AddressBookVo.java
  52. 44 0
      src/main/java/com/repair/model/vo/ArticleBuildVo.java
  53. 5 12
      src/main/java/com/repair/model/vo/AutoDispatchUserVo.java
  54. 40 0
      src/main/java/com/repair/model/vo/AutoOfflineUserVo.java
  55. 1 1
      src/main/java/com/repair/model/vo/CollaboratorVo.java
  56. 39 0
      src/main/java/com/repair/model/vo/ConsumablePageVo.java
  57. 5 0
      src/main/java/com/repair/model/vo/DetailsVo.java
  58. 17 0
      src/main/java/com/repair/model/vo/MaintenanceGoodsVo.java
  59. 9 2
      src/main/java/com/repair/model/vo/MaintenanceWorkerVo.java
  60. 4 0
      src/main/java/com/repair/model/vo/MasterHomepageVo.java
  61. 5 0
      src/main/java/com/repair/model/vo/MyRepairRecordVo.java
  62. 36 0
      src/main/java/com/repair/model/vo/OfflineDetailVo.java
  63. 126 0
      src/main/java/com/repair/model/vo/PrintVo.java
  64. 50 11
      src/main/java/com/repair/model/vo/ProsperityRepairPayRecordsVo.java
  65. 2 0
      src/main/java/com/repair/model/vo/RepairArticleTypeTreeVo.java
  66. 41 0
      src/main/java/com/repair/model/vo/RepairConsumeTreeVo.java
  67. 41 0
      src/main/java/com/repair/model/vo/RepairConsumeypeTreeVo.java
  68. 5 0
      src/main/java/com/repair/model/vo/RepairManageCountVo.java
  69. 13 0
      src/main/java/com/repair/model/vo/RepairRecordPageVo.java
  70. 5 0
      src/main/java/com/repair/model/vo/RepairTechnicianVo.java
  71. 4 31
      src/main/java/com/repair/model/vo/RepairUserVo.java
  72. 5 0
      src/main/java/com/repair/model/vo/TeamWorkCountVo.java
  73. 7 1
      src/main/java/com/repair/model/vo/TrackDetailsVo.java
  74. 4 0
      src/main/java/com/repair/model/vo/wxLoginVo.java
  75. 36 0
      src/main/java/com/repair/services/RepairArticleBuildService.java
  76. 4 0
      src/main/java/com/repair/services/RepairArticleTypeService.java
  77. 2 0
      src/main/java/com/repair/services/RepairClassesSettingsService.java
  78. 2 0
      src/main/java/com/repair/services/RepairConsumeService.java
  79. 35 0
      src/main/java/com/repair/services/RepairOfflineRecordService.java
  80. 4 1
      src/main/java/com/repair/services/RepairPayRecordService.java
  81. 6 0
      src/main/java/com/repair/services/RepairRecordService.java
  82. 3 0
      src/main/java/com/repair/services/RepairRefundRecordService.java
  83. 2 0
      src/main/java/com/repair/services/RepairShiftSettingsService.java
  84. 9 1
      src/main/java/com/repair/services/RepairUserService.java
  85. 93 0
      src/main/java/com/repair/services/impl/RepairArticleBuildServiceImpl.java
  86. 16 0
      src/main/java/com/repair/services/impl/RepairArticleTypeServiceImpl.java
  87. 11 0
      src/main/java/com/repair/services/impl/RepairClassesSettingsServiceImpl.java
  88. 9 0
      src/main/java/com/repair/services/impl/RepairConsumeServiceImpl.java
  89. 86 0
      src/main/java/com/repair/services/impl/RepairOfflineRecordServiceImpl.java
  90. 15 1
      src/main/java/com/repair/services/impl/RepairPayRecordServiceImpl.java
  91. 29 3
      src/main/java/com/repair/services/impl/RepairRecordServiceImpl.java
  92. 7 0
      src/main/java/com/repair/services/impl/RepairRefundRecordServiceImpl.java
  93. 1 0
      src/main/java/com/repair/services/impl/RepairShiftSettingsServiceImpl.java
  94. 48 6
      src/main/java/com/repair/services/impl/RepairUserServiceImpl.java
  95. 5 0
      src/main/resources/mapper/repair/RepairArticleBuildMapper.xml
  96. 11 0
      src/main/resources/mapper/repair/RepairCollaborateRecordMapper.xml
  97. 1 1
      src/main/resources/mapper/repair/RepairConsumablesMapper.xml
  98. 17 0
      src/main/resources/mapper/repair/RepairOfflineRecordMapper.xml
  99. 25 0
      src/main/resources/mapper/repair/RepairPayRecordMapper.xml
  100. 0 0
      src/main/resources/mapper/repair/RepairRecordMapper.xml

+ 254 - 128
.idea/workspace.xml

@@ -2,14 +2,89 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="33a373ef-8a77-410d-8903-f96d9ffe27f3" name="Default Changelist" comment="">
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairArticleTypeControllerAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairArticleTypeControllerAPI.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairClassesSettingsControllerAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairClassesSettingsControllerAPI.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairConsumeControllerAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairConsumeControllerAPI.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairPayRecordControllerAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairPayRecordControllerAPI.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairRecordControllerAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairRecordControllerAPI.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairUserControllerAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/api/RepairUserControllerAPI.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/common/utils/TimeExchange.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/common/utils/TimeExchange.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/controller/LoginController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/controller/LoginController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairArticleTypeController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairArticleTypeController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairConsumablesController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairConsumablesController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairConsumeController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairConsumeController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairPayRecordController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairPayRecordController.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairRecordController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairRecordController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairSystemSettingController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairSystemSettingController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairUserController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairWorkTypeController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairWorkTypeController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/mapper/RepairPayRecordMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/mapper/RepairPayRecordMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/mapper/RepairRecordMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/mapper/RepairRecordMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/mapper/RepairUserMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/mapper/RepairUserMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/enumModel/ePayPageStatu.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/enumModel/ePayPageStatu.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/enumModel/eRecordStatu.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/enumModel/eRecordStatu.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/enumModel/eUserStatu.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/enumModel/eUserStatu.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/enumModel/eUserZZ.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/enumModel/eUserZZ.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairArticleType.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairArticleType.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairConsumables.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairConsumables.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairEvaluate.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairEvaluate.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairRecord.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairRecord.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairRefundRecord.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairRefundRecord.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairSystemSetting.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairSystemSetting.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairTransferRecord.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairTransferRecord.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairUser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairUser.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/request/RefundableAmountRequest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/request/RefundableAmountRequest.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/request/insertRepairUserRequest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/request/insertRepairUserRequest.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/request/transferRequest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/request/transferRequest.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/request/updateUserDataRequest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/request/updateUserDataRequest.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/result/Wx_user.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/result/Wx_user.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/AddressBookVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/AddressBookVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/AutoDispatchUserVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/AutoDispatchUserVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/CollaboratorVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/CollaboratorVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/ConsumablePageVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/ConsumablePageVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/DetailsVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/DetailsVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/MaintenanceGoodsVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/MaintenanceGoodsVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/MaintenanceWorkerVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/MaintenanceWorkerVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/MasterHomepageVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/MasterHomepageVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/MyRepairRecordVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/MyRepairRecordVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/ProsperityRepairPayRecordsVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/ProsperityRepairPayRecordsVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairArticleTypeTreeVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairArticleTypeTreeVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairManageCountVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairManageCountVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairRecordPageVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairRecordPageVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairTechnicianVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairTechnicianVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairUserVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairUserVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/TeamWorkCountVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/TeamWorkCountVo.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/TrackDetailsVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/TrackDetailsVo.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/resources/application-prod.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-prod.yml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/resources/application.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application.yml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/wxLoginVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/model/vo/wxLoginVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairArticleTypeService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairArticleTypeService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairClassesSettingsService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairClassesSettingsService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairConsumeService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairConsumeService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairPayRecordService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairPayRecordService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairRecordService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairRecordService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairRefundRecordService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairRefundRecordService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairShiftSettingsService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairShiftSettingsService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairUserService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/RepairUserService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairArticleTypeServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairArticleTypeServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairClassesSettingsServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairClassesSettingsServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairConsumeServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairConsumeServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairPayRecordServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairPayRecordServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairRecordServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairRecordServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairRefundRecordServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairRefundRecordServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairShiftSettingsServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairShiftSettingsServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairUserServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairUserServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/repair/RepairCollaborateRecordMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/repair/RepairCollaborateRecordMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/repair/RepairConsumablesMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/repair/RepairConsumablesMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/repair/RepairPayRecordMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/repair/RepairPayRecordMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/repair/RepairRecordMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/repair/RepairRecordMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/repair/RepairUserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/repair/RepairUserMapper.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/application-prod.yml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/application-prod.yml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/application.yml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/application.yml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/repair/RepairCollaborateRecordMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/repair/RepairCollaborateRecordMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/repair/RepairConsumablesMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/repair/RepairConsumablesMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/repair/RepairPayRecordMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/repair/RepairPayRecordMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/mapper/repair/RepairRecordMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/repair/RepairRecordMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/mapper/repair/RepairUserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/mapper/repair/RepairUserMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/repair_system-0.0.1-SNAPSHOT.jar.original" beforeDir="false" afterPath="$PROJECT_DIR$/target/repair_system-0.0.1-SNAPSHOT.jar.original" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/classes/" />
@@ -28,62 +103,69 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairRecordController.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="407">
-              <caret line="1824" column="81" selection-start-line="1824" selection-start-column="73" selection-end-line="1824" selection-end-column="81" />
+            <state relative-caret-position="477">
+              <caret line="338" column="17" selection-start-line="338" selection-start-column="17" selection-end-line="338" selection-end-column="17" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/vo/TrackDetailsVo.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairRecordPageVo.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="483">
-              <caret line="28" column="30" selection-start-line="28" selection-start-column="30" selection-end-line="28" selection-end-column="30" />
+            <state relative-caret-position="309">
+              <caret line="30" column="11" selection-start-line="30" selection-start-column="11" selection-end-line="30" selection-end-column="11" />
+              <folding>
+                <element signature="e#2182#2183#0" expanded="true" />
+                <element signature="e#2238#2239#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/repair/RepairUserMapper.xml">
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="128">
-              <caret line="60" column="58" lean-forward="true" selection-start-line="60" selection-start-column="58" selection-end-line="60" selection-end-column="58" />
+            <state relative-caret-position="1219">
+              <caret line="97" column="29" selection-start-line="97" selection-start-column="29" selection-end-line="97" selection-end-column="29" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/RepairAreaService.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairShiftSettingsServiceImpl.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="621">
-              <caret line="32" column="30" selection-start-line="32" selection-start-column="15" selection-end-line="32" selection-end-column="30" />
+            <state relative-caret-position="368">
+              <caret line="28" selection-start-line="28" selection-end-line="34" selection-end-column="5" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairArticleType.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairClassesSettingsServiceImpl.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="552">
-              <caret line="34" column="4" selection-start-line="34" selection-start-column="4" selection-end-line="36" selection-end-column="29" />
+            <state relative-caret-position="1702">
+              <caret line="89" column="5" selection-start-line="89" selection-start-column="5" selection-end-line="89" selection-end-column="5" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/request/updateRepairArticleTypeRequest.java">
+        <entry file="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/3.0.5/mybatis-plus-core-3.0.5.jar!/com/baomidou/mybatisplus/core/mapper/BaseMapper.class">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="552">
-              <caret line="28" column="11" selection-start-line="28" selection-start-column="11" selection-end-line="28" selection-end-column="11" />
+            <state relative-caret-position="667">
+              <caret line="38" column="11" selection-start-line="38" selection-start-column="4" selection-end-line="38" selection-end-column="11" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairArticleTypeServiceImpl.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/request/updateRepairArticleTypeRequest.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1564">
-              <caret line="82" column="55" selection-start-line="82" selection-start-column="29" selection-end-line="82" selection-end-column="55" />
+            <state relative-caret-position="552">
+              <caret line="28" column="11" selection-start-line="28" selection-start-column="11" selection-end-line="28" selection-end-column="11" />
             </state>
           </provider>
         </entry>
@@ -98,19 +180,19 @@
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/resources/application-prod.yml">
+        <entry file="file://$PROJECT_DIR$/src/main/resources/application-dev.yml">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="23">
-              <caret line="1" column="12" selection-start-line="1" selection-start-column="12" selection-end-line="1" selection-end-column="12" />
+            <state relative-caret-position="287">
+              <caret line="19" column="12" selection-start-line="19" selection-start-column="12" selection-end-line="19" selection-end-column="12" />
             </state>
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/repair/RepairRecordMapper.xml">
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/main/resources/application-prod.yml">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="16882">
-              <caret line="734" column="119" selection-start-line="734" selection-start-column="119" selection-end-line="734" selection-end-column="119" />
+            <state relative-caret-position="345">
+              <caret line="15" column="53" selection-start-line="15" selection-start-column="53" selection-end-line="15" selection-end-column="53" />
             </state>
           </provider>
         </entry>
@@ -119,12 +201,6 @@
   </component>
   <component name="FindInProjectRecents">
     <findStrings>
-      <find>alterPrice(</find>
-      <find>维修单不是待确认状态,无法进行改价操作</find>
-      <find>goodsList</find>
-      <find>details</find>
-      <find>getRepairsByRecordIds</find>
-      <find>getRepairsByRecordId</find>
       <find>getTechniciansByUserId</find>
       <find>queryTeamWorkPage</find>
       <find>pay(</find>
@@ -149,6 +225,12 @@
       <find>FIND_IN_SET(rat.id,ru.article_id)</find>
       <find>FIND_IN_SET(rat.parent_id,ru.article_id)</find>
       <find>.autoDispatchUser</find>
+      <find>String dateS</find>
+      <find>receiveOwnOrders</find>
+      <find>getRepairsByShiftIds</find>
+      <find>dateHour</find>
+      <find>getRepairByUserId</find>
+      <find>t1</find>
     </findStrings>
   </component>
   <component name="Git.Settings">
@@ -157,9 +239,6 @@
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/repair/services/RepairShiftSettingsService.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairShiftSettingsServiceImpl.java" />
         <option value="$PROJECT_DIR$/src/main/resources/application-dev.yml" />
         <option value="$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairTechnicianVo.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairConsumablesController.java" />
@@ -168,11 +247,16 @@
         <option value="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairArticleTypeController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/repair/services/RepairAreaService.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairAreaController.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairRecordController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/repair/model/vo/TrackDetailsVo.java" />
         <option value="$PROJECT_DIR$/src/main/resources/application.yml" />
-        <option value="$PROJECT_DIR$/src/main/resources/application-prod.yml" />
         <option value="$PROJECT_DIR$/src/main/resources/mapper/repair/RepairUserMapper.xml" />
+        <option value="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairShiftSettingsServiceImpl.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairClassesSettingsServiceImpl.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/repair/services/RepairShiftSettingsService.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/repair/services/RepairClassesSettingsService.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/repair/controller/RepairRecordController.java" />
+        <option value="$PROJECT_DIR$/src/main/resources/application-prod.yml" />
       </list>
     </option>
   </component>
@@ -204,7 +288,7 @@
   <component name="MavenRunner">
     <option name="skipTests" value="true" />
   </component>
-  <component name="ProjectFrameBounds">
+  <component name="ProjectFrameBounds" extendedState="6">
     <option name="x" value="-7" />
     <option name="width" value="958" />
     <option name="height" value="1039" />
@@ -214,8 +298,6 @@
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
-      <pane id="Scope" />
-      <pane id="PackagesPane" />
       <pane id="ProjectPane">
         <subPane>
           <expand>
@@ -315,6 +397,8 @@
           <select />
         </subPane>
       </pane>
+      <pane id="Scope" />
+      <pane id="PackagesPane" />
     </panes>
   </component>
   <component name="PropertiesComponent">
@@ -376,18 +460,20 @@
       <workItem from="1698215802376" duration="212000" />
       <workItem from="1698655878467" duration="185000" />
       <workItem from="1698733550781" duration="903000" />
-      <workItem from="1698800060286" duration="2175000" />
+      <workItem from="1698800060286" duration="2369000" />
+      <workItem from="1699232300504" duration="5013000" />
+      <workItem from="1699498153434" duration="717000" />
+      <workItem from="1699926939796" duration="1044000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="68111000" />
+    <option name="totallyTimeSpent" value="75079000" />
   </component>
   <component name="ToolWindowManager">
-    <frame x="-7" y="0" width="958" height="1039" extended-state="0" />
-    <editor active="true" />
+    <frame x="-7" y="0" width="958" height="1039" extended-state="1" />
     <layout>
-      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.29175946" />
+      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.3997773" />
       <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
       <window_info id="Designer" order="2" />
       <window_info id="JRebel" order="3" side_tool="true" />
@@ -398,8 +484,8 @@
       <window_info id="Web" order="8" side_tool="true" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" />
-      <window_info anchor="bottom" id="Run" order="2" visible="true" weight="0.34143648" />
-      <window_info anchor="bottom" id="Debug" order="3" weight="0.64861876" />
+      <window_info anchor="bottom" id="Run" order="2" weight="0.3513812" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.39715537" />
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
       <window_info anchor="bottom" id="TODO" order="6" />
@@ -416,7 +502,7 @@
       <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
       <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
       <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
-      <window_info anchor="right" id="Maven" order="3" weight="0.6781737" />
+      <window_info active="true" anchor="right" id="Maven" order="3" visible="true" weight="0.56570154" />
       <window_info anchor="right" id="Palette" order="4" />
       <window_info anchor="right" id="Capture Analysis" order="5" />
       <window_info anchor="right" id="Database" order="6" />
@@ -433,18 +519,6 @@
     <breakpoint-manager>
       <breakpoints>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java</url>
-          <line>419</line>
-          <properties />
-          <option name="timeStamp" value="2" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairRecordController.java</url>
-          <line>1230</line>
-          <properties />
-          <option name="timeStamp" value="9" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairConsumablesController.java</url>
           <line>358</line>
           <properties />
@@ -460,13 +534,6 @@
     </breakpoint-manager>
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairDispatchRecord.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="368">
-          <caret line="26" column="13" selection-start-line="26" selection-start-column="13" selection-end-line="26" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/request/repairRecordRequest.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="295">
@@ -537,13 +604,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/RepairShiftSettingsService.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="667">
-          <caret line="33" column="72" selection-start-line="33" selection-start-column="72" selection-end-line="33" selection-end-column="72" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/RepairSystemSettingService.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="276">
@@ -551,13 +611,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairShiftSettingsServiceImpl.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="269">
-          <caret line="70" column="60" selection-start-line="70" selection-start-column="37" selection-end-line="70" selection-end-column="60" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/request/ReceiveSendOrdersRequest.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="115">
@@ -579,13 +632,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="62">
-          <caret line="364" column="65" selection-start-line="364" selection-start-column="65" selection-end-line="364" selection-end-column="65" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairUserServiceImpl.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="292">
@@ -663,20 +709,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/application-dev.yml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="287">
-          <caret line="19" column="12" selection-start-line="19" selection-start-column="12" selection-end-line="19" selection-end-column="12" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.3.22/spring-web-5.3.22-sources.jar!/org/springframework/web/method/support/InvocableHandlerMethod.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="332">
-          <caret line="213" selection-start-line="213" selection-end-line="213" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairAreaTreeVo.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="575">
@@ -698,13 +730,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairRecordController.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="407">
-          <caret line="1824" column="81" selection-start-line="1824" selection-start-column="73" selection-end-line="1824" selection-end-column="81" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/vo/TrackDetailsVo.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="483">
@@ -726,6 +751,96 @@
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairArticleTypeServiceImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1564">
+          <caret line="82" column="55" selection-start-line="82" selection-start-column="29" selection-end-line="82" selection-end-column="55" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/repair/RepairRecordMapper.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="16882">
+          <caret line="734" column="119" selection-start-line="734" selection-start-column="119" selection-end-line="734" selection-end-column="119" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/repair/RepairUserMapper.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="565">
+          <caret line="79" column="49" selection-start-line="79" selection-start-column="49" selection-end-line="79" selection-end-column="49" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/request/insertRepairClassesRequest.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="529">
+          <caret line="29" column="22" selection-start-line="29" selection-start-column="22" selection-end-line="29" selection-end-column="22" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/pojo/RepairClassesSettings.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="295">
+          <caret line="40" column="22" selection-start-line="40" selection-start-column="22" selection-end-line="40" selection-end-column="22" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/mapper/RepairEvaluateMapper.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="414">
+          <caret line="26" column="63" selection-start-line="26" selection-start-column="63" selection-end-line="26" selection-end-column="63" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-web/5.3.22/spring-web-5.3.22-sources.jar!/org/springframework/web/method/support/InvocableHandlerMethod.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="270">
+          <caret line="213" selection-start-line="213" selection-end-line="213" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/RepairShiftSettingsService.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="529">
+          <caret line="27" selection-start-line="27" selection-end-line="27" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/RepairClassesSettingsService.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="529">
+          <caret line="29" column="25" selection-start-line="29" selection-start-column="8" selection-end-line="29" selection-end-column="25" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/repair/RepairClassesSettingsMapper.xml">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairShiftSettingsServiceImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="368">
+          <caret line="28" selection-start-line="28" selection-end-line="34" selection-end-column="5" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairClassesSettingsServiceImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1702">
+          <caret line="89" column="5" selection-start-line="89" selection-start-column="5" selection-end-line="89" selection-end-column="5" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/3.0.5/mybatis-plus-core-3.0.5.jar!/com/baomidou/mybatisplus/core/mapper/BaseMapper.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="667">
+          <caret line="38" column="11" selection-start-line="38" selection-start-column="4" selection-end-line="38" selection-end-column="11" />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/request/updateRepairArticleTypeRequest.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="552">
@@ -733,38 +848,49 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/services/impl/RepairArticleTypeServiceImpl.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairClassesSettingsController.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1564">
-          <caret line="82" column="55" selection-start-line="82" selection-start-column="29" selection-end-line="82" selection-end-column="55" />
+        <state relative-caret-position="1219">
+          <caret line="97" column="29" selection-start-line="97" selection-start-column="29" selection-end-line="97" selection-end-column="29" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/model/vo/RepairRecordPageVo.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="23">
-          <caret line="1" column="12" selection-start-line="1" selection-start-column="12" selection-end-line="1" selection-end-column="12" />
+        <state relative-caret-position="309">
+          <caret line="30" column="11" selection-start-line="30" selection-start-column="11" selection-end-line="30" selection-end-column="11" />
+          <folding>
+            <element signature="e#2182#2183#0" expanded="true" />
+            <element signature="e#2238#2239#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/application-prod.yml">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/repair/controller/RepairRecordController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="477">
+          <caret line="338" column="17" selection-start-line="338" selection-start-column="17" selection-end-line="338" selection-end-column="17" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="23">
           <caret line="1" column="12" selection-start-line="1" selection-start-column="12" selection-end-line="1" selection-end-column="12" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/repair/RepairRecordMapper.xml">
+    <entry file="file://$PROJECT_DIR$/src/main/resources/application-dev.yml">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="16882">
-          <caret line="734" column="119" selection-start-line="734" selection-start-column="119" selection-end-line="734" selection-end-column="119" />
+        <state relative-caret-position="287">
+          <caret line="19" column="12" selection-start-line="19" selection-start-column="12" selection-end-line="19" selection-end-column="12" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/repair/RepairUserMapper.xml">
+    <entry file="file://$PROJECT_DIR$/src/main/resources/application-prod.yml">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="128">
-          <caret line="60" column="58" lean-forward="true" selection-start-line="60" selection-start-column="58" selection-end-line="60" selection-end-column="58" />
+        <state relative-caret-position="345">
+          <caret line="15" column="53" selection-start-line="15" selection-start-column="53" selection-end-line="15" selection-end-column="53" />
         </state>
       </provider>
     </entry>

+ 10 - 0
src/main/java/com/repair/api/RepairArticleBuildControllerAPI.java

@@ -0,0 +1,10 @@
+package com.repair.api;
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+@RequestMapping("/api/repairArticleBuild")
+@Api(tags = {"repairArticleBuildController"}, value = "报修类型关联楼栋")
+public interface RepairArticleBuildControllerAPI {
+
+}

+ 5 - 0
src/main/java/com/repair/api/RepairArticleTypeControllerAPI.java

@@ -1,6 +1,7 @@
 package com.repair.api;
 
 import com.repair.model.pojo.RepairArticleType;
+import com.repair.model.request.updateArticleNumRequest;
 import com.repair.model.request.updateRepairArticleTypeRequest;
 import com.repair.model.result.CommonResult;
 import io.swagger.annotations.Api;
@@ -40,4 +41,8 @@ public interface RepairArticleTypeControllerAPI {
     @GetMapping(value = "/queryConsumeMaterial")
     @ApiOperation(value = "关联耗材", notes = "关联耗材", httpMethod = "GET")
     CommonResult queryConsumeMaterial(@RequestParam int schoolId, String keyWord);
+
+    @PostMapping(value = "/dragArticle")
+    @ApiOperation(value = "拖拽物品", notes = "拖拽物品", httpMethod = "POST")
+    CommonResult dragArticle(@RequestBody updateArticleNumRequest datas);
 }

+ 1 - 1
src/main/java/com/repair/api/RepairClassesSettingsControllerAPI.java

@@ -50,7 +50,7 @@ public interface RepairClassesSettingsControllerAPI {
 
     @GetMapping(value = "/queryPageUserClasses")
     @ApiOperation(value = "移动端首页当天排班分页数据", notes = "移动端首页当天排班分页数据", httpMethod = "GET")
-    CommonResult queryPageUserClasses(@RequestParam int currentPage, @RequestParam int pageCount, @RequestParam int schoolId);
+    CommonResult queryPageUserClasses(@RequestParam int currentPage, @RequestParam int pageCount, @RequestParam int schoolId, Integer userId);
 
     @PostMapping(value = "/updateUserClasses")
     @ApiOperation(value = "移动端首页修改或新增当天排班数据", notes = "移动端首页修改或新增当天排班数据", httpMethod = "POST")

+ 7 - 0
src/main/java/com/repair/api/RepairConsumeControllerAPI.java

@@ -51,4 +51,11 @@ public interface RepairConsumeControllerAPI {
     @ApiOperation(value = "导入耗材数据", notes = "导入耗材数据", httpMethod = "POST")
     CommonResult importRepairConsumeExcel(@RequestParam("file") MultipartFile file) throws IOException;
 
+    @GetMapping(value = "/queryRepairConsumeTypeTree")
+    @ApiOperation(value = "查询耗材树形结构数据", notes = "查询耗材树形结构数据", httpMethod = "GET")
+    CommonResult queryRepairConsumeTypeTree(int schoolId);
+
+    @GetMapping(value = "/queryRepairConsumesBykey")
+    @ApiOperation(value = "根据关键字查询二级耗材数据", notes = "根据关键字查询二级耗材数据", httpMethod = "GET")
+    CommonResult queryRepairConsumesBykey(int schoolId, String keyWord);
 }

+ 8 - 7
src/main/java/com/repair/api/RepairPayRecordControllerAPI.java

@@ -1,6 +1,7 @@
 package com.repair.api;
 
 import com.repair.model.pojo.RepairPayRecord;
+import com.repair.model.request.RefundReviewRequest;
 import com.repair.model.request.RefundableAmountRequest;
 import com.repair.model.request.repairPayRequest;
 import com.repair.model.result.CommonResult;
@@ -23,10 +24,6 @@ public interface RepairPayRecordControllerAPI {
     @ApiOperation(value = "编辑支付记录数据", notes = "编辑支付记录数据", httpMethod = "POST")
     CommonResult updateRepairPayRecordById(@Validated @RequestBody RepairPayRecord rc, BindingResult bindingResult);
 
-    @GetMapping(value = "/queryPageRepairPayRecord")
-    @ApiOperation(value = "支付记录分页数据", notes = "支付记录分页数据", httpMethod = "GET")
-    CommonResult queryPageRepairPayRecords(@RequestParam int currentPage, @RequestParam int pageCount, String name);
-
     @GetMapping(value = "/deleterepairPayRecordById")
     @ApiOperation(value = "根据ID删除指定支付记录", notes = "根据ID删除指定支付记录", httpMethod = "GET")
     CommonResult deleteRepairPayRecordById(@RequestParam int id);
@@ -37,11 +34,15 @@ public interface RepairPayRecordControllerAPI {
 
     @GetMapping(value = "/queryProsperityRepairPayRecords")
     @ApiOperation(value = "支付成功记录分页数据", notes = "支付成功记录分页数据", httpMethod = "GET")
-    CommonResult queryProsperityRepairPayRecords(  @RequestParam int currentPage, @RequestParam int pageCount, String keyWord,String startTime,String endTime);
+    CommonResult queryProsperityRepairPayRecords(@RequestHeader("user_head") String userhead, @RequestParam int currentPage, @RequestParam int pageCount, String keyWord,String startTime,String endTime);
 
-    @PostMapping(value = "/refundableAmount")
+    @PostMapping(value = "/RefundableAmount")
     @ApiOperation(value = "实退", notes = "实退", httpMethod = "POST")
-    CommonResult refundableAmount(@RequestBody RefundableAmountRequest rar,@RequestHeader("user_head") String userhead, BindingResult bindingResult);
+    CommonResult refundableAmount(@RequestBody RefundableAmountRequest rar,@RequestHeader("user_head") String userhead, BindingResult bindingResult) throws Exception;
+
+    @PostMapping(value = "/refundReview")
+    @ApiOperation(value = "退款审核", notes = "退款审核", httpMethod = "POST")
+    CommonResult refundReview(@RequestBody RefundReviewRequest rar,@RequestHeader("user_head") String userhead, BindingResult bindingResult) throws Exception;
 
     @GetMapping(value = "/statistics")
     @ApiOperation(value = "统计", notes = "统计", httpMethod = "GET")

+ 20 - 4
src/main/java/com/repair/api/RepairRecordControllerAPI.java

@@ -92,11 +92,11 @@ public interface RepairRecordControllerAPI {
 
     @GetMapping(value = "/closeOrder")
     @ApiOperation(value = "关单", notes = "关单", httpMethod = "GET")
-    CommonResult closeOrders(@RequestParam int recordId, @RequestParam String userId, @RequestParam String reason) throws Exception;
+    CommonResult closeOrders(@RequestParam int recordId, @RequestParam String userId, @RequestParam String reason, @RequestParam String remark, Integer voiceLength) throws Exception;
 
     @GetMapping(value = "/closePCOrder")
     @ApiOperation(value = "管理端关单", notes = "管理端关单", httpMethod = "GET")
-    CommonResult closePCOrder(@RequestParam int recordId, @RequestHeader("user_head") String userhead, @RequestParam String reason) throws Exception;
+    CommonResult closePCOrder(@RequestParam int recordId, @RequestHeader("user_head") String userhead, @RequestParam String reason, @RequestParam String remark) throws Exception;
 
     @PostMapping(value = "/finishOrder")
     @ApiOperation(value = "维修完成", notes = "维修完成", httpMethod = "POST")
@@ -106,6 +106,10 @@ public interface RepairRecordControllerAPI {
     @ApiOperation(value = "转单申请", notes = "转单申请", httpMethod = "POST")
     CommonResult transferApply(@Validated @RequestBody transferApplyRequest data, BindingResult bindingResult) throws Exception;
 
+    @PostMapping(value = "/offlineApply")
+    @ApiOperation(value = "转线下申请", notes = "转线下申请", httpMethod = "POST")
+    CommonResult offlineApply(@Validated @RequestBody offlineApplyRequest data, BindingResult bindingResult) throws Exception;
+
     @PostMapping(value = "/collaborateApply")
     @ApiOperation(value = "协作申请", notes = "协作申请", httpMethod = "POST")
     CommonResult collaborateApply(@Validated @RequestBody collaborateApplyRequest data, BindingResult bindingResult) throws Exception;
@@ -138,6 +142,10 @@ public interface RepairRecordControllerAPI {
     @ApiOperation(value = "转单审核", notes = "转单审核", httpMethod = "POST")
     CommonResult transfer(@RequestBody transferRequest transferRequest, @RequestHeader("user_head") String userhead, BindingResult bindingResult) throws Exception;
 
+    @PostMapping(value = "/offline")
+    @ApiOperation(value = "转线下审核", notes = "转线下审核", httpMethod = "POST")
+    CommonResult offline(@RequestBody transferRequest transferRequest, @RequestHeader("user_head") String userhead, BindingResult bindingResult) throws Exception;
+
     @GetMapping(value = "/cooperationDetail")
     @ApiOperation(value = "获取协作审核数据", notes = "获取协作审核数据", httpMethod = "GET")
     CommonResult cooperationDetail(@RequestParam int recordId);
@@ -146,6 +154,10 @@ public interface RepairRecordControllerAPI {
     @ApiOperation(value = "获取转单审核数据", notes = "获取转单审核数据", httpMethod = "GET")
     CommonResult transferDetail(@RequestParam int recordId);
 
+    @GetMapping(value = "/offlineDetail")
+    @ApiOperation(value = "获取转线下审核数据", notes = "获取转线下审核数据", httpMethod = "GET")
+    CommonResult offlineDetail(@RequestParam int recordId);
+
     @GetMapping(value = "/alterPriceShow")
     @ApiOperation(value = "改价显示", notes = "改价显示", httpMethod = "GET")
     CommonResult alterPriceShow(@RequestParam int recordId) throws Exception;
@@ -208,11 +220,11 @@ public interface RepairRecordControllerAPI {
 
     @GetMapping(value = "/maintenanceWorker")
     @ApiOperation(value = "维修师傅效率统计", notes = "维修师傅效率统计", httpMethod = "GET")
-    CommonResult maintenanceWorker(@RequestParam int state, @RequestParam int currentPage, @RequestParam int pageCount);
+    CommonResult maintenanceWorker(@RequestParam int state, @RequestParam int currentPage, @RequestParam int pageCount, @RequestParam Integer schoolId, String keyWord);
 
     @GetMapping(value = "/maintenanceWorkerExport")
     @ApiOperation(value = "维修师傅效率统计导出", notes = "维修师傅效率统计导出", httpMethod = "GET")
-    void maintenanceWorkerExport(HttpServletResponse response, @RequestParam int state);
+    void maintenanceWorkerExport(HttpServletResponse response, @RequestParam int state, @RequestParam Integer schoolId, String keyWord);
 
     @GetMapping(value = "/repairAnalysis")
     @ApiOperation(value = "报修分析统计", notes = "报修分析统计", httpMethod = "GET")
@@ -230,4 +242,8 @@ public interface RepairRecordControllerAPI {
     @ApiOperation(value = "总数据分析", notes = "总数据分析", httpMethod = "GET")
     CommonResult repairTotalData();
 
+    @GetMapping(value = "/queryPrintData")
+    @ApiOperation(value = "获取打印数据", notes = "获取打印数据", httpMethod = "GET")
+    CommonResult queryPrintData(@RequestParam int recordId,@RequestHeader("user_head") String userhead);
+
 }

+ 10 - 3
src/main/java/com/repair/api/RepairUserControllerAPI.java

@@ -16,11 +16,11 @@ public interface RepairUserControllerAPI {
 
     @PostMapping(value = "/insertRepairUserSetting")
     @ApiOperation(value = "添加用户", notes = "添加用户数据", httpMethod = "POST")
-    CommonResult InsertRepairUser(@Validated @RequestBody insertRepairUserRequest irur, BindingResult bindingResult);
+    CommonResult InsertRepairUser(@Validated @RequestBody insertRepairUserRequest irur) throws Exception;
 
     @PostMapping(value = "/updateRepairUserSettingById")
     @ApiOperation(value = "编辑用户数据", notes = "编辑用户数据", httpMethod = "POST")
-    CommonResult updateRepairUserById(@Validated @RequestBody updateUserDataRequest ra, BindingResult bindingResult);
+    CommonResult updateRepairUserById(@Validated @RequestBody updateUserDataRequest ra, BindingResult bindingResult) throws Exception;
 
     @GetMapping(value = "/queryPageRepairUser")
     @ApiOperation(value = "用户分页数据", notes = "用户分页数据", httpMethod = "GET")
@@ -28,7 +28,7 @@ public interface RepairUserControllerAPI {
 
     @GetMapping(value = "/deleteRepairUserSettingById")
     @ApiOperation(value = "根据ID删除指定用户", notes = "根据ID删除指定用户", httpMethod = "GET")
-    CommonResult deleteRepairUserById(@RequestParam int id);
+    CommonResult deleteRepairUserById(@RequestParam int id) throws Exception;
 
     @GetMapping(value = "/queryRepairUserByCardNumber")
     @ApiOperation(value = "根据卡号删除指定用户", notes = "根据卡号删除指定用户", httpMethod = "GET")
@@ -38,6 +38,9 @@ public interface RepairUserControllerAPI {
     @ApiOperation(value = "获取派单的人员分页数据", notes = "获取派单的人员分页数据", httpMethod = "GET")
     CommonResult queryPageRepairUsers(@RequestParam int currentPage, @RequestParam int pageCount, Integer recordId, String keyWord);
 
+    @GetMapping(value = "/queryPageOfflineUsers")
+    @ApiOperation(value = "获取线下的人员分页数据", notes = "获取线下的人员分页数据", httpMethod = "GET")
+    CommonResult queryPageOfflineUsers(Integer currentPage, Integer pageCount, Integer recordId, String keyWord);
 
     @GetMapping(value = "/getAddressBook")
     @ApiOperation(value = "获取通讯录列表数据", notes = "获取通讯录列表数据", httpMethod = "GET")
@@ -54,4 +57,8 @@ public interface RepairUserControllerAPI {
     @GetMapping(value = "/queryPositiveReviewPage")
     @ApiOperation(value = "工单完成排行榜分页数据", notes = "工单完成排行榜分页数据", httpMethod = "GET")
     CommonResult queryPositiveReviewPage(@RequestParam int currentPage, @RequestParam int pageCount, @RequestParam Integer schoolId);
+
+    @GetMapping(value = "/insertArticleBuild")
+    @ApiOperation(value = "新增报修关联楼栋", notes = "新增报修关联楼栋", httpMethod = "GET")
+    CommonResult insertArticleBuild();
 }

+ 8 - 17
src/main/java/com/repair/common/utils/TimeExchange.java

@@ -1,7 +1,10 @@
 package com.repair.common.utils;
 
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
 import com.repair.model.enumModel.eWeekStatu;
 import com.repair.model.pojo.UnitTimeHelpModel;
+import com.repair.model.result.Wx_user;
 import com.repair.model.vo.ClassSettingDateVo;
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.apache.commons.lang3.time.DateUtils;
@@ -141,10 +144,10 @@ public class TimeExchange {
     }
 
     // 当前时间减1小时
-    public static String TimeDesH(String time) throws ParseException {
+    public static String TimeDesH(Date time, int hour) {
         Calendar nowTime2 = Calendar.getInstance();
-        nowTime2.setTime(StringToDate(time, "yyyy-MM-dd HH:mm:ss"));
-        nowTime2.add(Calendar.HOUR, -1);
+        nowTime2.setTime(time);
+        nowTime2.add(Calendar.HOUR, -hour);
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         return simpleDateFormat.format(nowTime2.getTime());
     }
@@ -651,20 +654,8 @@ public class TimeExchange {
     }
 
     public static void main(String[] args) throws ParseException {
-        String sssssss = getWeek("2023-09-20");
-
-        BigDecimal amountPay = (new BigDecimal(15).divide(new BigDecimal("100"))).setScale(2);
-        BigDecimal price = new BigDecimal(16 / 100.0);
-        BigDecimal amountPays = (new BigDecimal(17).divide(new BigDecimal("100")));
-        double ssss = price.doubleValue();
-        double sdad = amountPay.doubleValue();
-        double sdads = amountPays.doubleValue();
-          Integer userId = 0;
-          String ss = userId.toString();
-        int sss = getMonthDays("2023-09-13",7);
-
-        String[] result = getCurrentMonthTimeFrame("2023-09-13");
-        System.out.println(ss);
+        BigDecimal ss = new BigDecimal(0.3).divide(new BigDecimal(3),2);//.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+        System.out.println("");
     }
 }
 

+ 23 - 0
src/main/java/com/repair/controller/LoginController.java

@@ -219,6 +219,9 @@ public class LoginController implements LoginControllerAPI {
         String user_name = null;
         String phone = null;
         int identity_type = 0;
+        String college = null;
+        String grade = null;
+        String profession = null;
         String campus = null;
         Wx_user userinfos = gson.fromJson(userinfo, new TypeToken<Wx_user>() {
         }.getType());
@@ -229,6 +232,9 @@ public class LoginController implements LoginControllerAPI {
             user_name = userinfos.getName();
             phone = userinfos.getTelephone();
             identity_type = userinfos.getIdentity_type();
+            college = userinfos.getCollege();
+            grade = userinfos.getGrade();
+            profession = userinfos.getProfession();
             campus = userinfos.getCampus();
 
         } catch (Exception e) {
@@ -257,6 +263,9 @@ public class LoginController implements LoginControllerAPI {
                 user.setUserPhone(phone);
                 user.setUserZzid(eUserZZ.User.getValue());
                 user.setIdentityType(identity_type);
+                user.setCollege(college);
+                user.setGrade(grade);
+                user.setProfession(profession);
                 user.setSchoolId(ObjectUtils.isEmpty(campus) ? 1 : eSchool.integerOf(campus));//校区ID
                 user.setIsChange(0);
                 int num = repairUserService.insertRepairUser(user);
@@ -269,6 +278,17 @@ public class LoginController implements LoginControllerAPI {
                 System.out.println("微校授权异常信息:"+e.getMessage());
                 throw new Exception("微校授权失败!");
             }
+        }else{
+            //更新微校获取的年纪信息
+            user.setCollege(college);
+            user.setGrade(grade);
+            user.setProfession(profession);
+
+            int num = repairUserService.updateRepairUser(user);
+            if (num <= 0) {
+                System.out.println("微校授权失败,用户信息新增异常:"+user_name+""+card_number);
+                throw new Exception("微校授权失败!");
+            }
         }
 
         RepairAdmin admin = repairAdminService.getRepairByCardnumber(card_number);
@@ -306,6 +326,7 @@ public class LoginController implements LoginControllerAPI {
         wlv.setUserZZName(eUserZZ.stringOf(user.getUserZzid()));
         wlv.setSchoolId(user.getSchoolId());
         wlv.setSchoolName(eSchool.stringOf(user.getSchoolId()));
+        wlv.setCollege(college == null ? "微校获取不到院校" : college);
         long expired = 1000 * 60 * 60 * 24 * 365;
         String token = JWTUtil.getToken(admin, expired);
         wlv.setToken(token);
@@ -455,6 +476,8 @@ public class LoginController implements LoginControllerAPI {
                 btns.add("维修完成");
                 btns.add("派单");
                 btns.add("图表");
+                btns.add("协作");
+                btns.add("转单");
                 break;
             //后勤
             //eUserZZ.Logistics.getValue():3

+ 21 - 0
src/main/java/com/repair/controller/RepairArticleBuildController.java

@@ -0,0 +1,21 @@
+package com.repair.controller;
+
+
+import com.repair.api.RepairArticleBuildControllerAPI;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-11-02
+ */
+@RestController
+public class RepairArticleBuildController implements RepairArticleBuildControllerAPI {
+
+}
+

+ 55 - 7
src/main/java/com/repair/controller/RepairArticleTypeController.java

@@ -4,6 +4,9 @@ package com.repair.controller;
 import com.repair.api.RepairArticleTypeControllerAPI;
 import com.repair.common.utils.paramUtils;
 import com.repair.model.pojo.RepairArticleType;
+import com.repair.model.pojo.RepairShiftSettings;
+import com.repair.model.request.updateArticleDetailRequest;
+import com.repair.model.request.updateArticleNumRequest;
 import com.repair.model.request.updateRepairArticleTypeRequest;
 import com.repair.model.result.CommonResult;
 import com.repair.model.result.PageUtils;
@@ -16,10 +19,12 @@ import com.repair.services.RepairConsumeService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -41,7 +46,8 @@ public class RepairArticleTypeController implements RepairArticleTypeControllerA
 
     /**
      * 新增报修物品
-     * @param rat 报修物品数据
+     *
+     * @param rat           报修物品数据
      * @param bindingResult 是否为空判断
      * @return
      */
@@ -64,7 +70,8 @@ public class RepairArticleTypeController implements RepairArticleTypeControllerA
 
     /**
      * 根据数据ID更新报修物品数据
-     * @param uratr 更新的报修物品数据
+     *
+     * @param uratr         更新的报修物品数据
      * @param bindingResult 是否为空判断
      * @return
      */
@@ -91,9 +98,10 @@ public class RepairArticleTypeController implements RepairArticleTypeControllerA
 
     /**
      * 报修物品分页数据查询
+     *
      * @param currentPage 当前页数
-     * @param pageCount 一页数据条数
-     * @param name 报修物品名称
+     * @param pageCount   一页数据条数
+     * @param name        报修物品名称
      * @return
      */
     @Override
@@ -104,6 +112,7 @@ public class RepairArticleTypeController implements RepairArticleTypeControllerA
 
     /**
      * 根据数据ID删除报修物品
+     *
      * @param id 数据ID
      * @return
      */
@@ -121,6 +130,7 @@ public class RepairArticleTypeController implements RepairArticleTypeControllerA
 
     /**
      * 根据校区ID查询报修物品树形图结构数据
+     *
      * @param schoolId 校区ID
      * @return
      */
@@ -134,6 +144,7 @@ public class RepairArticleTypeController implements RepairArticleTypeControllerA
 
     /**
      * 根据校区查询报修物品数据
+     *
      * @param schoolId
      * @return
      */
@@ -145,8 +156,9 @@ public class RepairArticleTypeController implements RepairArticleTypeControllerA
 
     /**
      * 获取关联耗材数据
+     *
      * @param schoolId 校区ID
-     * @param keyWord 搜索内容
+     * @param keyWord  搜索内容
      * @return
      */
     @Override
@@ -180,14 +192,15 @@ public class RepairArticleTypeController implements RepairArticleTypeControllerA
 
     /**
      * 根据父级ID获取树形菜单数据
+     *
      * @param parentID 父级ID
-     * @param lists 数据集合
+     * @param lists    数据集合
      * @return
      */
     private List<RepairArticleTypeTreeVo> QueryArticleTypeTreeRecords(Integer parentID, List<RepairArticleType> lists) {
         List<RepairArticleTypeTreeVo> newTrees = new ArrayList<>();
 
-        List<RepairArticleType> datas = lists.stream().filter(e -> e.getParentId().equals(parentID)).collect(Collectors.toList());
+        List<RepairArticleType> datas = lists.stream().filter(e -> e.getParentId().equals(parentID)).sorted(Comparator.comparing(RepairArticleType::getOrderNum)).collect(Collectors.toList());
 
         for (RepairArticleType data : datas) {
             RepairArticleTypeTreeVo item = RepairArticleTypeTreeVo.builder()
@@ -195,12 +208,14 @@ public class RepairArticleTypeController implements RepairArticleTypeControllerA
                     .schoolId(data.getSchoolId())
                     .parentId(data.getParentId())
                     .name(data.getName())
+                    .orderNum(data.getOrderNum())
                     .build();
             List<RepairArticleTypeTreeVo> news = QueryArticleTypeTreeRecords(item.getId(), lists);
             if (news == null || news.size() == 0) {
                 newTrees.add(item);
                 continue;
             } else {
+                news.sort(Comparator.comparing(RepairArticleTypeTreeVo::getOrderNum));
                 item.setChildren(news);
                 newTrees.add(item);
             }
@@ -208,5 +223,38 @@ public class RepairArticleTypeController implements RepairArticleTypeControllerA
 
         return newTrees;
     }
+
+
+    /**
+     * 拖拽报修物品
+     *
+     * @return
+     */
+    @Override
+    public CommonResult dragArticle(@RequestBody updateArticleNumRequest datas) {
+        if(datas == null){
+            return CommonResult.fail("参数不能为空");
+        }
+
+        if(datas.getArticles() == null){
+            return CommonResult.fail("参数不能为空");
+        }
+
+        List<RepairArticleType> rats = new ArrayList<>();
+        for (updateArticleDetailRequest data : datas.getArticles()) {
+            RepairArticleType rat = new RepairArticleType();
+            rat.setId(data.getId());
+            rat.setOrderNum(data.getOrderNum());
+            rats.add(rat);
+        }
+
+        boolean updateBatch = repairArticleTypeService.updateBatchArticle(rats);
+
+        if(!updateBatch){
+            return CommonResult.fail("拖拽失败");
+        }
+
+        return CommonResult.ok("拖拽成功");
+    }
 }
 

+ 11 - 2
src/main/java/com/repair/controller/RepairClassesSettingsController.java

@@ -37,6 +37,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.InvocationTargetException;
 import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.time.Instant;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -81,6 +82,14 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
             return CommonResult.fail("开始日期不能为空");
         }
 
+        //查找该用户是否已存储过当天排班
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        String dateString = ircr.getStartDate().format(formatter);
+        int shiftDate = repairClassesSettingsService.getRepairByUserId(ircr.getUserId(),dateString);
+        if(shiftDate > 0){
+            return CommonResult.fail("该用户"+dateString+"日已排班,请刷新重试!");
+        }
+
         //防止选择的班次重叠
         List<RepairShiftSettings> datas = repairShiftSettingsService.getRepairsByShiftIds(ircr.getShiftIds());
         for (int i = 0; i < datas.size(); i++) {
@@ -306,8 +315,8 @@ public class RepairClassesSettingsController implements RepairClassesSettingsCon
      * @return
      */
     @Override
-    public CommonResult queryPageUserClasses(int currentPage, int pageCount, int schoolId) {
-        PageUtils<AddressBookVo> result = repairUserService.queryUserPageBySchoolId(currentPage, pageCount, schoolId);
+    public CommonResult queryPageUserClasses(int currentPage, int pageCount, int schoolId, Integer userId) {
+        PageUtils<AddressBookVo> result = repairUserService.queryUserPageBySchoolId(currentPage, pageCount, schoolId, userId);
         List<Integer> userIds = result.getList().stream().map(AddressBookVo::getId).collect(Collectors.toList());
 
         List<ClassesDataVo> users = repairClassesSettingsService.queryClassesDatas(userIds, schoolId);

+ 47 - 29
src/main/java/com/repair/controller/RepairConsumablesController.java

@@ -6,6 +6,7 @@ import com.repair.api.RepairConsumablesControllerAPI;
 import com.repair.common.utils.*;
 import com.repair.model.enumModel.eIsSuper;
 import com.repair.model.enumModel.eRecordStatu;
+import com.repair.model.enumModel.eSchool;
 import com.repair.model.pojo.*;
 import com.repair.model.request.MaintenanceConsumeablesRequest;
 import com.repair.model.request.insertConsumablesRequest;
@@ -58,7 +59,8 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
 
     /**
      * 新增耗材记录
-     * @param rc 耗材记录
+     *
+     * @param rc            耗材记录
      * @param bindingResult 是否为空判断
      * @return
      */
@@ -76,7 +78,8 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
 
     /**
      * 根据数据ID更新耗材记录
-     * @param rc 耗材记录
+     *
+     * @param rc            耗材记录
      * @param bindingResult 是否为空判断
      * @return
      */
@@ -94,9 +97,10 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
 
     /**
      * 耗材记录分页数据查询
+     *
      * @param currentPage 当前页
-     * @param pageCount 一页数据条数
-     * @param name 查询名称
+     * @param pageCount   一页数据条数
+     * @param name        查询名称
      * @return
      */
     @Override
@@ -108,6 +112,7 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
 
     /**
      * 根据数据ID删除耗材记录
+     *
      * @param id 数据ID
      * @return
      */
@@ -125,11 +130,12 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
 
     /**
      * 耗材记录分页数据查询
+     *
      * @param currentPage 当前页
-     * @param pageCount 一页数据条数
-     * @param keyWord 关键字查询
-     * @param startTime 起始时间
-     * @param endTime 结束时间
+     * @param pageCount   一页数据条数
+     * @param keyWord     关键字查询
+     * @param startTime   起始时间
+     * @param endTime     结束时间
      * @return
      */
     @Override
@@ -144,15 +150,26 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
         }
 
         PageUtils<ConsumablePageVo> result = repairConsumablesService.queryConsumablePageList(currentPage, pageCount, keyWord, startTime, endTime);
+
+        for (ConsumablePageVo data : result.getList()) {
+            //校区名称
+            data.setSchoolName(eSchool.stringOf(data.getSchoolId()));
+            //当返回值小于0时,表示BigDecimal对象小于指定的数值;
+            //当返回值等于0时,表示BigDecimal对象等于指定的数值;
+            //当返回值大于0时,表示BigDecimal对象大于指定的数值。
+            data.setStatu(data.getTotalPrice().compareTo(BigDecimal.ZERO) > 0 ? "有偿" : "无偿");
+        }
+
         return CommonResult.ok(result);
     }
 
     /**
      * 耗材记录导出
-     * @param keyWord 关键字查询
+     *
+     * @param keyWord   关键字查询
      * @param startTime 起始时间
-     * @param endTime 结束时间
-     * @param response 文件响应流
+     * @param endTime   结束时间
+     * @param response  文件响应流
      * @throws NoSuchMethodException
      * @throws InstantiationException
      * @throws IllegalAccessException
@@ -198,8 +215,9 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
 
     /**
      * 报价-确认提交
-     * @param data 报价耗材数据
-     * @param userhead userhead请求头数据
+     *
+     * @param data          报价耗材数据
+     * @param userhead      userhead请求头数据
      * @param bindingResult 是否为空判断
      * @return
      * @throws Exception
@@ -250,7 +268,7 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
             }
 
             //判断是否已报价
-            if(rr.getPrice() != null){
+            if (rr.getPrice() != null) {
                 return CommonResult.fail("报修工单已报过价,请勿重复报价");
             }
 
@@ -320,6 +338,7 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
 
     /**
      * 改价-获取耗材记录数据
+     *
      * @param recordId 维修单记录ID
      * @return
      */
@@ -347,8 +366,9 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
 
     /**
      * 改价-确认提交
-     * @param data 改价耗材数据
-     * @param userhead userhead请求头
+     *
+     * @param data          改价耗材数据
+     * @param userhead      userhead请求头
      * @param bindingResult 是否为空判断
      * @return
      * @throws Exception
@@ -368,6 +388,13 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
                 return CommonResult.fail("无耗材数据,改价失败");
             }
 
+            String userID = AesUtils.decrypt(userhead);
+            RepairAdmin operateData = repairAdminService.getRepairById(userID);
+            if (operateData == null) {
+                //return CommonResult.fail("操作人信息不合法,无法进行回复!");
+                throw new Exception("操作人信息不合法,无法进行改价!");
+            }
+
             List<RepairConsumables> rcDatas = new ArrayList<>();
             for (insertConsumablesRequest rc : data.getConsumes()) {
                 if (rc.getArticleId() == null) {
@@ -389,9 +416,7 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
                 if (rc.getId() != null && rc.getId() > 0) {
                     rcData.setId(rc.getId());
                 }
-//                else {
-//                    rcData.setId(0);
-//                }
+                rcData.setChangeUser(operateData.getUsername());
                 rcData.setRecordId(data.getRecordId());
                 rcData.setArticleId(rc.getArticleId());
                 rcData.setConsumeId(rc.getConsumeId());
@@ -436,25 +461,18 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
 
             if (ids.size() > 0) {
                 int deleted = repairConsumablesService.deletedConsumableByIds(ids);
-                if (updateRecord <= 0) {
+                if (deleted <= 0) {
                     throw new Exception("改价失败!");
                 }
             }
 
-            String userID = AesUtils.decrypt(userhead);
-            RepairAdmin operateData = repairAdminService.getRepairById(userID);
-            if (operateData == null) {
-                //return CommonResult.fail("操作人信息不合法,无法进行回复!");
-                throw new Exception("操作人信息不合法,无法进行回复!");
-            }
-
             //发送人
             Integer senderId = 0;//超级管理员用ID为0
             if (!operateData.getIsSuper().equals(eIsSuper.Super.getValue())) {
                 RepairUser user = repairUserService.getRepairByCardNumber(operateData.getCardNumber());
                 if (user == null) {
                     //return CommonResult.fail("管理端账号未与移动端账号绑定,无法进行审核!");
-                    throw new Exception("管理端账号未与移动端账号绑定,无法进行审核!");
+                    throw new Exception("管理端账号未与移动端账号绑定,无法进行改价!");
                 }
                 senderId = user.getId();
             }
@@ -468,7 +486,7 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
             repairTrackRecord.setUserZzstr("维修师傅");
             int save = repairTrackRecordService.insertRepairTrackRecord(repairTrackRecord);
 
-            if(save <= 0){
+            if (save <= 0) {
                 throw new Exception("改价失败!");
             }
 

+ 95 - 3
src/main/java/com/repair/controller/RepairConsumeController.java

@@ -14,9 +14,7 @@ import com.repair.model.request.insertRepairConsumeRequest;
 import com.repair.model.request.updateRepairConsumeRequest;
 import com.repair.model.result.CommonResult;
 import com.repair.model.result.PageUtils;
-import com.repair.model.vo.ConsumeVo;
-import com.repair.model.vo.RepairConsumeVo;
-import com.repair.model.vo.RepairSchoolVo;
+import com.repair.model.vo.*;
 import com.repair.services.RepairAreaService;
 import com.repair.services.RepairArticleTypeService;
 import com.repair.services.RepairConsumeService;
@@ -40,6 +38,7 @@ import java.io.InputStream;
 import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -510,5 +509,98 @@ public class RepairConsumeController implements RepairConsumeControllerAPI {
 
         return CommonResult.ok(result);
     }
+
+    /**
+     * 根据校区ID和关键字查询耗材二级数据
+     * @param schoolId 校区ID
+     * @return
+     */
+    @Override
+    public CommonResult queryRepairConsumesBykey(int schoolId, String keyWord) {
+        List<RepairArticleType> result = repairArticleTypeService.getRepairArticlesBySchoolId(schoolId);
+
+        List<RepairConsume> consumeLists = repairConsumeService.getConsumesByKeyword(schoolId, keyWord);
+
+        List<RepairConsumeTreeVo> datas = new ArrayList<>();
+        for (RepairConsume data:consumeLists) {
+            RepairConsumeTreeVo treeData = new RepairConsumeTreeVo();
+            treeData.setName(data.getName());
+            treeData.setId(data.getId());
+            treeData.setParentId(Integer.valueOf(data.getArticleId()));
+            treeData.setPrice(data.getPrice());
+            treeData.setNumber(1);
+            treeData.setSchoolId(data.getSchoolId());
+            Optional<RepairArticleType> article = result.stream().filter(e -> e.getId().toString().equals(data.getArticleId())).findFirst();
+            if(article != null && article.isPresent()){
+                treeData.setParentName(article.get().getName());
+            }
+            datas.add(treeData);
+        }
+
+        return CommonResult.ok(datas);
+    }
+
+
+    /**
+     * 根据校区ID查询耗材树形图结构数据
+     * @param schoolId 校区ID
+     * @return
+     */
+    @Override
+    public CommonResult queryRepairConsumeTypeTree(int schoolId) {
+        List<RepairArticleType> result = repairArticleTypeService.getRepairArticlesBySchoolId(schoolId);
+
+        List<RepairConsume> consumeLists = repairConsumeService.getConsumesByKeyword(schoolId, null);
+
+        List<RepairConsumeypeTreeVo> datas = new ArrayList<>();
+        for (RepairArticleType data:result) {
+            RepairConsumeypeTreeVo newData = new RepairConsumeypeTreeVo().builder()
+                    .id(data.getId())
+                    .schoolId(data.getSchoolId())
+                    .parentId(0)
+                    .price(null)
+                    .name(data.getName())
+                    .build();
+            List<RepairConsumeypeTreeVo> consumes = QueryArticleTypeTreeRecords(newData.getId(), newData.getName(), consumeLists);
+            newData.setChildren(consumes);
+            datas.add(newData);
+        }
+
+        return CommonResult.ok(datas);
+    }
+
+    /**
+     * 根据父级ID获取树形菜单数据
+     * @param parentID 父级ID
+     * @param lists 数据集合
+     * @return
+     */
+    private List<RepairConsumeypeTreeVo> QueryArticleTypeTreeRecords(Integer parentID, String parentName, List<RepairConsume> lists) {
+        List<RepairConsumeypeTreeVo> newTrees = new ArrayList<>();
+
+        List<RepairConsume> datas = lists.stream().filter(e -> e.getArticleId().equals(parentID.toString())).collect(Collectors.toList());
+
+        for (RepairConsume data : datas) {
+            RepairConsumeypeTreeVo item = RepairConsumeypeTreeVo.builder()
+                    .id(data.getId())
+                    .schoolId(data.getSchoolId())
+                    .parentId(Integer.valueOf(data.getArticleId()))
+                    .parentName(parentName)
+                    .price(data.getPrice())
+                    .name(data.getName())
+                    .number(1)
+                    .build();
+            List<RepairConsumeypeTreeVo> news = QueryArticleTypeTreeRecords(item.getId(), item.getName(), lists);
+            if (news == null || news.size() == 0) {
+                newTrees.add(item);
+                continue;
+            } else {
+                item.setChildren(news);
+                newTrees.add(item);
+            }
+        }
+
+        return newTrees;
+    }
 }
 

+ 271 - 234
src/main/java/com/repair/controller/RepairPayRecordController.java

@@ -13,6 +13,7 @@ import com.repair.model.enumModel.eIsSuper;
 import com.repair.model.enumModel.ePayPageStatu;
 import com.repair.model.enumModel.eRecordStatu;
 import com.repair.model.pojo.*;
+import com.repair.model.request.RefundReviewRequest;
 import com.repair.model.request.RefundableAmountRequest;
 import com.repair.model.request.repairPayRequest;
 import com.repair.model.result.CommonResult;
@@ -34,8 +35,10 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import static com.repair.common.utils.StrUtils.getUUIDBits;
 
@@ -51,12 +54,12 @@ import static com.repair.common.utils.StrUtils.getUUIDBits;
 public class RepairPayRecordController implements RepairPayRecordControllerAPI {
 
     @Autowired
-    private RepairUserService repairUserService;
-    @Autowired
     private RepairAdminService repairAdminService;
     @Autowired
     private RepairRecordService repairRecordService;
     @Autowired
+    private RepairUserService repairUserService;
+    @Autowired
     private RepairPayRecordService repairPayRecordService;
     @Autowired
     private RepairTrackRecordService repairTrackRecordService;
@@ -67,7 +70,8 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
 
     /**
      * 新增支付记录
-     * @param rc 支付记录数据
+     *
+     * @param rc            支付记录数据
      * @param bindingResult 是否为空判断
      * @return
      */
@@ -85,7 +89,8 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
 
     /**
      * 根据维修单id更新支付记录
-     * @param rc 支付记录
+     *
+     * @param rc            支付记录
      * @param bindingResult 是否为空判断
      * @return
      */
@@ -102,21 +107,8 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
     }
 
     /**
-     * 支付记录分页数据查询
-     * @param currentPage 当前页数
-     * @param pageCount 一页数据条数
-     * @param name 查询名称
-     * @return
-     */
-    @Override
-    public CommonResult queryPageRepairPayRecords(int currentPage, int pageCount, String name) {
-        PageUtils<RepairPayRecord> result = repairPayRecordService.queryPageRepairPayRecords(currentPage, pageCount, name);
-
-        return CommonResult.ok(result);
-    }
-
-    /**
      * 根据数据ID删除支付记录
+     *
      * @param id 数据ID
      * @return
      */
@@ -134,13 +126,14 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
 
     /**
      * 假的报修工单支付
-     * @param rpr 报修工单支付
+     *
+     * @param rpr           报修工单支付
      * @param bindingResult 是否为空判断
      * @return
      */
     @Override
     public CommonResult repairPayment(repairPayRequest rpr, BindingResult bindingResult) {
-        System.out.println("开始支付"+ JSON.toJSON(rpr));
+        System.out.println("开始支付" + JSON.toJSON(rpr));
         if (bindingResult.hasErrors()) {
             String st = paramUtils.getParamError(bindingResult);
             return CommonResult.fail(st);
@@ -175,7 +168,7 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
             return CommonResult.fail("支付失败");
         }
 
-        System.out.println("支付结束"+ JSON.toJSON(CommonResult.ok("支付成功")));
+        System.out.println("支付结束" + JSON.toJSON(CommonResult.ok("支付成功")));
         return CommonResult.ok("支付成功");
     }
 
@@ -221,7 +214,7 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
                     return "success";
                 }
                 data.setIsSuccess(Integer.valueOf(tranStat));
-                data.setRemark(data.getRemark() + "/n" + tranStat);
+                data.setRemark(data.getRemark() + " " + tranStat);
 
                 int updateData = repairPayRecordService.updateRepairPayRecord(data);
                 if (updateData <= 0) {
@@ -252,9 +245,9 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
                 }
                 //将支付成功消息发送给师傅
                 String[] userIds = rr.getMaintenancerId().split(",");
-                if(userIds.length > 0){
+                if (userIds.length > 0) {
                     List<RepairSystemMessages> rsms = new ArrayList<>();
-                    for (int i = 0;i<userIds.length;i++){
+                    for (int i = 0; i < userIds.length; i++) {
                         RepairSystemMessages rsm = new RepairSystemMessages();
                         rsm.setIsRead(0);
                         rsm.setRecordId(data.getId());
@@ -262,8 +255,8 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
                         rsm.setContent("用户已支付,请尽快处理!");
                         rsms.add(rsm);
                     }
-                    boolean insertRsm =repairSystemMessagesService.inserBatchSystemMessage(rsms);
-                    if(!insertRsm){
+                    boolean insertRsm = repairSystemMessagesService.inserBatchSystemMessage(rsms);
+                    if (!insertRsm) {
                         throw new Exception("支付回调失败!");
                     }
                 }
@@ -290,271 +283,316 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
     /**
      * 支付成功分页
      *
+     * @param userhead    用户请求头
      * @param currentPage 当前页数
-     * @param pageCount 一页数据条数
-     * @param keyWord 关键字
-     * @param startTime 开始时间
-     * @param endTime 结束时间
+     * @param pageCount   一页数据条数
+     * @param keyWord     关键字
+     * @param startTime   开始时间
+     * @param endTime     结束时间
      * @return
      */
     @Override
-    public CommonResult queryProsperityRepairPayRecords(int currentPage, int pageCount, String keyWord, String startTime, String endTime) {
-
-        if (startTime != null && endTime != null) {
-            try {
-                startTime = TimeExchange.getStartOfDayStr(TimeExchange.StringToDate(startTime, "yyyy-MM-dd"));
-                endTime = TimeExchange.getEndOfDayStr(TimeExchange.StringToDate(endTime, "yyyy-MM-dd"));
-            } catch (Exception e) {
-            }
-        }
-
-
+    public CommonResult queryProsperityRepairPayRecords(String userhead, int currentPage, int pageCount, String keyWord, String startTime, String endTime) {
         if (currentPage <= 0 && pageCount <= 0) {
             currentPage = 1;
             pageCount = 10;
         }
 
-        //判断是否为名字
-        LambdaQueryWrapper<RepairUser> userWrapper = new LambdaQueryWrapper<>();
-        userWrapper.like(ObjectUtils.isNotEmpty(keyWord), RepairUser::getUserName, keyWord);
-
-        ArrayList<Integer> userIdList = new ArrayList<>();
-
-        List<RepairUser> list = repairUserService.list(userWrapper);
-        if (ObjectUtils.isNotEmpty(list) && list.size() >= 0) {
-            list.forEach(repairUser -> {
-                userIdList.add(repairUser.getId());
-            });
-        } else {
-            userIdList.add(0);
+        //查看是否是超级管理员
+        //超级管理员能审核
+        boolean isSuper = false;
+        String userID = AesUtils.decrypt(userhead);
+        RepairAdmin operateData = repairAdminService.getRepairById(userID);
+        if (operateData == null) {
+            return CommonResult.fail("操作人信息不合法,无法获取工单数据!");
         }
-
-        ArrayList<Integer> recordList = new ArrayList<>();
-        LambdaQueryWrapper<RepairRecord> recordWrapper = new LambdaQueryWrapper<>();
-        recordWrapper.like(ObjectUtils.isNotEmpty(keyWord),RepairRecord::getRecordNo,keyWord);
-        List<RepairRecord> list2 = repairRecordService.list(recordWrapper);
-        if (ObjectUtils.isNotEmpty(list2) && list2.size() >= 0) {
-            list2.forEach(repairRecord -> {
-                recordList.add(repairRecord.getId());
-            });
-        } else {
-            recordList.add(0);
+        if (operateData.getIsSuper().equals(eIsSuper.Super.getValue())) {
+            isSuper = true;
         }
 
+        //重写
+        PageUtils<ProsperityRepairPayRecordsVo> result = repairPayRecordService.queryPayPage(currentPage, pageCount, keyWord, startTime, endTime);
+        //需要把退款加入到进度中
+        List<RepairRefundRecord> refunds = repairRefundRecordService.getRepairsByStatu();
 
-        LambdaQueryWrapper<RepairPayRecord> wrapper = new LambdaQueryWrapper<>();
-
-
-        wrapper.in(ObjectUtils.isNotEmpty(keyWord), RepairPayRecord::getUserId, userIdList)
-                .between(ObjectUtils.isNotEmpty(startTime) && ObjectUtils.isNotEmpty(endTime), RepairPayRecord::getCreateTime, startTime, endTime)
-                .eq(RepairPayRecord::getIsSuccess, eIsSuccess.Succeed.getValue())
-                .or()
-                .in(ObjectUtils.isNotEmpty(keyWord), RepairPayRecord::getRecordId, recordList)
-                .between(ObjectUtils.isNotEmpty(startTime) && ObjectUtils.isNotEmpty(endTime), RepairPayRecord::getCreateTime, startTime, endTime)
-                .eq(RepairPayRecord::getIsSuccess, eIsSuccess.Succeed.getValue());
-
-        IPage<RepairPayRecord> page = repairPayRecordService.page(new Page<>(currentPage, pageCount), wrapper);
-
-        IPage<ProsperityRepairPayRecordsVo> prpr = new Page<>();
-        BeanUtils.copyProperties(page, prpr);
-
-
-        ArrayList<ProsperityRepairPayRecordsVo> vos = new ArrayList<>();
-
-        //订单号
-        ArrayList<Integer> recordIdList = new ArrayList<>();
+        for (ProsperityRepairPayRecordsVo data : result.getList()) {
+            List<RepairRefundRecord> ownerRefunds = refunds.stream().filter(e -> e.getRecordId().equals(data.getRecordId())).collect(Collectors.toList());
+            Integer state = ePayPageStatu.HavePaid.getValue();
+            //退款总金额
+            BigDecimal sum = BigDecimal.ZERO;
+            //已到账的退款金额
+            BigDecimal reachSum = BigDecimal.ZERO;
+            //审核状态的退款申请数量
+            int apply = 0;
+            //审核记录
+            List<RepairRefundRecord> approves = new ArrayList<>();
+            //说明有退款
+            if (ownerRefunds != null && ownerRefunds.size() > 0) {
+                for (RepairRefundRecord owner : ownerRefunds) {
+                    if (owner.getIsSuccess().intValue() == 1) {
+                        //已到账的退款金额
+                        reachSum = reachSum.add(owner.getRefundPrice());
+                    }
+                    if (owner.getApprove().intValue() == 0) {
+                        apply = apply + 1;
+                        approves.add(owner);
+                    }
+                    if(owner.getApprove().intValue() != 2){
+                        sum = sum.add(owner.getRefundPrice());
+                    }
 
-        //报修人id
-        List<Integer> userIds = new ArrayList<>();
+                }
+                //退款进度
+                ownerRefunds.sort(Comparator.comparing(RepairRefundRecord::getCreateTime));
+                data.setRepairRefundRecordList(ownerRefunds);
+
+
+                long NoRefuse = ownerRefunds.stream().filter(e -> e.getApprove().intValue() != 2).count();
+                if(NoRefuse > 0){
+                    //是否存在还在退款中的
+                    if (reachSum.compareTo(data.getPayPrice()) == 0) {
+                        state = ePayPageStatu.Refunded.getValue();//已退款
+                    } else {
+                        //查看是否有存在审核中的
+                        if (apply > 0) {
+                            state = ePayPageStatu.Apply.getValue();//退款中
+                        } else {
+                            if (reachSum.compareTo(BigDecimal.ZERO) == 0) {
+                                state = ePayPageStatu.Refund.getValue();//退款中
+                            } else {
+                                state = ePayPageStatu.Rebates.getValue();//部分退款
+                            }
+                        }
+                    }
+                }
+            }
+            //退款总金额
+            data.setRefundTotalPrice(sum);
+            //实收金额
+            BigDecimal officialPrice = data.getPayPrice().subtract(data.getRefundTotalPrice());
+            data.setOfficialPrice(officialPrice);
+            //状态
+            //已支付:0
+            //部分退款:1
+            //已退款:2
+            //退款申请中:3
+            //退款中:4
+            data.setState(state);
+
+            /**
+             * 是否显示审批按钮
+             * 不显示:0
+             * 显示:1
+             */
+            if (apply > 0 && isSuper) {
+                data.setIsApprove(1);
+                data.setApproveRefunds(approves);
+            }
 
-        List<RepairPayRecord> records = page.getRecords();
-        //获取所有订单号
-        if (ObjectUtils.isEmpty(records)) {
-            records.forEach(repairPayRecord -> {
-                recordIdList.add(repairPayRecord.getRecordId());
-                userIds.add(repairPayRecord.getUserId());
-            });
         }
 
-        //通过订单号查询退款记录
-        LambdaQueryWrapper<RepairRefundRecord> rrrsWrapepr = new LambdaQueryWrapper<>();
-        rrrsWrapepr.in(RepairRefundRecord::getRecordId, recordIdList)
-                .eq(RepairRefundRecord::getIsSuccess, eIsSuccess.Succeed.getValue());
-
-        List<RepairRefundRecord> refundRecords = repairRefundRecordService.list(rrrsWrapepr);
-
-        //通过人员id查询用户
-        LambdaQueryWrapper<RepairUser> userListWrapper = new LambdaQueryWrapper<>();
-        userListWrapper.in(RepairUser::getId, userIds)
-                .select(RepairUser::getId, RepairUser::getUserName);
-
-        List<RepairUser> users = repairUserService.list(userListWrapper);
-
+        return CommonResult.ok(result);
+    }
 
-        LambdaQueryWrapper<RepairRecord> rrWrapper = new LambdaQueryWrapper<>();
-        rrWrapper.in(RepairRecord::getId, recordIdList);
-        List<RepairRecord> list1 = repairRecordService.list(rrWrapper);
+    /**
+     * 实退申请
+     *
+     * @param rar           实退数据
+     * @param userhead      userhead请求头
+     * @param bindingResult 是否为空判断
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public CommonResult refundableAmount(RefundableAmountRequest rar, String userhead, BindingResult bindingResult) throws Exception {
+        if (bindingResult.hasErrors()) {
+            String st = paramUtils.getParamError(bindingResult);
+            return CommonResult.fail(st);
+        }
+        //实退权限
+        String userID = AesUtils.decrypt(userhead);
+        RepairAdmin operateData = repairAdminService.getRepairById(userID);
+        if (operateData == null) {
+            return CommonResult.fail("操作人权限不足,无法使用申请功能!");
+        }
 
-        records.forEach(rpr -> {
-            ProsperityRepairPayRecordsVo prrpv = new ProsperityRepairPayRecordsVo();
-            BeanUtils.copyProperties(rpr, prrpv);
-            //交易时间
-            prrpv.setPayTime(rpr.getCreateTime());
+        RepairPayRecord repairPayRecord = repairPayRecordService.getById(rar.getRepairPayRecordId());
+        if(repairPayRecord == null){
+            return CommonResult.fail("支付订单已失效,申请失败!");
+        }
 
-            Integer recordId = rpr.getRecordId();
+        RepairRecord rr = repairRecordService.getRepairById(repairPayRecord.getRecordId());
+        if(rr == null){
+            return CommonResult.fail("维修工单已失效,申请失败!");
+        }
 
-            //工单号
-            for (RepairRecord repairRecord : list1) {
-                Integer id = repairRecord.getId();
-                if (id.equals(recordId)) {
-                    prrpv.setRecordNo(repairRecord.getRecordNo());
-                }
+        //实退金额不能大于剩余金额
+        LambdaQueryWrapper<RepairRefundRecord> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(RepairRefundRecord::getRecordId, repairPayRecord.getRecordId());
+        wrapper.ne(RepairRefundRecord::getApprove, 2);
+        List<RepairRefundRecord> refundRecordList = repairRefundRecordService.list(wrapper);
+        BigDecimal refundTotal = BigDecimal.ZERO;
+        for (RepairRefundRecord repairRefundRecord : refundRecordList) {
+            //如果还存在审核中的退款数据就不允许提交
+            if (repairRefundRecord.getApprove().intValue() == 0) {
+                return CommonResult.fail("当前支付订单存在待审核退款申请,无法再次申请!");
             }
+            refundTotal = refundTotal.add(repairRefundRecord.getRefundPrice());
+        }
+        //实收金额减总退款金额在减实退金额,不能小于0
+        int i = repairPayRecord.getPayPrice().subtract(refundTotal).subtract(rar.getRefundPrice()).compareTo(new BigDecimal(0));
+        if (i < 0) {
+            return CommonResult.fail("实退金额有误");
+        }
 
-            List<RepairRefundRecord> repairRefundRecords = new ArrayList<>();
 
-            //报修人id
-            Integer userId = rpr.getUserId();
+        try {
+            RepairRefundRecord repairRefundRecord = new RepairRefundRecord();
 
-            //名字
-            if (ObjectUtils.isNotEmpty(users) && users.size() > 0) {
-                for (RepairUser user : users) {
-                    if (userId.equals(user.getId())) {
-                        prrpv.setUserName(user.getUserName());
-                    }
-                }
-            }
+            repairRefundRecord.setRecordId(repairPayRecord.getRecordId());
+            repairRefundRecord.setUserId(repairPayRecord.getUserId());
+            repairRefundRecord.setRefundPrice(rar.getRefundPrice());
+            repairRefundRecord.setApprove(0);//2023-10-27 待审批
+            repairRefundRecord.setIsSuccess(0);//2023-10-27 退款中
+            repairRefundRecord.setApproveUser(operateData.getUsername());
+            repairRefundRecord.setRemark(rar.getRemark());
 
+            boolean save = repairRefundRecordService.save(repairRefundRecord);
 
-            //退款总金额
-            BigDecimal refundPrice = BigDecimal.valueOf(0);
-            //退款记录
-            if (ObjectUtils.isNotEmpty(refundRecords) && refundRecords.size() > 0) {
-                for (RepairRefundRecord refundRecord : refundRecords) {
-                    if (recordId.equals(refundRecord.getRecordId())) {
-                        repairRefundRecords.add(refundRecord);
-                        refundPrice = refundPrice.add(refundRecord.getRefundPrice());
-                    }
-                }
+            if (!save) {
+                throw new Exception("实退申请失败!");
             }
-            //退款总金额
-            prrpv.setRefundTotalPrice(refundPrice);
 
-            //状态
-            if (repairRefundRecords.size() > 0) {
-                BigDecimal payPrice = rpr.getPayPrice();
-                //实收金额
-                BigDecimal officialPrice = payPrice.subtract(refundPrice);
-                prrpv.setOfficialPrice(officialPrice);
-                if (payPrice.compareTo(refundPrice) == 0) {
-                    prrpv.setState(ePayPageStatu.Refunded.getValue());
-                } else {
-                    prrpv.setState(ePayPageStatu.Rebates.getValue());
+            //操作人
+            Integer senderId = 0;//超级管理员用ID为0
+            if (!operateData.getIsSuper().equals(eIsSuper.Super.getValue())) {
+                RepairUser user = repairUserService.getRepairByCardNumber(operateData.getCardNumber());
+                if (user == null) {
+                    throw new Exception("管理端账号未与移动端账号绑定,无法进行申请!");
                 }
-            } else {
-                prrpv.setState(ePayPageStatu.HavePaid.getValue());
-                prrpv.setOfficialPrice(rpr.getPayPrice());
+                senderId = user.getId();
+            }
+            //添加跟踪记录
+            RepairTrackRecord rtr = new RepairTrackRecord();
+            rtr.setRecordId(repairPayRecord.getRecordId());
+            rtr.setMaintenanceState(rr.getMaintenanceState());
+            rtr.setContent("申请退款-" + rar.getRemark() + "退款" + rar.getRefundPrice() + "元");
+            rtr.setUserId(senderId);
+            rtr.setUserZzstr("管理员");
+            int insertRtr = repairTrackRecordService.insertRepairTrackRecord(rtr);
+            if (insertRtr <= 0) {
+                throw new Exception("实退申请失败!");
             }
 
-            prrpv.setRepairRefundRecordList(repairRefundRecords);
-
-            vos.add(prrpv);
-        });
-
-        prpr.setRecords(vos);
+        } catch (Exception e) {
+            System.out.println("实退申请失败错误信息:" + e.getMessage());
+            throw new Exception("实退申请失败!");
+        }
 
-        return CommonResult.ok(prpr);
+        return CommonResult.ok("实退申请成功");
     }
 
     /**
-     * 退
-     * @param rar 实退数据
-     * @param userhead userhead请求头
+     * 退款审核
+     *
+     * @param rar           实退数据
      * @param bindingResult 是否为空判断
      * @return
      */
     @Override
-    public CommonResult refundableAmount(RefundableAmountRequest rar, String userhead, BindingResult bindingResult) {
+    @Transactional(rollbackFor = {Exception.class})
+    public CommonResult refundReview(RefundReviewRequest rar, String userhead, BindingResult bindingResult) throws Exception {
         if (bindingResult.hasErrors()) {
             String st = paramUtils.getParamError(bindingResult);
             return CommonResult.fail(st);
         }
-        //超级管理员才有实退权限
+
+        //实退权限
         String userID = AesUtils.decrypt(userhead);
         RepairAdmin operateData = repairAdminService.getRepairById(userID);
-        if (operateData == null && eIsSuper.Super.getValue() == operateData.getIsSuper()) {
-            return CommonResult.fail("操作人权限不足,无法使用实退功能!");
+        if (operateData == null) {
+            return CommonResult.fail("操作人权限不足,无法使用审核功能!");
         }
 
-        //支付订单ID
-        Integer repairPayRecordId = rar.getRepairPayRecordId();
-        //退款金额
-        BigDecimal refundPrice = rar.getRefundPrice();
-
-        RepairPayRecord repairPayRecord = repairPayRecordService.getById(repairPayRecordId);
+        RepairRefundRecord data = repairRefundRecordService.getRepairById(rar.getId());
+        if (data == null) {
+            return CommonResult.fail("退款申请已失效,审核失败");
+        }
 
-        //实退金额不能大于剩余金额
-        Integer recordId = repairPayRecord.getRecordId();
-        //实收金额
-        BigDecimal payPrice = repairPayRecord.getPayPrice();
-        LambdaQueryWrapper<RepairRefundRecord> wrapper=new LambdaQueryWrapper<>();
-        wrapper.eq(RepairRefundRecord::getRecordId,recordId);
-        List<RepairRefundRecord> refundRecordList = repairRefundRecordService.list(wrapper);
-        BigDecimal refundTotal=new BigDecimal(0);
-        for (RepairRefundRecord repairRefundRecord : refundRecordList) {
-            BigDecimal refundPrice1 = repairRefundRecord.getRefundPrice();
-            refundTotal=refundTotal.add(refundPrice1);
+        RepairRecord rr = repairRecordService.getRepairById(data.getRecordId());
+        if(rr == null){
+            return CommonResult.fail("维修工单已失效,审核失败!");
         }
 
-        //实收金额减总退款金额在减实退金额,不能小于0
-        int i = payPrice.subtract(refundTotal).subtract(refundPrice).compareTo(new BigDecimal(0));
-        if (i<0) {
-            return CommonResult.fail("实退金额有误");
+        if (data.getApprove().intValue() != 0) {
+            return CommonResult.fail("请勿重复审核操作");
         }
 
-        RepairRefundRecord repairRefundRecord = new RepairRefundRecord();
+        try{
+            //rar.getState() 拒绝:0;通过:1
+            data.setApprove(rar.getState().intValue() == 0 ? 2 : 1);//待审批:0;通过:1;驳回:2
+            data.setIsSuccess(rar.getState().intValue() == 0 ? 2 : 0);//退款失败:2;退款成功:1;退款中:0
+
+            int num = repairRefundRecordService.updateRepairRefundRecord(data);
 
-        repairRefundRecord.setRecordId(repairPayRecord.getRecordId());
-        repairRefundRecord.setUserId(repairPayRecord.getUserId());
-        repairRefundRecord.setWxNo(repairPayRecord.getPayNo());
-        repairRefundRecord.setRefundNo("ST"+ UUIDUtils.create());
-        repairRefundRecord.setRefundPrice(refundPrice);
-        repairRefundRecord.setIsSuccess(eIsSuccess.Succeed.getValue());
-        repairRefundRecord.setRemark("实退");
+            if (num <= 0) {
+                throw new Exception("审核失败!");
+            }
 
-        boolean save = repairRefundRecordService.save(repairRefundRecord);
+            //操作人
+            Integer senderId = 0;//超级管理员用ID为0
+            if (!operateData.getIsSuper().equals(eIsSuper.Super.getValue())) {
+                RepairUser user = repairUserService.getRepairByCardNumber(operateData.getCardNumber());
+                if (user == null) {
+                    throw new Exception("管理端账号未与移动端账号绑定,无法进行申请!");
+                }
+                senderId = user.getId();
+            }
+            //添加跟踪记录
+            RepairTrackRecord rtr = new RepairTrackRecord();
+            rtr.setRecordId(data.getRecordId());
+            rtr.setMaintenanceState(rr.getMaintenanceState());
+            rtr.setContent("退款审核-" + (rar.getState().intValue() == 0 ? "拒绝通过该退款申请" : "退款申请通过审核"));
+            rtr.setUserId(senderId);
+            rtr.setUserZzstr("超级管理员");
+            int insertRtr = repairTrackRecordService.insertRepairTrackRecord(rtr);
+            if (insertRtr <= 0) {
+                throw new Exception("实退申请失败!");
+            }
 
-        if (save) {
-            return CommonResult.ok("实退成功");
+        }catch (Exception e){
+            System.out.println("审核失败错误信息:" + e.getMessage());
+            throw new Exception("审核失败!");
         }
 
-        return CommonResult.fail("实退失败");
+        return CommonResult.ok("审核成功");
     }
 
     /**
      * 统计
+     *
      * @return
      */
     @Override
-    public CommonResult statistics(){
-        LambdaQueryWrapper<RepairPayRecord> wrapper=new LambdaQueryWrapper<>();
+    public CommonResult statistics() {
+        LambdaQueryWrapper<RepairPayRecord> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(RepairPayRecord::getIsSuccess, eIsSuccess.Succeed.getValue());
 
         List<RepairPayRecord> payRecordList = repairPayRecordService.list(wrapper);
         //总金额
-        BigDecimal totalPrice=new BigDecimal(0);
+        BigDecimal totalPrice = new BigDecimal(0);
         for (RepairPayRecord repairPayRecord : payRecordList) {
             BigDecimal payPrice = repairPayRecord.getPayPrice();
-            totalPrice=totalPrice.add(payPrice);
+            totalPrice = totalPrice.add(payPrice);
         }
 
-        LambdaQueryWrapper<RepairRefundRecord> refundWrapper=new LambdaQueryWrapper<>();
+        LambdaQueryWrapper<RepairRefundRecord> refundWrapper = new LambdaQueryWrapper<>();
         refundWrapper.eq(RepairRefundRecord::getIsSuccess, eIsSuccess.Succeed.getValue());
         List<RepairRefundRecord> list = repairRefundRecordService.list(refundWrapper);
-        BigDecimal refundTotalPrice=new BigDecimal(0);
+        BigDecimal refundTotalPrice = new BigDecimal(0);
         for (RepairRefundRecord repairRefundRecord : list) {
             BigDecimal refundPrice = repairRefundRecord.getRefundPrice();
-            refundTotalPrice=refundTotalPrice.add(refundPrice);
+            refundTotalPrice = refundTotalPrice.add(refundPrice);
         }
         StatisticsVo statisticsVo = new StatisticsVo();
         statisticsVo.setCount(payRecordList.size());
@@ -567,37 +605,35 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
 
     /**
      * 限制实退金额
+     *
      * @param payRecordId 维修记录ID
      * @return
      * @throws Exception
      */
     @Override
-    public CommonResult restrict(int payRecordId){
+    public CommonResult restrict(int payRecordId) {
 
         RepairPayRecord payRecord = repairPayRecordService.getById(payRecordId);
 
         if (ObjectUtils.isEmpty(payRecord)) {
             return CommonResult.fail("参数异常");
         }
-        //实付金额
-        BigDecimal payPrice = payRecord.getPayPrice();
 
-        Integer recordId = payRecord.getRecordId();
-
-        LambdaQueryWrapper<RepairRefundRecord> wrapper=new LambdaQueryWrapper<>();
-        wrapper.eq(RepairRefundRecord::getRecordId,recordId);
+        LambdaQueryWrapper<RepairRefundRecord> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(RepairRefundRecord::getRecordId, payRecord.getRecordId());
+        wrapper.ne(RepairRefundRecord::getApprove, 2);
 
         List<RepairRefundRecord> refundRecordList = repairRefundRecordService.list(wrapper);
         //退款总金额
-        BigDecimal refundTotalPrice=new BigDecimal(0);
+        BigDecimal refundTotalPrice = BigDecimal.ZERO;
         for (RepairRefundRecord repairRefundRecord : refundRecordList) {
             BigDecimal refundPrice = repairRefundRecord.getRefundPrice();
-            refundTotalPrice=refundTotalPrice.add(refundPrice);
+            refundTotalPrice = refundTotalPrice.add(refundPrice);
         }
 
-        int i = payPrice.compareTo(refundTotalPrice);
-        if (i>=0) {
-            BigDecimal subtract = payPrice.subtract(refundTotalPrice);
+        //实付金额
+        if (payRecord.getPayPrice().compareTo(refundTotalPrice) >= 0) {
+            BigDecimal subtract = payRecord.getPayPrice().subtract(refundTotalPrice);
             return CommonResult.ok(subtract);
         }
 
@@ -606,10 +642,11 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
 
     /**
      * 支付导出
-     * @param response 文件响应流
-     * @param keyWord 关键字
+     *
+     * @param response  文件响应流
+     * @param keyWord   关键字
      * @param startTime 开始时间
-     * @param endTime 结束时间
+     * @param endTime   结束时间
      */
     @Override
     public void queryExport(HttpServletResponse response, String keyWord, String startTime, String endTime) {
@@ -622,7 +659,7 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
             }
         }
 
-        List<QueryExportVo> queryExportVoList=repairPayRecordService.queryExport(keyWord,startTime,endTime);
+        List<QueryExportVo> queryExportVoList = repairPayRecordService.queryExport(keyWord, startTime, endTime);
 
         List<QueryExportVo> vos = new ArrayList<>();
 
@@ -642,7 +679,7 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
         headerRow.createCell(8).setCellValue("状态");
 
 
-        if (ObjectUtils.isNotEmpty(queryExportVoList)&&queryExportVoList.size()>0) {
+        if (ObjectUtils.isNotEmpty(queryExportVoList) && queryExportVoList.size() > 0) {
 
             for (QueryExportVo queryExportVo : queryExportVoList) {
                 QueryExportVo vo = new QueryExportVo();
@@ -675,9 +712,9 @@ public class RepairPayRecordController implements RepairPayRecordControllerAPI {
                 dataRow1.createCell(2).setCellValue(vo.getRecordNo());
                 dataRow1.createCell(3).setCellValue(vo.getPayNo());
                 dataRow1.createCell(4).setCellValue(vo.getUserName());
-                dataRow1.createCell(5).setCellValue( vo.getPayPrice().toString());
-                dataRow1.createCell(6).setCellValue( vo.getRefundTotalPrice().toString());
-                dataRow1.createCell(7).setCellValue( vo.getOfficialPrice().toString());
+                dataRow1.createCell(5).setCellValue(vo.getPayPrice().toString());
+                dataRow1.createCell(6).setCellValue(vo.getRefundTotalPrice().toString());
+                dataRow1.createCell(7).setCellValue(vo.getOfficialPrice().toString());
                 dataRow1.createCell(8).setCellValue(vo.getStatus());
             }
 

文件差異過大導致無法顯示
+ 464 - 122
src/main/java/com/repair/controller/RepairRecordController.java


+ 3 - 0
src/main/java/com/repair/controller/RepairSystemSettingController.java

@@ -62,6 +62,9 @@ public class RepairSystemSettingController implements RepairSystemSettingControl
             String st = paramUtils.getParamError(bindingResult);
             return CommonResult.fail(st);
         }
+
+        ra.setHour(ra.getDay() * 24);
+
         int result = repairSystemSettingService.updateRepaiSystemSetting(ra);
 
         return result > 0 ? CommonResult.ok("修改成功") : CommonResult.fail("修改失败");

+ 313 - 71
src/main/java/com/repair/controller/RepairUserController.java

@@ -1,27 +1,26 @@
 package com.repair.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.repair.annotation.PassToken;
 import com.repair.api.RepairUserControllerAPI;
 import com.repair.common.utils.paramUtils;
 import com.repair.model.enumModel.eUserZZ;
-import com.repair.model.pojo.RepairCollaborateRecord;
-import com.repair.model.pojo.RepairRecord;
-import com.repair.model.pojo.RepairUser;
+import com.repair.model.pojo.*;
+import com.repair.model.request.ArticleBuildRequest;
 import com.repair.model.request.insertRepairUserRequest;
 import com.repair.model.request.updateAddressBookRequest;
 import com.repair.model.request.updateUserDataRequest;
 import com.repair.model.result.CommonResult;
 import com.repair.model.result.PageUtils;
 import com.repair.model.vo.*;
-import com.repair.services.RepairCollaborateRecordService;
-import com.repair.services.RepairDispatchRecordService;
-import com.repair.services.RepairRecordService;
-import com.repair.services.RepairUserService;
+import com.repair.services.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.lang.reflect.Array;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -45,6 +44,8 @@ public class RepairUserController implements RepairUserControllerAPI {
     @Autowired
     private RepairRecordService repairRecordService;
     @Autowired
+    private RepairArticleBuildService repairArticleBuildService;
+    @Autowired
     private RepairDispatchRecordService repairDispatchRecordService;
     @Autowired
     private RepairCollaborateRecordService repairCollaborateRecordService;
@@ -53,15 +54,47 @@ public class RepairUserController implements RepairUserControllerAPI {
      * 添加员工数据接口
      *
      * @param irur 员工数据
-     * @param bindingResult 是否为空判断
      * @return
      */
     @Override
-    public CommonResult InsertRepairUser(insertRepairUserRequest irur, BindingResult bindingResult) {
-        System.out.println("添加员工接口参数:"+ JSON.toJSON(irur));
-        if (bindingResult.hasErrors()) {
-            String st = paramUtils.getParamError(bindingResult);
-            return CommonResult.fail(st);
+    @Transactional(rollbackFor = {Exception.class})
+    public CommonResult InsertRepairUser(insertRepairUserRequest irur) throws Exception {
+        System.out.println("添加员工接口参数:" + JSON.toJSON(irur));
+
+        if (irur == null) {
+            return CommonResult.fail("参数不能为空!");
+        }
+
+        if (irur.getUserZzid() == null) {
+            return CommonResult.fail("身份不能为空!");
+        }
+
+        //无法添加用户
+        if (irur.getUserZzid().intValue() == eUserZZ.User.getValue()){
+            return CommonResult.fail("无法添加用户身份!");
+        }
+
+        if (irur.getUserName() == null) {
+            return CommonResult.fail("姓名不能为空!");
+        }
+        if (irur.getTeamId() == null) {
+            return CommonResult.fail("维修班不能为空!");
+        }
+        if (irur.getSchoolId() == null) {
+            return CommonResult.fail("校区不能为空!");
+        }
+
+        //参数判断
+        if (irur.getUserZzid().intValue() != eUserZZ.Offline.getValue()) {
+            if (irur.getCardNumber() == null) {
+                return CommonResult.fail("微校卡号不能为空!");
+            }
+            if (irur.getUserPhone() == null) {
+                return CommonResult.fail("手机号码不能为空!");
+            }
+            if (irur.getArticleBuilds() == null || irur.getArticleBuilds().size() <= 0) {
+                return CommonResult.fail("报修关联楼栋不能为空!");
+            }
         }
 
         RepairUser data = repairUserService.getRepairByCardNumber(irur.getCardNumber());
@@ -71,38 +104,109 @@ public class RepairUserController implements RepairUserControllerAPI {
         } else if (data != null) {
             ru.setId(data.getId());
         }
-        ru.setUserName(irur.getUserName());
-        ru.setCardNumber(irur.getCardNumber());
-        ru.setUserZzid(irur.getUserZzid());
-        ru.setTeamId(irur.getTeamId());
-        ru.setUserPhone(irur.getUserPhone());
-        ru.setSchoolId(irur.getSchoolId());
-        ru.setWorkType(irur.getWorkType());
-        ru.setState(1);//设置大量接单
-        ru.setArticle_id(StringUtils.join(irur.getArticleIds(), ','));
-        ru.setBuildId(StringUtils.join(irur.getBuildIds(), ','));
-        ru.setAcceptanceAssessTime(irur.getAcceptanceAssessTime());
-        ru.setMaintenanceAssessTime(irur.getMaintenanceAssessTime());
-
-        int result = 0;
-        if (data != null) {
-            result = repairUserService.updateRepairUser(ru);
-        } else {
-            result = repairUserService.insertRepairUser(ru);
+
+        try {
+            //报修类型关联楼栋新增 修改 删除
+            List<RepairArticleBuild> ArticleBuilds = new ArrayList<>();//传进来的报修楼栋
+            if (irur.getUserZzid().intValue() != eUserZZ.Offline.getValue() && data != null) {
+                List<RepairArticleBuild> oldArticleBuilds = repairArticleBuildService.getRepairArticleBuilds(data.getId());
+                for (ArticleBuildRequest articleBuild : irur.getArticleBuilds()) {
+                    if (articleBuild.getArticleId() == null) {
+                        return CommonResult.fail("报修物品ID不能为空");
+                    }
+                    if (articleBuild.getBuildIds() == null || articleBuild.getBuildIds().size() <= 0) {
+                        return CommonResult.fail("关联楼栋不能为空");
+                    }
+
+                    RepairArticleBuild articleData = new RepairArticleBuild();
+                    articleData.setUserId(data.getId());
+                    articleData.setArticleId(articleBuild.getArticleId());
+                    articleData.setBuildId(StringUtils.join(articleBuild.getBuildIds(), ','));
+                    if (articleBuild.getId() != null && articleBuild.getId() > 0) {
+                        articleData.setId(articleBuild.getId());
+                    }
+                    ArticleBuilds.add(articleData);
+                }
+
+                if (ArticleBuilds.size() > 0) {
+                    boolean result = repairArticleBuildService.saveorUpdateArticleBuildBatch(ArticleBuilds);
+
+                    if (!result) {
+                        throw new Exception("添加失败!");
+                    }
+                }
+
+                List<Integer> newDatas = ArticleBuilds.stream().map(RepairArticleBuild::getId).collect(Collectors.toList());
+                List<Integer> oldDatas = oldArticleBuilds.stream().map(RepairArticleBuild::getId).collect(Collectors.toList());
+                //oldData集合不在newDatas集合中的内容
+                List<Integer> ids = oldDatas.stream().filter(item -> !newDatas.contains(item)).collect(Collectors.toList());//需要删除的id
+
+                if (ids.size() > 0) {
+                    int deleted = repairArticleBuildService.deletedArticleBuildByIds(ids);
+                    if (deleted <= 0) {
+                        throw new Exception("添加失败!");
+                    }
+                }
+            }
+
+            ru.setUserName(irur.getUserName());
+            ru.setUserZzid(irur.getUserZzid());
+            ru.setTeamId(irur.getTeamId());
+            ru.setSchoolId(irur.getSchoolId());
+            ru.setWorkType(irur.getWorkType());
+            ru.setState(1);//设置正常接单
+
+            if (irur.getUserZzid().intValue() != eUserZZ.Offline.getValue()) {
+                ru.setCardNumber(irur.getCardNumber());
+                ru.setUserPhone(irur.getUserPhone());
+                ru.setAcceptanceAssessTime(irur.getAcceptanceAssessTime());
+                ru.setMaintenanceAssessTime(irur.getMaintenanceAssessTime());
+            }
+
+            int result = 0;
+            if (data != null) {
+                result = repairUserService.updateRepairUser(ru);
+            } else {
+                result = repairUserService.insertRepairUser(ru);
+
+                if (result > 0 && irur.getUserZzid().intValue() != eUserZZ.Offline.getValue()) {
+                    for (ArticleBuildRequest articleBuild : irur.getArticleBuilds()) {
+                        RepairArticleBuild articleData = new RepairArticleBuild();
+                        articleData.setUserId(result);
+                        articleData.setArticleId(articleBuild.getArticleId());
+                        articleData.setBuildId(StringUtils.join(articleBuild.getBuildIds(), ','));
+                        ArticleBuilds.add(articleData);
+                    }
+                    if (ArticleBuilds.size() > 0) {
+                        boolean insertBatch = repairArticleBuildService.saveArticleBuildBatch(ArticleBuilds);
+                        if (!insertBatch) {
+                            throw new Exception("添加失败!");
+                        }
+                    }
+                }
+            }
+
+            if (result <= 0) {
+                throw new Exception("添加失败!");
+            }
+
+        } catch (Exception e) {
+            throw new Exception("添加失败!");
         }
 
-        return result > 0 ? CommonResult.ok("添加成功") : CommonResult.fail("添加失败");
+        return CommonResult.ok("添加成功");
     }
 
     /**
      * 根据ID编辑用户数据的名称、手机号、身份、工种、维修班、楼栋关联ID、是否能转换、接单考核时间、维修考核时间
      *
-     * @param ra 员工数据
+     * @param ra            员工数据
      * @param bindingResult 是否为空判断
      * @return
      */
     @Override
-    public CommonResult updateRepairUserById(updateUserDataRequest ra, BindingResult bindingResult) {
+    @Transactional(rollbackFor = {Exception.class})
+    public CommonResult updateRepairUserById(updateUserDataRequest ra, BindingResult bindingResult) throws Exception {
         if (bindingResult.hasErrors()) {
             String st = paramUtils.getParamError(bindingResult);
             return CommonResult.fail(st);
@@ -115,15 +219,62 @@ public class RepairUserController implements RepairUserControllerAPI {
         data.setUserZzid(ra.getUserZzid());
         data.setWorkType(ra.getWorkType());
         data.setTeamId(ra.getTeamId());
-        data.setArticle_id(StringUtils.join(ra.getArticleIds(), ','));
-        data.setBuildId(StringUtils.join(ra.getBuildIds(), ','));
         data.setIsChange(ra.getIsChange());
         data.setAcceptanceAssessTime(ra.getAcceptanceAssessTime());
         data.setMaintenanceAssessTime(ra.getMaintenanceAssessTime());
 
-        int result = repairUserService.updateRepairUser(data);
+        try {
+            if (ra.getArticleBuilds() != null && ra.getArticleBuilds().size() > 0) {
+                //报修类型关联楼栋新增 修改 删除
+                List<RepairArticleBuild> ArticleBuilds = new ArrayList<>();//传进来的报修楼栋
+                List<RepairArticleBuild> oldArticleBuilds = repairArticleBuildService.getRepairArticleBuilds(data.getId());
+                for (ArticleBuildRequest articleBuild : ra.getArticleBuilds()) {
+                    if (articleBuild.getArticleId() == null) {
+                        return CommonResult.fail("报修物品ID不能为空");
+                    }
+                    if (articleBuild.getBuildIds() == null || articleBuild.getBuildIds().size() <= 0) {
+                        return CommonResult.fail("关联楼栋不能为空");
+                    }
+                    RepairArticleBuild articleData = new RepairArticleBuild();
+                    articleData.setUserId(ra.getId());
+                    articleData.setArticleId(articleBuild.getArticleId());
+                    articleData.setBuildId(StringUtils.join(articleBuild.getBuildIds(), ','));
+                    if (articleBuild.getId() != null && articleBuild.getId() > 0) {
+                        articleData.setId(articleBuild.getId());
+                    }
+                    ArticleBuilds.add(articleData);
+                }
+
+                if(ArticleBuilds.size() > 0){
+                    boolean result = repairArticleBuildService.saveorUpdateArticleBuildBatch(ArticleBuilds);
+
+                    if (!result) {
+                        throw new Exception("添加失败!");
+                    }
+                }
+
+                List<Integer> newDatas = ArticleBuilds.stream().map(RepairArticleBuild::getId).collect(Collectors.toList());
+                List<Integer> oldDatas = oldArticleBuilds.stream().map(RepairArticleBuild::getId).collect(Collectors.toList());
+                //oldData集合不在newDatas集合中的内容
+                List<Integer> ids = oldDatas.stream().filter(item -> !newDatas.contains(item)).collect(Collectors.toList());//需要删除的id
+
+                if (ids.size() > 0) {
+                    int deleted = repairArticleBuildService.deletedArticleBuildByIds(ids);
+                    if (deleted <= 0) {
+                        throw new Exception("修改失败!");
+                    }
+                }
+            }
+
+            int result = repairUserService.updateRepairUser(data);
+            if (result <= 0) {
+                throw new Exception("修改失败!");
+            }
+        } catch (Exception e) {
+            throw new Exception("修改失败!");
+        }
 
-        return result > 0 ? CommonResult.ok("修改成功") : CommonResult.fail("修改失败");
+        return CommonResult.ok("修改成功");
     }
 
     /**
@@ -144,19 +295,31 @@ public class RepairUserController implements RepairUserControllerAPI {
     public CommonResult queryPageRepairUser(int currentPage, int pageCount, String keyWord, Integer teamId, Integer schoolId) {
         PageUtils<RepairUserVo> result = repairUserService.queryPageRepairUser(currentPage, pageCount, keyWord, teamId, schoolId);
 
+        List<ArticleBuildVo> articleBuilds = new ArrayList<>();
+        if (result.getList() != null && result.getList().size() > 0) {
+            String userIds = StringUtils.join(result.getList().stream().map(RepairUserVo::getId).collect(Collectors.toList()), ",");
+            articleBuilds = repairUserService.queryArticleBuilds(userIds);
+        }
+
         for (RepairUserVo r : result.getList()) {
+            r.setArticleNames(r.getArticleNames() == null ? new ArrayList() : r.getArticleNames());
+            r.setBuildNames(r.getBuildNames() == null ? new ArrayList() : r.getBuildNames());
+            r.setArticleBuilds(r.getArticleBuilds() == null ? new ArrayList<>() : r.getArticleBuilds());
+
             r.setUserZzname(eUserZZ.stringOf(r.getUserZzid()));
-            if (r.getBuildId() != null) {
-                r.setBuildIds(Arrays.asList(r.getBuildId().split(",")));
-            }
-            if (r.getBuildName() != null) {
-                r.setBuildNames(Arrays.asList(r.getBuildName().split(",")));
-            }
-            if (r.getArticleId() != null) {
-                r.setArticleIds(Arrays.asList(r.getArticleId().split(",")));
-            }
-            if (r.getArticleName() != null) {
-                r.setArticleNames(Arrays.asList(r.getArticleName().split(",")));
+
+            if (articleBuilds.size() > 0) {
+                List<ArticleBuildVo> ownerArticleBuild = articleBuilds.stream().filter(e -> e.getUserId().intValue() == r.getId()).collect(Collectors.toList());
+                for (ArticleBuildVo owner : ownerArticleBuild) {
+                    r.getArticleNames().add(owner.getArticleName());
+                    r.getBuildNames().add(owner.getArticleName() + ":" + owner.getBuildName());
+                    ArticleBuildRequest data = new ArticleBuildRequest();
+                    data.setId(owner.getId());
+                    data.setArticleId(owner.getArticleId());
+                    List<String> builds = Arrays.asList(owner.getBuildId().split(","));
+                    data.setBuildIds(builds);
+                    r.getArticleBuilds().add(data);
+                }
             }
         }
 
@@ -164,13 +327,46 @@ public class RepairUserController implements RepairUserControllerAPI {
     }
 
     /**
+     * 将原有用户表中的报修关联楼栋弄进去
+     */
+    @Override
+    @PassToken
+    public CommonResult insertArticleBuild() {
+        List<RepairArticleBuild> result = repairArticleBuildService.queryRepairArticleBuilds();
+        List<RepairUser> users = repairUserService.queryRepairUserByArticle();
+
+        List<RepairArticleBuild> insertData = new ArrayList<>();
+        for (RepairUser user : users) {
+            List<String> articleIds = Arrays.asList(user.getArticleId().split(","));
+            for (String articleId : articleIds) {
+                if (result != null) {
+                    long count = result.stream().filter(e -> e.getArticleId().toString().equals(articleId) && e.getUserId().equals(user.getId())).count();
+                    if (count <= 0) {
+                        RepairArticleBuild insertD = new RepairArticleBuild();
+                        insertD.setArticleId(Integer.valueOf(articleId));
+                        insertD.setBuildId(user.getBuildId());
+                        insertD.setUserId(user.getId());
+                        insertData.add(insertD);
+                    }
+                }
+            }
+        }
+
+        boolean insertResult = repairArticleBuildService.saveArticleBuildBatch(insertData);
+
+        return insertResult ? CommonResult.ok("操作成功") : CommonResult.fail("操作失败");
+    }
+
+
+    /**
      * 根据ID删除用户数据
      *
      * @param id 数据ID
      * @return
      */
     @Override
-    public CommonResult deleteRepairUserById(int id) {
+    @Transactional(rollbackFor = {Exception.class})
+    public CommonResult deleteRepairUserById(int id) throws Exception {
 
         RepairUser data = repairUserService.getRepairById(id);
         if (data == null) {
@@ -181,15 +377,30 @@ public class RepairUserController implements RepairUserControllerAPI {
         //接单表中是否存在当前用户ID的数据条数
         //维修表中是否存在当前用户ID的数据条数
         DisReceCountVo disCount = repairDispatchRecordService.queryDisReceCount(Integer.valueOf(id));
-        if(disCount != null){
-            if(disCount.getDisCount() > 0 || disCount.getRecCount() > 0){
+        if (disCount != null) {
+            if (disCount.getDisCount() > 0 || disCount.getRecCount() > 0) {
                 return CommonResult.fail("存在待处理工单,无法删除");
             }
         }
 
-        int result = repairUserService.deleteRepairUserById(id);
+        try {
+            //删除维修关联楼栋数据
+            if(data.getUserZzid().intValue() != eUserZZ.Offline.getValue()){
+                int deleteData = repairArticleBuildService.deleteRepairArticleBuildByWrapper(id);
+                if(deleteData <= 0){
+                    throw new Exception("删除失败!");
+                }
+            }
+
+            int result = repairUserService.deleteRepairUserById(id);
+            if(result <= 0){
+                throw new Exception("删除失败!");
+            }
 
-        return result > 0 ? CommonResult.ok("删除成功") : CommonResult.fail("删除失败");
+        } catch (Exception e) {
+            throw new Exception("删除失败!");
+        }
+        return CommonResult.ok("删除成功");
     }
 
     /**
@@ -206,10 +417,11 @@ public class RepairUserController implements RepairUserControllerAPI {
 
     /**
      * 员工分页数据查询
+     *
      * @param currentPage 当前页数
-     * @param pageCount 一页数据条数
-     * @param recordId 报修记录ID
-     * @param keyWord 关键字
+     * @param pageCount   一页数据条数
+     * @param recordId    报修记录ID
+     * @param keyWord     关键字
      * @return
      */
     @Override
@@ -228,10 +440,37 @@ public class RepairUserController implements RepairUserControllerAPI {
     }
 
     /**
+     * 转线下的员工列表分页数据查询
+     *
+     * @param currentPage 当前页数
+     * @param pageCount   一页数据条数
+     * @param recordId    报修记录ID
+     * @param keyWord     关键字
+     * @return
+     */
+    @Override
+    public CommonResult queryPageOfflineUsers(Integer currentPage, Integer pageCount, Integer recordId, String keyWord) {
+
+        currentPage = currentPage == null || currentPage <= 0 ? 1 : currentPage;
+        pageCount = pageCount == null || pageCount <= 0 ? 100 : pageCount;
+
+        RepairRecord rr = repairRecordService.getRepairById(recordId);
+
+        if (rr == null) {
+            return CommonResult.fail("维修单无效,获取维修师傅数据失败");
+        }
+
+        PageUtils<AutoOfflineUserVo> users = repairUserService.autoOfflineRepairUser(currentPage, pageCount, rr.getSchoolId(), keyWord);
+
+        return CommonResult.ok(users);
+    }
+
+    /**
      * 通讯录数据查询
+     *
      * @param schoolId 校区ID
-     * @param userId 用户ID
-     * @param keyWord 关键字
+     * @param userId   用户ID
+     * @param keyWord  关键字
      * @return
      */
     @Override
@@ -253,7 +492,8 @@ public class RepairUserController implements RepairUserControllerAPI {
 
     /**
      * 编辑通讯录
-     * @param uabp 通讯录数据
+     *
+     * @param uabp          通讯录数据
      * @param bindingResult 是否为空判断
      * @return
      */
@@ -281,26 +521,27 @@ public class RepairUserController implements RepairUserControllerAPI {
 
     /**
      * 协作人员分页数据查询
+     *
      * @param currentPage 当前页数
-     * @param pageCount 一页数据条数
-     * @param schoolId 校区ID
-     * @param userId 用户ID
-     * @param keyWord 关键字
+     * @param pageCount   一页数据条数
+     * @param schoolId    校区ID
+     * @param userId      用户ID
+     * @param keyWord     关键字
      * @return
      */
     @Override
-    public CommonResult queryPageCollaborator(Integer currentPage, Integer pageCount, Integer schoolId, Integer userId,String keyWord, Integer recordId) {
+    public CommonResult queryPageCollaborator(Integer currentPage, Integer pageCount, Integer schoolId, Integer userId, String keyWord, Integer recordId) {
         String dateNow = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
-        if(currentPage == null){
+        if (currentPage == null) {
             currentPage = 1;
         }
-        if(pageCount == null){
+        if (pageCount == null) {
             pageCount = 100;
         }
 
-        if(recordId != null){
+        if (recordId != null) {
             RepairCollaborateRecord cdata = repairCollaborateRecordService.getRepairByRecordId(recordId);
-            if(cdata == null){
+            if (cdata == null) {
                 return CommonResult.fail("协作申请无效,获取维修师傅数据失败");
             }
             userId = cdata.getUserId();
@@ -313,9 +554,10 @@ public class RepairUserController implements RepairUserControllerAPI {
 
     /**
      * 后勤首页工单完成排行榜
+     *
      * @param currentPage 当前页数
-     * @param pageCount 一页数据条数
-     * @param schoolId 校区ID
+     * @param pageCount   一页数据条数
+     * @param schoolId    校区ID
      * @return
      */
     @Override

+ 2 - 2
src/main/java/com/repair/controller/RepairWorkTypeController.java

@@ -134,7 +134,7 @@ public class RepairWorkTypeController implements RepairWorkTypeControllerAPI {
         List<RepairWorkTypeVo> rs = new ArrayList<>();
         RepairWorkTypeVo r = new RepairWorkTypeVo();
         r.setId(1);
-        r.setName("大量接单");
+        r.setName("正常接单");
         rs.add(r);
         RepairWorkTypeVo r1 = new RepairWorkTypeVo();
         r1.setId(2);
@@ -150,7 +150,7 @@ public class RepairWorkTypeController implements RepairWorkTypeControllerAPI {
     @Override
     public CommonResult getRepairIdentitys() {
         List<RepairWorkTypeVo> result = new ArrayList<>();
-        for(int i = 0;i<4;i++){
+        for(int i = 0;i<=4;i++){
             RepairWorkTypeVo data = new RepairWorkTypeVo();
             data.setId(i);
             data.setName(eUserZZ.stringOf(i));

+ 18 - 0
src/main/java/com/repair/mapper/RepairArticleBuildMapper.java

@@ -0,0 +1,18 @@
+package com.repair.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.repair.model.pojo.RepairArticleBuild;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-11-02
+ */
+@Repository
+public interface RepairArticleBuildMapper extends BaseMapper<RepairArticleBuild> {
+
+}

+ 20 - 0
src/main/java/com/repair/mapper/RepairOfflineRecordMapper.java

@@ -0,0 +1,20 @@
+package com.repair.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.repair.model.pojo.RepairOfflineRecord;
+import com.repair.model.vo.OfflineDetailVo;
+import org.springframework.stereotype.Repository;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-07-20
+ */
+@Repository
+public interface RepairOfflineRecordMapper extends BaseMapper<RepairOfflineRecord> {
+    OfflineDetailVo queryOfflineDetail(@Param("recordId") Integer recordId);
+}

+ 5 - 0
src/main/java/com/repair/mapper/RepairPayRecordMapper.java

@@ -1,8 +1,11 @@
 package com.repair.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.repair.model.pojo.RepairPayRecord;
+import com.repair.model.vo.ProsperityRepairPayRecordsVo;
 import com.repair.model.vo.QueryExportVo;
+import com.repair.model.vo.RepairTechnicianVo;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -21,4 +24,6 @@ public interface RepairPayRecordMapper extends BaseMapper<RepairPayRecord> {
     RepairPayRecord queryPaymentData(@Param("recordNo") String recordNo);
 
     List<QueryExportVo> queryExport(String keyWord, String startTime, String endTime);
+
+    IPage<ProsperityRepairPayRecordsVo> queryPayPage(IPage<ProsperityRepairPayRecordsVo> page, String keyWord, String startTime, String endTime);
 }

+ 4 - 0
src/main/java/com/repair/mapper/RepairRecordMapper.java

@@ -57,6 +57,8 @@ public interface RepairRecordMapper extends BaseMapper<RepairRecord> {
 
     IPage<RepairTechnicianVo> queryTeamWorkClosed(IPage<RepairTechnicianVo> page,@Param("schoolId") Integer schoolId);
 
+    IPage<RepairTechnicianVo> queryTeamWorkOffline(IPage<RepairTechnicianVo> page,@Param("schoolId") Integer schoolId);
+
     List<ReportExportVo> queryNotTimeoutReportExport(String stateStr, String keyWord, String startTime, String endTime, Integer schoolId);
 
     List<ReportExportVo> queryTimeoutReportExport(String keyWord, String startTime, String endTime, Integer schoolId);
@@ -90,4 +92,6 @@ public interface RepairRecordMapper extends BaseMapper<RepairRecord> {
     RepairSummarizingVo repairSummarizing(@Param("startTime")String startTime,@Param("endTime") String endTime);
 
     RepairTotalDataVo repairTotalData();
+
+    PrintVo queryPrintData(@Param("recordId") Integer recordId);
 }

+ 5 - 1
src/main/java/com/repair/mapper/RepairUserMapper.java

@@ -29,15 +29,19 @@ public interface RepairUserMapper extends BaseMapper<RepairUser> {
 
     List<AddressBookVo> queryAddressBook(@Param("schoolId") Integer schoolId, @Param("keyWord") String keyWord);
 
-    IPage<AddressBookVo> queryUserPageBySchoolId(IPage<AddressBookVo> page, @Param("schoolId") Integer schoolId);
+    IPage<AddressBookVo> queryUserPageBySchoolId(IPage<AddressBookVo> page, @Param("schoolId") Integer schoolId, @Param("userId") Integer userId);
 
     List<AutoDispatchUserVo> autoDispatchUser(@Param("schoolId") Integer schoolId, @Param("dateNow") String dateNow, @Param("articleId") Integer articleId, @Param("buildId") Integer buildId, @Param("keyWord") String keyWord);
 
     IPage<AutoDispatchUserVo> autoDispatchUser(IPage<AutoDispatchUserVo> page, @Param("schoolId") Integer schoolId, @Param("dateNow") String dateNow, @Param("articleId") Integer articleId, @Param("buildId") Integer buildId, @Param("keyWord") String keyWord);
 
+    IPage<AutoOfflineUserVo> autoOfflineRepairUser(IPage<AutoOfflineUserVo> page, @Param("schoolId") Integer schoolId, @Param("keyWord") String keyWord);
+
     IPage<RepairWorkTypeVo> queryCollaboratorUser(IPage<RepairWorkTypeVo> page, @Param("schoolId") Integer schoolId, @Param("userId") Integer userId, @Param("dateNow") String dateNow, @Param("keyWord") String keyWord);
 
     IPage<PositiveReviewVo> queryPositiveReviewPage(IPage<PositiveReviewVo> page, @Param("schoolId") Integer schoolId);
 
     List<AutoDispatchUserVo> dropDown(Integer buildId, Integer articleId, Integer schoolId, Integer userId);
+
+    List<ArticleBuildVo> queryArticleBuilds(@Param("userIds") String userIds);
 }

+ 58 - 0
src/main/java/com/repair/model/enumModel/eIdentityType.java

@@ -0,0 +1,58 @@
+package com.repair.model.enumModel;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/7/11 星期二 16:39
+ * @Description: com.repair.model.enumModel
+ * @Version: 1.0
+ */
+public enum eIdentityType {
+    //微校身份类型ID
+    Other(0),//其他
+    Student(1),//学生
+    Teacher(4),//教职工
+    Alumnus(5),//校友
+    Undergraduate(6);//本科生
+
+    private int value;
+
+    eIdentityType(int value){
+        this.value = value;
+    }
+
+    public int getValue() {
+        return value;
+    }
+    public static eIdentityType valueOf(int value) {
+        switch (value) {
+            case 0:
+                return eIdentityType.Other;
+            case 1:
+                return eIdentityType.Student;
+            case 4:
+                return eIdentityType.Teacher;
+            case 5:
+                return eIdentityType.Alumnus;
+            case 6:
+                return eIdentityType.Undergraduate;
+            default:
+                return null;
+        }
+    }
+    public static String stringOf(Integer value) {
+        switch (value) {
+            case 0:
+                return "其他";
+            case 1:
+                return "学生";
+            case 4:
+                return "教职工";
+            case 5:
+                return "校友";
+            case 6:
+                return "本科生";
+            default:
+                return null;
+        }
+    }
+}

+ 10 - 3
src/main/java/com/repair/model/enumModel/ePayPageStatu.java

@@ -1,9 +1,16 @@
 package com.repair.model.enumModel;
 
 public enum ePayPageStatu {
-    HavePaid(0),//已支付
-    Rebates(1),//部分退款
-    Refunded(2);//已退款
+    //已支付:0
+    //部分退款:1
+    //已退款:2
+    //退款申请中:3
+    //退款中:4
+    HavePaid(0),
+    Rebates(1),
+    Refunded(2),
+    Apply(3),
+    Refund(4);
 
     private int value;
     ePayPageStatu(int value) {

+ 12 - 1
src/main/java/com/repair/model/enumModel/eRecordStatu.java

@@ -16,7 +16,10 @@ public enum eRecordStatu {
     Collaborate(6),//协作待审核
     Finished(7),//已完成
     Canceled(8),//已取消
-    Closed(9);//已关单
+    Closed(9),//已关单
+    Offline(10),//转线下
+    OfflineReview(11);//转线下待审核
+
 
     private int value;
 
@@ -47,6 +50,10 @@ public enum eRecordStatu {
                 return eRecordStatu.Canceled;
             case 9:
                 return eRecordStatu.Closed;
+            case 10:
+                return eRecordStatu.Offline;
+            case 11:
+                return eRecordStatu.OfflineReview;
             default:
                 return null;
         }
@@ -71,6 +78,10 @@ public enum eRecordStatu {
                 return "已取消";
             case 9:
                 return "已关单";
+            case 10:
+                return "转线下";
+            case 11:
+                return "转线下待审核";
             default:
                 return null;
         }

+ 1 - 1
src/main/java/com/repair/model/enumModel/eUserStatu.java

@@ -8,7 +8,7 @@ package com.repair.model.enumModel;
  * 账号状态
  */
 public enum eUserStatu {
-    Received(1),//大量接单
+    Received(1),//正常接单
     UnReceived(2);//停止接单
 
     private int value;

+ 6 - 1
src/main/java/com/repair/model/enumModel/eUserZZ.java

@@ -10,7 +10,8 @@ public enum eUserZZ {
     User(0),//用户
     Maintenance(1),//维修师傅
     Monitor(2),//管理者(郭班长)
-    Logistics(3);//后勤
+    Logistics(3),//后勤
+    Offline(4);//线下
 
     private int value;
 
@@ -31,6 +32,8 @@ public enum eUserZZ {
                 return eUserZZ.Monitor;
             case 3:
                 return eUserZZ.Logistics;
+            case 4:
+                return eUserZZ.Offline;
             default:
                 return null;
         }
@@ -45,6 +48,8 @@ public enum eUserZZ {
                 return "管理者";
             case 3:
                 return "后勤";
+            case 4:
+                return "线下";
             default:
                 return null;
         }

+ 68 - 0
src/main/java/com/repair/model/pojo/RepairArticleBuild.java

@@ -0,0 +1,68 @@
+package com.repair.model.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-07-10
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="RepairArticleBuild对象", description="")
+public class RepairArticleBuild implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "报修类型ID")
+    @NotNull(message = "报修类型不能为空")
+    private Integer articleId;
+
+    @ApiModelProperty(value = "楼栋关联ID")
+    @NotNull(message = "楼栋关联ID不能为空")
+    private String buildId;
+
+    @ApiModelProperty(value = "用户ID")
+    @NotNull(message = "用户ID不能为空")
+    private Integer userId;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    @ApiModelProperty(value = "创建人员")
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @ApiModelProperty(value = "更新人员")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleted;
+
+
+}

+ 4 - 0
src/main/java/com/repair/model/pojo/RepairArticleType.java

@@ -32,6 +32,10 @@ public class RepairArticleType implements Serializable {
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
+    @ApiModelProperty(value = "序号")
+    @NotNull(message = "序号不能为空")
+    private Integer orderNum;
+
     @ApiModelProperty(value = "校区ID")
     @NotNull(message = "校区ID不能为空")
     private Integer schoolId;

+ 3 - 0
src/main/java/com/repair/model/pojo/RepairConsumables.java

@@ -62,6 +62,9 @@ public class RepairConsumables implements Serializable {
     @NotNull(message = "合计费用不能为空")
     private BigDecimal totalPrice;
 
+    @ApiModelProperty(value = "改价人")
+    private String changeUser;
+
     @ApiModelProperty(value = "创建时间")
     @TableField(fill = FieldFill.INSERT)
     @JsonIgnore

+ 0 - 1
src/main/java/com/repair/model/pojo/RepairEvaluate.java

@@ -41,7 +41,6 @@ public class RepairEvaluate implements Serializable {
     private Integer star;
 
     @ApiModelProperty(value = "评价内容")
-    @NotBlank(message = "评价内容不能为空")
     private String content;
 
     @ApiModelProperty(value = "创建时间")

+ 93 - 0
src/main/java/com/repair/model/pojo/RepairOfflineRecord.java

@@ -0,0 +1,93 @@
+package com.repair.model.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-07-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="RepairOfflineRecord对象", description="")
+public class RepairOfflineRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "报修记录ID")
+    @NotNull(message = "报修记录不能为空")
+    private Integer recordId;
+
+    @ApiModelProperty(value = "语音 可能做成语音文件上传的方式 然后这个字段记录语音文件名")
+    @NotBlank(message = "语音不能为空")
+    private String voice;
+
+    @ApiModelProperty(value = "语音时长 可能做成语音文件上传的方式 然后这个字段记录语音文件名")
+    @NotNull(message = "语音时长不能为空")
+    private Integer voiceLength;
+
+    @ApiModelProperty(value = "备注")
+    @NotBlank(message = "备注不能为空")
+    private String remark;
+
+    @ApiModelProperty(value = "原来的工单状态")
+    @NotBlank(message = "原有工单状态不能为空")
+    private Integer oldRecord;
+
+    @ApiModelProperty(value = "审批状态 0拒绝 1同意 2待审批")
+    @NotNull(message = "审批状态不能为空")
+    private Integer approvalStatu;
+
+    @ApiModelProperty(value = "申请人ID")
+    @NotNull(message = "申请人不能为空")
+    private Integer userId;
+
+    @ApiModelProperty(value = "审批操作人ID")
+    @NotNull(message = "审批操作人不能为空")
+    private Integer approverId;
+
+    @ApiModelProperty(value = "拒绝原因")
+    private String refuseRemark;
+
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    @ApiModelProperty(value = "创建人员")
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @ApiModelProperty(value = "更新人员")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleted;
+
+
+}

+ 3 - 0
src/main/java/com/repair/model/pojo/RepairRecord.java

@@ -82,6 +82,9 @@ public class RepairRecord implements Serializable {
     @ApiModelProperty(value = "报修人联系电话")
     private String userPhone;
 
+    @ApiModelProperty(value = "报修人年级等信息")
+    private String userClass;
+
     @ApiModelProperty(value = "楼栋ID")
     private Integer buildId;
 

+ 21 - 4
src/main/java/com/repair/model/pojo/RepairRefundRecord.java

@@ -1,6 +1,7 @@
 package com.repair.model.pojo;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -39,14 +40,17 @@ public class RepairRefundRecord implements Serializable {
 
     @ApiModelProperty(value = "被退款人员ID")
     @NotNull(message = "被退款人不能为空")
+    @JsonIgnore
     private Integer userId;
 
-    @ApiModelProperty(value = "要退的那笔订单的微信订单号(对应微信的)")
-    @NotBlank(message = "微信订单流水号不能为空")
+    @ApiModelProperty(value = "商户退款单号(对应微信的)")
+    @NotBlank(message = "商户退款单号不能为空")
+    @JsonIgnore
     private String wxNo;
 
-    @ApiModelProperty(value = "退款时产生的流水号(对应微信的)")
-    @NotBlank(message = "微信退款流水号不能为空")
+    @ApiModelProperty(value = "微信退款单号(对应微信的)")
+    @NotBlank(message = "微信退款单号不能为空")
+    @JsonIgnore
     private String refundNo;
 
     @ApiModelProperty(value = "退款金额")
@@ -57,6 +61,15 @@ public class RepairRefundRecord implements Serializable {
     @NotNull(message = "退款状态不能为空")
     private Integer isSuccess;
 
+    @ApiModelProperty(value = "审批状态 待审批:0;通过:1;驳回:2")
+    private Integer approve;
+
+    @ApiModelProperty(value = "申请人")
+    private String approveUser;
+
+    @ApiModelProperty(value = "审批人")
+    private String approvedUser;
+
     @ApiModelProperty(value = "备注")
     @NotBlank(message = "备注不能未空")
     private String remark;
@@ -67,19 +80,23 @@ public class RepairRefundRecord implements Serializable {
 
     @ApiModelProperty(value = "更新时间")
     @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonIgnore
     private Date updateTime;
 
     @ApiModelProperty(value = "创建人员")
     @TableField(fill = FieldFill.INSERT)
+    @JsonIgnore
     private String createUser;
 
     @ApiModelProperty(value = "更新人员")
     @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonIgnore
     private String updateUser;
 
     @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
     @TableField(fill = FieldFill.INSERT)
     @TableLogic
+    @JsonIgnore
     private Integer deleted;
 
 

+ 13 - 1
src/main/java/com/repair/model/pojo/RepairSystemSetting.java

@@ -33,9 +33,21 @@ public class RepairSystemSetting implements Serializable {
     private Integer id;
 
     @ApiModelProperty(value = "工单完成后多少小时,用户未评价系统默认好评")
-    @NotNull(message = "自动好评时间设置不能为空")
     private Integer hour;
 
+    @ApiModelProperty(value = "工单完成后多少天,用户未评价系统默认好评")
+    @TableField(exist = false)
+    @NotNull(message = "自动好评时间设置不能为空")
+    private Integer day;
+
+    public Integer getDay() {
+        return (hour == null ? day : hour / 24);
+    }
+
+    public void setDay(Integer day) {
+        this.day = day;
+    }
+
     @ApiModelProperty(value = "黄家湖紧急电话")
     @NotBlank(message = "黄家湖紧急电话不能为空")
     private String emergencyCall;

+ 4 - 0
src/main/java/com/repair/model/pojo/RepairTransferRecord.java

@@ -60,6 +60,10 @@ public class RepairTransferRecord implements Serializable {
     @NotNull(message = "审批操作人不能为空")
     private Integer approverId;
 
+    @ApiModelProperty(value = "拒绝原因")
+    private String refuseRemark;
+
+
     @ApiModelProperty(value = "创建时间")
     @TableField(fill = FieldFill.INSERT)
     private Date createTime;

+ 11 - 2
src/main/java/com/repair/model/pojo/RepairUser.java

@@ -55,6 +55,15 @@ public class RepairUser implements Serializable {
     @NotNull(message = "微校身份类型不能为空")
     private Integer identityType;
 
+    @ApiModelProperty(value = "学院")
+    private String college;
+
+    @ApiModelProperty(value = "年级")
+    private String grade;
+
+    @ApiModelProperty(value = "专业")
+    private String profession;
+
     @ApiModelProperty(value = "校区ID")
     @NotNull(message = "校区不能为空")
     private Integer schoolId;
@@ -62,14 +71,14 @@ public class RepairUser implements Serializable {
     @ApiModelProperty(value = "维修班 校方人员:0;第三方人员:1")
     private Integer teamId;
 
-    @ApiModelProperty(value = "员工状态 大量接单:1;停止接单:2;订单饱和:3")
+    @ApiModelProperty(value = "员工状态 正常接单:1;停止接单:2;订单饱和:3")
     private Integer state;
 
     @ApiModelProperty(value = "楼栋关联ID(多个楼栋用逗号隔开)")
     private String buildId;
 
     @ApiModelProperty(value = "故障类型(改名叫物品)关联ID(多个故障类型用逗号隔开)")
-    private String article_id;
+    private String articleId;
 
     @ApiModelProperty(value = "是否能转换  不能转换:0;能转换:1")
     @NotNull(message = "转换状态不能为空")

+ 24 - 0
src/main/java/com/repair/model/request/ArticleBuildRequest.java

@@ -0,0 +1,24 @@
+package com.repair.model.request;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 类型关联楼栋
+ */
+@Data
+public class ArticleBuildRequest {
+    /**
+     * 数据ID
+     */
+    private Integer id;
+    /**
+     * 报修类型ID
+     */
+    private Integer articleId;
+    /**
+     * 关联楼栋
+     */
+    private List<String> buildIds;
+}

+ 24 - 0
src/main/java/com/repair/model/request/RefundReviewRequest.java

@@ -0,0 +1,24 @@
+package com.repair.model.request;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+public class RefundReviewRequest {
+
+    /**
+     * 退款单ID
+     */
+    @NotNull(message = "退款单ID")
+    private Integer id;
+
+    /**
+     * 审批状态
+     * 拒绝:0
+     * 同意:1
+     */
+    @NotNull(message = "审批状态")
+    private Integer state;
+
+}

+ 3 - 0
src/main/java/com/repair/model/request/RefundableAmountRequest.java

@@ -14,4 +14,7 @@ public class RefundableAmountRequest {
     @NotNull(message = "实退金额不能为空")
     private BigDecimal refundPrice;
 
+    @NotNull(message = "退款原因不能为空")
+    private String remark;
+
 }

+ 2 - 15
src/main/java/com/repair/model/request/insertRepairUserRequest.java

@@ -3,7 +3,6 @@ package com.repair.model.request;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.util.List;
 
@@ -21,7 +20,6 @@ public class insertRepairUserRequest {
     /**
      * 微校卡号
      */
-    @NotBlank(message = "微校卡号不能为空")
     private String cardNumber;
 
     /**
@@ -33,7 +31,6 @@ public class insertRepairUserRequest {
     /**
      * 手机号码
      */
-    @NotBlank(message = "手机号码不能为空")
     private String userPhone;
 
     /**
@@ -45,7 +42,6 @@ public class insertRepairUserRequest {
     /**
      * 工种
      */
-    @NotNull(message = "工种不能为空")
     private Integer workType;
 
     /**
@@ -57,27 +53,18 @@ public class insertRepairUserRequest {
     private Integer teamId;
 
     /**
-     * 关联报修类型
+     * 报修关联楼栋
      */
-    @NotEmpty(message = "关联报修类型不能为空")
-    private List<String> articleIds;
-
-    /**
-     * 关联楼栋
-     */
-    @NotEmpty(message = "关联楼栋不能为空")
-    private List<String> buildIds;
+    private List<ArticleBuildRequest> articleBuilds;
 
     /**
      * 接单考核时间
      */
-    @NotNull(message = "接单考核时间不能为空")
     private Integer acceptanceAssessTime;
 
     /**
      * 维修考核时间
      */
-    @NotNull(message = "维修考核时间不能为空")
     private Integer maintenanceAssessTime;
 
 }

+ 44 - 0
src/main/java/com/repair/model/request/offlineApplyRequest.java

@@ -0,0 +1,44 @@
+package com.repair.model.request;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/8/6 星期日 19:55
+ * @Description: com.repair.model.request
+ * @Version: 1.0
+ */
+@Data
+public class offlineApplyRequest {
+    /**
+     * 报修记录ID
+     */
+    @NotNull(message = "报修记录不能为空")
+    private Integer recordId;
+
+    /**
+     * 转单审核申请人ID
+     */
+    @NotNull(message = "申请人不能为空")
+    private Integer userId;
+
+    /**
+     * 转单语音说明
+     */
+    @NotBlank(message = "转线下语音说明不能为空")
+    private String voice;
+
+    /**
+     * 转单时长
+     */
+    @NotNull(message = "转线下语音时长不能为空")
+    private Integer voiceLength;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 6 - 1
src/main/java/com/repair/model/request/transferRequest.java

@@ -19,11 +19,16 @@ public class transferRequest {
     private String remark;
 
     /**
-     * 被派单师傅ID
+     * 被转线下师傅ID
      */
     private Integer userId;
 
     /**
+     * 留言
+     */
+    private String refuseRemark;
+
+    /**
      * 审批状态
      * 拒绝:0
      * 同意:1

+ 22 - 0
src/main/java/com/repair/model/request/updateArticleDetailRequest.java

@@ -0,0 +1,22 @@
+package com.repair.model.request;
+
+import com.repair.model.pojo.RepairConsumables;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 修改密码
+ */
+@Data
+public class updateArticleDetailRequest {
+    /**
+     * 数据ID
+     */
+    private int id;
+
+    /**
+     * 序号
+     */
+    private int orderNum;
+}

+ 16 - 0
src/main/java/com/repair/model/request/updateArticleNumRequest.java

@@ -0,0 +1,16 @@
+package com.repair.model.request;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 修改密码
+ */
+@Data
+public class updateArticleNumRequest {
+    /**
+     * 报修物品集合
+     */
+    private List<updateArticleDetailRequest> articles;
+}

+ 2 - 7
src/main/java/com/repair/model/request/updateUserDataRequest.java

@@ -57,14 +57,9 @@ public class updateUserDataRequest {
     private Integer teamId;
 
     /**
-     * 报修物品关联(故障类型)
+     * 报修关联楼栋集合
      */
-    private List<String> articleIds;
-
-    /**
-     * 楼栋关联ID(多个楼栋用逗号隔开)
-     */
-    private List<String> buildIds;
+    private List<ArticleBuildRequest> articleBuilds;
 
     /**
      * 是否能转换

+ 39 - 36
src/main/java/com/repair/model/result/Wx_user.java

@@ -1,50 +1,53 @@
 package com.repair.model.result;
 
+import lombok.Data;
+
+@Data
 public class Wx_user {
 
+    /**
+     * 微校卡号
+     */
     public String card_number;
-    public String name;
-    public String telephone;
-    public int identity_type;
-    public String campus;//校区
-
-    public String getCard_number() {
-        return card_number;
-    }
 
-    public void setCard_number(String card_number) {
-        this.card_number = card_number;
-    }
-
-    public String getName() {
-        return name;
-    }
+    /**
+     * 用户姓名
+     */
+    public String name;
 
-    public void setName(String name) {
-        this.name = name;
-    }
+    /**
+     * 手机号码(带区号)
+     */
+    public String telephone;
 
-    public String getTelephone() {
-        return telephone;
-    }
+    /**
+     * 微校身份类型ID
+     * 其他:0;
+     * 学生:1;
+     * 教职工:4;
+     * 校友:5;
+     * 本科生:6
+     */
+    public int identity_type;
 
-    public void setTelephone(String telephone) {
-        this.telephone = telephone;
-    }
+    /**
+     * 学院
+     */
+    public String college;
 
-    public int getIdentity_type() {
-        return identity_type;
-    }
+    /**
+     * 年级
+     */
+    public String grade;
 
-    public void setIdentity_type(int identity_type) {
-        this.identity_type = identity_type;
-    }
+    /**
+     * 专业
+     */
+    public String profession;
 
-    public String getCampus() {
-        return campus;
-    }
+    /**
+     * 校区
+     */
+    public String campus;
 
-    public void setCampus(String campus) {
-        this.campus = campus;
-    }
 }

+ 1 - 1
src/main/java/com/repair/model/vo/AddressBookVo.java

@@ -44,7 +44,7 @@ public class AddressBookVo {
     private String stateStr;
 
     public String getStateStr() {
-        return state == 1 ? "大量接单" : "停止接单";
+        return state == 1 ? "正常接单" : "停止接单";
     }
 
     public void setStateStr(String stateStr) {

+ 44 - 0
src/main/java/com/repair/model/vo/ArticleBuildVo.java

@@ -0,0 +1,44 @@
+package com.repair.model.vo;
+
+import lombok.Data;
+
+
+/**
+ * @Author: binguo
+ * @Date: 2023/7/14 星期五 14:56
+ * @Description: com.repair.model.vo
+ * @Version: 1.0
+ */
+@Data
+public class ArticleBuildVo {
+    /**
+     * 数据ID
+     */
+    private Integer id;
+
+    /**
+     * 报修物品ID
+     */
+    private Integer articleId;
+
+    /**
+     * 报修类型名称
+     */
+    private String articleName;
+
+    /**
+     * 报修楼栋ID
+     */
+    private String buildId;
+
+    /**
+     * 关联楼栋名称
+     */
+    private String buildName;
+
+    /**
+     * 用户ID
+     */
+    private Integer userId;
+
+}

+ 5 - 12
src/main/java/com/repair/model/vo/AutoDispatchUserVo.java

@@ -35,13 +35,6 @@ public class AutoDispatchUserVo {
     private int rdrCount;
 
     /**
-     * 关联楼栋
-     * 会有多个楼栋
-     */
-    @JsonIgnore
-    private String buildId;
-
-    /**
      * 用户名称
      */
     private String userName;
@@ -52,6 +45,11 @@ public class AutoDispatchUserVo {
     private String userPhone;
 
     /**
+     * 用户身份ID
+     */
+    private int userZzid;
+
+    /**
      * 接单考核时间
      */
     private int acceptanceTime;
@@ -74,9 +72,4 @@ public class AutoDispatchUserVo {
      */
     private String shiftId;
 
-    /**
-     * 报修物品ID
-     * 可能会有多个
-     */
-    private String articleId;
 }

+ 40 - 0
src/main/java/com/repair/model/vo/AutoOfflineUserVo.java

@@ -0,0 +1,40 @@
+package com.repair.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/8/8 星期二 8:28
+ * @Description: com.repair.model.vo
+ * @Version: 1.0
+ */
+@Data
+public class AutoOfflineUserVo {
+    /**
+     * 数据ID
+     */
+    private int id;
+
+    /**
+     * 用户名称
+     */
+    private String userName;
+
+    /**
+     * 维修班
+     */
+    private String teamName;
+
+    /**
+     * 用户身份
+     */
+    private String userZzName;
+
+    /**
+     * 工种类型
+     */
+    private String workType;
+}

+ 1 - 1
src/main/java/com/repair/model/vo/CollaboratorVo.java

@@ -38,7 +38,7 @@ public class CollaboratorVo {
     private String stateStr;
 
     public String getStateStr() {
-        return state == 1 ? "大量接单" : "停止接单";
+        return state == 1 ? "正常接单" : "停止接单";
     }
 
     public void setStateStr(String stateStr) {

+ 39 - 0
src/main/java/com/repair/model/vo/ConsumablePageVo.java

@@ -23,6 +23,27 @@ public class ConsumablePageVo {
     private Integer id;
 
     /**
+     * 校区ID
+     */
+    @ExcelProperty("校区ID")
+    @ColumnWidth(25)
+    private Integer schoolId;
+
+    /**
+     * 校区名称
+     */
+    @ExcelProperty("校区名称")
+    @ColumnWidth(25)
+    private String schoolName;
+
+    /**
+     * 校区名称
+     */
+    @ExcelProperty("区域")
+    @ColumnWidth(25)
+    private String areaName;
+
+    /**
      * 耗材名称
      */
     @ExcelProperty("耗材名称")
@@ -51,6 +72,24 @@ public class ConsumablePageVo {
     private BigDecimal totalPrice;
 
     /**
+     * 状态
+     * 金额大于0是有偿
+     * 金额小于等于0是无偿
+     */
+    @ExcelProperty("状态")
+    @ColumnWidth(25)
+    private String statu;
+
+    /**
+     * 状态
+     * 金额大于0是有偿
+     * 金额小于等于0是无偿
+     */
+    @ExcelProperty("改价人")
+    @ColumnWidth(25)
+    private String changeUser;
+
+    /**
      * 关联故障种类
      */
     @ExcelProperty("关联故障种类")

+ 5 - 0
src/main/java/com/repair/model/vo/DetailsVo.java

@@ -56,6 +56,11 @@ public class DetailsVo {
     private String userPhone;
 
     /**
+     * 报修年级
+     */
+    private String userClass;
+
+    /**
      * 报修区域
      */
     private String areaName;

+ 17 - 0
src/main/java/com/repair/model/vo/MaintenanceGoodsVo.java

@@ -1,5 +1,7 @@
 package com.repair.model.vo;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.repair.model.enumModel.eSchool;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -12,6 +14,21 @@ public class MaintenanceGoodsVo {
     private String articleName;
     //  订单总数
     private Integer ordersTotal;
+    //校区ID
+    @JsonIgnore
+    private Integer schoolId;
+
+    //校区名称
+    private String schoolName;
+
+    public String getSchoolName() {
+        return eSchool.stringOf(schoolId);
+    }
+
+    public void setSchoolName(String schoolName) {
+        this.schoolName = schoolName;
+    }
+
     //  有偿订单
     private Integer ordersCompensation;
     //  无偿订单

+ 9 - 2
src/main/java/com/repair/model/vo/MaintenanceWorkerVo.java

@@ -1,18 +1,25 @@
 package com.repair.model.vo;
 
+import io.swagger.models.auth.In;
 import lombok.Data;
 
 import java.math.BigDecimal;
 
 @Data
 public class MaintenanceWorkerVo {
+    /**
+     * 校区名称
+     */
     private String schoolName;
 
+    /**
+     * 用户名称
+     */
     private String name;
 //  工单总数
     private Integer workOrderTotal;
-//    好评
-    private String degreePraise;
+//    好评
+    private Integer degreePraise;
 //    超时率
     private String timeOut;
 //    平均响应时长

+ 4 - 0
src/main/java/com/repair/model/vo/MasterHomepageVo.java

@@ -26,5 +26,9 @@ public class MasterHomepageVo {
      * 已超时
      */
     private int timeoutCount;
+    /**
+     * 转线下数量
+      */
+    private int offlineCount;
 
 }

+ 5 - 0
src/main/java/com/repair/model/vo/MyRepairRecordVo.java

@@ -42,6 +42,11 @@ public class MyRepairRecordVo {
     private String userPhone;
 
     /**
+     * 报修年级 部门
+     */
+    private String userClass;
+
+    /**
      * 报修区域
      */
     private String areaName;

+ 36 - 0
src/main/java/com/repair/model/vo/OfflineDetailVo.java

@@ -0,0 +1,36 @@
+package com.repair.model.vo;
+
+import lombok.Data;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/8/1 星期二 20:36
+ * @Description: com.repair.model.vo
+ * @Version: 1.0
+ */
+@Data
+public class OfflineDetailVo {
+    /**
+     * 数据ID
+     */
+    private int id;
+    /**
+     * 申请人
+     */
+    private String userName;
+
+    /**
+     * 转线下语音
+     */
+    private String voice;
+
+    /**
+     * 录音时长
+     */
+    private Integer voiceLength;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 126 - 0
src/main/java/com/repair/model/vo/PrintVo.java

@@ -0,0 +1,126 @@
+package com.repair.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.repair.model.enumModel.eRecordStatu;
+import com.repair.model.enumModel.eSchool;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/11/1 星期三 16:20
+ * @Description: com.repair.model.vo
+ * @Version: 1.0
+ */
+@Data
+public class PrintVo {
+    /**
+     * 打印时间
+     */
+    private Date printTime;
+
+    /**
+     * 操作人
+     */
+    private String operator;
+
+    /**
+     * 工单号
+     */
+    private String recordNo;
+
+    /**
+     * 报修人
+     */
+    private String userName;
+
+    /**
+     * 年级
+     */
+    private String userClass;
+
+    /**
+     * 手机
+     */
+    private String userPhone;
+
+    /**
+     * 区域
+     */
+    private String areaId;
+
+    /**
+     * 报修物品
+     */
+    private String articleName;
+
+    /**
+     * 报修时间
+     */
+    private Date reportTime;
+
+    /**
+     * 故障描述
+     */
+    private String description;
+
+    /**
+     * 维修师傅
+     */
+    private String maintenancerName;
+
+    /**
+     * 手机号码
+     */
+    private String maintenancerPhone;
+
+    /**
+     * 状态
+     */
+    @JsonIgnore
+    private Integer maintenanceState;
+
+    /**
+     * 状态
+     */
+    private String state;
+
+    public String getState() {
+        return maintenanceState != null ? eRecordStatu.stringOf(maintenanceState) : state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    /**
+     * 校区ID
+     */
+    @JsonIgnore
+    private Integer schoolId;
+
+    /**
+     * 校区名称
+     */
+    private String schoolName;
+
+    public String getSchoolName() {
+        return schoolId != null ? eSchool.stringOf(schoolId) : schoolName;
+    }
+
+    public void setSchoolName(String schoolName) {
+        this.schoolName = schoolName;
+    }
+
+    /**
+     * 支付金额
+     */
+    private BigDecimal price;
+
+    /**
+     * 退款金额
+     */
+    private BigDecimal refund;
+}

+ 50 - 11
src/main/java/com/repair/model/vo/ProsperityRepairPayRecordsVo.java

@@ -9,25 +9,64 @@ import java.util.List;
 
 @Data
 public class ProsperityRepairPayRecordsVo {
-//    支付成功订单id
+    /**
+     * 支付成功订单id
+     */
     private int id;
-//    交易时间
+    /**
+     * 交易时间
+     */
     private Date payTime;
-//    工单号
+    /**
+     * 工单ID
+     */
+    private Integer recordId;
+    /**
+     * 工单号
+     */
     private String recordNo;
-//    交易流水号
+    /**
+     * 交易流水号
+     */
     private String payNo;
-//    支付人
+    /**
+     * 支付人
+     */
     private String userName;
-//   交易金额
+    /**
+     * 交易金额
+     */
     private BigDecimal payPrice;
-//    退款总金额
+    /**
+     * 退款总金额
+     */
     private BigDecimal refundTotalPrice;
-//    实收金额
+    /**
+     * 实收金额
+     */
     private BigDecimal officialPrice;
-//    退款记录
+    /**
+     * 退款记录
+     */
     private List<RepairRefundRecord> repairRefundRecordList;
-//    状态 0已支付 1 部分退款 3 已退款
+    /**
+     * 审核记录
+     */
+    private List<RepairRefundRecord> approveRefunds;
+    /**
+     * 状态
+     * 已支付:0
+     * 部分退款:1
+     * 已退款:2
+     * 退款申请中:3
+     * 退款中:4
+     */
     private Integer state;
-//    实退按钮
+
+    /**
+     * 是否显示审批按钮
+     * 不显示:0
+     * 显示:1
+     */
+    private Integer isApprove;
 }

+ 2 - 0
src/main/java/com/repair/model/vo/RepairArticleTypeTreeVo.java

@@ -29,6 +29,8 @@ public class RepairArticleTypeTreeVo {
     private int parentId;
     @ApiModelProperty(value = "物品名称")
     private String name;
+    @ApiModelProperty(value = "排序")
+    private int orderNum;
     @ApiModelProperty(value = "子级物品")
     private List<RepairArticleTypeTreeVo> children;
 }

+ 41 - 0
src/main/java/com/repair/model/vo/RepairConsumeTreeVo.java

@@ -0,0 +1,41 @@
+package com.repair.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/4/18 星期二 9:54
+ * @Description: com.video.model.vo
+ * @Version: 1.0
+ */
+@Data
+@ToString
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@ApiModel(value = "物品耗材", description = "")
+public class RepairConsumeTreeVo {
+    @ApiModelProperty(value = "物品ID")
+    private int id;
+    @ApiModelProperty(value = "校区ID")
+    private int schoolId;
+    @ApiModelProperty(value = "物品名称")
+    private String parentName;
+    @ApiModelProperty(value = "上级物品ID")
+    private int parentId;
+    @ApiModelProperty(value = "物品名称")
+    private String name;
+    @ApiModelProperty(value = "物品价格")
+    private BigDecimal price;
+    @ApiModelProperty(value = "物品数量1")
+    private int number;
+    @ApiModelProperty(value = "子级耗材")
+    private List<RepairConsumeTreeVo> children;
+}

+ 41 - 0
src/main/java/com/repair/model/vo/RepairConsumeypeTreeVo.java

@@ -0,0 +1,41 @@
+package com.repair.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/4/18 星期二 9:54
+ * @Description: com.video.model.vo
+ * @Version: 1.0
+ */
+@Data
+@ToString
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@ApiModel(value = "物品耗材", description = "")
+public class RepairConsumeypeTreeVo {
+    @ApiModelProperty(value = "物品ID")
+    private int id;
+    @ApiModelProperty(value = "校区ID")
+    private int schoolId;
+    @ApiModelProperty(value = "上级物品ID")
+    private int parentId;
+    @ApiModelProperty(value = "上级物品名称")
+    private String parentName;
+    @ApiModelProperty(value = "物品名称")
+    private String name;
+    @ApiModelProperty(value = "物品价格")
+    private BigDecimal price;
+    @ApiModelProperty(value = "物品数量1")
+    private int number;
+    @ApiModelProperty(value = "子级耗材")
+    private List<RepairConsumeypeTreeVo> children;
+}

+ 5 - 0
src/main/java/com/repair/model/vo/RepairManageCountVo.java

@@ -62,4 +62,9 @@ public class RepairManageCountVo {
      * 已超时
      */
     private int timeoutCount;
+
+    /**
+     * 转线下
+     */
+    private int offlineCount;
 }

+ 13 - 0
src/main/java/com/repair/model/vo/RepairRecordPageVo.java

@@ -96,6 +96,12 @@ public class RepairRecordPageVo {
     /**
      * 维修师傅
      */
+    @JsonIgnore
+    private String rorName;
+
+    /**
+     * 维修师傅
+     */
     private String maintenancerName;
 
     public String getMaintenancerName() {
@@ -104,6 +110,8 @@ public class RepairRecordPageVo {
             name = rdrName != null ? rdrName : maintenancerName;
         }else if(maintenanceState == eRecordStatu.Maintenance.getValue()){
             name = rdvName != null ? rdvName : maintenancerName;
+        }else if(maintenanceState == eRecordStatu.OfflineReview.getValue()){
+            name = rorName != null ? rorName : maintenancerName;
         }
         return name;
     }
@@ -128,6 +136,11 @@ public class RepairRecordPageVo {
     private int transfer;
 
     /**
+     * 出现转线下审核按钮
+     */
+    private int offline;
+
+    /**
      * 出现关单按钮
      */
     private int close;

+ 5 - 0
src/main/java/com/repair/model/vo/RepairTechnicianVo.java

@@ -45,6 +45,11 @@ public class RepairTechnicianVo {
     private String userPhone;
 
     /**
+     * 用户年级
+     */
+    private String userClass;
+
+    /**
      * 报修区域
      */
     private String areaName;

+ 4 - 31
src/main/java/com/repair/model/vo/RepairUserVo.java

@@ -1,6 +1,7 @@
 package com.repair.model.vo;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.repair.model.request.ArticleBuildRequest;
 import lombok.Data;
 
 import java.util.List;
@@ -71,48 +72,20 @@ public class RepairUserVo {
     private String workTypeName;
 
     /**
-     * 关联楼栋ID
-     */
-    @JsonIgnore
-    private String buildId;
-
-    /**
-     * 关联楼栋
-     */
-    @JsonIgnore
-    private String buildName;
-
-    /**
-     * 关联楼栋ID集合
-     */
-    private List<String> buildIds;
-
-    /**
      * 关联楼栋集合
      */
     private List<String> buildNames;
 
-    /**
-     * 报修物品ID
-     */
-    @JsonIgnore
-    private String articleId;
 
     /**
-     * 报修物品
-     */
-    @JsonIgnore
-    private String articleName;
-
-    /**
-     * 关联楼栋集合
+     * 报修集合
      */
     private List<String> articleNames;
 
     /**
-     * 关联楼栋ID集合
+     * 报修关联楼栋集合
      */
-    private List<String> articleIds;
+    private List<ArticleBuildRequest> articleBuilds;
 
     /**
      * 接单考核时间

+ 5 - 0
src/main/java/com/repair/model/vo/TeamWorkCountVo.java

@@ -45,4 +45,9 @@ public class TeamWorkCountVo {
      * 已关单
      */
     private int closedCount;
+
+    /**
+     * 转线下
+     */
+    private int offlineCount;
 }

+ 7 - 1
src/main/java/com/repair/model/vo/TrackDetailsVo.java

@@ -39,7 +39,13 @@ public class TrackDetailsVo {
                 state = "已关单";
                 break;
             default:
-                state = content;
+                String[] str = content.split("-");
+                if(str.length > 1){
+                    state =str[0];
+                }else{
+                    state = content;
+                }
+
                 break;
         }
 

+ 4 - 0
src/main/java/com/repair/model/vo/wxLoginVo.java

@@ -69,6 +69,10 @@ public class wxLoginVo {
      */
     private String schoolName;
     /**
+     * 学院
+     */
+    private String college;
+    /**
      * 用户token
      * 移动端的token永久有效
      */

+ 36 - 0
src/main/java/com/repair/services/RepairArticleBuildService.java

@@ -0,0 +1,36 @@
+package com.repair.services;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.repair.model.pojo.RepairArticleBuild;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-11-02
+ */
+public interface RepairArticleBuildService extends IService<RepairArticleBuild> {
+    boolean saveArticleBuildBatch(List<RepairArticleBuild> rab);
+
+    int insertRepairArticleBuild(RepairArticleBuild rab);
+
+    int updateRepairArticleBuild(RepairArticleBuild ra);
+
+    int updateArticleBuildByUserId(int userId, RepairArticleBuild data);
+
+    int deleteRepairArticleBuildById(int id);
+
+    int deleteRepairArticleBuildByWrapper(int userId);
+
+    List<RepairArticleBuild> queryRepairArticleBuilds();
+
+    List<RepairArticleBuild> getRepairArticleBuilds(int userId);
+
+    int deletedArticleBuildByIds(List<Integer> ids);
+
+    boolean saveorUpdateArticleBuildBatch(List<RepairArticleBuild> rab);
+}

+ 4 - 0
src/main/java/com/repair/services/RepairArticleTypeService.java

@@ -35,7 +35,11 @@ public interface RepairArticleTypeService extends IService<RepairArticleType> {
 
     List<RepairArticleType> getRepairArticleTypesBySchoolId(int schoolId);
 
+    List<RepairArticleType> getRepairArticlesBySchoolId(int schoolId);
+
     List<RepairWorkTypeVo> getRepairArticleTypes(int schoolId);
 
     List<RepairArticleType> getRepairs(List<String> ids);
+
+    boolean updateBatchArticle(List<RepairArticleType> datas);
 }

+ 2 - 0
src/main/java/com/repair/services/RepairClassesSettingsService.java

@@ -27,6 +27,8 @@ public interface RepairClassesSettingsService extends IService<RepairClassesSett
 
     RepairClassesSettings getRepairById(int id);
 
+    int getRepairByUserId(int userId, String dateNow);
+
     List<ClassesSettingVo> getRepairByUserIds(List<Integer> userIds, String startTime, String endTime);
 
     List<RepairClassesSettings> getRepairByMonths(String monthDate);

+ 2 - 0
src/main/java/com/repair/services/RepairConsumeService.java

@@ -37,4 +37,6 @@ public interface RepairConsumeService extends IService<RepairConsume> {
     List<RepairArticleConsumeVo> queryArticleConsumesName(String findInSet,int schoolId);
 
     List<RepairConsume> getConsumes();
+
+    List<RepairConsume> getConsumesByKeyword(Integer schoolId, String keyWord);
 }

+ 35 - 0
src/main/java/com/repair/services/RepairOfflineRecordService.java

@@ -0,0 +1,35 @@
+package com.repair.services;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.repair.model.pojo.RepairOfflineRecord;
+import com.repair.model.pojo.RepairOfflineRecord;
+import com.repair.model.result.PageUtils;
+import com.repair.model.vo.OfflineDetailVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 服务类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-07-20
+ */
+public interface RepairOfflineRecordService extends IService<RepairOfflineRecord> {
+    int insertRepairOfflineRecord(RepairOfflineRecord rns);
+
+    int updateRepairOfflineRecord(RepairOfflineRecord rns);
+
+    PageUtils<RepairOfflineRecord> queryPageRepairOfflineRecords(int currentPage, int pageCount, String name);
+
+    int deleteRepairOfflineRecordById(int id);
+
+    RepairOfflineRecord getRepairById(int id);
+
+    List<RepairOfflineRecord> getRepairs();
+
+    RepairOfflineRecord getRepairByRecordId(Integer recordId);
+
+    OfflineDetailVo queryOfflineDetail(Integer recordId);
+}

+ 4 - 1
src/main/java/com/repair/services/RepairPayRecordService.java

@@ -3,6 +3,7 @@ package com.repair.services;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.repair.model.pojo.RepairPayRecord;
 import com.repair.model.result.PageUtils;
+import com.repair.model.vo.ProsperityRepairPayRecordsVo;
 import com.repair.model.vo.QueryExportVo;
 
 import java.util.List;
@@ -20,7 +21,9 @@ public interface RepairPayRecordService extends IService<RepairPayRecord> {
 
     int updateRepairPayRecord(RepairPayRecord rns);
 
-    PageUtils<RepairPayRecord> queryPageRepairPayRecords(int currentPage, int pageCount, String name);
+    PageUtils<RepairPayRecord> queryPageRepairPayRecords(int currentPage, int pageCount);
+
+    PageUtils<ProsperityRepairPayRecordsVo> queryPayPage(int currentPage, int pageCount, String keyWord, String startTime, String endTime);
 
     int deleteRepairPayRecordById(int id);
 

+ 6 - 0
src/main/java/com/repair/services/RepairRecordService.java

@@ -67,6 +67,8 @@ public interface RepairRecordService extends IService<RepairRecord> {
 
     PageUtils<RepairTechnicianVo> queryTeamWorkClosed(int currentPage, int pageCount, Integer schoolId);
 
+    PageUtils<RepairTechnicianVo> queryTeamWorkOffline(int currentPage, int pageCount, Integer schoolId);
+
     List<ReportExportVo> queryNotTimeoutReportExport(String stateStr, String keyWord, String startTime, String endTime, Integer schoolId);
 
     RepairRecord queryRepairByRecordno(String recordNo);
@@ -102,4 +104,8 @@ public interface RepairRecordService extends IService<RepairRecord> {
     DetailsVo queryDetailData(Integer recordId);
 
     RepairTotalDataVo repairTotalData();
+
+    int queryRepairRepeat (Integer userId,Integer buildId,Integer articleId,String dateStr);
+
+    PrintVo queryPrintData(Integer recordId);
 }

+ 3 - 0
src/main/java/com/repair/services/RepairRefundRecordService.java

@@ -26,4 +26,7 @@ public interface RepairRefundRecordService extends IService<RepairRefundRecord>
     RepairRefundRecord getRepairById(int id);
 
     List<RepairRefundRecord> getRepairs();
+
+    List<RepairRefundRecord> getRepairsByStatu();
+
 }

+ 2 - 0
src/main/java/com/repair/services/RepairShiftSettingsService.java

@@ -25,6 +25,8 @@ public interface RepairShiftSettingsService extends IService<RepairShiftSettings
 
     RepairShiftSettings getRepairById(int id);
 
+
+
     List<RepairShiftSettings> getRepairs();
 
     List<RepairShiftSettings> getRepairsShiftIdByHour(List<String> shiftIds, String dateNow);

+ 9 - 1
src/main/java/com/repair/services/RepairUserService.java

@@ -28,6 +28,8 @@ public interface RepairUserService extends IService<RepairUser> {
 
     List<RepairUser> queryRepairUsers();
 
+    List<RepairUser> queryRepairUserByArticle();
+
     int deleteRepairUserById(int id);
 
     RepairUser getRepairById(int id);
@@ -46,12 +48,14 @@ public interface RepairUserService extends IService<RepairUser> {
 
     List<AddressBookVo> queryAddressBook(Integer userId, Integer schoolId, String keyWord);
 
-    PageUtils<AddressBookVo> queryUserPageBySchoolId(int currentPage, int pageCount, Integer schoolId);
+    PageUtils<AddressBookVo> queryUserPageBySchoolId(int currentPage, int pageCount, Integer schoolId, Integer userId);
 
     List<AutoDispatchUserVo> autoDispatchUser(Integer schoolId, String dateNow, Integer articleId, Integer buildId);
 
     PageUtils<AutoDispatchUserVo> autoDispatchUser(int currentPage, int pageCount, Integer schoolId, String dateNow, Integer articleId, Integer buildId, String keyWord);
 
+    PageUtils<AutoOfflineUserVo> autoOfflineRepairUser(int currentPage, int pageCount, Integer schoolId, String keyWord);
+
     PageUtils<RepairWorkTypeVo> queryCollaboratorUser(int currentPage, int pageCount, Integer schoolId, Integer userId, String dateNow,String keyWord);
 
     PageUtils<PositiveReviewVo> queryPositiveReviewPage(int currentPage, int pageCount, Integer schoolId);
@@ -59,5 +63,9 @@ public interface RepairUserService extends IService<RepairUser> {
     List<AutoDispatchUserVo> dropDown(Integer buildId, Integer articleId, Integer schoolId, Integer userId);
 
     RepairUser queryUserByOpenid(String openId);
+
+    List<ArticleBuildVo> queryArticleBuilds(String userIds);
+
+    PageUtils<RepairUser> queryUserPage(int currentPage, int pageCount, Integer schoolId, String keyWord);
 }
 

+ 93 - 0
src/main/java/com/repair/services/impl/RepairArticleBuildServiceImpl.java

@@ -0,0 +1,93 @@
+package com.repair.services.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.repair.mapper.RepairArticleBuildMapper;
+import com.repair.model.pojo.*;
+import com.repair.services.RepairArticleBuildService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-11-02
+ */
+@Service
+public class RepairArticleBuildServiceImpl extends ServiceImpl<RepairArticleBuildMapper, RepairArticleBuild> implements RepairArticleBuildService {
+    @Autowired
+    private RepairArticleBuildMapper repairArticleBuildMapper;
+
+    @Override
+    public boolean saveArticleBuildBatch(List<RepairArticleBuild> rab) {
+        boolean result = this.saveBatch(rab);
+        return result;
+    }
+
+    @Override
+    public int insertRepairArticleBuild(RepairArticleBuild rab) {
+        int result = repairArticleBuildMapper.insert(rab);
+        return result;
+    }
+
+    @Override
+    public int updateRepairArticleBuild(RepairArticleBuild ra) {
+        int result = repairArticleBuildMapper.updateById(ra);
+        return result;
+    }
+
+    @Override
+    public int updateArticleBuildByUserId(int userId, RepairArticleBuild data) {
+        QueryWrapper<RepairArticleBuild> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id", userId);
+        int result = repairArticleBuildMapper.update(data, queryWrapper);
+        return result;
+    }
+
+    @Override
+    public int deleteRepairArticleBuildById(int id) {
+        int result = repairArticleBuildMapper.deleteById(id);
+        return result;
+    }
+
+    @Override
+    public int deleteRepairArticleBuildByWrapper(int userId) {
+        QueryWrapper<RepairArticleBuild> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id", userId);
+        int result = repairArticleBuildMapper.delete(queryWrapper);
+        return result;
+    }
+
+    @Override
+    public List<RepairArticleBuild> queryRepairArticleBuilds() {
+        List<RepairArticleBuild> result = repairArticleBuildMapper.selectList(null);
+        return result;
+    }
+
+    @Override
+    public List<RepairArticleBuild> getRepairArticleBuilds(int userId) {
+        QueryWrapper<RepairArticleBuild> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id", userId);
+        List<RepairArticleBuild> datas = repairArticleBuildMapper.selectList(queryWrapper);
+        return datas;
+    }
+
+    @Override
+    public int deletedArticleBuildByIds(List<Integer> ids) {
+        QueryWrapper<RepairArticleBuild> queryWrapper = new QueryWrapper();
+        queryWrapper.in("id", ids);
+        int result = repairArticleBuildMapper.delete(queryWrapper);
+        return result;
+    }
+
+    @Override
+    public boolean saveorUpdateArticleBuildBatch(List<RepairArticleBuild> rab) {
+        boolean result = this.saveOrUpdateBatch(rab);
+        return result;
+    }
+}

+ 16 - 0
src/main/java/com/repair/services/impl/RepairArticleTypeServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.repair.mapper.RepairArticleTypeMapper;
 import com.repair.model.pojo.RepairArticleType;
+import com.repair.model.pojo.RepairLeaveMessage;
 import com.repair.model.result.PageUtils;
 import com.repair.model.vo.RepairArticleChildVo;
 import com.repair.model.vo.RepairWorkTypeVo;
@@ -97,6 +98,15 @@ public class RepairArticleTypeServiceImpl extends ServiceImpl<RepairArticleTypeM
     }
 
     @Override
+    public List<RepairArticleType> getRepairArticlesBySchoolId(int schoolId) {
+        QueryWrapper<RepairArticleType> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("school_id", schoolId);
+        queryWrapper.eq("parent_id", 0);
+        List<RepairArticleType> datas = repairArticleTypeMapper.selectList(queryWrapper);
+        return datas;
+    }
+
+    @Override
     public List<RepairWorkTypeVo> getRepairArticleTypes(int schoolId) {
         List<RepairWorkTypeVo> datas = repairArticleTypeMapper.queryArticleTypeList(schoolId);
         return datas;
@@ -109,4 +119,10 @@ public class RepairArticleTypeServiceImpl extends ServiceImpl<RepairArticleTypeM
         List<RepairArticleType> result = repairArticleTypeMapper.selectList(queryWrapper);
         return result;
     }
+
+    @Override
+    public boolean updateBatchArticle(List<RepairArticleType> datas) {
+        boolean result = this.updateBatchById(datas, datas.size());
+        return result;
+    }
 }

+ 11 - 0
src/main/java/com/repair/services/impl/RepairClassesSettingsServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.repair.mapper.RepairClassesSettingsMapper;
 import com.repair.model.pojo.RepairClassesSettings;
+import com.repair.model.pojo.RepairShiftSettings;
 import com.repair.model.result.PageUtils;
 import com.repair.model.vo.ClassesDataVo;
 import com.repair.model.vo.ClassesSettingVo;
@@ -59,6 +60,16 @@ public class RepairClassesSettingsServiceImpl extends ServiceImpl<RepairClassesS
     }
 
     @Override
+    public int getRepairByUserId(int userId, String dateNow) {
+        QueryWrapper<RepairClassesSettings> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id", userId);
+        queryWrapper.eq("start_date", dateNow);
+        int result = repairClassesSettingsMapper.selectCount(queryWrapper);
+        return result;
+    }
+
+
+    @Override
     public RepairClassesSettings getRepairById(int id) {
         RepairClassesSettings result = repairClassesSettingsMapper.selectById(id);
         return result;

+ 9 - 0
src/main/java/com/repair/services/impl/RepairConsumeServiceImpl.java

@@ -95,4 +95,13 @@ public class RepairConsumeServiceImpl extends ServiceImpl<RepairConsumeMapper, R
         List<RepairConsume> consumes = repairConsumeMapper.selectList(null);
         return consumes;
     }
+
+    @Override
+    public List<RepairConsume> getConsumesByKeyword(Integer schoolId, String keyWord) {
+        QueryWrapper<RepairConsume> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("school_id", schoolId);
+        queryWrapper.like(keyWord != null ,"name", keyWord);
+        List<RepairConsume> consumes = repairConsumeMapper.selectList(queryWrapper);
+        return consumes;
+    }
 }

+ 86 - 0
src/main/java/com/repair/services/impl/RepairOfflineRecordServiceImpl.java

@@ -0,0 +1,86 @@
+package com.repair.services.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.repair.mapper.RepairOfflineRecordMapper;
+import com.repair.mapper.RepairOfflineRecordMapper;
+import com.repair.model.pojo.RepairOfflineRecord;
+import com.repair.model.pojo.RepairOfflineRecord;
+import com.repair.model.result.PageUtils;
+import com.repair.model.vo.OfflineDetailVo;
+import com.repair.services.RepairOfflineRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-07-20
+ */
+@Service
+public class RepairOfflineRecordServiceImpl extends ServiceImpl<RepairOfflineRecordMapper, RepairOfflineRecord> implements RepairOfflineRecordService {
+
+    @Autowired
+    private RepairOfflineRecordMapper repairOfflineRecordMapper;
+
+    @Override
+    public int insertRepairOfflineRecord(RepairOfflineRecord rtr) {
+        int result = repairOfflineRecordMapper.insert(rtr);
+        return result;
+    }
+
+    @Override
+    public int updateRepairOfflineRecord(RepairOfflineRecord rtr) {
+        int result = repairOfflineRecordMapper.updateById(rtr);
+        return result;
+    }
+
+    @Override
+    public PageUtils<RepairOfflineRecord> queryPageRepairOfflineRecords(int currentPage, int pageCount, String name) {
+        Page<RepairOfflineRecord> page = new Page<>(currentPage, pageCount);
+        QueryWrapper<RepairOfflineRecord> queryWrapper = new QueryWrapper<>();
+        IPage<RepairOfflineRecord> result = repairOfflineRecordMapper.selectPage(page, queryWrapper);
+        return new PageUtils(result);
+    }
+
+    @Override
+    public int deleteRepairOfflineRecordById(int id) {
+        int result = repairOfflineRecordMapper.deleteById(id);
+        return result;
+    }
+
+    @Override
+    public RepairOfflineRecord getRepairById(int id) {
+        RepairOfflineRecord result = repairOfflineRecordMapper.selectById(id);
+        return result;
+    }
+
+    @Override
+    public List<RepairOfflineRecord> getRepairs() {
+        List<RepairOfflineRecord> result = repairOfflineRecordMapper.selectList(null);
+        return result;
+    }
+
+    @Override
+    public RepairOfflineRecord getRepairByRecordId(Integer recordId) {
+
+        QueryWrapper<RepairOfflineRecord> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("record_id", recordId);
+        queryWrapper.eq("approval_statu", 2);
+        RepairOfflineRecord result = repairOfflineRecordMapper.selectOne(queryWrapper);
+        return result;
+    }
+
+    @Override
+    public OfflineDetailVo queryOfflineDetail(Integer recordId) {
+        OfflineDetailVo result = repairOfflineRecordMapper.queryOfflineDetail(recordId);
+        return result;
+    }
+}

+ 15 - 1
src/main/java/com/repair/services/impl/RepairPayRecordServiceImpl.java

@@ -8,7 +8,10 @@ import com.repair.mapper.RepairPayRecordMapper;
 import com.repair.model.enumModel.ePayStatu;
 import com.repair.model.pojo.RepairPayRecord;
 import com.repair.model.result.PageUtils;
+import com.repair.model.vo.MyRepairRecordVo;
+import com.repair.model.vo.ProsperityRepairPayRecordsVo;
 import com.repair.model.vo.QueryExportVo;
+import com.repair.model.vo.RepairTechnicianVo;
 import com.repair.services.RepairPayRecordService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -42,7 +45,7 @@ public class RepairPayRecordServiceImpl extends ServiceImpl<RepairPayRecordMappe
     }
 
     @Override
-    public PageUtils<RepairPayRecord> queryPageRepairPayRecords(int currentPage, int pageCount, String name) {
+    public PageUtils<RepairPayRecord> queryPageRepairPayRecords(int currentPage, int pageCount) {
         Page<RepairPayRecord> page = new Page<>(currentPage, pageCount);
         QueryWrapper<RepairPayRecord> queryWrapper = new QueryWrapper<>();
         IPage<RepairPayRecord> result = repairPayRecordMapper.selectPage(page, queryWrapper);
@@ -50,6 +53,17 @@ public class RepairPayRecordServiceImpl extends ServiceImpl<RepairPayRecordMappe
     }
 
     @Override
+    public PageUtils<ProsperityRepairPayRecordsVo> queryPayPage(int currentPage, int pageCount, String keyWord, String startTime, String endTime) {
+        Page<ProsperityRepairPayRecordsVo> page = new Page<>();
+        page.setCurrent(currentPage);
+        page.setSize(pageCount);
+        IPage<ProsperityRepairPayRecordsVo> result = repairPayRecordMapper.queryPayPage(page, keyWord, startTime, endTime);
+        return new PageUtils(result);
+    }
+
+
+
+    @Override
     public int deleteRepairPayRecordById(int id) {
         int result = repairPayRecordMapper.deleteById(id);
         return result;

+ 29 - 3
src/main/java/com/repair/services/impl/RepairRecordServiceImpl.java

@@ -76,11 +76,11 @@ public class RepairRecordServiceImpl extends ServiceImpl<RepairRecordMapper, Rep
     public PageUtils<MyRepairRecordVo> queryMyRepairRecordList(int currentPage, int pageCount, Integer state, Integer userId) {
         String stateStr = null;
         if (state == 1) {
-            stateStr = "< 7";
+            stateStr = "< 7 or rr.maintenance_state = 11)";
         } else if (state == 2) {
-            stateStr = "= 4";
+            stateStr = "= 4)";
         } else {
-            stateStr = ">= 7";
+            stateStr = ">= 7 and rr.maintenance_state <= 10)";
         }
 
         Page<MyRepairRecordVo> page = new Page<>();
@@ -235,6 +235,15 @@ public class RepairRecordServiceImpl extends ServiceImpl<RepairRecordMapper, Rep
     }
 
     @Override
+    public PageUtils<RepairTechnicianVo> queryTeamWorkOffline(int currentPage, int pageCount, Integer schoolId) {
+        Page<RepairTechnicianVo> page = new Page<>();
+        page.setCurrent(currentPage);
+        page.setSize(pageCount);
+        IPage<RepairTechnicianVo> result = repairRecordMapper.queryTeamWorkOffline(page, schoolId);
+        return new PageUtils(result);
+    }
+
+    @Override
     public RepairRecord queryRepairByRecordno(String recordNo) {
         QueryWrapper<RepairRecord> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("record_no", recordNo);
@@ -352,5 +361,22 @@ public class RepairRecordServiceImpl extends ServiceImpl<RepairRecordMapper, Rep
         return vo;
     }
 
+    @Override
+    public int queryRepairRepeat (Integer userId,Integer buildId,Integer articleId,String dateStr) {
+        QueryWrapper<RepairRecord> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id", userId);
+        queryWrapper.eq("build_id", buildId);
+        queryWrapper.eq("article_id", articleId);
+        queryWrapper.ge("report_time", dateStr);
+        queryWrapper.ne("maintenance_state", 8);
+        queryWrapper.ne("maintenance_state", 9);
+        int result = repairRecordMapper.selectCount(queryWrapper);
+        return result;
+    }
 
+    @Override
+    public PrintVo queryPrintData(Integer recordId) {
+        PrintVo result=repairRecordMapper.queryPrintData(recordId);
+        return result;
+    }
 }

+ 7 - 0
src/main/java/com/repair/services/impl/RepairRefundRecordServiceImpl.java

@@ -64,4 +64,11 @@ public class RepairRefundRecordServiceImpl extends ServiceImpl<RepairRefundRecor
         List<RepairRefundRecord> result = repairRefundRecordMapper.selectList(null);
         return result;
     }
+
+    @Override
+    public List<RepairRefundRecord> getRepairsByStatu() {
+        QueryWrapper<RepairRefundRecord> queryWrapper = new QueryWrapper<>();
+        List<RepairRefundRecord> result = repairRefundRecordMapper.selectList(queryWrapper);
+        return result;
+    }
 }

+ 1 - 0
src/main/java/com/repair/services/impl/RepairShiftSettingsServiceImpl.java

@@ -55,6 +55,7 @@ public class RepairShiftSettingsServiceImpl extends ServiceImpl<RepairShiftSetti
         return result;
     }
 
+
     @Override
     public RepairShiftSettings getRepairById(int id) {
         RepairShiftSettings result = repairShiftSettingsMapper.selectById(id);

+ 48 - 6
src/main/java/com/repair/services/impl/RepairUserServiceImpl.java

@@ -1,10 +1,12 @@
 package com.repair.services.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.repair.mapper.RepairUserMapper;
+import com.repair.model.pojo.RepairPayRecord;
 import com.repair.model.pojo.RepairUser;
 import com.repair.model.result.PageUtils;
 import com.repair.model.vo.*;
@@ -12,6 +14,7 @@ import com.repair.services.RepairUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -57,7 +60,7 @@ public class RepairUserServiceImpl extends ServiceImpl<RepairUserMapper, RepairU
         //(ru.user_zzid = 1 or ru.user_zzid = 2) and school_Id = X
         Page<RepairUser> page = new Page<>(currentPage, pageCount);
         QueryWrapper<RepairUser> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("school_id",schoolId);
+        queryWrapper.eq("school_id", schoolId);
         queryWrapper.and(e -> e.eq("user_zzid", 1)
                 .or()
                 .eq("user_zzid", 2));
@@ -76,6 +79,14 @@ public class RepairUserServiceImpl extends ServiceImpl<RepairUserMapper, RepairU
         return result;
     }
 
+    @Override
+    public List<RepairUser> queryRepairUserByArticle() {
+        QueryWrapper<RepairUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.isNotNull("article_id");
+        List<RepairUser> result = repairUserMapper.selectList(queryWrapper);
+        return result;
+    }
+
 
     @Override
     public PageUtils<RepairUserVo> queryPageRepairUser(int currentPage, int pageCount, String keyWork, Integer teamId, Integer schoolId) {
@@ -153,11 +164,11 @@ public class RepairUserServiceImpl extends ServiceImpl<RepairUserMapper, RepairU
     }
 
     @Override
-    public PageUtils<AddressBookVo> queryUserPageBySchoolId(int currentPage, int pageCount, Integer schoolId) {
+    public PageUtils<AddressBookVo> queryUserPageBySchoolId(int currentPage, int pageCount, Integer schoolId, Integer userId) {
         Page<AddressBookVo> page = new Page<>();
         page.setCurrent(currentPage);
         page.setSize(pageCount);
-        IPage<AddressBookVo> result = repairUserMapper.queryUserPageBySchoolId(page, schoolId);
+        IPage<AddressBookVo> result = repairUserMapper.queryUserPageBySchoolId(page, schoolId, userId);
         return new PageUtils(result);
     }
 
@@ -178,7 +189,16 @@ public class RepairUserServiceImpl extends ServiceImpl<RepairUserMapper, RepairU
     }
 
     @Override
-    public PageUtils<RepairWorkTypeVo> queryCollaboratorUser(int currentPage, int pageCount, Integer schoolId, Integer userId, String dateNow,String keyWord) {
+    public PageUtils<AutoOfflineUserVo> autoOfflineRepairUser(int currentPage, int pageCount, Integer schoolId, String keyWord) {
+        Page<AutoOfflineUserVo> page = new Page<>();
+        page.setCurrent(currentPage);
+        page.setSize(pageCount);
+        IPage<AutoOfflineUserVo> result = repairUserMapper.autoOfflineRepairUser(page, schoolId, keyWord);
+        return new PageUtils(result);
+    }
+
+    @Override
+    public PageUtils<RepairWorkTypeVo> queryCollaboratorUser(int currentPage, int pageCount, Integer schoolId, Integer userId, String dateNow, String keyWord) {
         Page<RepairWorkTypeVo> page = new Page<>();
         page.setCurrent(currentPage);
         page.setSize(pageCount);
@@ -195,10 +215,10 @@ public class RepairUserServiceImpl extends ServiceImpl<RepairUserMapper, RepairU
         return new PageUtils(result);
     }
 
- @Override
+    @Override
     public List<AutoDispatchUserVo> dropDown(Integer buildId, Integer articleId, Integer schoolId, Integer userId) {
 
-        List<AutoDispatchUserVo> vos=repairUserMapper.dropDown(buildId,articleId,schoolId,userId);
+        List<AutoDispatchUserVo> vos = repairUserMapper.dropDown(buildId, articleId, schoolId, userId);
         return vos;
     }
 
@@ -210,4 +230,26 @@ public class RepairUserServiceImpl extends ServiceImpl<RepairUserMapper, RepairU
         return rus;
     }
 
+
+    @Override
+    public List<ArticleBuildVo> queryArticleBuilds(String userIds) {
+
+        List<ArticleBuildVo> articleBuilds = repairUserMapper.queryArticleBuilds(userIds);
+        return articleBuilds;
+    }
+
+    @Override
+    public PageUtils<RepairUser> queryUserPage(int currentPage, int pageCount,  Integer schoolId, String keyWord) {
+        List<Integer> userZZs = new ArrayList<>();
+        userZZs.add(1);
+        userZZs.add(2);
+        Page<RepairUser> page = new Page<>(currentPage, pageCount);
+        QueryWrapper<RepairUser> userWrapper = new QueryWrapper<>();
+        userWrapper.in("user_zzid", userZZs);
+        userWrapper.eq("school_id", schoolId == null ? 1 : schoolId);
+        userWrapper.like(keyWord != null, "user_name", keyWord);
+        IPage<RepairUser> users = repairUserMapper.selectPage(page, userWrapper);
+        return new PageUtils(users);
+    }
+
 }

+ 5 - 0
src/main/resources/mapper/repair/RepairArticleBuildMapper.xml

@@ -0,0 +1,5 @@
+<?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.repair.mapper.RepairArticleBuildMapper">
+
+</mapper>

+ 11 - 0
src/main/resources/mapper/repair/RepairCollaborateRecordMapper.xml

@@ -30,6 +30,17 @@
                 </foreach>
             </if>
         </where>
+        UNION ALL
+        select id,record_id,'转线下' as state from repair_offline_record
+        <where>
+            and deleted = 0 and approval_statu = 2
+            <if test="recordIds != null and recordIds.size() > 0">
+                and record_id in
+                <foreach collection="recordIds" item="recordId" index="index" open="(" close=")" separator=",">
+                    ${recordId}
+                </foreach>
+            </if>
+        </where>
     </select>
 
     <resultMap type="com.repair.model.vo.CollaborateDetailVo" id="repairCollaborateDetailMap">

+ 1 - 1
src/main/resources/mapper/repair/RepairConsumablesMapper.xml

@@ -15,7 +15,7 @@
     </resultMap>
 
     <select id="queryConsumablePageList" resultType="com.repair.model.vo.ConsumablePageVo" resultMap="repairConsumablePageMap">
-        select rcs.id,rcs.consume_name,rcs.price,rcs.number,rcs.total_price,(select GROUP_CONCAT(name) from repair_article_type where find_in_set(id,rc.article_id) and deleted = 0) as article_name
+        select rr.school_id,rr.area_id as area_name,rcs.id,rcs.change_user,rcs.consume_name,rcs.price,rcs.number,rcs.total_price,(select GROUP_CONCAT(name) from repair_article_type where find_in_set(id,rc.article_id) and deleted = 0) as article_name
         ,rr.record_no,rr.report_time,rcs.update_time from repair_consumables rcs
         left join repair_consume rc on rc.deleted = 0 and rc.id = rcs.consume_id
         left join repair_record rr on rr.deleted = 0 and rr.id = rcs.record_id

+ 17 - 0
src/main/resources/mapper/repair/RepairOfflineRecordMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.repair.mapper.RepairOfflineRecordMapper">
+    <resultMap type="com.repair.model.vo.OfflineDetailVo" id="repairOfflineDetailMap">
+        <result property="id" column="id"/>
+        <result property="userName" column="user_name"/>
+        <result property="voice" column="voice"/>
+        <result property="voiceLength" column="voice_length"/>
+        <result property="remark" column="remark"/>
+    </resultMap>
+    <select id="queryOfflineDetail" resultType="com.repair.model.vo.OfflineDetailVo" resultMap="repairOfflineDetailMap">
+        SELECT rtr.id,rtr.voice_length,ru.user_name,rtr.voice,rtr.remark FROM repair_offline_record rtr
+        left join repair_user ru on ru.deleted = 0 and ru.id = rtr.user_id
+        where rtr.deleted = 0 and rtr.approval_statu = 2 and rtr.record_id = #{recordId}
+    </select>
+
+</mapper>

+ 25 - 0
src/main/resources/mapper/repair/RepairPayRecordMapper.xml

@@ -45,4 +45,29 @@
         </where>
     </select>
 
+    <resultMap type="com.repair.model.vo.ProsperityRepairPayRecordsVo" id="repairPayPage">
+        <result property="id" column="id"/>
+        <result property="payTime" column="pay_time"/>
+        <result property="recordId" column="record_id"/>
+        <result property="recordNo" column="record_no"/>
+        <result property="payNo" column="pay_no"/>
+        <result property="userName" column="user_name"/>
+        <result property="payPrice" column="pay_price"/>
+        <result property="state" column="state"/>
+    </resultMap>
+    <select id="queryPayPage" resultType="com.repair.model.vo.ProsperityRepairPayRecordsVo" resultMap="repairPayPage">
+        select rpr.id,rpr.create_time as pay_time,rpr.record_id,rr.record_no,rpr.pay_no,ru.user_name,rpr.pay_price,rpr.is_success as state from repair_pay_record rpr
+        left join repair_record rr on rr.deleted = 0 and rr.id = rpr.record_id
+        left join repair_user ru on ru.deleted = 0  and ru.id = rpr.user_id
+        where rpr.deleted = 0 and rpr.is_success = 2
+        <if test="keyWord != null and keyWord !='' ">
+            and (rpr.user_id in (select id from repair_user where deleted = 0 and user_name like '%' #{keyWord} '%')
+            or rpr.record_id in (select id from repair_record where deleted = 0 and record_no like '%' #{keyWord} '%'))
+        </if>
+        <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
+            and rpr.create_time between #{startTime} and #{endTime}
+        </if>
+        order by rpr.create_time desc
+    </select>
+
 </mapper>

+ 0 - 0
src/main/resources/mapper/repair/RepairRecordMapper.xml


部分文件因文件數量過多而無法顯示