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

Merge branch 'V0.0.2' of http://10.87.10.227:4000/jzyd_yyds/soc into V0.0.2

# Conflicts:
#	project_data/sql/0.0.2/soc/soc.sql
jiawuxian 2 лет назад
Родитель
Сommit
a8d938063a
51 измененных файлов с 980 добавлено и 89 удалено
  1. 6 1
      project_data/sql/0.0.2/quartz/quartz.sql
  2. 36 2
      project_data/sql/0.0.2/soc/soc.sql
  3. 4 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteRoleService.java
  4. 4 3
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUser.java
  5. 6 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteRoleFallbackFactory.java
  6. 1 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/constant/ErrorMsgConstants.java
  7. 21 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/adapter/PanelAdapter.java
  8. 22 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/dto/PanelListDto.java
  9. 59 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/enums/PanelTypeEnums.java
  10. 32 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/vo/PanelListVo.java
  11. 23 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/vo/PanelResultVo.java
  12. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillTaskMapper.java
  13. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/ICoreDrillTaskService.java
  14. 7 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java
  15. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingTaskMapper.java
  16. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingTaskService.java
  17. 7 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java
  18. 35 17
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/impl/CoreResumptionConfigurationServiceImpl.java
  19. 39 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/controller/PanelController.java
  20. 6 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/mapper/PanelMapper.java
  21. 11 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/service/PanelService.java
  22. 177 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/service/impl/PanelServiceImpl.java
  23. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ResumptionMapper.java
  24. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/IProtectionService.java
  25. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/ResumptionService.java
  26. 7 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ProtectionServiceImpl.java
  27. 8 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionServiceImpl.java
  28. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/mapper/CoreMonitoringRetrievalTaskMapper.java
  29. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/ICoreMonitoringRetrievalTaskService.java
  30. 6 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java
  31. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/mapper/CoreSafetyTaskMapper.java
  32. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/ICoreSafetyTaskService.java
  33. 7 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafetyTaskServiceImpl.java
  34. 26 0
      soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml
  35. 24 0
      soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml
  36. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/information/CoreMessageSendMapper.xml
  37. 21 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml
  38. 20 0
      soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml
  39. 20 0
      soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafetyTaskMapper.xml
  40. 68 4
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java
  41. 7 8
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserRoleController.java
  42. 2 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysUserMapper.java
  43. 2 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserRoleService.java
  44. 3 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserService.java
  45. 2 52
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDeviceServiceImpl.java
  46. 8 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserRoleServiceImpl.java
  47. 16 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java
  48. 37 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserExport.java
  49. 34 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserManagerConverter.java
  50. 39 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserStatusConverter.java
  51. 82 0
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 6 - 1
project_data/sql/0.0.2/quartz/quartz.sql

@@ -1,3 +1,8 @@
 INSERT INTO `sys_job`(`job_id`, `job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (129, '恶劣天气预警', 'DEFAULT', 'WeatherTask.getDataFromApi', '0 0 7,10,14,17 * * ? *', '1', '1', '0', '超级管理员', '2023-09-25 11:46:50', '', NULL);
 INSERT INTO `sys_job` VALUES (128, '履职临期提醒(除了每日的)', 'DEFAULT', 'CoreMessageSendTask.resumptionRemind', '0 0 0 * * ?', '1', '1', '0', '超级管理员', '2023-09-22 17:03:31', '', '2023-09-22 20:29:13');
-INSERT INTO `sys_job` VALUES (125, '消息发送管理(每日凌晨零点)', 'DEFAULT', 'CoreMessageSendTask.messageSendTask', '0 0 0 * * ? *', '1', '1', '0', '超级管理员', '2023-09-21 12:30:22', '超级管理员', '2023-09-22 19:04:39');
+INSERT INTO `sys_job` VALUES (125, '消息发送管理(每日凌晨零点)', 'DEFAULT', 'CoreMessageSendTask.messageSendTask', '0 0 0 * * ? *', '1', '1', '0', '超级管理员', '2023-09-21 12:30:22', '超级管理员', '2023-09-22 19:04:39');
+delete from `sys_job` where job_name='生成每周安全检查任务';
+INSERT INTO `sys_job`(`job_id`, `job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (130, '生成每周安全检查任务', 'DEFAULT', 'CoreSafetyCheckTask.buildWeekTask', '1 1 1 ? * 2', '2', '1', '0', '超级管理员', '2023-09-22 16:34:24', '', '2023-09-22 16:34:55');
+
+DELETE from `sys_job` WHERE invoke_target='CoreResumptionTask.updateTaskStatus';
+INSERT INTO `sys_job` ( `job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ( '每天更新履职任务状态', 'DEFAULT', 'CoreResumptionTask.updateTaskStatus', '0 0 1 * * ?', '1', '0', '0', 'jwx', '2023-09-27 17:50:48', '', NULL);

+ 36 - 2
project_data/sql/0.0.2/soc/soc.sql

@@ -1311,14 +1311,44 @@ SET FOREIGN_KEY_CHECKS = 1;
 DELETE from `sys_dict_type` WHERE dict_type='question_confirm_status' or dict_type='question_reform_status';
 INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( '问题确认状态', 'question_confirm_status', '0', '超级管理员', '2023-09-13 18:14:59', '', NULL, NULL);
 INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( '问题整改状态', 'question_reform_status', '0', '超级管理员', '2023-09-13 18:15:18', '', NULL, NULL);
-
-DELETE from `sys_dict_data` WHERE dict_type in ('question_confirm_status','question_reform_status');
+delete  from 'sys_dict_type' WHERE dict_type='send_time_type' or dict_type='message_type' or dict_type ='send_status';
+INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( '发送时间类型', 'send_time_type', '0', '超级管理员', '2023-09-13 18:14:59', '', NULL, NULL);
+INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( '消息类型', 'message_type', '0', '超级管理员', '2023-09-13 18:14:59', '', NULL, NULL);
+INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( '发送状态', 'send_status', '0', '超级管理员', '2023-09-13 18:14:59', '', NULL, NULL);
+
+DELETE from `sys_dict_data` WHERE dict_type in ('post_no_pass','question_confirm_status','question_reform_status','send_status','message_type','send_time_type');
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 0, '待确认', '0', 'question_confirm_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:15:44', '', NULL, NULL);
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '提出异议', '1', 'question_confirm_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:16:01', '', NULL, NULL);
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 2, '已确认', '2', 'question_confirm_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:16:18', '', NULL, NULL);
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 3, '已关闭', '3', 'question_confirm_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:16:30', '', NULL, NULL);
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 0, '未整改', '10', 'question_reform_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:38', '', NULL, NULL);
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 1, '已整改', '11', 'question_reform_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+ VALUES ( 1, '已发送', '1', 'send_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 2, '待发送', '2', 'send_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 0, '公告', '0', 'message_type', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 1, '通知', '1', 'message_type', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 1, '立即发送', '1', 'send_time_type', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 2, '指定时间发送', '2', 'send_time_type', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 1, '无', '1', 'post_no_pass', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 2, '考试不合格', '2', 'post_no_pass', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 3, '不符合参考条件为参考', '3', 'post_no_pass', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 4, '新任职保卫人员未参考', '4', 'post_no_pass', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 5, '非必考对象', '5', 'post_no_pass', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
 
 delete from `sys_menu` WHERE id in (01706851077007085569,01706851219965743105,01706854057534033922,01706854338376241153,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2338,2339,2340,2341,2342,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2317,2318,00000000000000002324,01706850786660585473,01706850961911189505);
 INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (00000000000000002325, '安全检查登记', 2136, 4, '/securityCheckRegister', NULL, NULL, 1, 0, 'C', '0', '0', 'core:safetycheck:appregister', '0', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAABWCAMAAABiiJHFAAAAM1BMVEVHcEzYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXF4gE2CAAAAEHRSTlMAV5zcH/72wO9wPIf7z+evrVcrhwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAuBJREFUWIXtmddu7CAQhode3Ob9nzYyNjaYYpZFOidS/qtkhb/FUxkW/tSmSVE73FRkRkRcRmMdFXEaSzWIzBqB61jshAgAC+qx2BVRgZ0RySgiWTGWWPj3VCswEetDKe1FYUmpiBz8Akabqex+XoHOYQ3cf8tGkxgMsSyH5Tz4pzE6QhfJ6Eu85j3gbrVFR+Qjm9muILFptiZshJAciIq1WaDRGvU5FmWmbG34NRZRrtFmF/2M5D7sq/6w/wW2bekna381li+VNt6PlbXK14O1xrqaTgG4eYp0YxXOfHOdi8s0rGgvdkOcj6aicuHai3XtUexvS0rtt89l9HxXmFQi3o8dufZXY4mqHFy6sXx4ljlpd7S3SZaZbizVjLPjqDAybpXLsnl0llnts2zLUEUvFoCKY7bhq07UXWr2Db9MeH9Z9g3WVkfHLiyZ9twV5NF0VG5tO1Yh0tUV8kc63Gvloqhpuw+4sNOVpNEEciTCx7pfzAg/dkVNp2/uDexF5FxnWPd9m/kMC/UJkV6eFOzVwK3enebI4uxlSE2weTskY6Co2+uBpSLXdHLHJ1Gd1mMsyWdZdsKu7vfCGjUBFyhsFGDOhLm6jkcnecXuWSbdJVWYDrJwJeLUcsI2IviCWwUTaHdhUI6z27b7VZ3zV+ig/RCdoTJ3EKxsN3AZP035UMay8nyyXC8CbEHPK6zTV+4lisHwjk0cdkSWe4niVcg7NtmsKzW0/uArlngveWPQ4NPi1dsr1lwwepP8Ma14vDx8kB5jTvn4cr7fQ3ANqeUIywRlKL/CYYFr1z74VSSLr1lKzFN2n1eDffE4XYr30dnihOFz5wrtUyVMwmL2FuvIZTxfeYRJNiJLVICpypX3BfxpyfD1apWcb+nQeOuK/MMQPKTOFWqDbmOKqFF++QMCway+/v2A5qitF8+fcQdQfUsKI28EdW8dIVi3nMMawdt5mT2zcdBD+zQ8GPkvBAA/0zOEJ7oqo7UAAAAASUVORK5CYII=', NULL, '超级管理员', '2023-09-21 11:27:50', '超级管理员', '2023-09-22 16:44:12', '');
@@ -1386,3 +1416,7 @@ UPDATE `sys_dict_data` SET `dict_sort` = 700 WHERE `dict_value` = '10' and `dict
 UPDATE `sys_dict_data` SET `dict_sort` = 500 WHERE `dict_value` = '8' and `dict_type` = 'sys_org_type';
 UPDATE `sys_dict_data` SET `dict_sort` = 400 WHERE `dict_value` = '7' and `dict_type` = 'sys_org_type';
 UPDATE `sys_dict_data` SET `dict_sort` = 1000 WHERE `dict_value` = '9' and `dict_type` = 'sys_org_type';
+alter table core_drill_dictionary auto_increment = 10000;
+-- 用户导出管理人员
+delete from `sys_menu` where `menu_name` ='用户导出管理人员';
+INSERT INTO `sys_menu`(`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (00000000000000002358, '用户导出管理人员', 100, 9, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:user:exportManager', '1', NULL, NULL, '演示安全检查', '2023-09-27 16:10:58', '', NULL, '');

+ 4 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteRoleService.java

@@ -31,4 +31,8 @@ public interface RemoteRoleService {
 
     @GetMapping("/role/selectUserByRoleNameAndOrgId")
     List<SysUser> selectUserByRoleNameAndOrgId(@RequestParam(value = "roleName") String roleName, @RequestParam(value = "orgId") Long orgId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+    @GetMapping("/userRole/getUserRoleId")
+    List<Long> getUserRoleId(@RequestParam(value = "userId") Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
 }

+ 4 - 3
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUser.java

@@ -244,16 +244,17 @@ public class SysUser extends BaseEntity {
 
 
     @TableField(exist = false)
-    private String  roleNames;
+    private String roleNames;
 
     @TableField(exist = false)
     private Long[] roleIds;
 
     @TableField(exist = false)
     private List<SysRole> roles;
-
     @TableField(exist = false)
-    private Integer  orgType;
+    private Boolean onlyManager;
+    @TableField(exist = false)
+    private Integer orgType;
 
     public boolean isAdmin() {
         return isAdmin(this.getId());

+ 6 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteRoleFallbackFactory.java

@@ -26,7 +26,7 @@ public class RemoteRoleFallbackFactory implements FallbackFactory<RemoteRoleServ
 
     @Override
     public RemoteRoleService create(Throwable cause) {
-        log.error("用户服务调用失败:{}", cause.getMessage());
+        log.error("用户角色服务调用失败:{}", cause.getMessage());
         return new RemoteRoleService() {
             @Override
             public SysRole getRoleById(Long id, String source) {
@@ -47,6 +47,11 @@ public class RemoteRoleFallbackFactory implements FallbackFactory<RemoteRoleServ
             public List<SysUser> selectUserByRoleNameAndOrgId(String roleName, Long orgId, String inner) {
                 return null;
             }
+
+            @Override
+            public List<Long> getUserRoleId(Long userId, String source) {
+                return null;
+            }
         };
 
     }

+ 1 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/constant/ErrorMsgConstants.java

@@ -15,6 +15,7 @@ public class ErrorMsgConstants {
 
     public static final String CUR_USER_ORT_TYPE_ERROR = "当前用户所在机构类型无法确认!";
     public static final String QUERY_USER_DATA_ERROR = "获取用户信息失败!";
+    public static final String QUERY_USER_ROLE_ERROR = "获取当前用户角色信息失败!";
     public static final String QUERY_SYS_CONFIG_ERROR = "获取参数配置信息失败!";
     public static final String QUERY_CONFIG_ERROR = "获取系统参数配置失败!";
 }

+ 21 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/adapter/PanelAdapter.java

@@ -0,0 +1,21 @@
+package com.xunmei.common.core.domain.panel.adapter;
+
+import cn.hutool.core.date.DateUtil;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+public class PanelAdapter {
+
+    public static PanelListDto getMapperSelectParam(Long orgId, List<Long> roleIdList, Long userId) {
+        PanelListDto panelListDto = new PanelListDto();
+        panelListDto.setUserId(userId);
+        panelListDto.setOrgId(orgId);
+        panelListDto.setStartTime(DateUtil.beginOfDay(new Date()));
+        panelListDto.setEndTime(DateUtil.endOfDay(new Date()));
+        panelListDto.setRoleIdList(roleIdList);
+        return panelListDto;
+    }
+}

+ 22 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/dto/PanelListDto.java

@@ -0,0 +1,22 @@
+package com.xunmei.common.core.domain.panel.dto;
+
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+
+public class PanelListDto {
+
+    private Long userId;
+    private Long orgId;
+
+    private List<Long> roleIdList;
+
+
+    private Date startTime;
+    private Date endTime;
+
+}

+ 59 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/enums/PanelTypeEnums.java

@@ -0,0 +1,59 @@
+package com.xunmei.common.core.domain.panel.enums;
+
+import com.xunmei.common.core.enums.drill.DrillDoStatus;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+@Getter
+@AllArgsConstructor
+public enum PanelTypeEnums {
+
+    RESUMPTION(0, "履职任务"),
+
+    PROTECTION(1, "布撤防"),
+
+    SAFETY_CHECK(2, "安全检查"),
+
+    MONITORING_RETRIEVAL(3, "监控调阅"),
+
+
+
+    DRILL(4, "预案演练"),
+
+    EDU_TRAINING(5, "教育培训"),
+
+    OTHER(6, "其他任务"),
+
+
+    ;
+
+
+    /**
+     * 所有枚举
+     */
+    private static final Map<Integer, PanelTypeEnums> enumMap = new LinkedHashMap<>();
+
+    static {
+        for (PanelTypeEnums enumNode : PanelTypeEnums.values()) {
+            enumMap.put(enumNode.code, enumNode);
+        }
+    }
+
+    private final Integer code;
+    private final String name;
+
+
+    public static String getName(Integer code) {
+        PanelTypeEnums e = enumMap.get(code);
+        return e != null ? e.getName() : "";
+    }
+
+    public static PanelTypeEnums getPanelTypeEnums(Integer code) {
+        return enumMap.get(code);
+
+    }
+
+}

+ 32 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/vo/PanelListVo.java

@@ -0,0 +1,32 @@
+package com.xunmei.common.core.domain.panel.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class PanelListVo {
+
+    @ApiModelProperty(value = "面板功能类型")
+    private Integer type;
+
+
+    @ApiModelProperty(value = "面板功能名称")
+    private String taskName;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "开始时间")
+    private Date startTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "开始时间")
+    private Date endTime;
+
+    @ApiModelProperty(value = "任务状态")
+    private int status;
+
+
+
+}

+ 23 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/vo/PanelResultVo.java

@@ -0,0 +1,23 @@
+package com.xunmei.common.core.domain.panel.vo;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PanelResultVo {
+
+    @ApiModelProperty(value = "任务类型")
+    private int taskType;
+
+    @ApiModelProperty(value = "任务类型名称")
+    private String taskTypeText;
+
+    @ApiModelProperty(value = "任务数量")
+    private int nums;
+
+    @ApiModelProperty(value = "任务信息")
+    private List<PanelListVo> dataList;
+}

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillTaskMapper.java

@@ -9,6 +9,8 @@ import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskPageDto;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskRecPageDto;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskReportDto;
 import com.xunmei.common.core.domain.drill.vo.*;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -38,4 +40,6 @@ public interface CoreDrillTaskMapper extends BaseMapper<CoreDrillTask> {
     IPage<CoreDrillTaskRecTaskPageVo> selectRecTaskListPage(Page<Object> pageRequest, @Param("request") CoreDrillTaskRecPageDto request);
 
     int updateStatusById(@Param("drillTaskId") Long drillTaskId, @Param("recStatus") Integer recStatus);
+
+    List<PanelListVo> selectCurUserTaskList(@Param("request") PanelListDto request);
 }

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/ICoreDrillTaskService.java

@@ -6,6 +6,8 @@ import com.xunmei.common.core.domain.drill.domain.CoreDrillTask;
 import com.xunmei.common.core.domain.drill.domain.CoreDrillTaskToUser;
 import com.xunmei.common.core.domain.drill.dto.*;
 import com.xunmei.common.core.domain.drill.vo.*;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 
@@ -96,4 +98,6 @@ public interface ICoreDrillTaskService extends IService<CoreDrillTask> {
     TableDataInfo<CoreDrillTaskRecTaskPageVo> recTaskList(CoreDrillTaskRecPageDto request);
 
     int doRecTask(CoreDrillTaskDoRec request);
+
+    List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 }

+ 7 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -22,6 +22,8 @@ import com.xunmei.common.core.domain.drill.dto.*;
 import com.xunmei.common.core.domain.drill.vo.*;
 import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingTaskToUser;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.enums.ExportPdfType;
 import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.enums.drill.DrillDoStatus;
@@ -793,6 +795,11 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             }
         }
     }
+
+    @Override
+    public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
+        return coreDrillTaskMapper.selectCurUserTaskList(panelListDto);
+    }
 }
 
 

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingTaskMapper.java

@@ -9,6 +9,8 @@ import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingTaskReportDto;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskDetailVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskPageVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -34,4 +36,6 @@ public interface CoreEduTrainingTaskMapper extends BaseMapper<CoreEduTrainingTas
     Integer checkHasTaskIsDoneByPlanParentId(@Param("planId") Long planId);
 
     Integer updateStatusByIdList();
+
+    List<PanelListVo> selectCurUserTaskList(@Param("request") PanelListDto request);
 }

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingTaskService.java

@@ -12,6 +12,8 @@ import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanDataVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskDetailVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskPageVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 
@@ -97,4 +99,5 @@ public interface ICoreEduTrainingTaskService extends IService<CoreEduTrainingTas
     String updateEduTaskStatus();
 
 
+    List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 }

+ 7 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java

@@ -25,6 +25,8 @@ import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanDataVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskDetailVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskPageVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.enums.ExportPdfType;
 import com.xunmei.common.core.enums.edu.EduTrainingDoStatus;
 import com.xunmei.common.core.enums.edu.EduTrainingType;
@@ -616,6 +618,11 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         return "更新成功";
 
     }
+
+    @Override
+    public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
+        return coreEduTrainingTaskMapper.selectCurUserTaskList( panelListDto);
+    }
 }
 
 

+ 35 - 17
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/impl/CoreResumptionConfigurationServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.core.information.service.ICoreMessageCenterService;
 import com.xunmei.system.api.RemoteJobService;
@@ -79,6 +80,18 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
         return coreResumptionConfigurationMapper.selectList(new QueryWrapper<>(coreResumptionConfiguration));
     }
 
+    String split(String time) {
+        if (StringUtils.isEmpty(time)) {
+            return time;
+        }
+        if (time.indexOf(":") != -1) {
+            String[] split = time.split(":");
+            return split[0];
+        } else {
+            return time;
+        }
+    }
+
     /**
      * 新增履职任务定时提醒
      *
@@ -87,10 +100,15 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
      */
     @Override
     public int insertCoreResumptionConfiguration(CoreResumptionConfigurationDTO coreResumptionConfiguration) {
+
         Long[] jobIds = {100l, 101L, 102L, 103L};
         remoteJobService.remoteRemove(jobIds, SecurityConstants.INNER);
         int insert = 0;
         for (CoreResumptionConfiguration c : coreResumptionConfiguration.getCoreResumptionConfiguration()) {
+            c.setFront(split(c.getFront()));
+            c.setCentre(split(c.getCentre()));
+            c.setAfter(split(c.getAfter()));
+            c.setAllDay(split(c.getAllDay()));
             if (null == c.getId()) {
                 c.setCreateTime(DateUtils.getNowDate());
                 c.setCreateBy(SecurityUtils.getUsername());
@@ -206,7 +224,7 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
                 String timeUnit = "天";
                 if (cycle.equals("1")) {
                     coreMessageCenter.setContent("您有履职任务" + taskName + "快到期");
-                }else {
+                } else {
                     coreMessageCenter.setContent("您有履职任务" + taskName + "还有" + time + timeUnit + "到期");
                 }
                 coreMessageCenter.setUserId(sysUser.getId());
@@ -241,49 +259,49 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
 
     @Override
     public void font() {
-        CoreResumptionConfiguration coreResumptionConfiguration=new CoreResumptionConfiguration();
+        CoreResumptionConfiguration coreResumptionConfiguration = new CoreResumptionConfiguration();
         coreResumptionConfiguration.setTimeUnit("1");
         coreResumptionConfiguration.setDelFlag("0");
         List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
-        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0),"2");
-        resumptions.forEach(r->{
-            addMassageCenter(r.getName(),null, coreResumptionConfigurations.get(0).getTimeUnit(),r.getOrgId(),r.getRoleId());
+        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0), "2");
+        resumptions.forEach(r -> {
+            addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
         });
     }
 
     @Override
     public void centre() {
-        CoreResumptionConfiguration coreResumptionConfiguration=new CoreResumptionConfiguration();
+        CoreResumptionConfiguration coreResumptionConfiguration = new CoreResumptionConfiguration();
         coreResumptionConfiguration.setTimeUnit("1");
         coreResumptionConfiguration.setDelFlag("0");
         List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
-        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0),"3");
-        resumptions.forEach(r->{
-            addMassageCenter(r.getName(),null, coreResumptionConfigurations.get(0).getTimeUnit(),r.getOrgId(),r.getRoleId());
+        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0), "3");
+        resumptions.forEach(r -> {
+            addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
         });
     }
 
     @Override
     public void after() {
-        CoreResumptionConfiguration coreResumptionConfiguration=new CoreResumptionConfiguration();
+        CoreResumptionConfiguration coreResumptionConfiguration = new CoreResumptionConfiguration();
         coreResumptionConfiguration.setTimeUnit("1");
         coreResumptionConfiguration.setDelFlag("0");
         List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
-        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0),"4");
-        resumptions.forEach(r->{
-            addMassageCenter(r.getName(),null, coreResumptionConfigurations.get(0).getTimeUnit(),r.getOrgId(),r.getRoleId());
+        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0), "4");
+        resumptions.forEach(r -> {
+            addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
         });
     }
 
     @Override
     public void allDay() {
-        CoreResumptionConfiguration coreResumptionConfiguration=new CoreResumptionConfiguration();
+        CoreResumptionConfiguration coreResumptionConfiguration = new CoreResumptionConfiguration();
         coreResumptionConfiguration.setTimeUnit("1");
         coreResumptionConfiguration.setDelFlag("0");
         List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
-        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0),"1");
-        resumptions.forEach(r->{
-            addMassageCenter(r.getName(),null, coreResumptionConfigurations.get(0).getTimeUnit(),r.getOrgId(),r.getRoleId());
+        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0), "1");
+        resumptions.forEach(r -> {
+            addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
         });
     }
 }

+ 39 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/controller/PanelController.java

@@ -0,0 +1,39 @@
+package com.xunmei.core.panel.controller;
+
+
+import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanPageDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
+import com.xunmei.common.core.domain.panel.vo.PanelResultVo;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.security.annotation.RequiresPermissions;
+import com.xunmei.core.edu.service.ICoreEduTrainingPlanService;
+import com.xunmei.core.panel.service.PanelService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Api(tags = {"CoreEduTrainingPlan"})
+@RestController
+@RequestMapping("/panel")
+public class PanelController {
+
+
+    @Autowired
+    private PanelService panelService;
+
+    /**
+     * App面板接口
+     */
+    @ApiOperation(value = "App面板接口")
+    //@RequiresPermissions("core:panel:list")
+    @GetMapping("/list")
+    public List<PanelResultVo> list() {
+        return panelService.selectPage();
+    }
+
+}

+ 6 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/mapper/PanelMapper.java

@@ -0,0 +1,6 @@
+package com.xunmei.core.panel.mapper;
+
+public class PanelMapper {
+
+
+}

+ 11 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/service/PanelService.java

@@ -0,0 +1,11 @@
+package com.xunmei.core.panel.service;
+
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
+import com.xunmei.common.core.domain.panel.vo.PanelResultVo;
+
+import java.util.List;
+
+public interface PanelService {
+    List<PanelResultVo> selectPage();
+
+}

+ 177 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/service/impl/PanelServiceImpl.java

@@ -0,0 +1,177 @@
+package com.xunmei.core.panel.service.impl;
+
+import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.xunmei.common.core.constant.ErrorMsgConstants;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.R;
+import com.xunmei.common.core.domain.panel.adapter.PanelAdapter;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
+import com.xunmei.common.core.domain.panel.vo.PanelResultVo;
+import com.xunmei.common.core.vo.IdNameVo;
+import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.drill.service.ICoreDrillTaskService;
+import com.xunmei.core.edu.service.ICoreEduTrainingTaskService;
+import com.xunmei.core.panel.service.PanelService;
+import com.xunmei.core.resumption.service.IProtectionService;
+import com.xunmei.core.resumption.service.ResumptionService;
+import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskService;
+import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskService;
+import com.xunmei.system.api.RemoteRoleService;
+import com.xunmei.system.api.RemoteUserService;
+import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
+import com.xunmei.system.api.model.LoginUser;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+public class PanelServiceImpl implements PanelService {
+
+    @Autowired
+    private ResumptionService resumptionService;
+
+    @Autowired
+    private ICoreMonitoringRetrievalTaskService coreMonitoringRetrievalTaskService;
+    @Autowired
+    private ICoreSafetyTaskService safetyTaskService;
+    @Autowired
+    private ICoreDrillTaskService drillTaskService;
+
+    @Autowired
+    private ICoreEduTrainingTaskService eduTrainingTaskService;
+
+    @Autowired
+    private RemoteRoleService roleService;
+    @Autowired
+    private IProtectionService protectionService;
+
+    @Override
+    public  List<PanelResultVo> selectPage() {
+
+        List<Long> roles = RemoteCallHandlerExecutor.executeRemoteCall(
+                () -> roleService.getUserRoleId(SecurityUtils.getUserId(), SecurityConstants.FROM_SOURCE),
+                ErrorMsgConstants.QUERY_USER_ROLE_ERROR);
+
+        PanelListDto panelListDto = PanelAdapter.getMapperSelectParam(SecurityUtils.getLoginUser().getOrgId(),
+                roles,SecurityUtils.getUserId());
+
+        List<PanelListVo> resultList = Collections.synchronizedList(new ArrayList<>(6));
+
+        //履职任务
+        CompletableFuture<List<PanelListVo>> resumptionTaskFuture = CompletableFuture.supplyAsync(() -> {
+            return resumptionService.selectCurUserTaskList(panelListDto);
+        }).whenComplete((resumptionTaskList, throwable) -> {
+            if (ObjectUtil.isNotEmpty(resumptionTaskList)) {
+                resumptionTaskList.forEach(vo->vo.setType(PanelTypeEnums.RESUMPTION.getCode()));
+                resultList.addAll(resumptionTaskList);
+            }
+            if (throwable != null) {
+                log.error("resumptionTaskFuture Exception error.", throwable);
+            }
+        });
+
+        //布撤防
+        CompletableFuture<List<PanelListVo>> protectionTaskFuture = CompletableFuture.supplyAsync(() -> {
+            return protectionService.selectCurUserTaskList(panelListDto);
+        }).whenComplete((protectionTaskList, throwable) -> {
+            if (ObjectUtil.isNotEmpty(protectionTaskList)) {
+                protectionTaskList.forEach(vo->vo.setType(PanelTypeEnums.PROTECTION.getCode()));
+                resultList.addAll(protectionTaskList);
+            }
+            if (throwable != null) {
+                log.error("protectionTaskFuture Exception error.", throwable);
+            }
+        });
+
+        //监控调阅任务
+        CompletableFuture<List<PanelListVo>> monitorTaskFuture = CompletableFuture.supplyAsync(() -> {
+            return coreMonitoringRetrievalTaskService.selectCurUserTaskList(panelListDto);
+        }).whenComplete((monitorTaskList, throwable) -> {
+            if (ObjectUtil.isNotEmpty(monitorTaskList)) {
+                monitorTaskList.forEach(vo->vo.setType(PanelTypeEnums.MONITORING_RETRIEVAL.getCode()));
+                resultList.addAll(monitorTaskList);
+            }
+            if (throwable != null) {
+                log.error("monitorTaskFuture Exception error.", throwable);
+            }
+        });
+
+        //安全检查任务
+        CompletableFuture<List<PanelListVo>> safetyTaskFuture = CompletableFuture.supplyAsync(() -> {
+            return safetyTaskService.selectCurUserTaskList(panelListDto);
+        }).whenComplete((safetyTaskList, throwable) -> {
+            if (ObjectUtil.isNotEmpty(safetyTaskList)) {
+                safetyTaskList.forEach(vo->vo.setType(PanelTypeEnums.SAFETY_CHECK.getCode()));
+                resultList.addAll(safetyTaskList);
+            }
+            if (throwable != null) {
+                log.error("safetyTaskFuture Exception error.", throwable);
+            }
+        });
+
+
+        //预案演练任务
+        CompletableFuture<List<PanelListVo>> drillTaskFuture = CompletableFuture.supplyAsync(() -> {
+            return drillTaskService.selectCurUserTaskList(panelListDto);
+        }).whenComplete((drillTaskList, throwable) -> {
+            if (ObjectUtil.isNotEmpty(drillTaskList)) {
+                drillTaskList.forEach(vo->vo.setType(PanelTypeEnums.DRILL.getCode()));
+                resultList.addAll(drillTaskList);
+            }
+            if (throwable != null) {
+                log.error("drillTaskFuture Exception error.", throwable);
+            }
+        });
+
+        //教育培训任务
+        CompletableFuture<List<PanelListVo>> eduTrainingTaskFuture = CompletableFuture.supplyAsync(() -> {
+            return eduTrainingTaskService.selectCurUserTaskList(panelListDto);
+        }).whenComplete((eduTrainingTaskList, throwable) -> {
+            if (ObjectUtil.isNotEmpty(eduTrainingTaskList)) {
+                eduTrainingTaskList.forEach(vo->vo.setType(PanelTypeEnums.EDU_TRAINING.getCode()));
+                resultList.addAll(eduTrainingTaskList);
+            }
+            if (throwable != null) {
+                log.error("eduTrainingTaskFuture Exception error.", throwable);
+            }
+        });
+
+        List<CompletableFuture<List<PanelListVo>>> futureList = ListUtil.list(true,
+                resumptionTaskFuture,
+                protectionTaskFuture,
+                monitorTaskFuture,
+                safetyTaskFuture,
+                drillTaskFuture,
+                eduTrainingTaskFuture);
+
+
+        try {
+            // 多个任务
+            CompletableFuture.allOf(futureList.toArray(new CompletableFuture[0])).join();
+        } catch (Exception e) {
+            log.error("CompletableFuture.allOf Exception error.", e);
+        }
+
+        //将resultList根据type字段分组,并排序
+        Map<Integer, List<PanelListVo>> listMap = resultList.stream().sorted(Comparator.comparing(PanelListVo::getType)).collect(Collectors.groupingBy(PanelListVo::getType));
+        List<PanelResultVo> list = new ArrayList<PanelResultVo>();
+        for (Integer type : listMap.keySet()) {
+            PanelResultVo vo = new PanelResultVo();
+            vo.setTaskType(type);
+            vo.setTaskTypeText(PanelTypeEnums.getName(type));
+            vo.setDataList(listMap.get(type));
+            list.add(vo);
+        }
+
+        return list;
+
+    }
+}

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ResumptionMapper.java

@@ -1,6 +1,8 @@
 package com.xunmei.core.resumption.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.core.resumption.domain.AppRulePoint;
 import com.xunmei.core.resumption.domain.Resumption;
 import com.xunmei.core.resumption.dto.ResumptionTaskDto;
@@ -49,6 +51,8 @@ public interface ResumptionMapper extends BaseMapper<Resumption> {
      */
     List<Resumption>selectDay(@Param("planEndTime")String planEndTime,@Param("planExec")String planExec);
 
+    List<PanelListVo> selectCurUserTaskList(@Param("request") PanelListDto request);
+
     /**
      * 根据任务id获取数据
      * @param resumptionId

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/IProtectionService.java

@@ -2,6 +2,8 @@ package com.xunmei.core.resumption.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.core.resumption.domain.Protection;
 import com.xunmei.core.resumption.dto.protection.ProtectionEditDto;
@@ -37,6 +39,8 @@ public interface IProtectionService extends IService<Protection> {
     Date updateStatus(Long protectionId, String status);
 
     List<Protection> findNotAllHour(Long orgId);
+
+    List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 //    MePage<pageSensorVo> pageSensorList(pageSensorDto request);
 
 //    MePage<ProtectionPageVo4Mybatis> pageByMybatis(ProtectionPageDto4Mybatis request);

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/ResumptionService.java

@@ -2,6 +2,8 @@ package com.xunmei.core.resumption.service;
 
 import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.utils.ResumptionType;
 import com.xunmei.core.resumption.domain.AppPlan;
 import com.xunmei.core.resumption.domain.Resumption;
@@ -40,4 +42,6 @@ public interface ResumptionService extends IService<Resumption> {
     public List<WorkChangeResumptionVo> findResumptionList(List<Long> orgIds, Date date, Integer type, Integer status, Integer year, Integer quarter);
     public void saveResumption(List<Resumption> listResumption, List<AppPlan> appPlanList, List<Map<String,Long>> planIdAndOrgs);
     public void deleteResumption(List<String> ids,Integer year, Integer quarter);
+
+    List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 }

+ 7 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ProtectionServiceImpl.java

@@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.resumption.domain.Protection;
@@ -169,5 +171,10 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, Protect
                 .eq(Protection::getAllHour, 0));
         return list;
     }
+
+    @Override
+    public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
+        return null;
+    }
 }
 

+ 8 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionServiceImpl.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mysql.cj.PreparedQuery;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.ResumptionType;
 import com.xunmei.common.core.utils.Ymd;
@@ -152,4 +154,10 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
     public void deleteResumption(List<String> ids, Integer year, Integer quarter) {
         resumptionMapper.deleteResumption(ids, year, quarter);
     }
+
+    @Override
+    public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
+
+        return resumptionMapper.selectCurUserTaskList( panelListDto);
+    }
 }

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/mapper/CoreMonitoringRetrievalTaskMapper.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanPageDto;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanPageVo;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
 import com.xunmei.common.core.domain.retrieval.dto.RetrievalTaskPageDto;
 import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskExcelVo;
@@ -91,4 +93,6 @@ public interface CoreMonitoringRetrievalTaskMapper extends BaseMapper<CoreMonito
     void updateDeleteTaskByPlanId(@Param("planId") Long planId,@Param("isDeleted") Integer isDeleted);
 
     List<CoreMonitoringRetrievalTaskExcelVo> selectAllList(@Param("request") RetrievalTaskPageDto request);
+
+    List<PanelListVo> selectCurUserTaskList(@Param("request") PanelListDto request);
 }

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/ICoreMonitoringRetrievalTaskService.java

@@ -6,6 +6,8 @@ import java.util.Date;
 import java.util.List;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskOneVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.core.access.domain.TMonitoringRetrievalPlan;
@@ -94,4 +96,6 @@ public interface ICoreMonitoringRetrievalTaskService extends IService<CoreMonito
     void deleteTaskByPlanId(Long planId);
     void  deleteWaitTaskByPlanId(Long planId);
     void updateDeleteTaskByPlanId(Long planId,Integer isDeleted);
+
+    List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 }

+ 6 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java

@@ -16,6 +16,8 @@ import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanPageVo;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
 import com.xunmei.common.core.domain.retrieval.dto.RetrievalTaskPageDto;
 import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskExcelVo;
@@ -458,4 +460,8 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         return task;
     }
 
+    @Override
+    public List<PanelListVo> selectCurUserTaskList(PanelListDto request) {
+       return baseMapper.selectCurUserTaskList(request);
+    }
 }

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/mapper/CoreSafetyTaskMapper.java

@@ -3,6 +3,8 @@ package com.xunmei.core.safetyCheck.mapper;
 import java.util.List;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTask;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.core.safetyCheck.dto.register.AppPageDto;
@@ -83,4 +85,6 @@ public interface CoreSafetyTaskMapper extends BaseMapper<CoreSafetyTask> {
     Page<AppPageVo> selectTaskGroup(@Param("page") Page<AppPageVo> page, @Param("params") AppPageDto params, @Param("userId") Long userId);
 
     List<CheckNfcRecord> selectNfcRecord(String taskId);
+
+    List<PanelListVo> selectCurUserTaskList(@Param("request") PanelListDto request);
 }

+ 5 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/ICoreSafetyTaskService.java

@@ -1,9 +1,12 @@
 package com.xunmei.core.safetyCheck.service;
 
+import java.util.Date;
 import java.util.List;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTask;
 import com.xunmei.core.safetyCheck.vo.CheckNfcRecord;
@@ -72,4 +75,6 @@ public interface ICoreSafetyTaskService extends IService<CoreSafetyTask> {
     TableDataInfo<CoreSafetyTask> selectPage(CoreSafetyTask coreSafetyTask);
 
     List<CheckNfcRecord> selectNfc(String taskId);
+
+    List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 }

+ 7 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafetyTaskServiceImpl.java

@@ -2,6 +2,8 @@ package com.xunmei.core.safetyCheck.service.impl;
 
 import java.util.List;
 
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTask;
 import com.xunmei.core.safetyCheck.mapper.CoreSafetyTaskMapper;
@@ -135,4 +137,9 @@ public class CoreSafetyTaskServiceImpl extends ServiceImpl<CoreSafetyTaskMapper,
     public int deleteCoreSafetyTaskById(String id) {
         return coreSafetyTaskMapper.deleteById(id);
     }
+
+    @Override
+    public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
+        return coreSafetyTaskMapper.selectCurUserTaskList(panelListDto);
+    }
 }

+ 26 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml

@@ -277,4 +277,30 @@
         set rec_status=#{recStatus}
         where id = #{drillTaskId}
     </update>
+
+    <select id="selectCurUserTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
+        select  title as taskName,t.start_date startTime,t.end_date as endTime
+        from core_drill_task t inner join core_drill_task_to_role tr  on t.id=tr.drill_task_id
+        where t.org_id =#{request.orgId} and  tr.role_id in
+        <foreach collection="request.roleIdList" item="roleId" open="(" separator="," close=")">
+            #{roleId}
+        </foreach>
+        <if test="request.startTime != null and request.endTime != null">
+        and (
+        (
+        #{request.startTime}   <![CDATA[<=]]> t.start_date
+        and #{request.endTime}     <![CDATA[>=]]> t.start_date
+        )
+        or
+        (
+        #{request.startTime}   <![CDATA[<=]]> t.end_date
+        and #{request.endTime}     <![CDATA[>=]]> t.end_date
+        )
+        or (
+        #{request.startTime}   <![CDATA[>=]]> t.start_date
+        and #{request.endTime}     <![CDATA[<=]]> t.end_date
+        )
+        )
+        </if>
+    </select>
 </mapper>

+ 24 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml

@@ -188,4 +188,28 @@
         where end_date <![CDATA[<]]> now()
           and status <![CDATA[<]]> 2
     </update>
+
+    <select id="selectCurUserTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
+        select title as taskName,t.start_date startTime,t.end_date as endTime
+        from core_edu_training_task t inner join core_edu_training_task_to_role tr on t.id=tr.role_id
+        where t.org_id =#{request.orgId} and  tr.role_id in
+        <foreach collection="request.roleIdList" item="roleId" open="(" separator="," close=")">
+            #{roleId}
+        </foreach>
+            and (
+            (
+            #{request.startTime}   <![CDATA[<=]]> t.start_date
+            and #{request.endTime}     <![CDATA[>=]]> t.start_date
+            )
+            or
+            (
+            #{request.startTime}   <![CDATA[<=]]> t.end_date
+            and #{request.endTime}     <![CDATA[>=]]> t.end_date
+            )
+            or (
+            #{request.startTime}   <![CDATA[>=]]> t.start_date
+            and #{request.endTime}     <![CDATA[<=]]> t.end_date
+            )
+            )
+    </select>
 </mapper>

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/information/CoreMessageSendMapper.xml

@@ -79,7 +79,7 @@
         SELECT * FROM core_message_send
         WHERE del_flag=0
         <if test="request.title != null ">
-            and title = #{request.title}
+            and title like concat('%', #{request.title}, '%')
         </if>
         <if test="request.type != null ">
             and type = #{request.type}

+ 21 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml

@@ -195,4 +195,25 @@
             LEFT JOIN ( SELECT nfc_id, point_id, img, STATUS, scan_method FROM core_resumption_data_nfc WHERE resumption_id = #{resumptionId} ) b ON a.id = b.nfc_id
 
     </select>
+
+    <select id="selectCurUserTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
+
+        select name as taskName,t.plan_start_time as startTime,t.plan_end_time as endTime
+        from core_resumption t where t.org_id =#{request.orgId} and  t.role_id in
+        <foreach collection="request.roleIdList" item="roleId" open="(" separator="," close=")">
+            #{roleId}
+        </foreach>
+        and ((
+            #{request.startTime}   <![CDATA[<=]]> t.plan_start_time
+        and #{request.endTime} >= t.plan_start_time
+        )
+        or (
+            #{request.startTime}    <![CDATA[<=]]> t.plan_end_time
+        and #{request.endTime} >= t.plan_end_time
+        )
+        or (
+            #{request.startTime} >= t.plan_start_time
+        and #{request.endTime}  <![CDATA[<=]]>  t.plan_end_time
+        ))
+    </select>
 </mapper>

+ 20 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml

@@ -423,4 +423,24 @@
         set is_deleted = #{isDeleted}
         where plan_id = #{planId}
     </update>
+
+    <select id="selectCurUserTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
+     select  task_name as taskName,t.plan_start_time as startTime,t.plan_end_time as endTime
+        from core_monitoring_retrieval_task t where t.org_id =#{request.orgId} and  t.role_id in
+         <foreach collection="request.roleIdList" item="roleId" open="(" separator="," close=")">
+            #{roleId}
+         </foreach>
+        and ((
+                #{request.startTime}   <![CDATA[<=]]> t.plan_start_time
+                and #{request.endTime} >= t.plan_start_time
+                )
+                or (
+                #{request.startTime}    <![CDATA[<=]]> t.plan_end_time
+                and #{request.endTime} >= t.plan_end_time
+                )
+                or (
+                #{request.startTime} >= t.plan_start_time
+                and #{request.endTime}  <![CDATA[<=]]>  t.plan_end_time
+             ))
+    </select>
 </mapper>

+ 20 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafetyTaskMapper.xml

@@ -731,4 +731,24 @@
                  left join sys_nfc_bind n on n.id = t.nfc_id
         where t.task_id = #{taskId}
     </select>
+
+    <select id="selectCurUserTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
+        select title as taskName,t.plan_start_time as startTime,t.plan_end_time as endTime
+        from core_safety_task t where t.org_id =#{request.orgId} and  t.role_id in
+        <foreach collection="request.roleIdList" item="roleId" open="(" separator="," close=")">
+            #{roleId}
+        </foreach>
+        and ((
+        #{request.startTime}   <![CDATA[<=]]> t.plan_start_time
+        and #{request.endTime} >= t.plan_start_time
+        )
+        or (
+        #{request.startTime}    <![CDATA[<=]]> t.plan_end_time
+        and #{request.endTime} >= t.plan_end_time
+        )
+        or (
+        #{request.startTime} >= t.plan_start_time
+        and #{request.endTime}  <![CDATA[<=]]>  t.plan_end_time
+        ))
+    </select>
 </mapper>

+ 68 - 4
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java

@@ -1,11 +1,15 @@
 package com.xunmei.system.controller;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToRole;
+import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskExcelVo;
+import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.vo.IdNameVo;
@@ -17,10 +21,7 @@ import com.xunmei.common.security.annotation.InnerAuth;
 import com.xunmei.common.security.annotation.RequiresPermissions;
 import com.xunmei.common.security.utils.SaltHelper;
 import com.xunmei.common.security.utils.SecurityUtils;
-import com.xunmei.system.api.domain.SysOrg;
-import com.xunmei.system.api.domain.SysRole;
-import com.xunmei.system.api.domain.SysUser;
-import com.xunmei.system.api.domain.SysUserInformation;
+import com.xunmei.system.api.domain.*;
 import com.xunmei.system.api.model.LoginUser;
 import com.xunmei.system.domain.SysUserRole;
 import com.xunmei.system.domain.vo.SysUserListVo;
@@ -28,6 +29,7 @@ import com.xunmei.system.domain.vo.UserRoleVo;
 import com.xunmei.system.api.dto.SysRoleOrgDTO;
 import com.xunmei.system.mapper.SysOrgMapper;
 import com.xunmei.system.service.*;
+import com.xunmei.system.util.UserExport;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,6 +37,9 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
 import java.util.Date;
 import java.util.List;
 import java.util.Set;
@@ -80,6 +85,7 @@ public class SysUserController extends BaseController {
     public AjaxResult list(SysUser user) {
         AjaxResult ajax = AjaxResult.success();
         com.xunmei.common.core.web.page.TableDataInfo<com.xunmei.system.api.domain.SysUser> sysUserTableDataInfo = userService.selectUserList(user);
+
         ajax.put("data", sysUserTableDataInfo);
         boolean admin = false;
         String s = roleService.selectRoleNameByUserId(SecurityUtils.getUserId());
@@ -459,4 +465,62 @@ public class SysUserController extends BaseController {
             return vo;
         }).collect(Collectors.toList());
     }
+
+    /**
+     * 导出用户数据
+     */
+    @RequiresPermissions("system:user:export")
+    @PostMapping("/export")
+    public void export(SysUser user, HttpServletResponse response)  {
+        List<UserExport> list=userService.down(user);
+        if (ObjectUtil.isEmpty(list)) {
+            throw new RuntimeException("导出数据为空!");
+        }
+        if(list.size()>10000){
+            throw new RuntimeException("导出数据量过大(单次导出限量10000条数据),请填写条件分批导出");
+        }
+        try {
+            // 设置响应头
+            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("用户数据", "utf-8"));
+            response.setContentType("application/octet-stream;charset=UTF-8");
+            response.setCharacterEncoding("utf-8");
+            // 数据导出
+            EasyExcel.write(response.getOutputStream(), UserExport.class)
+                    .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("用户数据").doWrite(list);
+        } catch (Exception e) {
+            // 重置response
+            response.reset();
+            response.setContentType("application/json");
+            response.setCharacterEncoding("utf-8");
+        }
+    }
+    /**
+     * 导出管理人员数据
+     */
+    @RequiresPermissions("system:user:exportManager")
+    @PostMapping("/exportManager")
+    public void exportManager(SysUser user, HttpServletResponse response)  {
+        List<UserExport> list=userService.down(user);
+        if (ObjectUtil.isEmpty(list)) {
+            throw new RuntimeException("导出数据为空!");
+        }
+        list=list.stream().filter(e -> e.getIsManager() != null).collect(Collectors.toList());
+        if(list.size()>10000){
+            throw new RuntimeException("导出数据量过大(单次导出限量10000条数据),请填写条件分批导出");
+        }
+        try {
+            // 设置响应头
+            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("用户数据", "utf-8"));
+            response.setContentType("application/octet-stream;charset=UTF-8");
+            response.setCharacterEncoding("utf-8");
+            // 数据导出
+            EasyExcel.write(response.getOutputStream(), UserExport.class)
+                    .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("用户数据").doWrite(list);
+        } catch (Exception e) {
+            // 重置response
+            response.reset();
+            response.setContentType("application/json");
+            response.setCharacterEncoding("utf-8");
+        }
+    }
 }

+ 7 - 8
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserRoleController.java

@@ -5,14 +5,7 @@ import java.io.IOException;
 import javax.servlet.http.HttpServletResponse;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import com.xunmei.common.log.annotation.Log;
 import com.xunmei.common.log.enums.BusinessType;
 import com.xunmei.common.security.annotation.RequiresPermissions;
@@ -92,4 +85,10 @@ public class SysUserRoleController extends BaseController {
     public AjaxResult remove(@PathVariable Long[] userIds) {
         return toAjax(sysUserRoleService.deleteSysUserRoleByUserIds(userIds));
     }
+
+
+    @GetMapping("/getUserRoleId")
+    List<Long> getUserRoleId(@RequestParam(value = "userId") Long userId) {
+        return sysUserRoleService.getUserRoleId(userId);
+    }
 }

+ 2 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysUserMapper.java

@@ -8,6 +8,7 @@ import com.xunmei.system.api.domain.SysRole;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.domain.vo.SysUserVO;
 import com.xunmei.system.api.dto.SysRoleOrgDTO;
+import com.xunmei.system.util.UserExport;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -156,4 +157,5 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
     List<SysUser> selectUserListByRoleAndOrg(@Param("sysRoleOrgDTO") SysRoleOrgDTO sysRoleOrgDTO);
 
+    List<UserExport> select(@Param("info") SysUser user);
 }

+ 2 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserRoleService.java

@@ -77,4 +77,6 @@ public interface ISysUserRoleService extends IService<SysUserRole> {
     TableDataInfo<SysUserRole> selectPage(SysUserRole sysUserRole);
 
     List<UserRoleVo> selectUserRoleVoList(Long userId);
+
+    List<Long> getUserRoleId(Long userId);
 }

+ 3 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserService.java

@@ -8,6 +8,7 @@ import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.domain.vo.SysUserListVo;
 import com.xunmei.system.domain.vo.SysUserVO;
 import com.xunmei.system.api.dto.SysRoleOrgDTO;
+import com.xunmei.system.util.UserExport;
 
 import java.util.List;
 
@@ -224,4 +225,6 @@ public interface ISysUserService extends IService<SysUser> {
     List<SysUser> selectUserListByRoleAndOrg(SysRoleOrgDTO sysRoleOrgDTO);
 
     List<SysUser> selectAllUser();
+
+    List<UserExport> down(SysUser user);
 }

+ 2 - 52
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDeviceServiceImpl.java

@@ -102,6 +102,7 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
                 QueryWrapper queryWrapper = new QueryWrapper();
                 queryWrapper.eq("del_flag", "0");
                 queryWrapper.eq("host_id", hostByOrgId.get(i).getId());
+                queryWrapper.eq("device_type","0");
                 List<SysDevice> list = baseMapper.selectList(queryWrapper);
                 if (CollectionUtils.isEmpty(list) || list.size() == longs.size()) {
                     hostByOrgId.remove(hostByOrgId.get(i));
@@ -111,48 +112,6 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
         return hostByOrgId;
     }
 
-/*    @Override
-    public List<HostVO> getHostVideoByOrgId(Long orgId) {
-        List<HostVO> hostVOS = new ArrayList<>();
-        //查询所有视频主机
-        List<SysDevice> hostByOrgId = sysDeviceMapper.getHostByOrgId(orgId);
-        hostByOrgId.forEach(h -> {
-            HostVO hostVO = new HostVO();
-            hostVO.setHostId(h.getId());
-            hostVO.setHostName(h.getDeviceName());
-            QueryWrapper queryWrapper = new QueryWrapper();
-            queryWrapper.eq("del_flag", "0");
-            queryWrapper.eq("host_id", h.getId());
-            //查询视频
-            List<SysDevice> sysDevices = baseMapper.selectList(queryWrapper);
-            if (CollectionUtils.isNotEmpty(sysDevices)) {
-                List<VideoVO> videoVOS = new ArrayList<>();
-                sysDevices.forEach(s -> {
-                    VideoVO videoVO = new VideoVO();
-                    videoVO.setVideoId(s.getId());
-                    videoVO.setVideoName(s.getDeviceName());
-                    List<Map> accessByVideo = sysDeviceMapper.getAccessByVideo(orgId, s.getId());
-                    if (CollectionUtils.isNotEmpty(accessByVideo)) {
-                        accessByVideo.forEach(a -> {
-                            String situation = a.get("situation").toString();
-                            int num = Integer.parseInt(a.get("num").toString());
-                            videoVO.setType(1);
-                            if (situation.equals("1") && num > 0) {
-                                videoVO.setType(2);
-                            }
-                        });
-                    } else {
-                        videoVO.setType(0);
-                    }
-                    videoVOS.add(videoVO);
-                });
-                hostVO.setDeviceVOS(videoVOS);
-            }
-            hostVOS.add(hostVO);
-        });
-        return hostVOS;
-    }*/
-
     @Override
     public List<HostVO> getHostVideoByTaskId(Long taskId) {
         List<HostVO> hostVOS = new ArrayList<>();
@@ -184,15 +143,6 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
                                 break;
                             }
                         }
-                  /*      accessByVideo.forEach(a -> {
-                            String situation = a.getSituation();
-                            int num = a.getNum();
-                            videoVO.setType(1);
-                            if (situation.equals("1") && num > 0) {
-                                videoVO.setType(2);
-                            }
-                        });*/
-
                     } else {
                         videoVO.setType(0);
                     }
@@ -255,7 +205,7 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
         sysDevice.setUpdateTime(DateUtils.getNowDate());
         sysDevice.setUpdateBy(SecurityUtils.getUsername());
         SysOrg sysOrg = orgService.selectSysOrgById(sysDevice.getOrgId());
-        sysDevice.setOrgName(sysOrg.getName());
+        sysDevice.setOrgName(sysOrg.getShortName());
         return sysDeviceMapper.updateById(sysDevice);
     }
 

+ 8 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserRoleServiceImpl.java

@@ -1,5 +1,6 @@
 package com.xunmei.system.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -115,4 +116,11 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
     public int deleteSysUserRoleByUserId(Long userId) {
         return sysUserRoleMapper.deleteUserRoleByUserId(userId);
     }
+
+    @Override
+    public List<Long> getUserRoleId(Long userId) {
+        List<SysUserRole> selectList = sysUserRoleMapper.selectList(new LambdaQueryWrapper<SysUserRole>()
+                .eq(SysUserRole::getUserId, userId));
+        return selectList.stream().map(SysUserRole::getRoleId).collect(java.util.stream.Collectors.toList());
+    }
 }

+ 16 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java

@@ -26,6 +26,7 @@ import com.xunmei.system.mapper.*;
 import com.xunmei.system.service.ISysConfigService;
 import com.xunmei.system.service.ISysOrgService;
 import com.xunmei.system.service.ISysUserService;
+import com.xunmei.system.util.UserExport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -615,4 +616,19 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public List<SysUser> selectAllUser() {
         return userMapper.selectAllUser();
     }
+
+    @Override
+    public List<UserExport> down(SysUser user) {
+        SysOrg org = null;
+        //查询条件
+        QueryWrapper<SysOrg> queryWrapper = new QueryWrapper<>();
+        if (null == user.getOrgId()) {
+            queryWrapper.eq("parent_id", -1);
+            org = sysOrgMapper.selectOne(queryWrapper);
+        } else {
+            org = sysOrgMapper.selectById(user.getOrgId());
+        }
+        user.setOrgPath(org.getPath());
+        return userMapper.select(user);
+    }
 }

+ 37 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserExport.java

@@ -0,0 +1,37 @@
+package com.xunmei.system.util;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.metadata.BaseRowModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+@Data
+@ColumnWidth(15) //列宽,最大值为255
+@HeadRowHeight(16) //表头行高
+@ContentRowHeight(16) //数据行高
+public class UserExport {
+
+    @ExcelProperty(value = "用户账号", index = 1)
+    private String username;
+    @ExcelProperty(value = "用户姓名", index = 2)
+    private String name;
+    @ExcelProperty(value = "所属机构", index = 3)
+    private String orgName;
+    @ExcelProperty(value = "用户角色", index = 4)
+    private String roleNames;
+    @ExcelProperty(value = "状态", index = 5,converter = UserStatusConverter.class)
+    private String isLock;
+    @ExcelProperty(value = "是否管理人员", index = 6,converter = UserManagerConverter.class)
+    private String isManager;
+    @ExcelProperty(value = "登录IP", index = 7)
+    private String lastIp;
+    @ExcelProperty(value = "登录时间", index = 8)
+    private Date lastTime;
+}

+ 34 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserManagerConverter.java

@@ -0,0 +1,34 @@
+package com.xunmei.system.util;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+public class UserManagerConverter implements Converter<String> {
+    @Override
+    public Class supportJavaTypeKey() {
+        return null;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return null;
+    }
+
+    @Override
+    public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return null;
+    }
+
+    @Override
+    public CellData convertToExcelData(String s, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        // 根据条件修改是否管理人员的值
+        if (s!=null) {
+            return new CellData("是");
+        } else {
+            return new CellData("否");
+        }
+    }
+}

+ 39 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserStatusConverter.java

@@ -0,0 +1,39 @@
+package com.xunmei.system.util;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+public class UserStatusConverter implements Converter<String> {
+
+
+
+    @Override
+    public Class supportJavaTypeKey() {
+        return null;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return null;
+    }
+
+    @Override
+    public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return null;
+    }
+
+    @Override
+    public CellData convertToExcelData(String isLock, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        if ("0".equals(isLock)) {
+            return new CellData("启用");
+        } else if ("1".equals(isLock)) {
+            return new CellData("禁用");
+        } else {
+            return new CellData("禁用");
+        }
+
+    }
+}

+ 82 - 0
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -490,6 +490,9 @@
         <if test="info.roleId != null and info.roleId != ''">
             AND t.roleIds like concat("%,",#{info.roleId},",%")
         </if>
+        <if test="info.onlyManager ==true">
+            AND t.is_manager is not null
+        </if>
         ORDER BY t.org_id DESC
     </select>
     <select id="selectrolesByOrgId" resultType="com.xunmei.system.api.domain.SysRole">
@@ -604,4 +607,83 @@
           AND b.id = #{sysRoleOrgDTO.orgId}
           AND d.id = #{sysRoleOrgDTO.roleId}
     </select>
+    <select id="select" resultType="com.xunmei.system.util.UserExport">
+        SELECT
+        h.user_id AS is_manager,
+        GROUP_CONCAT(sr.role_name) role_names,
+        CONCAT(",",GROUP_CONCAT( sr.id ),",") as roleIds,
+        u.id,
+        u.dept_id,
+        u.is_lock,
+        u.job_id,
+        u.NAME,
+        u.username,
+        u.org_id,
+        u.phone,
+        u.create_time,
+        u.modified_name,
+        u.update_time,
+        u.modified_id,
+        u.PASSWORD,
+        u.salt,
+        u.deleted,
+        u.last_ip,
+        u.last_time,
+        o.NAME AS org_name,
+        o.path AS org_path,
+        u.image,
+        u.card,
+        u.gender,
+        u.job_number,
+        u.note,
+        u.is_sign,
+        u.sign_time,
+        u.agreement_id,
+        u.sign_version,
+        u.approve_status,
+        u.locked,
+        u.create_by,
+        u.update_by,
+        u.CODE,
+        u.source,
+        u.original_org_id
+        FROM
+        sys_user u
+        LEFT JOIN sys_org o ON u.original_org_id = o.id
+        LEFT JOIN ( SELECT user_id FROM sys_user_role uo LEFT JOIN sys_role ro ON uo.role_id = ro.id WHERE ro.role_name LIKE '%安全保卫管理人员' ) h ON h.user_id = u.id
+        LEFT JOIN sys_user_role sro on u.id=sro.user_id
+        LEFT JOIN sys_role sr on sro.role_id=sr.id
+        where 1=1
+        and u.deleted =0
+        <choose>
+            <when test="info.checkSub">
+                AND o.path like concat('%', #{info.orgPath}, '%')
+            </when>
+            <otherwise>
+                AND o.id = #{info.orgId}
+            </otherwise>
+        </choose>
+        <if test="info.isLock != null and info.isLock != ''">
+            AND u.is_lock = #{info.isLock}
+        </if>
+        <if test="info.phone != null and info.phone != ''">
+            AND u.phone like concat('%',concat(#{info.phone},'%'))
+        </if>
+        <if test="info.username != null and info.username != ''">
+            AND u.username like concat('%', #{info.username}, '%')
+        </if>
+        <if test="info.name != null and info.name != ''">
+            AND u.name like concat('%', #{info.name}, '%')
+        </if>
+        <if test="info.params.beginTime != null and info.params.beginTime != ''">
+            <!-- 开始时间检索 -->
+            AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{info.params.beginTime},'%y%m%d')
+        </if>
+        <if test="info.params.endTime != null and info.params.endTime != ''">
+            <!-- 结束时间检索 -->
+            AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{info.params.endTime},'%y%m%d')
+        </if>
+        group by u.id
+
+    </select>
 </mapper>