Browse Source

优化

master
DX 1 week ago
parent
commit
804779aa14
  1. 1
      yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/file/dto/InfraFileInfoDTO.java
  2. 25
      yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java
  3. 1
      yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java
  4. 27
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/DictTypeConstants.java
  5. 5
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java
  6. 34
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/airqualitycollection/QualityCollectionController.java
  7. 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/airqualitycollection/vo/QualityCollectionExcelVO.java
  8. 9
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/airqualitycollection/vo/QualityCollectionPageReqVO.java
  9. 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/airqualitycollection/vo/QualityCollectionRespVO.java
  10. 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java
  11. 24
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/BigViewDataController.java
  12. 16
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/BigViewCenterDataVO.java
  13. 10
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/LeftFirstDataVO.java
  14. 11
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/LeftThirdDataVO.java
  15. 13
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/MonthTaskInspectionVO.java
  16. 21
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/ReginCountVO.java
  17. 9
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/RightThirdDataVO.java
  18. 9
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/TaskCountVO.java
  19. 92
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterprise/EnterpriseController.java
  20. 32
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterprise/vo/EnterpriseExportVO.java
  21. 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterprise/vo/EnterprisePageReqVO.java
  22. 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterprise/vo/EnterpriseSaveReqVO.java
  23. 13
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterpriseinspections/EnterpriseInspectionsController.java
  24. 16
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterpriseinspections/vo/InspectionByEnterpriseIdRespVO.java
  25. 15
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterpriseinspections/vo/InspectionByEnterpriseIdVO.java
  26. 9
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/fileInfo/FileInfoController.java
  27. 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/home/vo/HomeCountResVO.java
  28. 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/inspectionslog/InspectionsLogController.java
  29. 14
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/qualification/EnterpriseQualificationController.java
  30. 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/qualification/vo/EnterpriseQualificationPageReqVO.java
  31. 3
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/qualification/vo/EnterpriseQualificationRespVO.java
  32. 113
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/taskinfo/TaskInfoController.java
  33. 44
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/taskinfo/vo/TaskInfoRespExcelVO.java
  34. 10
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/taskinfo/vo/TaskInfoRespVO.java
  35. 3
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/taskinfo/vo/TaskInfoSaveReqVO.java
  36. 39
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java
  37. 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserDeptVO.java
  38. 49
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserExportVO.java
  39. 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageReqVO.java
  40. 7
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserRespVO.java
  41. 11
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSaveReqVO.java
  42. 37
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/enterprise/EnterpriseConvert.java
  43. 34
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/taskInfo/TaskInfoConvert.java
  44. 36
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/user/UserConvert.java
  45. 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/airqualitycollection/QualityCollectionDO.java
  46. 3
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/enterprise/EnterpriseDO.java
  47. 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/taskinfo/TaskInfoDO.java
  48. 10
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java
  49. 21
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/airqualitycollection/QualityCollectionMapper.java
  50. 19
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/bigviewdata/BigViewDataMapper.java
  51. 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/enterprise/EnterpriseMapper.java
  52. 7
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/enterpriseinspections/EnterpriseInspectionsMapper.java
  53. 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/UserRoleMapper.java
  54. 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
  55. 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/InspectionsSendStartMessageJob.java
  56. 8
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/QualificationTimeOutSendStartMessageJob.java
  57. 6
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/TaskSendStartMessageJob.java
  58. 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/airqualitycollection/QualityCollectionService.java
  59. 129
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/airqualitycollection/QualityCollectionServiceImpl.java
  60. 16
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java
  61. 20
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/bigviewdata/BigViewDataService.java
  62. 320
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/bigviewdata/BigViewDataServiceImpl.java
  63. 10
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java
  64. 54
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/enterprise/EnterpriseServiceImpl.java
  65. 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/enterpriseinspections/EnterpriseInspectionsService.java
  66. 54
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/enterpriseinspections/EnterpriseInspectionsServiceImpl.java
  67. 3
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/fileInfo/FileInfoService.java
  68. 11
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/fileInfo/FileInfoServiceImpl.java
  69. 12
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionService.java
  70. 14
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java
  71. 15
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java
  72. 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/taskinfo/TaskInfoService.java
  73. 129
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/taskinfo/TaskInfoServiceImpl.java
  74. 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
  75. 222
      yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/bigviewdata/BigViewDataMapper.xml
  76. 17
      yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/enterpriseinspections/EnterpriseInspections.xml
  77. 3
      yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/taskinfo/TaskInfoMapper.xml
  78. 4
      yudao-server/src/main/resources/application-local.yaml

1
yudao-module-infra/yudao-module-infra-api/src/main/java/cn/iocoder/yudao/module/infra/api/file/dto/InfraFileInfoDTO.java

@ -6,4 +6,5 @@ import lombok.Data;
public class InfraFileInfoDTO { public class InfraFileInfoDTO {
private String url; private String url;
private Long id; private Long id;
private String name;
} }

25
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java

@ -26,6 +26,9 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map; import java.util.Map;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@ -49,6 +52,28 @@ public class FileController {
return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream()))); return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream())));
} }
@PostMapping("/uploads")
@Operation(summary = "多文件上传", description = "模式一:后端上传文件")
public CommonResult<List<InfraFileInfoDTO>> uploadFiles(@RequestPart("files") MultipartFile[] files,
@RequestParam(required = false) String path) throws Exception {
// 参数校验
if (files == null || files.length == 0) {
throw new IllegalArgumentException("至少需要上传一个文件");
}
List<InfraFileInfoDTO> result = new ArrayList<>();
for (MultipartFile file : files) {
if (!file.isEmpty()) {
result.add(fileService.createFile(
file.getOriginalFilename(),
path,
IoUtil.readBytes(file.getInputStream())
));
}
}
return success(result);
}
@GetMapping("/presigned-url") @GetMapping("/presigned-url")
@Operation(summary = "获取文件预签名地址", description = "模式二:前端上传文件:用于前端直接上传七牛、阿里云 OSS 等文件存储器") @Operation(summary = "获取文件预签名地址", description = "模式二:前端上传文件:用于前端直接上传七牛、阿里云 OSS 等文件存储器")
public CommonResult<FilePresignedUrlRespVO> getFilePresignedUrl(@RequestParam("path") String path) throws Exception { public CommonResult<FilePresignedUrlRespVO> getFilePresignedUrl(@RequestParam("path") String path) throws Exception {

1
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java

@ -135,6 +135,7 @@ public class FileServiceImpl implements FileService {
InfraFileInfoDTO map = new InfraFileInfoDTO(); InfraFileInfoDTO map = new InfraFileInfoDTO();
map.setId(fileDO.getId()); map.setId(fileDO.getId());
map.setUrl(fileDO.getUrl()); map.setUrl(fileDO.getUrl());
map.setName(fileDO.getName());
return map; return map;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }

27
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/DictTypeConstants.java

@ -23,4 +23,31 @@ public interface DictTypeConstants {
String SMS_SEND_STATUS = "system_sms_send_status"; // 短信发送状态 String SMS_SEND_STATUS = "system_sms_send_status"; // 短信发送状态
String SMS_RECEIVE_STATUS = "system_sms_receive_status"; // 短信接收状态 String SMS_RECEIVE_STATUS = "system_sms_receive_status"; // 短信接收状态
String TASK_STATE = "task_state"; // 短信接收类型
String SYSTEM_USER_SEX = "system_user_sex";
String SYSTEM_MENU_TYPE = "system_menu_type";
String SYSTEM_ROLE_TYPE = "system_role_type";
String SYSTEM_DATA_SCOPE = "system_data_scope";
String SYSTEM_NOTICE_TYPE = "system_notice_type";
String SYSTEM_LOGIN_TYPE = "system_login_type";
String SYSTEM_LOGIN_RESULT = "system_login_result";
String SYSTEM_SMS_CHANNEL_CODE = "system_sms_channel_code";
String SYSTEM_SMS_TEMPLATE_TYPE = "system_sms_template_type";
String SYSTEM_SMS_SEND_STATUS = "system_sms_send_status";
String SYSTEM_SMS_RECEIVE_STATUS = "system_sms_receive_status";
String SYSTEM_OAUTH2_GRANT_TYPE = "system_oauth2_grant_type";
String SYSTEM_MAIL_SEND_STATUS = "system_mail_send_status";
String SYSTEM_NOTIFY_TEMPLATE_TYPE = "system_notify_template_type";
String SYSTEM_SOCIAL_TYPE = "system_social_type";
String USER_AUDIT_TYPE = "user_audit_type";
String WX_USER_TYPE = "wx_user_type";
String TAG_TYPE = "tag_type";
String TASK_TYPE_EXCEL = "task_type_excel";
String TASK_TYPE_PARENT = "task_type_parent";
String TASK_PRIORITY = "task_priority";
String TASK_EXEC_TIME = "task_exec_time";
String INSPECTIONS_STATUS = "Inspections_status";
String AIR_COLLECTION_TYPE = "air_collection_type";
String ENTERPRISE_AREA = "enterprises_area";
} }

5
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java

@ -32,6 +32,7 @@ public interface ErrorCodeConstants {
ErrorCode ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE = new ErrorCode(1_002_002_003, "不能操作类型为系统内置的角色"); ErrorCode ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE = new ErrorCode(1_002_002_003, "不能操作类型为系统内置的角色");
ErrorCode ROLE_IS_DISABLE = new ErrorCode(1_002_002_004, "名字为【{}】的角色已被禁用"); ErrorCode ROLE_IS_DISABLE = new ErrorCode(1_002_002_004, "名字为【{}】的角色已被禁用");
ErrorCode ROLE_ADMIN_CODE_ERROR = new ErrorCode(1_002_002_005, "标识【{}】不能使用"); ErrorCode ROLE_ADMIN_CODE_ERROR = new ErrorCode(1_002_002_005, "标识【{}】不能使用");
ErrorCode ROLE_USER_CODE_ERROR = new ErrorCode(1_002_002_006, "先删除角色下用户");
// ========== 用户模块 1-002-003-000 ========== // ========== 用户模块 1-002-003-000 ==========
ErrorCode USER_USERNAME_EXISTS = new ErrorCode(1_002_003_000, "用户账号已经存在"); ErrorCode USER_USERNAME_EXISTS = new ErrorCode(1_002_003_000, "用户账号已经存在");
@ -43,6 +44,8 @@ public interface ErrorCodeConstants {
ErrorCode USER_IS_DISABLE = new ErrorCode(1_002_003_006, "名字为【{}】的用户已被禁用"); ErrorCode USER_IS_DISABLE = new ErrorCode(1_002_003_006, "名字为【{}】的用户已被禁用");
ErrorCode USER_COUNT_MAX = new ErrorCode(1_002_003_008, "创建用户失败,原因:超过租户最大租户配额({})!"); ErrorCode USER_COUNT_MAX = new ErrorCode(1_002_003_008, "创建用户失败,原因:超过租户最大租户配额({})!");
ErrorCode USER_IMPORT_INIT_PASSWORD = new ErrorCode(1_002_003_009, "初始密码不能为空"); ErrorCode USER_IMPORT_INIT_PASSWORD = new ErrorCode(1_002_003_009, "初始密码不能为空");
ErrorCode DEPT_USER_ERROR = new ErrorCode(1_002_004_008, "不能删除,部门下有用户");
ErrorCode USER_LOGIN_ERROR = new ErrorCode(1_002_004_009, "不是局内用户,或审核未通过");
// ========== 部门模块 1-002-004-000 ========== // ========== 部门模块 1-002-004-000 ==========
ErrorCode DEPT_NAME_DUPLICATE = new ErrorCode(1_002_004_000, "已经存在该名字的部门"); ErrorCode DEPT_NAME_DUPLICATE = new ErrorCode(1_002_004_000, "已经存在该名字的部门");
@ -123,6 +126,8 @@ public interface ErrorCodeConstants {
ErrorCode SOCIAL_CLIENT_WEIXIN_MINI_APP_SUBSCRIBE_MESSAGE_ERROR = new ErrorCode(1_002_018_203, "发送小程序订阅消息失败"); ErrorCode SOCIAL_CLIENT_WEIXIN_MINI_APP_SUBSCRIBE_MESSAGE_ERROR = new ErrorCode(1_002_018_203, "发送小程序订阅消息失败");
ErrorCode SOCIAL_CLIENT_NOT_EXISTS = new ErrorCode(1_002_018_210, "社交客户端不存在"); ErrorCode SOCIAL_CLIENT_NOT_EXISTS = new ErrorCode(1_002_018_210, "社交客户端不存在");
ErrorCode SOCIAL_CLIENT_UNIQUE = new ErrorCode(1_002_018_211, "社交客户端已存在配置"); ErrorCode SOCIAL_CLIENT_UNIQUE = new ErrorCode(1_002_018_211, "社交客户端已存在配置");
ErrorCode SOCIAL_CLIENT_CODE_EXISTS = new ErrorCode(1_002_018_212, "社交客户端CODE不存在");
// ========== OAuth2 客户端 1-002-020-000 ========= // ========== OAuth2 客户端 1-002-020-000 =========

34
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/airqualitycollection/QualityCollectionController.java

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.system.controller.admin.airqualitycollection; package cn.iocoder.yudao.module.system.controller.admin.airqualitycollection;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.exception.ExcelDataConvertException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -16,6 +17,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
@ -33,6 +36,11 @@ import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
@Tag(name = "管理后台 - 空气质量采集") @Tag(name = "管理后台 - 空气质量采集")
@RestController @RestController
@RequestMapping("/system/quality-collection") @RequestMapping("/system/quality-collection")
@Validated @Validated
@ -83,6 +91,13 @@ public class QualityCollectionController {
return success(BeanUtils.toBean(pageResult, QualityCollectionRespVO.class)); return success(BeanUtils.toBean(pageResult, QualityCollectionRespVO.class));
} }
@GetMapping("/latest")
@Operation(summary = "最新一条数据")
public CommonResult<QualityCollectionRespVO> latest() {
QualityCollectionDO qualityCollectionDO = qualityCollectionService.latest();
return success(BeanUtils.toBean(qualityCollectionDO, QualityCollectionRespVO.class));
}
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出空气质量采集 Excel") @Operation(summary = "导出空气质量采集 Excel")
@PreAuthorize("@ss.hasPermission('system:quality-collection:export')") @PreAuthorize("@ss.hasPermission('system:quality-collection:export')")
@ -99,15 +114,28 @@ public class QualityCollectionController {
@PostMapping("/upload-excel") @PostMapping("/upload-excel")
@Operation(summary = "导入空气质量采集 Excel") @Operation(summary = "导入空气质量采集 Excel")
// @PreAuthorize("@ss.hasPermission('system:quality-collection:upload')") // @PreAuthorize("@ss.hasPermission('system:quality-collection:upload')")
public void uploadExcel(@RequestParam("file") MultipartFile file, @RequestParam("type") Long type) throws IOException { public CommonResult<String> uploadExcel(@RequestParam("file") MultipartFile file) throws IOException {
// 2. 使用 EasyExcel 读取(替换 ExcelUtils) // 2. 使用 EasyExcel 读取(替换 ExcelUtils)
try {
List<QualityCollectionExcelVO> list = EasyExcel.read(file.getInputStream()) List<QualityCollectionExcelVO> list = EasyExcel.read(file.getInputStream())
.head(QualityCollectionExcelVO.class) .head(QualityCollectionExcelVO.class)
.sheet() .sheet()
.doReadSync(); .doReadSync();
// 3. 打印读取结果 // 3. 打印读取结果
qualityCollectionService.saveList(list, type); qualityCollectionService.saveList(list);
} catch (ExcelDataConvertException e) {
System.err.println("数据转换失败:行" + (e.getRowIndex()+1) +
"列" + (e.getColumnIndex()+1) +
" - " + e.getCellData().getStringValue());
String message = "数据转换失败:行" + (e.getRowIndex()+1) +
"列" + (e.getColumnIndex()+1) +
" - " + e.getCellData().getStringValue();
return error(0, message);
}
return success("上传成功");
} }
} }

5
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/airqualitycollection/vo/QualityCollectionExcelVO.java

@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.system.controller.admin.airqualitycollection.vo; package cn.iocoder.yudao.module.system.controller.admin.airqualitycollection.vo;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.thoughtworks.xstream.converters.time.LocalDateTimeConverter;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -21,7 +20,7 @@ public class QualityCollectionExcelVO {
private String siteName; private String siteName;
@ExcelProperty(value = "时间", index = 3) @ExcelProperty(value = "时间", index = 3)
private LocalDateTime time; private String time;
@ExcelProperty(value = "PM2.s(ugim3)", index = 4) @ExcelProperty(value = "PM2.s(ugim3)", index = 4)
private String pm25; private String pm25;
@ -39,7 +38,7 @@ public class QualityCollectionExcelVO {
private String no; private String no;
@ExcelProperty(value = "NOx(μg/m3)", index = 9) @ExcelProperty(value = "NOx(μg/m3)", index = 9)
private String nOx; private String nox;
@ExcelProperty(value = "CO(mg/m3)", index = 10) @ExcelProperty(value = "CO(mg/m3)", index = 10)
private String co; private String co;

9
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/airqualitycollection/vo/QualityCollectionPageReqVO.java

@ -21,8 +21,11 @@ public class QualityCollectionPageReqVO extends PageParam {
@Schema(description = "城市") @Schema(description = "城市")
private String city; private String city;
@Schema(description = "时间")
private String[] times;
@Schema(description = "数据类型", example = "2") @Schema(description = "数据类型", example = "2")
private Long type; private Integer type;
@Schema(description = "PM2.s(ugim3)") @Schema(description = "PM2.s(ugim3)")
private Double pm25; private Double pm25;
@ -39,8 +42,8 @@ public class QualityCollectionPageReqVO extends PageParam {
@Schema(description = "NO(Hg/m3)") @Schema(description = "NO(Hg/m3)")
private Double no; private Double no;
@Schema(description = "NOx(Hg/m3)") @Schema(description = "NOx(μg/m3)")
private Double nOx; private Double nox;
@Schema(description = "CO(mg/m3)") @Schema(description = "CO(mg/m3)")
private Double co; private Double co;

4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/airqualitycollection/vo/QualityCollectionRespVO.java

@ -52,7 +52,7 @@ public class QualityCollectionRespVO {
@Schema(description = "NOx(μg/m3)") @Schema(description = "NOx(μg/m3)")
@ExcelProperty("NOx(μg/m3)") @ExcelProperty("NOx(μg/m3)")
private Double nOx; private Double nox;
@Schema(description = "CO(mg/m3)") @Schema(description = "CO(mg/m3)")
@ExcelProperty("CO(mg/m3)") @ExcelProperty("CO(mg/m3)")
@ -64,7 +64,7 @@ public class QualityCollectionRespVO {
@Schema(description = "时间") @Schema(description = "时间")
@ExcelProperty("时间") @ExcelProperty("时间")
private LocalDateTime time; private String time;
@Schema(description = "备用1", example = "你猜") @Schema(description = "备用1", example = "你猜")
private String remark; private String remark;

5
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java

@ -252,12 +252,17 @@ public class AuthController {
//判断是否为对象空 //判断是否为对象空
if(StrUtil.isNotEmpty(json)){ if(StrUtil.isNotEmpty(json)){
SocialUserDO socialUserDO = JsonUtils.parseObject(json, SocialUserDO.class); SocialUserDO socialUserDO = JsonUtils.parseObject(json, SocialUserDO.class);
AuthSocialLoginReqVO authSocialLoginReqVO=new AuthSocialLoginReqVO(); AuthSocialLoginReqVO authSocialLoginReqVO=new AuthSocialLoginReqVO();
authSocialLoginReqVO.setCode(socialUserDO.getCode()); authSocialLoginReqVO.setCode(socialUserDO.getCode());
authSocialLoginReqVO.setType(socialUserDO.getType()); authSocialLoginReqVO.setType(socialUserDO.getType());
authSocialLoginReqVO.setState(socialUserDO.getState()); authSocialLoginReqVO.setState(socialUserDO.getState());
authSocialLoginReqVO.setOpenid(socialUserDO.getOpenid()); authSocialLoginReqVO.setOpenid(socialUserDO.getOpenid());
AuthLoginRespVO authLoginRespVO = authService.socialLogin(authSocialLoginReqVO); AuthLoginRespVO authLoginRespVO = authService.socialLogin(authSocialLoginReqVO);
//TODO 判断用户类型和审核状态 内部用户并且已经审核通过的用户才能登录
if(ObjUtil.isNotEmpty(authLoginRespVO)){ if(ObjUtil.isNotEmpty(authLoginRespVO)){
stringRedisTemplate.delete(reqVO.getCode()); stringRedisTemplate.delete(reqVO.getCode());
return success(authLoginRespVO); return success(authLoginRespVO);

24
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/BigViewDataController.java

@ -1,7 +1,8 @@
package cn.iocoder.yudao.module.system.controller.admin.bigviewdata; package cn.iocoder.yudao.module.system.controller.admin.bigviewdata;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.BigViewGroupCountCompareVO; import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.*;
import cn.iocoder.yudao.module.system.controller.admin.enterprise.vo.LabelValueLongVO;
import cn.iocoder.yudao.module.system.controller.admin.home.vo.EnterpriseNumVO; import cn.iocoder.yudao.module.system.controller.admin.home.vo.EnterpriseNumVO;
import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeCountResVO; import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeCountResVO;
import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeSelectVO; import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeSelectVO;
@ -19,9 +20,6 @@ import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.BigViewEnterpriseCountGroup;
import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.NameCountVO;
import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.StatusCountVO;
import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeGroupCountVO; import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeGroupCountVO;
import cn.iocoder.yudao.module.system.service.bigviewdata.BigViewDataService; import cn.iocoder.yudao.module.system.service.bigviewdata.BigViewDataService;
@ -37,31 +35,37 @@ public class BigViewDataController {
@GetMapping("/getLeftFirst") @GetMapping("/getLeftFirst")
@Operation(summary = "大屏左一数据") @Operation(summary = "大屏左一数据")
public CommonResult<List<NameCountVO>> leftFirst(HomeSelectVO homeSelectVO) { public CommonResult<List<LeftFirstDataVO>> leftFirst(HomeSelectVO homeSelectVO) {
return success(bigViewDataService.getLeftFirst(homeSelectVO)); return success(bigViewDataService.getLeftFirst(homeSelectVO));
} }
@GetMapping("/getLeftSecond") @GetMapping("/getLeftSecond")
@Operation(summary = "大屏左二数据") @Operation(summary = "大屏左二数据")
public CommonResult<BigViewEnterpriseCountGroup> getLeftSecond(HomeSelectVO homeSelectVO) { public CommonResult<List<LabelValueLongVO>> getLeftSecond(HomeSelectVO homeSelectVO) {
return success(bigViewDataService.getLeftSecond(homeSelectVO)); return success(bigViewDataService.getLeftSecond(homeSelectVO));
} }
@GetMapping("/getLeftThird") @GetMapping("/getLeftThird")
@Operation(summary = "大屏左三数据") @Operation(summary = "大屏左三数据")
public CommonResult<List<HomeGroupCountVO>> getLeftThird(HomeSelectVO homeSelectVO) { public CommonResult<List<LeftThirdDataVO>> getLeftThird(HomeSelectVO homeSelectVO) {
return success(bigViewDataService.getLeftThird(homeSelectVO)); return success(bigViewDataService.getLeftThird(homeSelectVO));
} }
@GetMapping("/getCenter") @GetMapping("/getCenter")
@Operation(summary = "大屏中间总数统计") @Operation(summary = "大屏中间总数统计")
public CommonResult<HomeCountResVO> getCenter(HomeSelectVO homeSelectVO) { public CommonResult<BigViewCenterDataVO> getCenter(HomeSelectVO homeSelectVO) {
return success(bigViewDataService.getCenter(homeSelectVO)); return success(bigViewDataService.getCenter(homeSelectVO));
} }
@GetMapping("/getMapData")
@Operation(summary = "大屏中间总数统计")
public CommonResult<List<ReginCountVO>> getMapData(HomeSelectVO homeSelectVO) {
return success(bigViewDataService.getMapData(homeSelectVO));
}
@GetMapping("/getRightFirst") @GetMapping("/getRightFirst")
@Operation(summary = "大屏右一数据") @Operation(summary = "大屏右一数据")
public CommonResult<List<StatusCountVO>> getRightFist(HomeSelectVO homeSelectVO) { public CommonResult<List<MonthTaskInspectionVO>> getRightFist(HomeSelectVO homeSelectVO) {
return success(bigViewDataService.getRightFist(homeSelectVO)); return success(bigViewDataService.getRightFist(homeSelectVO));
} }
@ -73,7 +77,7 @@ public class BigViewDataController {
@GetMapping("/getRightThird") @GetMapping("/getRightThird")
@Operation(summary = "大屏右三数据") @Operation(summary = "大屏右三数据")
public CommonResult<List<EnterpriseNumVO>> getRightThird(HomeSelectVO homeSelectVO) { public CommonResult<List<RightThirdDataVO>> getRightThird(HomeSelectVO homeSelectVO) {
return success(bigViewDataService.getRightThird(homeSelectVO)); return success(bigViewDataService.getRightThird(homeSelectVO));
} }

16
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/BigViewCenterDataVO.java

@ -0,0 +1,16 @@
package cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo;
import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeListVO;
import lombok.Data;
import java.util.List;
@Data
public class BigViewCenterDataVO {
private Long taskCount;
private Long inspectionsCount;
private Long enterpriseCount;
List<ReginCountVO> reginCountVOList;
}

10
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/LeftFirstDataVO.java

@ -0,0 +1,10 @@
package cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo;
import lombok.Data;
@Data
public class LeftFirstDataVO {
private String name;
private Long taskCount;
private Long enterpriseCount;
}

11
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/LeftThirdDataVO.java

@ -0,0 +1,11 @@
package cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo;
import lombok.Data;
@Data
public class LeftThirdDataVO {
private String name;
private double value;
private Long taskCount;
private Long enterpriseCount;
}

13
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/MonthTaskInspectionVO.java

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo;
import lombok.Data;
@Data
public class MonthTaskInspectionVO {
//月份
private String name;
//任务数量
private Long taskCount;
//执法数量
private Long inspectionsCount;
}

21
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/ReginCountVO.java

@ -0,0 +1,21 @@
package cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo;
import lombok.Data;
@Data
public class ReginCountVO {
//区域名称
private String name;
//区域经纬度
private String location;
//企业数量占比
private Long enterpriseRate;
//任务数量占比
private Long taskRate;
//企业数量
private Long enterpriseCount;
//任务数量
private Long taskCount;
}

9
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/RightThirdDataVO.java

@ -0,0 +1,9 @@
package cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo;
import lombok.Data;
@Data
public class RightThirdDataVO {
private String name;
private String expiryDate;
}

9
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/bigviewdata/vo/TaskCountVO.java

@ -0,0 +1,9 @@
package cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo;
import lombok.Data;
@Data
public class TaskCountVO {
private Integer region;
private Long taskCount;
}

92
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterprise/EnterpriseController.java

@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.infra.api.file.dto.InfraFileInfoDTO;
import cn.iocoder.yudao.module.system.controller.admin.qualification.vo.EnterpriseQualificationRespVO; import cn.iocoder.yudao.module.system.controller.admin.qualification.vo.EnterpriseQualificationRespVO;
import cn.iocoder.yudao.module.system.controller.admin.taglibrary.vo.TagLibraryPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.taglibrary.vo.TagLibraryPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.taglibrary.vo.TagLibraryRespVO; import cn.iocoder.yudao.module.system.controller.admin.taglibrary.vo.TagLibraryRespVO;
import cn.iocoder.yudao.module.system.convert.enterprise.EnterpriseConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.enterpriseauditlog.EnterpriseAuditLogDO; import cn.iocoder.yudao.module.system.dal.dataobject.enterpriseauditlog.EnterpriseAuditLogDO;
import cn.iocoder.yudao.module.system.dal.dataobject.enterprisetag.EnterpriseTagDO; import cn.iocoder.yudao.module.system.dal.dataobject.enterprisetag.EnterpriseTagDO;
@ -78,8 +79,6 @@ public class EnterpriseController {
@Resource @Resource
private EnterpriseQualificationMapper enterpriseQualificationMapper; private EnterpriseQualificationMapper enterpriseQualificationMapper;
@Resource @Resource
private EnterpriseAuditLogMapper enterpriseAuditLogMapper;
@Resource
private AdminUserService adminUserService; private AdminUserService adminUserService;
@Resource @Resource
private TagLibraryService tagLibraryService; private TagLibraryService tagLibraryService;
@ -90,21 +89,18 @@ public class EnterpriseController {
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建企业") @Operation(summary = "创建企业")
// @PreAuthorize("@ss.hasPermission('system:enterprise:create')")
public CommonResult<Long> createEnterprise(@RequestBody EnterpriseSaveReqVO createReqVO) { public CommonResult<Long> createEnterprise(@RequestBody EnterpriseSaveReqVO createReqVO) {
return success(enterpriseService.createEnterprise(createReqVO)); return success(enterpriseService.createEnterprise(createReqVO));
} }
@PostMapping("/pccreate") @PostMapping("/pccreate")
@Operation(summary = "PC端创建企业") @Operation(summary = "PC端创建企业")
// @PreAuthorize("@ss.hasPermission('system:enterprise:create')")
public CommonResult<Long> pccreateEnterprise(@RequestBody EnterpriseSaveReqVO createReqVO) { public CommonResult<Long> pccreateEnterprise(@RequestBody EnterpriseSaveReqVO createReqVO) {
return success(enterpriseService.pccreateEnterprise(createReqVO)); return success(enterpriseService.pccreateEnterprise(createReqVO));
} }
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新企业") @Operation(summary = "更新企业")
// @PreAuthorize("@ss.hasPermission('system:enterprise:update')")
public CommonResult<Boolean> updateEnterprise(@Valid @RequestBody EnterpriseSaveReqVO updateReqVO) { public CommonResult<Boolean> updateEnterprise(@Valid @RequestBody EnterpriseSaveReqVO updateReqVO) {
enterpriseService.updateEnterprise(updateReqVO); enterpriseService.updateEnterprise(updateReqVO);
return success(true); return success(true);
@ -112,7 +108,6 @@ public class EnterpriseController {
@PutMapping("/audit") @PutMapping("/audit")
@Operation(summary = "企业审核") @Operation(summary = "企业审核")
// @PreAuthorize("@ss.hasPermission('system:enterprise:update')")
public CommonResult<Boolean> audit(@RequestParam("id") Long id) { public CommonResult<Boolean> audit(@RequestParam("id") Long id) {
enterpriseService.auditEnterprise(id); enterpriseService.auditEnterprise(id);
return success(true); return success(true);
@ -127,10 +122,49 @@ public class EnterpriseController {
return success(true); return success(true);
} }
@GetMapping("/pcget")
@Operation(summary = "获得企业")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
public CommonResult<EnterpriseRespVO> getEnterpriseofPC(@RequestParam("id") Long id) {
EnterpriseDO bean = enterpriseService.getEnterprise(id);
EnterpriseRespVO enterprise= BeanUtils.toBean(bean, EnterpriseRespVO.class);
if (enterprise != null) {
LambdaQueryWrapper<FileInfoDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(FileInfoDO::getDictType, EnterpriseServiceImpl.DEFAULT_DICT_TYPE);
wrapper.eq(FileInfoDO::getDictData, EnterpriseServiceImpl.DEFAULT_DICT_DATA_QY);
wrapper.eq(FileInfoDO::getUnitId, enterprise.getId());
final List<Long> collect = fileInfoMapper.selectList(wrapper).stream().map(res -> res.getInfraFileId()).collect(Collectors.toList());
if (!collect.isEmpty()) {
final List<InfraFileInfoDTO> list = fileApi.listFile(collect);
enterprise.setFiles(list);
}
// 获取标签
List<TagLibraryDO> tagLibraryDOS = tagLibraryService.listByEnterpriseId(enterprise.getId());
if (tagLibraryDOS != null) {
List<TagLibraryDO> tagLibraryDOS1 = tagLibraryService.listSetParentId(tagLibraryDOS);
enterprise.setTagObjList(tagLibraryDOS1);
} else {
// 处理 tagLibraryDOS 为 null 的情况,这里可以设置一个空列表
enterprise.setTagObjList(Collections.emptyList());
}
//通过userID获取专管人
if (enterprise.getUserId() != null) {
final AdminUserDO user = adminUserService.getUser(Long.valueOf(enterprise.getUserId()));
if (user != null) {
enterprise.setInviterName(user.getRealName());
}
}
}
return success(enterprise);
}
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得企业") @Operation(summary = "获得企业")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
// @PreAuthorize("@ss.hasPermission('system:enterprise:query')")
public CommonResult<EnterpriseRespVO> getEnterprise(@RequestParam("id") Long id) { public CommonResult<EnterpriseRespVO> getEnterprise(@RequestParam("id") Long id) {
EnterpriseDO bean = enterpriseService.getEnterprise(id); EnterpriseDO bean = enterpriseService.getEnterprise(id);
EnterpriseRespVO enterprise= BeanUtils.toBean(bean, EnterpriseRespVO.class); EnterpriseRespVO enterprise= BeanUtils.toBean(bean, EnterpriseRespVO.class);
@ -299,7 +333,6 @@ public class EnterpriseController {
labelValueVO.setLabel(tag.getTagName()); labelValueVO.setLabel(tag.getTagName());
labelValueVO.setValue(tag.getParentId()); labelValueVO.setValue(tag.getParentId());
labelValueVOList.add(labelValueVO); labelValueVOList.add(labelValueVO);
}); });
item.setTagListName(labelValueVOList); item.setTagListName(labelValueVOList);
@ -319,10 +352,47 @@ public class EnterpriseController {
public void exportEnterpriseExcel(@Valid EnterprisePageReqVO pageReqVO, public void exportEnterpriseExcel(@Valid EnterprisePageReqVO pageReqVO,
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<EnterpriseDO> list = enterpriseService.getEnterprisePage(pageReqVO).getList(); PageResult<EnterpriseDO> pageResult = enterpriseService.getEnterprisePage(pageReqVO);
pageResult.getList().forEach(item->{
final AdminUserDO user = adminUserService.getUser(Long.valueOf(item.getUserId()));
if (user != null) {
item.setInviterName(user.getRealName());
if (user.getDeptId() != null) {
final DeptDO dept = deptService.getDept(user.getDeptId());
if (dept!= null) {
item.setInviterNameDept(dept.getName());
}
}
}
final List<TagLibraryDO> tagLibraryDOS = tagLibraryService.listByEnterpriseId(item.getId());
if (tagLibraryDOS != null) {
List<LabelValueVO> labelValueVOList = new ArrayList<>();
tagLibraryDOS.forEach(tag->{
LabelValueVO labelValueVO = new LabelValueVO();
labelValueVO.setLabel(tag.getTagName());
labelValueVO.setValue(tag.getParentId());
labelValueVOList.add(labelValueVO);
});
item.setTagListName(labelValueVOList);
}
});
if (pageReqVO.getCreateDeptId() != null) {
//查出改部门下所有用户
List<Long> deptIds = new ArrayList<>();
deptIds.add(pageReqVO.getCreateDeptId());
final List<AdminUserDO> userList = adminUserService.getUserListByDeptIds(deptIds);
if (userList!= null && userList.size() > 0) {
List<Long> collect = userList.stream().map(item1 -> item1.getId()).collect(Collectors.toList());
final List<EnterpriseDO> collect1 = pageResult.getList().stream().filter(item -> collect.contains(item.getCreator())).collect(Collectors.toList());
}
}
// 导出 Excel // 导出 Excel
ExcelUtils.write(response, "企业.xls", "数据", EnterpriseRespVO.class, ExcelUtils.write(response, "企业.xls", "数据", EnterpriseExportVO.class,
BeanUtils.toBean(list, EnterpriseRespVO.class)); EnterpriseConvert.INSTANCE.convertList(pageResult.getList()));
} }
} }

32
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterprise/vo/EnterpriseExportVO.java

@ -0,0 +1,32 @@
package cn.iocoder.yudao.module.system.controller.admin.enterprise.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class EnterpriseExportVO {
@Schema(description = "企业名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("企业名称")
private String enterprisesName;
@Schema(description = "企业所属区域", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty(value = "企业所属区域", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ENTERPRISE_AREA)
private String region;
@ExcelProperty(value = "行业类型")
private String type;
@Schema(description = "执法人员")
@ExcelProperty("执法人员")
private String inviterDeptAndName;
@Schema(description = "入驻时间")
@ExcelProperty("入驻时间")
private String time;
}

4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterprise/vo/EnterprisePageReqVO.java

@ -27,8 +27,8 @@ public class EnterprisePageReqVO extends PageParam {
@Schema(description = "管辖人员ID", example = "30445") @Schema(description = "管辖人员ID", example = "30445")
private Long userId; private Long userId;
@Schema(description = "企业类型:1.大型、2.中型、3.小型、4.环保重点", example = "2") @Schema(description = "企业类型", example = "2")
private String type; private Long[] type;
@Schema(description = "是否已审核") @Schema(description = "是否已审核")
private Boolean isAudit; private Boolean isAudit;

1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterprise/vo/EnterpriseSaveReqVO.java

@ -43,7 +43,6 @@ public class EnterpriseSaveReqVO {
@Schema(description = "企业状态") @Schema(description = "企业状态")
private Long enterprisesStatus; private Long enterprisesStatus;
@Schema(description = "环保负责人姓名", example = "张三") @Schema(description = "环保负责人姓名", example = "张三")
private String contactName; private String contactName;

13
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterpriseinspections/EnterpriseInspectionsController.java

@ -81,7 +81,7 @@ public class EnterpriseInspectionsController {
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得企业检查记录表,用于记录与企业相关的环保检查信息。") @Operation(summary = "获得企业检查记录表,用于记录与企业相关的环保检查信息。")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('system:enterprise-inspections:query')") // @PreAuthorize("@ss.hasPermission('system:enterprise-inspections:query')")
public CommonResult<EnterpriseInspectionsRespVO> getEnterpriseInspections(@RequestParam("id") Long id) { public CommonResult<EnterpriseInspectionsRespVO> getEnterpriseInspections(@RequestParam("id") Long id) {
return success(enterpriseInspectionsService.getEnterpriseInspections(id)); return success(enterpriseInspectionsService.getEnterpriseInspections(id));
} }
@ -89,7 +89,7 @@ public class EnterpriseInspectionsController {
@GetMapping("/getEnterpriseInspectionsByTaskId") @GetMapping("/getEnterpriseInspectionsByTaskId")
@Operation(summary = "根据任务id查询自己偶发") @Operation(summary = "根据任务id查询自己偶发")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('system:enterprise-inspections:query')") // @PreAuthorize("@ss.hasPermission('system:enterprise-inspections:query')")
public CommonResult<EnterpriseInspectionsRespVO> getEnterpriseInspectionsByTaskId(@RequestParam("id") Long id) { public CommonResult<EnterpriseInspectionsRespVO> getEnterpriseInspectionsByTaskId(@RequestParam("id") Long id) {
return success(enterpriseInspectionsService.getEnterpriseInspections(id)); return success(enterpriseInspectionsService.getEnterpriseInspections(id));
} }
@ -102,6 +102,15 @@ public class EnterpriseInspectionsController {
return success(BeanUtils.toBean(pageResult, EnterpriseInspectionsRespVO.class)); return success(BeanUtils.toBean(pageResult, EnterpriseInspectionsRespVO.class));
} }
@GetMapping("/inspectionsByEnterpriseId")
@Operation(summary = "获得企业检查记录表,用于记录与企业相关的环保检查信息。分页")
// @PreAuthorize("@ss.hasPermission('system:enterprise-inspections:query')")
public CommonResult<PageResult<InspectionByEnterpriseIdRespVO>> inspectionsByEnterpriseId(@Valid EnterpriseInspectionsPageReqVO pageReqVO) {
return success(enterpriseInspectionsService.inspectionsByEnterpriseId(pageReqVO));
}
//listByUserIdAndTaskName //listByUserIdAndTaskName
@GetMapping("/getListByUserIdAndTaskName") @GetMapping("/getListByUserIdAndTaskName")
@Operation(summary = "PC端获得企业检查记录表,用于记录与企业相关的环保检查信息。分页") @Operation(summary = "PC端获得企业检查记录表,用于记录与企业相关的环保检查信息。分页")

16
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterpriseinspections/vo/InspectionByEnterpriseIdRespVO.java

@ -0,0 +1,16 @@
package cn.iocoder.yudao.module.system.controller.admin.enterpriseinspections.vo;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class InspectionByEnterpriseIdRespVO {
private Long taskId;
private String title;
private String inspectNames;
private Integer status;
private LocalDateTime time;
private Long inspectionsId;
}

15
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/enterpriseinspections/vo/InspectionByEnterpriseIdVO.java

@ -0,0 +1,15 @@
package cn.iocoder.yudao.module.system.controller.admin.enterpriseinspections.vo;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class InspectionByEnterpriseIdVO {
private Long taskId;
private String title;
private Long inspectionsId;
private Long logId;
private Integer status;
private LocalDateTime createTime;
}

9
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/fileInfo/FileInfoController.java

@ -62,6 +62,15 @@ public class FileInfoController {
return success(true); return success(true);
} }
@DeleteMapping("/deleteByInfraId")
@Operation(summary = "删除附件信息")
@Parameter(name = "id", description = "编号", required = true)
// @PreAuthorize("@ss.hasPermission('system:file-info:delete')")
public CommonResult<Boolean> deleteByInfraId(@RequestParam("id") Long id) throws Exception {
fileInfoService.deleteByInfraId(id);
return success(true);
}
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得附件信息") @Operation(summary = "获得附件信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")

1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/home/vo/HomeCountResVO.java

@ -11,6 +11,7 @@ public class HomeCountResVO {
private Integer taskCount; private Integer taskCount;
//执法总数 //执法总数
private Integer inspectionsCount; private Integer inspectionsCount;
//企业总数
private Integer enterpriseCount; private Integer enterpriseCount;
//总任务完成率 //总任务完成率

4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/inspectionslog/InspectionsLogController.java

@ -101,7 +101,7 @@ public class InspectionsLogController {
@PostMapping("/inspectionsAudit") @PostMapping("/inspectionsAudit")
@Operation(summary = "审核") @Operation(summary = "审核")
@PreAuthorize("@ss.hasPermission('system:enterpriseinspections:index')") // @PreAuthorize("@ss.hasPermission('system:enterpriseinspections:index')")
public CommonResult<String> inspectionsAudit(@Valid @RequestBody InspectionsLogSaveReqVO createReqVO) { public CommonResult<String> inspectionsAudit(@Valid @RequestBody InspectionsLogSaveReqVO createReqVO) {
log.info("createReqVO:{}", createReqVO); log.info("createReqVO:{}", createReqVO);
inspectionsLogService.inspectionsAudit(createReqVO); inspectionsLogService.inspectionsAudit(createReqVO);
@ -125,7 +125,7 @@ public class InspectionsLogController {
@GetMapping("/list") @GetMapping("/list")
@Operation(summary = "pc端获得检查状态列表") @Operation(summary = "pc端获得检查状态列表")
@PreAuthorize("@ss.hasPermission('system:inspections-log:query')") // @PreAuthorize("@ss.hasPermission('system:inspections-log:query')")
public CommonResult<List<InspectionsLogRespVO>> getInspectionsLogList(@Valid InspectionsLogPageReqVO pageReqVO) { public CommonResult<List<InspectionsLogRespVO>> getInspectionsLogList(@Valid InspectionsLogPageReqVO pageReqVO) {
List<InspectionsLogDO> list = inspectionsLogService.list(pageReqVO); List<InspectionsLogDO> list = inspectionsLogService.list(pageReqVO);

14
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/qualification/EnterpriseQualificationController.java

@ -84,6 +84,12 @@ public class EnterpriseQualificationController {
public CommonResult<EnterpriseQualificationRespVO> getEnterpriseQualification(@RequestParam("id") Long id) { public CommonResult<EnterpriseQualificationRespVO> getEnterpriseQualification(@RequestParam("id") Long id) {
EnterpriseQualificationDO enterpriseQualification = enterpriseQualificationService.getEnterpriseQualification(id); EnterpriseQualificationDO enterpriseQualification = enterpriseQualificationService.getEnterpriseQualification(id);
EnterpriseQualificationRespVO bean = BeanUtils.toBean(enterpriseQualification, EnterpriseQualificationRespVO.class); EnterpriseQualificationRespVO bean = BeanUtils.toBean(enterpriseQualification, EnterpriseQualificationRespVO.class);
if(enterpriseQualification.getEnterpriseId()!= null){
EnterpriseDO enterprise = enterpriseService.getEnterprise(Long.valueOf(enterpriseQualification.getEnterpriseId()));
if(enterprise!=null){
bean.setEnterpriseName(enterprise.getEnterprisesName());
}
}
List<InfraFileInfoDTO> fileList = fileInfoService.getFileList(EnterpriseServiceImpl.DEFAULT_DICT_TYPE, EnterpriseQualificationServiceImpl.DEFAULT_DICT_DATA_QYZZ, bean.getId().toString()); List<InfraFileInfoDTO> fileList = fileInfoService.getFileList(EnterpriseServiceImpl.DEFAULT_DICT_TYPE, EnterpriseQualificationServiceImpl.DEFAULT_DICT_DATA_QYZZ, bean.getId().toString());
bean.setFiles(fileList); bean.setFiles(fileList);
return success(bean); return success(bean);
@ -94,16 +100,20 @@ public class EnterpriseQualificationController {
// @PreAuthorize("@ss.hasPermission('system:enterprise-qualification:query')") // @PreAuthorize("@ss.hasPermission('system:enterprise-qualification:query')")
public CommonResult<PageResult<EnterpriseQualificationRespVO>> getEnterpriseQualificationPage(EnterpriseQualificationPageReqVO pageReqVO) { public CommonResult<PageResult<EnterpriseQualificationRespVO>> getEnterpriseQualificationPage(EnterpriseQualificationPageReqVO pageReqVO) {
PageResult<EnterpriseQualificationDO> pageResult = enterpriseQualificationService.getEnterpriseQualificationPage(pageReqVO); PageResult<EnterpriseQualificationDO> pageResult = enterpriseQualificationService.getEnterpriseQualificationPage(pageReqVO);
pageResult.getList().forEach(item->{ PageResult<EnterpriseQualificationRespVO> bean = BeanUtils.toBean(pageResult, EnterpriseQualificationRespVO.class);
bean.getList().forEach(item->{
if(item.getEnterpriseId()!= null){ if(item.getEnterpriseId()!= null){
EnterpriseDO enterprise = enterpriseService.getEnterprise(Long.valueOf(item.getEnterpriseId())); EnterpriseDO enterprise = enterpriseService.getEnterprise(Long.valueOf(item.getEnterpriseId()));
if(enterprise!=null){ if(enterprise!=null){
item.setEnterpriseName(enterprise.getEnterprisesName()); item.setEnterpriseName(enterprise.getEnterprisesName());
} }
final List<InfraFileInfoDTO> fileList = fileInfoService.getFileList(644l, 3l, item.getId().toString());
item.setQualificationFiles(fileList);
} }
}); });
PageResult<EnterpriseQualificationRespVO> bean = BeanUtils.toBean(pageResult, EnterpriseQualificationRespVO.class);
return success(bean); return success(bean);
} }

1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/qualification/vo/EnterpriseQualificationPageReqVO.java

@ -25,7 +25,6 @@ public class EnterpriseQualificationPageReqVO extends PageParam {
@Schema(description = "企业名称", example = "28564") @Schema(description = "企业名称", example = "28564")
private String enterpriseName; private String enterpriseName;
@Schema(description = "资质名称,例如:排污许可证、环保合格证", example = "张三") @Schema(description = "资质名称,例如:排污许可证、环保合格证", example = "张三")
private String qualificationName; private String qualificationName;

3
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/qualification/vo/EnterpriseQualificationRespVO.java

@ -64,6 +64,9 @@ public class EnterpriseQualificationRespVO {
@Schema(description = "企业图片", example = "26433") @Schema(description = "企业图片", example = "26433")
private List<InfraFileInfoDTO> files; private List<InfraFileInfoDTO> files;
@Schema(description = "资质图片", example = "26433")
private List<InfraFileInfoDTO> qualificationFiles;
//资质状态 //资质状态
@TableField(exist = false) @TableField(exist = false)
private Integer status; private Integer status;

113
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/taskinfo/TaskInfoController.java

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.controller.admin.taskinfo;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.infra.api.file.dto.InfraFileInfoDTO;
import cn.iocoder.yudao.module.infra.api.job.JobApi; import cn.iocoder.yudao.module.infra.api.job.JobApi;
import cn.iocoder.yudao.module.system.controller.admin.enterprise.vo.EnterprisePageReqVO; import cn.iocoder.yudao.module.system.controller.admin.enterprise.vo.EnterprisePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.enterprise.vo.LabelValueLongVO; import cn.iocoder.yudao.module.system.controller.admin.enterprise.vo.LabelValueLongVO;
@ -10,6 +11,8 @@ import cn.iocoder.yudao.module.system.controller.admin.enterprise.vo.LabelValueV
import cn.iocoder.yudao.module.system.controller.admin.enterpriseinspections.vo.EnterpriseInspectionsPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.enterpriseinspections.vo.EnterpriseInspectionsPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.enterpriseinspections.vo.EnterpriseInspectionsSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.enterpriseinspections.vo.EnterpriseInspectionsSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.tasktag.vo.TaskTagPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.tasktag.vo.TaskTagPageReqVO;
import cn.iocoder.yudao.module.system.convert.taskInfo.TaskInfoConvert;
import cn.iocoder.yudao.module.system.convert.user.UserConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.enterprise.EnterpriseDO; import cn.iocoder.yudao.module.system.dal.dataobject.enterprise.EnterpriseDO;
import cn.iocoder.yudao.module.system.dal.dataobject.enterpriseinspections.EnterpriseInspectionsDO; import cn.iocoder.yudao.module.system.dal.dataobject.enterpriseinspections.EnterpriseInspectionsDO;
@ -20,6 +23,7 @@ import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
import cn.iocoder.yudao.module.system.service.dept.DeptService; import cn.iocoder.yudao.module.system.service.dept.DeptService;
import cn.iocoder.yudao.module.system.service.enterprise.EnterpriseService; import cn.iocoder.yudao.module.system.service.enterprise.EnterpriseService;
import cn.iocoder.yudao.module.system.service.enterpriseinspections.EnterpriseInspectionsService; import cn.iocoder.yudao.module.system.service.enterpriseinspections.EnterpriseInspectionsService;
import cn.iocoder.yudao.module.system.service.fileInfo.FileInfoService;
import cn.iocoder.yudao.module.system.service.taglibrary.TagLibraryService; import cn.iocoder.yudao.module.system.service.taglibrary.TagLibraryService;
import cn.iocoder.yudao.module.system.service.tasktag.TaskTagService; import cn.iocoder.yudao.module.system.service.tasktag.TaskTagService;
import cn.iocoder.yudao.module.system.service.user.AdminUserService; import cn.iocoder.yudao.module.system.service.user.AdminUserService;
@ -78,6 +82,13 @@ public class TaskInfoController {
private TagLibraryService tagLibraryService; private TagLibraryService tagLibraryService;
@Resource @Resource
private AdminUserMapper adminUserMapper; private AdminUserMapper adminUserMapper;
@Resource
private FileInfoService fileInfoService;
//企业红头文件
public final static Long DEFAULT_DICT_DATA_QY = 4L;
public final static Long DEFAULT_DICT_TYPE = 644L;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建任务表,用于存储所有的任务信息,任务可由不同用户创建并管理。") @Operation(summary = "创建任务表,用于存储所有的任务信息,任务可由不同用户创建并管理。")
@ -94,6 +105,14 @@ public class TaskInfoController {
return success("执行成功"); return success("执行成功");
} }
@PutMapping("/audit")
@Operation(summary = "审核任务")
@PreAuthorize("@ss.hasPermission('system:task-info:audit')")
public CommonResult<String> audit(@RequestParam("id") Long id) {
taskInfoService.audit(id);
return success("审核成功");
}
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新任务表,用于存储所有的任务信息,任务可由不同用户创建并管理。") @Operation(summary = "更新任务表,用于存储所有的任务信息,任务可由不同用户创建并管理。")
@PreAuthorize("@ss.hasPermission('system:task-info:update')") @PreAuthorize("@ss.hasPermission('system:task-info:update')")
@ -137,6 +156,24 @@ public class TaskInfoController {
@PreAuthorize("@ss.hasPermission('system:task-info:query')") @PreAuthorize("@ss.hasPermission('system:task-info:query')")
public CommonResult<TaskInfoRespVO> getTaskInfo(@RequestParam("id") Long id) { public CommonResult<TaskInfoRespVO> getTaskInfo(@RequestParam("id") Long id) {
TaskInfoDO taskInfo = taskInfoService.getTaskInfo(id); TaskInfoDO taskInfo = taskInfoService.getTaskInfo(id);
//获取任务类型名称
if (taskInfo.getTaskType() != null) {
final TagLibraryDO tagLibrary = tagLibraryService.getTagLibrary(taskInfo.getTaskType());
if (tagLibrary != null) {
taskInfo.setTaskTypeName(tagLibrary.getTagName());
}
}
//发布部门
if (taskInfo.getCreator() != null) {
final Long userId = Long.valueOf(taskInfo.getCreator());
final DeptDO dept = deptService.getByUserId(userId);
if (dept != null) {
taskInfo.setDeptName(dept.getName());
}
}
//获取任务包含企业 //获取任务包含企业
EnterpriseInspectionsPageReqVO enterpriseInspectionsPageReqVO=new EnterpriseInspectionsPageReqVO(); EnterpriseInspectionsPageReqVO enterpriseInspectionsPageReqVO=new EnterpriseInspectionsPageReqVO();
enterpriseInspectionsPageReqVO.setTaskId(taskInfo.getId()); enterpriseInspectionsPageReqVO.setTaskId(taskInfo.getId());
@ -146,6 +183,13 @@ public class TaskInfoController {
enterprisePageReqVO.setIds(longs); enterprisePageReqVO.setIds(longs);
List<EnterpriseDO> enterpriseIdes=enterpriseService.getEnterpriseList(enterprisePageReqVO); List<EnterpriseDO> enterpriseIdes=enterpriseService.getEnterpriseList(enterprisePageReqVO);
TaskInfoRespVO bean = BeanUtils.toBean(taskInfo, TaskInfoRespVO.class); TaskInfoRespVO bean = BeanUtils.toBean(taskInfo, TaskInfoRespVO.class);
//获取任务红头文件
final List<InfraFileInfoDTO> fileList = fileInfoService.getFileList(DEFAULT_DICT_TYPE, DEFAULT_DICT_DATA_QY, taskInfo.getId().toString());
if (!fileList.isEmpty()) {
bean.setFileList(fileList);
}
if (enterpriseIdes != null && enterpriseIdes.size() > 0) { if (enterpriseIdes != null && enterpriseIdes.size() > 0) {
enterpriseIdes.forEach(item->{ enterpriseIdes.forEach(item->{
// 企业标签 // 企业标签
@ -159,8 +203,10 @@ public class TaskInfoController {
labelValueVO.setLabel(tag.getTagName()); labelValueVO.setLabel(tag.getTagName());
labelValueVO.setValue(tag.getParentId()); labelValueVO.setValue(tag.getParentId());
labelValueVOList.add(labelValueVO); labelValueVOList.add(labelValueVO);
}); });
item.setTagListName(labelValueVOList);
}
//执法人员 执法人员所在部门 //执法人员 执法人员所在部门
final Long userId = item.getUserId(); final Long userId = item.getUserId();
@ -174,10 +220,6 @@ public class TaskInfoController {
} }
} }
item.setTagListName(labelValueVOList);
}
}); });
} }
bean.setEnterpriseIdes(enterpriseIdes); bean.setEnterpriseIdes(enterpriseIdes);
@ -188,9 +230,7 @@ public class TaskInfoController {
List<TaskTagDO> taskTagides=taskTagService.getTaskTagList(taskTagPageReqVO); List<TaskTagDO> taskTagides=taskTagService.getTaskTagList(taskTagPageReqVO);
//企业标签 //企业标签
// List<Long> taglongs = CollectionUtils.convertList(enterpriseInspectionsides, EnterpriseInspectionsDO::getEnterpriseId);
List<Long> taglongs = CollectionUtils.convertList(enterpriseInspectionsides, EnterpriseInspectionsDO::getEnterpriseId);
bean.setTaskTagIdes(taskTagides); bean.setTaskTagIdes(taskTagides);
@ -217,10 +257,17 @@ public class TaskInfoController {
final DeptDO dept = deptService.getDept(user.getDeptId()); final DeptDO dept = deptService.getDept(user.getDeptId());
taskInfo.setDeptName(dept.getName()); taskInfo.setDeptName(dept.getName());
} }
}
final TaskInfoRespVO bean = BeanUtils.toBean(taskInfo, TaskInfoRespVO.class);
//获取任务红头文件
final List<InfraFileInfoDTO> fileList = fileInfoService.getFileList(DEFAULT_DICT_TYPE, DEFAULT_DICT_DATA_QY, taskInfo.getId().toString());
if (!fileList.isEmpty()) {
bean.setFileList(fileList);
} }
return success(BeanUtils.toBean(taskInfo, TaskInfoRespVO.class)); return success(bean);
} }
@ -268,8 +315,6 @@ public class TaskInfoController {
} }
} }
return success(BeanUtils.toBean(pageResult, TaskInfoRespVO.class)); return success(BeanUtils.toBean(pageResult, TaskInfoRespVO.class));
} }
@ -298,19 +343,57 @@ public class TaskInfoController {
} }
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出任务表,用于存储所有的任务信息,任务可由不同用户创建并管理。 Excel") @Operation(summary = "任务表. Excel")
@PreAuthorize("@ss.hasPermission('system:task-info:export')") @PreAuthorize("@ss.hasPermission('system:task-info:export')")
@ApiAccessLog(operateType = EXPORT) @ApiAccessLog(operateType = EXPORT)
public void exportTaskInfoExcel(@Valid TaskInfoPageReqVO pageReqVO, public void exportTaskInfoExcel(@Valid TaskInfoPageReqVO pageReqVO,
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<TaskInfoDO> list = taskInfoService.getTaskInfoPage(pageReqVO).getList(); List<TaskInfoDO> list = taskInfoService.getTaskInfoPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "任务表,用于存储所有的任务信息,任务可由不同用户创建并管理。.xls", "数据", TaskInfoRespVO.class, EnterpriseInspectionsPageReqVO enterpriseInspectionsPageReqVO=new EnterpriseInspectionsPageReqVO();
BeanUtils.toBean(list, TaskInfoRespVO.class)); list.forEach(item->{
final Long creator = Long.valueOf(item.getCreator());
AdminUserDO user = adminUserService.getUser(creator);
DeptDO dept= deptService.getDept(user.getDeptId());
if (dept != null) {
item.setDeptName(dept.getName());
}
final AdminUserDO user1 = adminUserService.getUser(Long.valueOf(item.getCreator()));
if (user1 != null) {
item.setCreateName(user1.getRealName());
} }
enterpriseInspectionsPageReqVO.setTaskId(item.getId());
List<EnterpriseInspectionsDO> enterpriseInspectionsides=enterpriseInspectionsService.getEnterpriseInspectionsList(enterpriseInspectionsPageReqVO);
EnterprisePageReqVO enterprisePageReqVO=new EnterprisePageReqVO();
List<Long> longs = CollectionUtils.convertList(enterpriseInspectionsides, EnterpriseInspectionsDO::getEnterpriseId);
enterprisePageReqVO.setIds(longs);
List<EnterpriseDO> enterpriseIdes=enterpriseService.getEnterpriseList(enterprisePageReqVO);
item.setEnterpriseIdes(enterpriseIdes);
item.setTaskTypeName(tagLibraryService.getTagLibrary(Integer.valueOf(item.getTaskType())).getTagName());
});
//按发布部门查询
if (pageReqVO.getDeptId()!= null) {
List<Long> deptIds = new ArrayList<>();
deptIds.add(pageReqVO.getDeptId());
final List<AdminUserDO> userListByDeptIds = adminUserService.getUserListByDeptIds(deptIds);
if (!userListByDeptIds.isEmpty()) {
List<Long> longs = CollectionUtils.convertList(userListByDeptIds, AdminUserDO::getId);
list = list.stream().filter(item -> longs.contains(Long.valueOf(item.getCreator()))).collect(Collectors.toList());
}
}
final List<TaskInfoRespExcelVO> taskInfoRespExcelVOS = TaskInfoConvert.INSTANCE.convertList(list);
// 导出 Excel
ExcelUtils.write(response, "任务列表.xls", "数据", TaskInfoRespExcelVO.class,
taskInfoRespExcelVOS);
}
// UserConvert.INSTANCE.convertList(list, deptMap)
@GetMapping("/testInsertUserArea") @GetMapping("/testInsertUserArea")
@Operation(summary = "获得任务表,用于存储所有的任务信息,任务可由不同用户创建并管理。分页") @Operation(summary = "获得任务表,用于存储所有的任务信息,任务可由不同用户创建并管理。分页")

44
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/taskinfo/vo/TaskInfoRespExcelVO.java

@ -0,0 +1,44 @@
package cn.iocoder.yudao.module.system.controller.admin.taskinfo.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class TaskInfoRespExcelVO {
@Schema(description = "任务标题", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("任务标题")
private String title;
@Schema(description = "任务类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty(value = "任务类型", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TASK_TYPE_EXCEL)
private Integer taskType;
@Schema(description = "发布部门")
@ExcelProperty("发布部门")
private String deptName;
// @Schema(description = "用户性别,参见 SexEnum 枚举类", example = "1")
// @ExcelProperty(value = "用户性别", converter = DictConvert.class)
// @DictFormat(DictTypeConstants.USER_SEX)
// private Integer sex;
@Schema(description = "任务状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty(value = "任务状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TASK_STATE)
private String status;
@Schema(description = "执法对象", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("执法对象")
private String inspectionsObject;
@Schema(description = "执行时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("执行时间")
private String time;
}

10
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/taskinfo/vo/TaskInfoRespVO.java

@ -1,10 +1,11 @@
package cn.iocoder.yudao.module.system.controller.admin.taskinfo.vo; package cn.iocoder.yudao.module.system.controller.admin.taskinfo.vo;
import cn.iocoder.yudao.module.infra.api.file.dto.InfraFileInfoDTO;
import cn.iocoder.yudao.module.system.dal.dataobject.enterprise.EnterpriseDO; import cn.iocoder.yudao.module.system.dal.dataobject.enterprise.EnterpriseDO;
import cn.iocoder.yudao.module.system.dal.dataobject.enterpriseinspections.EnterpriseInspectionsDO; import cn.iocoder.yudao.module.system.dal.dataobject.enterpriseinspections.EnterpriseInspectionsDO;
import cn.iocoder.yudao.module.system.dal.dataobject.taglibrary.TagLibraryDO; import cn.iocoder.yudao.module.system.dal.dataobject.taglibrary.TagLibraryDO;
import cn.iocoder.yudao.module.system.dal.dataobject.tasktag.TaskTagDO; import cn.iocoder.yudao.module.system.dal.dataobject.tasktag.TaskTagDO;
import com.baomidou.mybatisplus.annotation.TableField; import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@ -15,7 +16,6 @@ import lombok.*;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.*; import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*; import com.alibaba.excel.annotation.*;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
@ -27,14 +27,12 @@ import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
public class TaskInfoRespVO { public class TaskInfoRespVO {
@Schema(description = "任务ID,主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4541") @Schema(description = "任务ID,主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4541")
@ExcelProperty("任务ID,主键")
private Long id; private Long id;
private Integer reverseStauts; private Integer reverseStauts;
//任务编号 //任务编号
@Schema(description = "任务编号", example = "你猜") @Schema(description = "任务编号", example = "你猜")
@ExcelProperty("任务编号")
private String taskNumber; private String taskNumber;
@Schema(description = "任务标题", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "任务标题", requiredMode = Schema.RequiredMode.REQUIRED)
@ -54,7 +52,6 @@ public class TaskInfoRespVO {
@DictFormat("task_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 @DictFormat("task_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer taskType; private Integer taskType;
@Schema(description = "任务优先级", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "任务优先级", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("任务优先级") @ExcelProperty("任务优先级")
private Integer priority; private Integer priority;
@ -146,4 +143,7 @@ public class TaskInfoRespVO {
//任务类型名称 //任务类型名称
private String taskTypeName; private String taskTypeName;
//文件列表
private List<InfraFileInfoDTO> fileList;
} }

3
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/taskinfo/vo/TaskInfoSaveReqVO.java

@ -84,4 +84,7 @@ public class TaskInfoSaveReqVO {
@Schema(defaultValue = "企业集合") @Schema(defaultValue = "企业集合")
private List<Long> enterpriseIds; private List<Long> enterpriseIds;
@Schema(description = "文件id", example = "26433")
private Long[] fileIds;
} }

39
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java

@ -13,9 +13,13 @@ import cn.iocoder.yudao.module.system.convert.user.UserConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.dal.dataobject.userAuditlog.UserAuditLogDO; import cn.iocoder.yudao.module.system.dal.dataobject.userAuditlog.UserAuditLogDO;
import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleMapper;
import cn.iocoder.yudao.module.system.dal.mysql.userAuditlog.UserAuditLogMapper; import cn.iocoder.yudao.module.system.dal.mysql.userAuditlog.UserAuditLogMapper;
import cn.iocoder.yudao.module.system.enums.common.SexEnum; import cn.iocoder.yudao.module.system.enums.common.SexEnum;
import cn.iocoder.yudao.module.system.service.dept.DeptService; import cn.iocoder.yudao.module.system.service.dept.DeptService;
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
import cn.iocoder.yudao.module.system.service.permission.RoleService;
import cn.iocoder.yudao.module.system.service.taglibrary.TagLibraryService;
import cn.iocoder.yudao.module.system.service.user.AdminUserService; import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -34,6 +38,7 @@ import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@ -49,8 +54,11 @@ public class UserController {
private AdminUserService userService; private AdminUserService userService;
@Resource @Resource
private DeptService deptService; private DeptService deptService;
@Resource
private PermissionService permissionService;
@Resource @Resource
private UserAuditLogMapper userAuditLogMapper; private TagLibraryService tagLibraryService;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "新增用户") @Operation(summary = "新增用户")
@ -107,23 +115,19 @@ public class UserController {
@PreAuthorize("@ss.hasPermission('system:user:query')") @PreAuthorize("@ss.hasPermission('system:user:query')")
public CommonResult<PageResult<UserRespVO>> getUserPage(@Valid UserPageReqVO pageReqVO) { public CommonResult<PageResult<UserRespVO>> getUserPage(@Valid UserPageReqVO pageReqVO) {
// 获得用户分页列表 // 获得用户分页列表
PageResult<AdminUserDO> pageResult = userService.getUserPage(pageReqVO); PageResult<AdminUserDO> pageResult = userService.getUserPage(pageReqVO);
if (CollUtil.isEmpty(pageResult.getList())) { if (CollUtil.isEmpty(pageResult.getList())) {
return success(new PageResult<>(pageResult.getTotal())); return success(new PageResult<>(pageResult.getTotal()));
} }
pageResult.getList().forEach(item->{ pageResult.getList().forEach(item->{
if (item.getAudit() == 3) { final List<String> roleListByUserId = permissionService.getRoleListByUserId(item.getId());
LambdaQueryWrapper<UserAuditLogDO> wrapper = new LambdaQueryWrapper<>(); if (!roleListByUserId.isEmpty()) {
wrapper.eq(UserAuditLogDO::getUserId, item.getId()); item.setRoleList(String.join(",", roleListByUserId));
wrapper.orderByDesc(UserAuditLogDO::getCreateTime);
wrapper.last("limit 1");
UserAuditLogDO userAuditLogDO = userAuditLogMapper.selectOne(wrapper);
item.setContent(userAuditLogDO.getContent());
} }
}); });
// 拼接数据 // 拼接数据
Map<Long, DeptDO> deptMap = deptService.getDeptMap( Map<Long, DeptDO> deptMap = deptService.getDeptMap(
convertList(pageResult.getList(), AdminUserDO::getDeptId)); convertList(pageResult.getList(), AdminUserDO::getDeptId));
@ -180,7 +184,8 @@ public class UserController {
} }
// 拼接数据 // 拼接数据
DeptDO dept = deptService.getDept(user.getDeptId()); DeptDO dept = deptService.getDept(user.getDeptId());
return success(UserConvert.INSTANCE.convert(user, dept)); final List<Long> roleIdListByUserId = permissionService.getRoleIdListByUserId(user.getId());
return success(UserConvert.INSTANCE.convert(user, dept, roleIdListByUserId));
} }
@GetMapping("/export") @GetMapping("/export")
@ -194,8 +199,16 @@ public class UserController {
// 输出 Excel // 输出 Excel
Map<Long, DeptDO> deptMap = deptService.getDeptMap( Map<Long, DeptDO> deptMap = deptService.getDeptMap(
convertList(list, AdminUserDO::getDeptId)); convertList(list, AdminUserDO::getDeptId));
ExcelUtils.write(response, "用户数据.xls", "数据", UserRespVO.class,
UserConvert.INSTANCE.convertList(list, deptMap)); list.stream().forEach(item-> {
final List<String> roleListByUserId = permissionService.getRoleListByUserId(item.getId());
if (!roleListByUserId.isEmpty()) {
item.setRoleList(String.join(",", roleListByUserId));
}
});
ExcelUtils.write(response, "用户数据.xls", "数据", UserExportVO.class,
UserConvert.INSTANCE.convertList2(list, deptMap));
} }
@GetMapping("/get-import-template") @GetMapping("/get-import-template")
@ -233,7 +246,7 @@ public class UserController {
return success(true); return success(true);
} }
@PutMapping("/enterprise_manager_list") @GetMapping("/enterprise_manager_list")
@Operation(summary = "专管员列表,邀请过企业的都是专管员") @Operation(summary = "专管员列表,邀请过企业的都是专管员")
public CommonResult<List<UserDeptVO>> enterpriseManagerList() { public CommonResult<List<UserDeptVO>> enterpriseManagerList() {
return success(userService.enterpriseManagerList()); return success(userService.enterpriseManagerList());

2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserDeptVO.java

@ -6,5 +6,5 @@ import lombok.Data;
public class UserDeptVO { public class UserDeptVO {
private Long userId; private Long userId;
private String realName; private String realName;
private Long deptName; private String deptName;
} }

49
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserExportVO.java

@ -0,0 +1,49 @@
package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class UserExportVO {
@Schema(description = "真实姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("真实姓名")
private String realName;
@Schema(description = "用户性别,参见 SexEnum 枚举类", example = "1")
@ExcelProperty(value = "用户性别", converter = DictConvert.class)
@DictFormat(DictTypeConstants.USER_SEX)
private Integer sex;
@Schema(description = "手机号码", example = "15601691300")
@ExcelProperty("手机号码")
private String mobile;
@Schema(description = "部门名称", example = "IT 部")
@ExcelProperty("部门名称")
private String deptName;
@Schema(description = "职位权限", example = "IT 部")
@ExcelProperty("职位权限")
private String roleList;
@Schema(description = "状态,参见 CommonStatusEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty(value = "帐号状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.USER_AUDIT_TYPE)
private Integer audit;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "最后登录时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
@ExcelProperty("最后登录时间")
private LocalDateTime loginDate;
}

2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageReqVO.java

@ -19,7 +19,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class UserPageReqVO extends PageParam { public class UserPageReqVO extends PageParam {
@Schema(description = "用户账号,模糊匹配", example = "yudao") @Schema(description = "真实姓名,模糊匹配", example = "yudao")
private String username; private String username;
@Schema(description = "真实姓名,模糊匹配", example = "张三") @Schema(description = "真实姓名,模糊匹配", example = "张三")

7
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserRespVO.java

@ -9,6 +9,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import java.util.Set; import java.util.Set;
@Schema(description = "管理后台 - 用户信息 Response VO") @Schema(description = "管理后台 - 用户信息 Response VO")
@ -84,4 +85,10 @@ public class UserRespVO{
@Schema(description = "用户类型", example = "1") @Schema(description = "用户类型", example = "1")
private Integer userType; private Integer userType;
@Schema(description = "职位", example = "1")
private String roleList;
@Schema(description = "职位id列表", example = "1")
private List<Long> roleIds;
} }

11
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSaveReqVO.java

@ -34,6 +34,11 @@ public class UserSaveReqVO {
@DiffLogField(name = "用户昵称") @DiffLogField(name = "用户昵称")
private String nickname; private String nickname;
@Schema(description = "真实姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@Size(max = 30, message = "用户昵称长度不能超过30个字符")
@DiffLogField(name = "真实姓名")
private String realName;
@Schema(description = "备注", example = "我是一个用户") @Schema(description = "备注", example = "我是一个用户")
@DiffLogField(name = "备注") @DiffLogField(name = "备注")
private String remark; private String remark;
@ -49,6 +54,12 @@ public class UserSaveReqVO {
@DiffLogField(name = "岗位", function = PostParseFunction.NAME) @DiffLogField(name = "岗位", function = PostParseFunction.NAME)
private Set<Long> postIds; private Set<Long> postIds;
@Schema(description = "职位id列表", example = "1")
private Set<Long> roleIds;
@Schema(description = "审核", example = "1")
private Integer audit;
@Schema(description = "用户邮箱", example = "yudao@iocoder.cn") @Schema(description = "用户邮箱", example = "yudao@iocoder.cn")
@Email(message = "邮箱格式不正确") @Email(message = "邮箱格式不正确")
@Size(max = 50, message = "邮箱长度不能超过 50 个字符") @Size(max = 50, message = "邮箱长度不能超过 50 个字符")

37
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/enterprise/EnterpriseConvert.java

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.system.convert.enterprise;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.controller.admin.enterprise.vo.EnterpriseExportVO;
import cn.iocoder.yudao.module.system.dal.dataobject.enterprise.EnterpriseDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Mapper
public interface EnterpriseConvert {
EnterpriseConvert INSTANCE = Mappers.getMapper(EnterpriseConvert.class);
default List<EnterpriseExportVO> convertList(List<EnterpriseDO> list) {
List<EnterpriseExportVO> enterpriseExportVOS = new ArrayList<>();
if (!list.isEmpty()) {
list.forEach(item-> {
EnterpriseExportVO enterpriseExportVO = new EnterpriseExportVO();
BeanUtils.copyProperties(item,enterpriseExportVO);
if (item.getTagListName() != null) {
final Set<String> collect = item.getTagListName().stream().map(tag -> tag.getLabel()).collect(Collectors.toSet());
enterpriseExportVO.setType(String.join("," , collect));
}
enterpriseExportVO.setInviterDeptAndName(item.getInviterName() +" | "+ item.getInviterNameDept());
enterpriseExportVO.setTime(item.getCreateTime().toString());
enterpriseExportVOS.add(enterpriseExportVO);
});
}
return enterpriseExportVOS;
}
}

34
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/taskInfo/TaskInfoConvert.java

@ -0,0 +1,34 @@
package cn.iocoder.yudao.module.system.convert.taskInfo;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.controller.admin.taskinfo.vo.TaskInfoRespExcelVO;
import cn.iocoder.yudao.module.system.dal.dataobject.taskinfo.TaskInfoDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.ArrayList;
import java.util.List;
@Mapper
public interface TaskInfoConvert {
TaskInfoConvert INSTANCE = Mappers.getMapper(TaskInfoConvert.class);
default List<TaskInfoRespExcelVO> convertList(List<TaskInfoDO> list) {
List<TaskInfoRespExcelVO> taskInfoRespExcelVOS = new ArrayList<>();
if (!list.isEmpty()) {
list.forEach(item->{
TaskInfoRespExcelVO taskInfoRespExcelVO = new TaskInfoRespExcelVO();
BeanUtils.copyProperties(item,taskInfoRespExcelVO);
final long count = item.getEnterpriseIdes().stream().map(enterpriseDO -> enterpriseDO.getType()).distinct().count();
taskInfoRespExcelVO.setInspectionsObject(count + " 个区域, " + item.getEnterpriseIdes().size() + " 家企业");
taskInfoRespExcelVO.setTime(item.getStartDate().toString() + item.getExecCycle());
taskInfoRespExcelVOS.add(taskInfoRespExcelVO);
});
}
return taskInfoRespExcelVOS;
}
}

36
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/user/UserConvert.java

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.system.convert.user; package cn.iocoder.yudao.module.system.convert.user;
import cn.hutool.core.bean.BeanUtil;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@ -7,6 +8,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSimpleRe
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostSimpleRespVO; import cn.iocoder.yudao.module.system.controller.admin.dept.vo.post.PostSimpleRespVO;
import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleSimpleRespVO; import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleSimpleRespVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileRespVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileRespVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserExportVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserRespVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserRespVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSimpleRespVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSimpleRespVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
@ -14,9 +16,12 @@ import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
import cn.iocoder.yudao.module.system.dal.dataobject.social.SocialUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.social.SocialUserDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -25,10 +30,27 @@ public interface UserConvert {
UserConvert INSTANCE = Mappers.getMapper(UserConvert.class); UserConvert INSTANCE = Mappers.getMapper(UserConvert.class);
default List<UserRespVO> convertList(List<AdminUserDO> list, Map<Long, DeptDO> deptMap) { default List<UserRespVO> convertList(List<AdminUserDO> list, Map<Long, DeptDO> deptMap) {
return CollectionUtils.convertList(list, user -> convert(user, deptMap.get(user.getDeptId()))); return CollectionUtils.convertList(list, user -> convert(user, deptMap.get(user.getDeptId())));
} }
default List<UserExportVO> convertList2(List<AdminUserDO> list, Map<Long, DeptDO> deptMap) {
List<UserRespVO> userRespVOS = CollectionUtils.convertList(list, user -> {
DeptDO dept = deptMap.get(user.getDeptId());
return convert(user, dept); // 确保convert能处理dept为null的情况
});
List<UserExportVO> userExportVOs = new ArrayList<>();
for (UserRespVO respVO : userRespVOS) {
UserExportVO exportVO = new UserExportVO();
BeanUtil.copyProperties(respVO, exportVO);
userExportVOs.add(exportVO);
}
return userExportVOs;
}
default UserRespVO convert(AdminUserDO user, DeptDO dept) { default UserRespVO convert(AdminUserDO user, DeptDO dept) {
UserRespVO userVO = BeanUtils.toBean(user, UserRespVO.class); UserRespVO userVO = BeanUtils.toBean(user, UserRespVO.class);
if (dept != null) { if (dept != null) {
@ -37,6 +59,20 @@ public interface UserConvert {
return userVO; return userVO;
} }
default UserRespVO convert(AdminUserDO user, DeptDO dept, List<Long> roleIds) {
UserRespVO userVO = BeanUtils.toBean(user, UserRespVO.class);
if (dept != null) {
userVO.setDeptName(dept.getName());
}
if (roleIds != null) {
userVO.setRoleIds(roleIds);
}
return userVO;
}
default List<UserSimpleRespVO> convertSimpleList(List<AdminUserDO> list, Map<Long, DeptDO> deptMap) { default List<UserSimpleRespVO> convertSimpleList(List<AdminUserDO> list, Map<Long, DeptDO> deptMap) {
return CollectionUtils.convertList(list, user -> { return CollectionUtils.convertList(list, user -> {
UserSimpleRespVO userVO = BeanUtils.toBean(user, UserSimpleRespVO.class); UserSimpleRespVO userVO = BeanUtils.toBean(user, UserSimpleRespVO.class);

2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/airqualitycollection/QualityCollectionDO.java

@ -36,6 +36,8 @@ public class QualityCollectionDO extends BaseDO {
* 城市 * 城市
*/ */
private String city; private String city;
private String time;
/** /**
* 数据类型 * 数据类型
* *

3
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/enterprise/EnterpriseDO.java

@ -110,4 +110,7 @@ public class EnterpriseDO extends BaseDO {
@TableField(exist = false) @TableField(exist = false)
private List<LabelValueVO> tagListName; private List<LabelValueVO> tagListName;
@TableField(exist = false)
private Long count;
} }

4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/taskinfo/TaskInfoDO.java

@ -58,7 +58,6 @@ public class TaskInfoDO extends BaseDO {
*/ */
private Integer taskType; private Integer taskType;
/** /**
* 任务优先级 * 任务优先级
*/ */
@ -126,4 +125,7 @@ public class TaskInfoDO extends BaseDO {
@TableField(exist = false) @TableField(exist = false)
private Long inspectionsId; private Long inspectionsId;
@TableField(exist = false)
private Long count;
} }

10
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java

@ -112,8 +112,14 @@ public class AdminUserDO extends TenantBaseDO {
//审核状态 //审核状态
private Integer audit; private Integer audit;
//审核状态 //角色名称合集
@TableField(exist = false)
private String roleList;
//审核名称
@TableField(exist = false) @TableField(exist = false)
private String content; private String auditName;
} }

21
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/airqualitycollection/QualityCollectionMapper.java

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.system.dal.mysql.airqualitycollection; package cn.iocoder.yudao.module.system.dal.mysql.airqualitycollection;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -18,21 +19,37 @@ import cn.iocoder.yudao.module.system.controller.admin.airqualitycollection.vo.*
public interface QualityCollectionMapper extends BaseMapperX<QualityCollectionDO> { public interface QualityCollectionMapper extends BaseMapperX<QualityCollectionDO> {
default PageResult<QualityCollectionDO> selectPage(QualityCollectionPageReqVO reqVO) { default PageResult<QualityCollectionDO> selectPage(QualityCollectionPageReqVO reqVO) {
if (reqVO.getTimes() == null) {
String[] times = new String[2];
// 获取当前日期
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
times[1] = sdf.format(calendar.getTime());
calendar.set(Calendar.MONTH, Calendar.JANUARY);
calendar.set(Calendar.DAY_OF_MONTH, 1);
times[0] = sdf.format(calendar.getTime());
reqVO.setTimes(times);
}
return selectPage(reqVO, new LambdaQueryWrapperX<QualityCollectionDO>() return selectPage(reqVO, new LambdaQueryWrapperX<QualityCollectionDO>()
.likeIfPresent(QualityCollectionDO::getSiteName, reqVO.getSiteName()) .likeIfPresent(QualityCollectionDO::getSiteName, reqVO.getSiteName())
.eqIfPresent(QualityCollectionDO::getCity, reqVO.getCity()) .eqIfPresent(QualityCollectionDO::getCity, reqVO.getCity())
.eqIfPresent(QualityCollectionDO::getType, reqVO.getType())
.eqIfPresent(QualityCollectionDO::getPm25, reqVO.getPm25()) .eqIfPresent(QualityCollectionDO::getPm25, reqVO.getPm25())
.eqIfPresent(QualityCollectionDO::getPm10, reqVO.getPm10()) .eqIfPresent(QualityCollectionDO::getPm10, reqVO.getPm10())
.eqIfPresent(QualityCollectionDO::getSo2, reqVO.getSo2()) .eqIfPresent(QualityCollectionDO::getSo2, reqVO.getSo2())
.eqIfPresent(QualityCollectionDO::getNo2, reqVO.getNo2()) .eqIfPresent(QualityCollectionDO::getNo2, reqVO.getNo2())
.eqIfPresent(QualityCollectionDO::getNo, reqVO.getNo()) .eqIfPresent(QualityCollectionDO::getNo, reqVO.getNo())
.eqIfPresent(QualityCollectionDO::getNox, reqVO.getNOx()) .eqIfPresent(QualityCollectionDO::getNox, reqVO.getNox())
.eqIfPresent(QualityCollectionDO::getCo, reqVO.getCo()) .eqIfPresent(QualityCollectionDO::getCo, reqVO.getCo())
.eqIfPresent(QualityCollectionDO::getO3, reqVO.getO3()) .eqIfPresent(QualityCollectionDO::getO3, reqVO.getO3())
.eqIfPresent(QualityCollectionDO::getRemark, reqVO.getRemark()) .eqIfPresent(QualityCollectionDO::getRemark, reqVO.getRemark())
.eqIfPresent(QualityCollectionDO::getRemark2, reqVO.getRemark2()) .eqIfPresent(QualityCollectionDO::getRemark2, reqVO.getRemark2())
.betweenIfPresent(QualityCollectionDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(QualityCollectionDO::getCreateTime, reqVO.getCreateTime())
.apply(reqVO.getType() == 2, "DATE_FORMAT(time, '%i') = '00'")
.apply(reqVO.getTimes() != null && reqVO.getTimes().length >= 2, "DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') >= {0}", reqVO.getTimes()[0])
.apply(reqVO.getTimes() != null && reqVO.getTimes().length >= 2,"DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') <= {0}", reqVO.getTimes()[1])
.orderByDesc(QualityCollectionDO::getId)); .orderByDesc(QualityCollectionDO::getId));
} }

19
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/bigviewdata/BigViewDataMapper.java

@ -1,9 +1,7 @@
package cn.iocoder.yudao.module.system.dal.mysql.bigviewdata; package cn.iocoder.yudao.module.system.dal.mysql.bigviewdata;
import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.BigViewGroupCountCompareVO; import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.*;
import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.BigViewQOQVO; import cn.iocoder.yudao.module.system.controller.admin.home.vo.EnterpriseNumVO;
import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.NameCountVO;
import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.StatusCountVO;
import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeSelectVO; import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeSelectVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options; import org.apache.ibatis.annotations.Options;
@ -25,16 +23,21 @@ public interface BigViewDataMapper {
/* /*
根据任务类型分组 根据任务类型分组
*/ */
List<NameCountVO> selectTaskTypeGroupCount(HomeSelectVO homeSelectVO); List<LeftFirstDataVO> selectTaskTypeGroupCount(HomeSelectVO homeSelectVO);
/* /*
执法和任务分组统计 执法和任务分组统计`
*/ */
List<StatusCountVO> getInspectionsTaskGroupCount(HomeSelectVO homeSelectVO); List<MonthTaskInspectionVO> getInspectionsTaskGroupCount(HomeSelectVO homeSelectVO);
/* /*
执法和任务分组统计同比 执法和任务分组统计同比
*/ */
List<BigViewGroupCountCompareVO> getInspectionsTaskGroupCountCompare(BigViewQOQVO bigViewQOQVO); List<BigViewGroupCountCompareVO> getInspectionsTaskGroupCountCompare();
//区域内任务统计
List<TaskCountVO> getTaskCount(HomeSelectVO homeSelectVO);
List<RightThirdDataVO> getRightThird(HomeSelectVO homeSelectVO);
} }

1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/enterprise/EnterpriseMapper.java

@ -28,7 +28,6 @@ public interface EnterpriseMapper extends BaseMapperX<EnterpriseDO> {
return selectPage(reqVO, new LambdaQueryWrapperX<EnterpriseDO>() return selectPage(reqVO, new LambdaQueryWrapperX<EnterpriseDO>()
.eqIfPresent(EnterpriseDO::getDepartmentId, reqVO.getDepartmentId()) .eqIfPresent(EnterpriseDO::getDepartmentId, reqVO.getDepartmentId())
.eqIfPresent(EnterpriseDO::getUserId, reqVO.getUserId()) .eqIfPresent(EnterpriseDO::getUserId, reqVO.getUserId())
.eqIfPresent(EnterpriseDO::getType, reqVO.getType())
.eqIfPresent(EnterpriseDO::getRegion, reqVO.getRegion()) .eqIfPresent(EnterpriseDO::getRegion, reqVO.getRegion())
.likeIfPresent(EnterpriseDO::getEnterprisesName, reqVO.getEnterprisesName()) .likeIfPresent(EnterpriseDO::getEnterprisesName, reqVO.getEnterprisesName())
.eqIfPresent(EnterpriseDO::getAddress, reqVO.getAddress()) .eqIfPresent(EnterpriseDO::getAddress, reqVO.getAddress())

7
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/enterpriseinspections/EnterpriseInspectionsMapper.java

@ -6,8 +6,13 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.system.dal.dataobject.enterpriseinspections.EnterpriseInspectionsDO; import cn.iocoder.yudao.module.system.dal.dataobject.enterpriseinspections.EnterpriseInspectionsDO;
import cn.iocoder.yudao.module.system.dal.dataobject.inspectionslog.InspectionsLogDO;
import cn.iocoder.yudao.module.system.dal.dataobject.taskinfo.TaskInfoDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.system.controller.admin.enterpriseinspections.vo.*; import cn.iocoder.yudao.module.system.controller.admin.enterpriseinspections.vo.*;
import org.apache.ibatis.annotations.Param;
/** /**
* 企业检查记录表用于记录与企业相关的环保检查信息 Mapper * 企业检查记录表用于记录与企业相关的环保检查信息 Mapper
@ -52,5 +57,7 @@ public interface EnterpriseInspectionsMapper extends BaseMapperX<EnterpriseInspe
//整改数据 //整改数据
List<EnterpriseInspectionsCorrectionVO> inspectionsCorrectionList(); List<EnterpriseInspectionsCorrectionVO> inspectionsCorrectionList();
//整改数据
IPage<InspectionByEnterpriseIdVO> inspectionsByEnterpriseId(Page<InspectionsLogDO> page, @Param("params") EnterpriseInspectionsPageReqVO pageReqVO);
} }

2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/UserRoleMapper.java

@ -4,9 +4,11 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Set;
@Mapper @Mapper
public interface UserRoleMapper extends BaseMapperX<UserRoleDO> { public interface UserRoleMapper extends BaseMapperX<UserRoleDO> {

2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java

@ -39,6 +39,8 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
.inIfPresent(AdminUserDO::getId, userIds) .inIfPresent(AdminUserDO::getId, userIds)
.inIfPresent(AdminUserDO::getAudit, reqVO.getAudit()) .inIfPresent(AdminUserDO::getAudit, reqVO.getAudit())
.inIfPresent(AdminUserDO::getUserType, reqVO.getUserType()) .inIfPresent(AdminUserDO::getUserType, reqVO.getUserType())
.isNotNull(AdminUserDO::getAudit)
.isNotNull(AdminUserDO::getRealName)
.orderByDesc(AdminUserDO::getId)); .orderByDesc(AdminUserDO::getId));
} }

4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/InspectionsSendStartMessageJob.java

@ -67,7 +67,7 @@ public class InspectionsSendStartMessageJob implements JobHandler {
Map<String, Object> templateParams = new HashMap<>(); Map<String, Object> templateParams = new HashMap<>();
templateParams.put("title", enterpriseService.getEnterprise(item.getEnterpriseId()).getEnterprisesName()); templateParams.put("title", enterpriseService.getEnterprise(item.getEnterpriseId()).getEnterprisesName());
templateParams.put("endTime", DateUtil.format(inspectionsLogNew.getCorrectionTime(), DateUtils.FORMAT_YEAR_MONTH_DAY)); templateParams.put("endTime", DateUtil.format(inspectionsLogNew.getCorrectionTime(), DateUtils.FORMAT_YEAR_MONTH_DAY));
templateParams.put("url", "/sub/task/record?taskId="+item.getTaskId() +"&recordId=" + item.getEnterpriseId() +"&enterpriseId=" + item.getEnterpriseId()); templateParams.put("url", "sub/task/record?taskId="+item.getTaskId() +"&recordId=" + item.getEnterpriseId() +"&enterpriseId=" + item.getEnterpriseId());
notifyMessage.setTemplateParams(templateParams); notifyMessage.setTemplateParams(templateParams);
notifyMessageSendApi.sendSingleMessageToAdmin(notifyMessage); notifyMessageSendApi.sendSingleMessageToAdmin(notifyMessage);
@ -77,7 +77,7 @@ public class InspectionsSendStartMessageJob implements JobHandler {
SocialWxaSubscribeMessageSendReqDTO reqDTO = new SocialWxaSubscribeMessageSendReqDTO(); SocialWxaSubscribeMessageSendReqDTO reqDTO = new SocialWxaSubscribeMessageSendReqDTO();
reqDTO.setUserType(1); reqDTO.setUserType(1);
reqDTO.setTemplateTitle("问题整改通知"); reqDTO.setTemplateTitle("问题整改通知");
reqDTO.setPage("sub/inspection/detail?id=" + item.getInspectionsId()); reqDTO.setPage("/sub/inspection/detail?id=" + item.getInspectionsId());
reqDTO.setUserId(Long.valueOf(item.getCreator())); reqDTO.setUserId(Long.valueOf(item.getCreator()));
Map<String, String> message = new HashMap<>(); Map<String, String> message = new HashMap<>();
message.put("thing5", enterprise.getEnterprisesName()); message.put("thing5", enterprise.getEnterprisesName());

8
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/QualificationTimeOutSendStartMessageJob.java

@ -53,18 +53,19 @@ public class QualificationTimeOutSendStartMessageJob implements JobHandler {
if (item.getEnterpriseName() != null && item.getExpiryDate() != null) { if (item.getEnterpriseName() != null && item.getExpiryDate() != null) {
SocialWxaSubscribeMessageSendReqDTO reqDTO = new SocialWxaSubscribeMessageSendReqDTO(); SocialWxaSubscribeMessageSendReqDTO reqDTO = new SocialWxaSubscribeMessageSendReqDTO();
reqDTO.setUserType(1); reqDTO.setUserType(1);
reqDTO.setTemplateTitle("证书到期通知"); reqDTO.setTemplateTitle("资质临期提醒");
reqDTO.setPage("sub/enterprise/detail?id="+item.getEnterpriseId()); reqDTO.setPage("sub/enterprise/detail?id="+item.getEnterpriseId());
reqDTO.setUserId(item.getUserId()); reqDTO.setUserId(item.getUserId());
Map<String, String> message = new HashMap<>(); Map<String, String> message = new HashMap<>();
message.put("thing1", StringUtil.truncateString(enterpriseQua.getLabel(), 15)); message.put("thing1", StringUtil.truncateString(enterpriseQua.getLabel(), 15));
message.put("thing2", StringUtil.truncateString(item.getEnterpriseName(), 15)); message.put("thing2", StringUtil.truncateString(item.getEnterpriseName(), 15));
message.put("time4", DateUtil.format(item.getExpiryDate(), DateUtils.FORMAT_YEAR_MONTH_DAY)); message.put("time3", DateUtil.format(item.getExpiryDate(), DateUtils.FORMAT_YEAR_MONTH_DAY));
message.put("phrase3", "到期");
reqDTO.setMessages(message); reqDTO.setMessages(message);
socialClientApi.sendWxaSubscribeMessage(reqDTO); socialClientApi.sendWxaSubscribeMessage(reqDTO);
} }
//TODO 给企业用户发送消息
} }
catch (Exception e){ catch (Exception e){
log.error("任务发送通知错误:",e.toString()); log.error("任务发送通知错误:",e.toString());
@ -82,7 +83,6 @@ public class QualificationTimeOutSendStartMessageJob implements JobHandler {
notifyMessageSendApi.sendSingleMessageToAdmin(notifyMessage); notifyMessageSendApi.sendSingleMessageToAdmin(notifyMessage);
}); });
} }
return "发送整个信息成功"; return "发送整个信息成功";
} }
} }

6
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/TaskSendStartMessageJob.java

@ -59,9 +59,9 @@ public class TaskSendStartMessageJob implements JobHandler {
reqDTO.setUserId(x.getUserId()); reqDTO.setUserId(x.getUserId());
Map<String, String> message = new HashMap<>(); Map<String, String> message = new HashMap<>();
message.put("thing2", StringUtil.truncateString(beforeTaskInfo.getTitle(), 15)); message.put("thing2", StringUtil.truncateString(beforeTaskInfo.getTitle(), 15));
message.put("time3", DateUtil.format(beforeTaskInfo.getStartDate().atStartOfDay(), DateUtils.FORMAT_YEAR_MONTH_DAY)); message.put("time5", DateUtil.format(beforeTaskInfo.getStartDate().atStartOfDay(), DateUtils.FORMAT_YEAR_MONTH_DAY));
message.put("thing4", StringUtil.truncateString(beforeTaskInfo.getDescription(), 15)); message.put("thing4", StringUtil.truncateString(beforeTaskInfo.getDescription(), 15));
message.put("time5", DateUtil.format(beforeTaskInfo.getEndDate().atStartOfDay(), DateUtils.FORMAT_YEAR_MONTH_DAY)); message.put("time3", DateUtil.format(beforeTaskInfo.getEndDate().atStartOfDay(), DateUtils.FORMAT_YEAR_MONTH_DAY));
reqDTO.setMessages(message); reqDTO.setMessages(message);
socialClientApi.sendWxaSubscribeMessage(reqDTO); socialClientApi.sendWxaSubscribeMessage(reqDTO);
} }
@ -89,7 +89,7 @@ public class TaskSendStartMessageJob implements JobHandler {
templateParams.put("title", beforeTaskInfo.getTitle()); templateParams.put("title", beforeTaskInfo.getTitle());
templateParams.put("startTime", DateUtil.format(beforeTaskInfo.getStartDate().atStartOfDay(), DateUtils.FORMAT_YEAR_MONTH_DAY)); templateParams.put("startTime", DateUtil.format(beforeTaskInfo.getStartDate().atStartOfDay(), DateUtils.FORMAT_YEAR_MONTH_DAY));
templateParams.put("endTime", DateUtil.format(beforeTaskInfo.getEndDate().atStartOfDay(), DateUtils.FORMAT_YEAR_MONTH_DAY) ); templateParams.put("endTime", DateUtil.format(beforeTaskInfo.getEndDate().atStartOfDay(), DateUtils.FORMAT_YEAR_MONTH_DAY) );
templateParams.put("url", "sub/task/detail?id="+ enterpriseInspectionsDO.getTaskId()); templateParams.put("url", "/sub/task/detail?id="+ enterpriseInspectionsDO.getTaskId());
notifyMessage.setTemplateParams(templateParams); notifyMessage.setTemplateParams(templateParams);
notifyMessageSendApi.sendSingleMessageToAdmin(notifyMessage); notifyMessageSendApi.sendSingleMessageToAdmin(notifyMessage);

4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/airqualitycollection/QualityCollectionService.java

@ -53,5 +53,7 @@ public interface QualityCollectionService {
*/ */
PageResult<QualityCollectionDO> getQualityCollectionPage(QualityCollectionPageReqVO pageReqVO); PageResult<QualityCollectionDO> getQualityCollectionPage(QualityCollectionPageReqVO pageReqVO);
void saveList(List<QualityCollectionExcelVO> list, Long type); void saveList(List<QualityCollectionExcelVO> list);
QualityCollectionDO latest();
} }

129
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/airqualitycollection/QualityCollectionServiceImpl.java

@ -1,10 +1,19 @@
package cn.iocoder.yudao.module.system.service.airqualitycollection; package cn.iocoder.yudao.module.system.service.airqualitycollection;
import cn.iocoder.yudao.module.system.dal.dataobject.taskinfo.TaskInfoDO;
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.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import cn.iocoder.yudao.module.system.controller.admin.airqualitycollection.vo.*; import cn.iocoder.yudao.module.system.controller.admin.airqualitycollection.vo.*;
import cn.iocoder.yudao.module.system.dal.dataobject.airqualitycollection.QualityCollectionDO; import cn.iocoder.yudao.module.system.dal.dataobject.airqualitycollection.QualityCollectionDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -69,22 +78,120 @@ public class QualityCollectionServiceImpl implements QualityCollectionService {
@Override @Override
public PageResult<QualityCollectionDO> getQualityCollectionPage(QualityCollectionPageReqVO pageReqVO) { public PageResult<QualityCollectionDO> getQualityCollectionPage(QualityCollectionPageReqVO pageReqVO) {
if (pageReqVO.getType() == 1 || pageReqVO.getType() == 2) {
return qualityCollectionMapper.selectPage(pageReqVO); return qualityCollectionMapper.selectPage(pageReqVO);
} }
QueryWrapper<QualityCollectionDO> wrapper = new QueryWrapper<>();
wrapper.select(
getTimeExpression(pageReqVO.getType()) + " as time",
"ROUND(AVG(pm25), 1) as pm25",
"ROUND(AVG(pm10), 1) as pm10",
"ROUND(AVG(so2), 1) as so2",
"ROUND(AVG(no2), 1) as no2",
"ROUND(AVG(no), 1) as no",
"ROUND(AVG(nox), 1) as nox",
"ROUND(AVG(co), 1) as co",
"ROUND(AVG(03), 1) as o3",
"site_name as siteName"
);
wrapper.like(pageReqVO.getSiteName() != null,"site_name", pageReqVO.getSiteName());
wrapper.groupBy(getTimeExpression(pageReqVO.getType()), "site_name");
if (pageReqVO.getTimes() != null && pageReqVO.getTimes().length >= 2) {
wrapper.apply("DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') >= {0}", pageReqVO.getTimes()[0]);
wrapper.apply("DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') <= {0}", pageReqVO.getTimes()[1]);
}
wrapper.orderByAsc("time");
// 执行分页查询(关键变更点)
Page<QualityCollectionDO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
IPage<QualityCollectionDO> iPage = qualityCollectionMapper.selectPage(page, wrapper);
return new PageResult<>(iPage.getRecords(), iPage.getTotal());
}
private String getTimeExpression(Integer type) {
switch (type) {
case 3:
return "DATE(time)";
case 4:
return "DATE_SUB(\n" +
" STR_TO_DATE(CONCAT(YEARWEEK(time, 3), ' Monday'), '%X%V %W'), \n" +
" INTERVAL WEEKDAY(STR_TO_DATE(CONCAT(YEARWEEK(time, 3), ' Monday'), '%X%V %W')) DAY\n" +
" )";
case 5:
return "DATE_FORMAT(time, '%Y-%m')";
case 6:
return "CONCAT(YEAR(time), '-', QUARTER(time))";
case 7:
return "YEAR(time)";
default:
throw new IllegalArgumentException("无效的时间粒度");
}
}
@Override
@Transactional(rollbackFor = Exception.class) // 添加事务控制
public void saveList(List<QualityCollectionExcelVO> list) {
if (CollectionUtils.isEmpty(list)) return;
// 1. 提取所有待校验的 (siteName + time) 组合
Set<String> uniqueKeys = list.stream()
.map(vo -> vo.getSiteName() + "|" + vo.getTime())
.collect(Collectors.toSet());
// 2. 批量查询已存在的记录 (一次查询代替N次查询)
QueryWrapper<QualityCollectionDO> wrapper = new QueryWrapper<>();
wrapper.select("site_name", "time");
wrapper.in(
"CONCAT(site_name, '|', time)",
uniqueKeys.stream().collect(Collectors.toList())
);
List<QualityCollectionDO> existList = qualityCollectionMapper.selectList(wrapper);
// 3. 构建已存在的唯一键缓存
Set<String> existKeys = existList.stream().map(item -> item.getSiteName() + "|" + item.getTime()).collect(Collectors.toSet());
//数据清洗
final List<QualityCollectionExcelVO> collect = list.stream()
.filter(vo -> isValidNumber(vo.getPm25()) && isValidNumber(vo.getPm10()) && isValidNumber(vo.getSo2()) && isValidNumber(vo.getNo2()) && isValidNumber(vo.getNo()) && isValidNumber(vo.getNox()) && isValidNumber(vo.getCo()) && isValidNumber(vo.getO3()))
.collect(Collectors.toList());
// 4. 过滤出需要插入的新数据
List<QualityCollectionDO> newDataList = collect.stream()
.filter(vo -> !existKeys.contains(vo.getSiteName() + "|" + vo.getTime()) )
.map(vo -> {
QualityCollectionDO entity = new QualityCollectionDO();
BeanUtils.copyProperties(vo, entity);
return entity;
})
.collect(Collectors.toList());
// 5. 批量插入新数据
if (!CollectionUtils.isEmpty(newDataList)) {
qualityCollectionMapper.insertBatch(newDataList);
}
}
@Override @Override
public void saveList(List<QualityCollectionExcelVO> list, Long type) { public QualityCollectionDO latest() {
List<QualityCollectionDO> collectionDOS = new ArrayList<>(); LambdaQueryWrapper<QualityCollectionDO> wrapper = new LambdaQueryWrapper<>();
if (!list.isEmpty()) { // 按时间降序排序后,限制只取第一条
list.forEach(item->{ wrapper.orderByDesc(QualityCollectionDO::getTime)
QualityCollectionDO collectionDO = new QualityCollectionDO(); .last("LIMIT 1"); // 关键:强制只返回一条数据
collectionDO.setType(type); return qualityCollectionMapper.selectOne(wrapper); // 使用 selectOne()
BeanUtils.copyProperties(item, collectionDO); }
collectionDOS.add(collectionDO); private final Pattern NUMBER_PATTERN =
}); Pattern.compile("^-?\\d+(\\.\\d+)?$");
qualityCollectionMapper.insertBatch(collectionDOS);
public boolean isValidNumber(String str) {
if (str == null || str.trim().isEmpty()) {
return false;
} }
return NUMBER_PATTERN.matcher(str).matches();
} }
} }

16
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java

@ -201,6 +201,11 @@ public class AdminAuthServiceImpl implements AdminAuthService {
throw exception(USER_NOT_EXISTS); throw exception(USER_NOT_EXISTS);
} }
if (user.getUserType() != 3 || user.getAudit() != 2) {
throw exception(USER_LOGIN_ERROR);
}
// 创建 Token 令牌,记录登录日志 // 创建 Token 令牌,记录登录日志
return createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL); return createTokenAfterLoginSuccess(user.getId(), user.getUsername(), LoginLogTypeEnum.LOGIN_SOCIAL);
} }
@ -325,15 +330,6 @@ public class AdminAuthServiceImpl implements AdminAuthService {
AdminUserDO user = null; AdminUserDO user = null;
if (socialUserDO == null ) { if (socialUserDO == null ) {
// String userInfoUrl = "https://api.weixin.qq.com/sns/userinfo" +
// "?access_token=" + authUser.getToken() +
// "&openid=" + authUser.getUuid() +
// "&lang=zh_CN";
// String userInfoResponse = HttpUtil.get(userInfoUrl);
// JSONObject userInfoJson = JSONUtil.parseObj(userInfoResponse);
// String nickname = userInfoJson.getStr("nickname");
// 未找到社交用户,插入记录 // 未找到社交用户,插入记录
SocialUserDO socialUser = new SocialUserDO(); SocialUserDO socialUser = new SocialUserDO();
socialUser.setType(reqVO.getType()); socialUser.setType(reqVO.getType());
@ -368,9 +364,7 @@ public class AdminAuthServiceImpl implements AdminAuthService {
if (user == null) { if (user == null) {
throw exception(USER_NOT_EXISTS); throw exception(USER_NOT_EXISTS);
} }
user.setIsBand(true); user.setIsBand(true);
} }
return user; return user;

20
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/bigviewdata/BigViewDataService.java

@ -1,9 +1,7 @@
package cn.iocoder.yudao.module.system.service.bigviewdata; package cn.iocoder.yudao.module.system.service.bigviewdata;
import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.BigViewEnterpriseCountGroup; import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.*;
import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.BigViewGroupCountCompareVO; import cn.iocoder.yudao.module.system.controller.admin.enterprise.vo.LabelValueLongVO;
import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.NameCountVO;
import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.StatusCountVO;
import cn.iocoder.yudao.module.system.controller.admin.home.vo.EnterpriseNumVO; import cn.iocoder.yudao.module.system.controller.admin.home.vo.EnterpriseNumVO;
import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeCountResVO; import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeCountResVO;
import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeGroupCountVO; import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeGroupCountVO;
@ -13,19 +11,21 @@ import java.util.List;
public interface BigViewDataService { public interface BigViewDataService {
BigViewEnterpriseCountGroup getLeftSecond(HomeSelectVO homeSelectVO); List<LabelValueLongVO> getLeftSecond(HomeSelectVO homeSelectVO);
List<HomeGroupCountVO> getLeftThird(HomeSelectVO homeSelectVO); List<LeftThirdDataVO> getLeftThird(HomeSelectVO homeSelectVO);
List<StatusCountVO> getRightFist(HomeSelectVO homeSelectVO); List<MonthTaskInspectionVO> getRightFist(HomeSelectVO homeSelectVO);
List<NameCountVO> getRightSecond(HomeSelectVO homeSelectVO); List<NameCountVO> getRightSecond(HomeSelectVO homeSelectVO);
List<EnterpriseNumVO> getRightThird(HomeSelectVO homeSelectVO); List<RightThirdDataVO> getRightThird(HomeSelectVO homeSelectVO);
List<NameCountVO> getLeftFirst(HomeSelectVO homeSelectVO); List<LeftFirstDataVO> getLeftFirst(HomeSelectVO homeSelectVO);
List<BigViewGroupCountCompareVO> getRightFourth(HomeSelectVO homeSelectVO); List<BigViewGroupCountCompareVO> getRightFourth(HomeSelectVO homeSelectVO);
HomeCountResVO getCenter(HomeSelectVO homeSelectVO); BigViewCenterDataVO getCenter(HomeSelectVO homeSelectVO);
List<ReginCountVO> getMapData(HomeSelectVO homeSelectVO);
} }

320
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/bigviewdata/BigViewDataServiceImpl.java

@ -1,20 +1,44 @@
package cn.iocoder.yudao.module.system.service.bigviewdata; package cn.iocoder.yudao.module.system.service.bigviewdata;
import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.*; import cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.*;
import cn.iocoder.yudao.module.system.controller.admin.enterprise.vo.EnterprisePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.enterprise.vo.LabelValueLongVO;
import cn.iocoder.yudao.module.system.controller.admin.home.vo.EnterpriseNumVO; import cn.iocoder.yudao.module.system.controller.admin.home.vo.EnterpriseNumVO;
import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeCountResVO; import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeCountResVO;
import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeGroupCountVO; import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeGroupCountVO;
import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeSelectVO; import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeSelectVO;
import cn.iocoder.yudao.module.system.controller.admin.taskinfo.vo.TaskInfoPageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
import cn.iocoder.yudao.module.system.dal.dataobject.enterprise.EnterpriseDO;
import cn.iocoder.yudao.module.system.dal.dataobject.enterpriseinspections.EnterpriseInspectionsDO;
import cn.iocoder.yudao.module.system.dal.dataobject.qualification.EnterpriseQualificationDO;
import cn.iocoder.yudao.module.system.dal.dataobject.taglibrary.TagLibraryDO;
import cn.iocoder.yudao.module.system.dal.dataobject.taskinfo.TaskInfoDO;
import cn.iocoder.yudao.module.system.dal.mysql.bigviewdata.BigViewDataMapper; import cn.iocoder.yudao.module.system.dal.mysql.bigviewdata.BigViewDataMapper;
import cn.iocoder.yudao.module.system.dal.mysql.enterprise.EnterpriseMapper;
import cn.iocoder.yudao.module.system.dal.mysql.enterpriseinspections.EnterpriseInspectionsMapper;
import cn.iocoder.yudao.module.system.dal.mysql.qualification.EnterpriseQualificationMapper;
import cn.iocoder.yudao.module.system.dal.mysql.taskinfo.TaskInfoMapper; import cn.iocoder.yudao.module.system.dal.mysql.taskinfo.TaskInfoMapper;
import cn.iocoder.yudao.module.system.service.dict.DictDataService;
import cn.iocoder.yudao.module.system.service.enterprise.EnterpriseService;
import cn.iocoder.yudao.module.system.service.enterpriseinspections.EnterpriseInspectionsService;
import cn.iocoder.yudao.module.system.service.home.HomeService; import cn.iocoder.yudao.module.system.service.home.HomeService;
import cn.iocoder.yudao.module.system.service.taglibrary.TagLibraryService;
import cn.iocoder.yudao.module.system.service.taskinfo.TaskInfoService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.DayOfWeek;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.time.LocalTime;
import java.util.List; import java.time.temporal.TemporalAdjusters;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
@Service @Service
@Slf4j @Slf4j
@ -26,80 +50,281 @@ public class BigViewDataServiceImpl implements BigViewDataService {
private TaskInfoMapper taskInfoMapper; private TaskInfoMapper taskInfoMapper;
@Resource @Resource
private HomeService homeService; private HomeService homeService;
@Resource
private DictDataService dictDataService;
@Resource
private EnterpriseMapper enterpriseMapper;
@Resource
private EnterpriseInspectionsMapper enterpriseInspectionsMapper;
@Resource
private TagLibraryService tagLibraryService;
@Override @Override
public List<NameCountVO> getLeftFirst(HomeSelectVO homeSelectVO) { public List<LeftFirstDataVO> getLeftFirst(HomeSelectVO homeSelectVO) {
return bigViewDataMapper.selectTaskTypeGroupCount(homeSelectVO); return bigViewDataMapper.selectTaskTypeGroupCount(homeSelectVO);
} }
@Override @Override
public List<BigViewGroupCountCompareVO> getRightFourth(HomeSelectVO homeSelectVO) { public List<BigViewGroupCountCompareVO> getRightFourth(HomeSelectVO homeSelectVO) {
//时间范围 return bigViewDataMapper.getInspectionsTaskGroupCountCompare();
// LocalDateTime startTime = LocalDateTime.now().minusMonths(1); }
// LocalDateTime endTime = LocalDateTime.now();
// homeSelectVO.setStartTime(startTime); //企业数量
// homeSelectVO.setEndTime(endTime); public Long getEnterpriseCount(HomeSelectVO homeSelectVO) {
//
BigViewQOQVO bigViewQOQVO = new BigViewQOQVO(); QueryWrapper<EnterpriseDO> wrapper = new QueryWrapper<>();
LocalDate today = LocalDate.now(); wrapper.gt("status", 1);
bigViewQOQVO.setCurrentStartTime(today.withDayOfMonth(1).toString()); if (homeSelectVO.getSelectWeek() != null) {
bigViewQOQVO.setCurrentEndTime(today.toString()); final LocalDateTime[] week = this.getWeek(homeSelectVO);
bigViewQOQVO.setPreviousStartTime(today.withDayOfMonth(1).minusMonths(1).toString()); wrapper.between("create_time", week[0], week[1]);
bigViewQOQVO.setPreviousEndTime(today.minusMonths(1).toString()); }
return enterpriseMapper.selectCount();
}
return bigViewDataMapper.getInspectionsTaskGroupCountCompare(bigViewQOQVO); //任务数量
public Long getTaskCount(HomeSelectVO homeSelectVO) {
QueryWrapper<TaskInfoDO> wrapper = new QueryWrapper<>();
wrapper.gt("status", 1);
if (homeSelectVO.getSelectWeek() != null) {
final LocalDateTime[] week = this.getWeek(homeSelectVO);
wrapper.between("start_date", week[0], week[1]);
}
return taskInfoMapper.selectCount(wrapper);
}
//执法数量
public Long getTaskInspection(HomeSelectVO homeSelectVO) {
QueryWrapper<EnterpriseInspectionsDO> wrapper = new QueryWrapper<>();
wrapper.gt("status", 1);
if (homeSelectVO.getSelectWeek() != null) {
final LocalDateTime[] week = this.getWeek(homeSelectVO);
wrapper.between("create_time", week[0], week[1]);
}
return enterpriseInspectionsMapper.selectCount();
} }
@Override @Override
public HomeCountResVO getCenter(HomeSelectVO homeSelectVO) { public BigViewCenterDataVO getCenter(HomeSelectVO homeSelectVO) {
return homeService.appCount1(homeSelectVO); BigViewCenterDataVO result = new BigViewCenterDataVO();
result.setEnterpriseCount(this.getEnterpriseCount(homeSelectVO));
result.setTaskCount(this.getTaskCount(homeSelectVO));
result.setInspectionsCount(this.getTaskInspection(homeSelectVO));
return result;
} }
@Override @Override
public BigViewEnterpriseCountGroup getLeftSecond(HomeSelectVO homeSelectVO) { public List<ReginCountVO> getMapData(HomeSelectVO homeSelectVO) {
BigViewEnterpriseCountGroup enterpriseCountGroup = new BigViewEnterpriseCountGroup(); BigViewCenterDataVO result = new BigViewCenterDataVO();
final List<NameCountVO> nameCountVOS = bigViewDataMapper.enterpriseCountGroup(homeSelectVO); // 1. 并行获取基础统计数据
enterpriseCountGroup.setEnterpriseCountGroup(nameCountVOS); final BigViewCenterDataVO center = this.getCenter(homeSelectVO);
List<Integer> countList = new ArrayList<>();
if (nameCountVOS != null) { // 2. 获取字典数据和区域统计
nameCountVOS.forEach(item->{ List<DictDataDO> regions = dictDataService.getDictDataListByDictType("enterprises_area");
countList.add(item.getValue());
// 3. 获取企业区域分布
QueryWrapper<EnterpriseDO> enterpriseDOQueryWrapper = new QueryWrapper<>();
enterpriseDOQueryWrapper.select("region", "count(id) as count");
enterpriseDOQueryWrapper.groupBy("region");
if (homeSelectVO.getSelectWeek() != null) {
final LocalDateTime[] week = this.getWeek(homeSelectVO);
homeSelectVO.setTime(week);
enterpriseDOQueryWrapper.between("create_time", week[0], week[1]);
}
Map<String, Long> enterpriseRegionMap = enterpriseMapper.selectList(enterpriseDOQueryWrapper).stream().collect(Collectors.toMap(
EnterpriseDO::getRegion,
EnterpriseDO::getCount,
(v1, v2) -> v1
));
List<TaskCountVO> taskCounts = bigViewDataMapper.getTaskCount(homeSelectVO);
try {
// 4. 设置基础数据
Long enterpriseCount = center.getEnterpriseCount();
Long taskCount = center.getTaskCount();
Long inspectionsCount = center.getInspectionsCount();
result.setEnterpriseCount(enterpriseCount);
result.setTaskCount(taskCount);
result.setInspectionsCount(inspectionsCount);
// 5. 计算区域比率
List<ReginCountVO> regionStats = regions.stream().map(region -> {
ReginCountVO vo = new ReginCountVO();
vo.setName(region.getLabel());
vo.setLocation(region.getRemark());
vo.setEnterpriseRate(0l);
vo.setTaskRate(0l);
vo.setTaskCount(0l);
vo.setEnterpriseCount(0l);
// 计算任务比率
taskCounts.stream()
.filter(t -> region.getValue().equals(t.getRegion().toString()))
.findFirst()
.ifPresent(t -> {
if (t.getTaskCount() > 0 && taskCount > 0) {
// 计算原始比率(如 45.6)
double rawRate = (double) t.getTaskCount() / taskCount * 100;
// 四舍五入到整数
long roundedRate = Math.round(rawRate);
vo.setTaskRate(roundedRate);
vo.setTaskCount(t.getTaskCount());
} else {
// 处理无效值(根据业务需求设置默认值)
vo.setTaskRate(0l);
vo.setTaskCount(0l);
}
}); });
// 计算企业比率
Optional.ofNullable(enterpriseRegionMap.get(region.getValue()))
.ifPresent(count -> {
if (count > 0 && enterpriseCount > 0) {
// 计算原始比率(如 45.6)
double rawRate = (double) count / enterpriseCount * 100;
// 四舍五入到整数
long roundedRate = Math.round(rawRate);
vo.setEnterpriseRate(roundedRate);
vo.setEnterpriseCount(count);
} else {
// 处理无效值(根据业务需求设置默认值)
vo.setEnterpriseRate(0l);
vo.setEnterpriseCount(0L);
}
});
return vo;
}).collect(Collectors.toList());
result.setReginCountVOList(regionStats);
} catch (Exception e) {
Thread.currentThread().interrupt();
throw new RuntimeException("数据获取失败", e);
} }
final Integer count = countList.stream().reduce(Integer::sum).orElse(0);
enterpriseCountGroup.setEnterpriseCount(count);
return enterpriseCountGroup; return result.getReginCountVOList();
} }
// @Override
// public BigViewEnterpriseCountGroup getLeftSecond(HomeSelectVO homeSelectVO) {
// BigViewEnterpriseCountGroup enterpriseCountGroup = new BigViewEnterpriseCountGroup();
// final List<NameCountVO> nameCountVOS = bigViewDataMapper.enterpriseCountGroup(homeSelectVO);
// enterpriseCountGroup.setEnterpriseCountGroup(nameCountVOS);
// List<Integer> countList = new ArrayList<>();
// if (nameCountVOS != null) {
// nameCountVOS.forEach(item->{
// countList.add(item.getValue());
// });
// }
// final Integer count = countList.stream().reduce(Integer::sum).orElse(0);
// enterpriseCountGroup.setEnterpriseCount(count);
//
// return enterpriseCountGroup;
// }
@Override @Override
public List<HomeGroupCountVO> getLeftThird(HomeSelectVO homeSelectVO) { public List<LabelValueLongVO> getLeftSecond(HomeSelectVO homeSelectVO) {
return taskInfoMapper.selectHomeGroupCount(homeSelectVO); // 1. 获取标签库子项(父ID硬编码可改为动态参数)
List<TagLibraryDO> tagLibraries = tagLibraryService.childrenList(26L);
// 2. 查询任务统计结果并转换为Map: taskType -> count
Map<Integer, Long> taskTypeCountMap = taskInfoMapper.selectList(
new QueryWrapper<TaskInfoDO>()
.select("task_type AS taskType", "COUNT(*) AS count") // 优化COUNT(id)为COUNT(*)
.gt("status", 1)
.groupBy("task_type")
).stream()
.collect(Collectors.toMap(
TaskInfoDO::getTaskType,
task -> task.getCount() != null ? task.getCount() : 0L, // 处理空值
(oldVal, newVal) -> oldVal // 合并冲突策略(按需调整)
));
// 3. 合并标签与统计结果生成VO
List<LabelValueLongVO> resultList = new ArrayList<>();
for (TagLibraryDO tag : tagLibraries) {
LabelValueLongVO vo = new LabelValueLongVO();
vo.setLabel(tag.getTagName());
// 直接通过Map获取统计值,避免双重循环(O(1)查找)
vo.setValue(taskTypeCountMap.getOrDefault(tag.getId(), 0L));
resultList.add(vo);
}
return resultList;
} }
@Override @Override
public List<StatusCountVO> getRightFist(HomeSelectVO homeSelectVO) { public List<LeftThirdDataVO> getLeftThird(HomeSelectVO homeSelectVO) {
List<LeftThirdDataVO> thirdDataVOS = new ArrayList<>();
final List<ReginCountVO> mapData = this.getMapData(homeSelectVO);
mapData.forEach(item->{
LeftThirdDataVO leftThirdDataVO = new LeftThirdDataVO();
leftThirdDataVO.setName(item.getName());
if (item.getTaskCount() == 0 || item.getEnterpriseCount() == 0 ) {
leftThirdDataVO.setValue(0.0);
} else {
final double value = (double)item.getTaskCount() / item.getEnterpriseCount() * 100;
leftThirdDataVO.setValue(Math.round(value * 10) / 10.0);
}
leftThirdDataVO.setEnterpriseCount(item.getEnterpriseCount());
leftThirdDataVO.setTaskCount(item.getTaskCount());
thirdDataVOS.add(leftThirdDataVO);
});
List<LeftThirdDataVO> top5 = thirdDataVOS.stream()
.sorted(Comparator.comparingDouble(LeftThirdDataVO::getTaskCount).reversed()) // 降序排序
.limit(5) // 取前五
.collect(Collectors.toList());
return top5;
}
@Override
public List<MonthTaskInspectionVO> getRightFist(HomeSelectVO homeSelectVO) {
return bigViewDataMapper.getInspectionsTaskGroupCount(homeSelectVO); return bigViewDataMapper.getInspectionsTaskGroupCount(homeSelectVO);
} }
public LocalDateTime[] getWeek(HomeSelectVO homeSelectVO) { public LocalDateTime[] getWeek(HomeSelectVO homeSelectVO) {
if (homeSelectVO.getSelectWeek() != null) { if (homeSelectVO.getSelectWeek() != null) {
LocalDateTime[] time = new LocalDateTime[2]; LocalDateTime[] range = new LocalDateTime[2];
LocalDateTime now = LocalDateTime.now();
switch (homeSelectVO.getSelectWeek()) { switch (homeSelectVO.getSelectWeek()) {
case 1: case 3: // 本周
time[0] = LocalDateTime.now().minusDays(7); range[0] = now.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
.with(LocalTime.MIN); // 本周一 00:00
range[1] = now.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY))
.with(LocalTime.MAX); // 本周日 23:59:59.999999999
break; break;
case 2: case 2: // 本月
time[0] = LocalDateTime.now().minusMonths(1); range[0] = now.withDayOfMonth(1)
.with(LocalTime.MIN); // 本月第一天 00:00
range[1] = now.with(TemporalAdjusters.lastDayOfMonth())
.with(LocalTime.MAX); // 本月最后一天 23:59:59.999999999
break; break;
case 3: case 1: // 本年
time[0] = LocalDateTime.now().minusYears(1); range[0] = now.withDayOfYear(1)
.with(LocalTime.MIN); // 本年第一天 00:00
range[1] = now.with(TemporalAdjusters.lastDayOfYear())
.with(LocalTime.MAX); // 本年最后一天 23:59:59.999999999
break; break;
default:
throw new IllegalArgumentException("无效的时间范围类型");
} }
time[1] = LocalDateTime.now(); homeSelectVO.setTime(range);
homeSelectVO.setTime(time);
} }
return homeSelectVO.getTime(); return homeSelectVO.getTime();
} }
@ -127,8 +352,13 @@ public class BigViewDataServiceImpl implements BigViewDataService {
} }
@Override @Override
public List<EnterpriseNumVO> getRightThird(HomeSelectVO homeSelectVO) { public List<RightThirdDataVO> getRightThird(HomeSelectVO homeSelectVO) {
homeSelectVO.setType(1); if (homeSelectVO.getSelectWeek() != null) {
return homeService.appCount2(homeSelectVO); final LocalDateTime[] week = this.getWeek(homeSelectVO);
homeSelectVO.setTime(week);
} }
return bigViewDataMapper.getRightThird(homeSelectVO);
}
} }

10
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java

@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.system.dal.mysql.dept.DeptMapper;
import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper; import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants; import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants;
import cn.iocoder.yudao.module.system.service.user.AdminUserService; import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
@ -102,6 +103,15 @@ public class DeptServiceImpl implements DeptService {
if (dept == null) { if (dept == null) {
throw exception(DEPT_NOT_FOUND); throw exception(DEPT_NOT_FOUND);
} }
//检查是否由用户在这个部门,有则不能删除
QueryWrapper<AdminUserDO> wrapper = new QueryWrapper<>();
wrapper.eq("dept_id", id);
final List<AdminUserDO> adminUserDOS = adminUserMapper.selectList(wrapper);
if (!adminUserDOS.isEmpty()) {
throw exception(DEPT_USER_ERROR);
}
} }
@VisibleForTesting @VisibleForTesting

54
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/enterprise/EnterpriseServiceImpl.java

@ -121,7 +121,6 @@ public class EnterpriseServiceImpl implements EnterpriseService {
//修改企业用户的审核状态为 审核中 新增企业审核表 //修改企业用户的审核状态为 审核中 新增企业审核表
EnterpriseAuditLogDO enterpriseAuditLogDO = new EnterpriseAuditLogDO(); EnterpriseAuditLogDO enterpriseAuditLogDO = new EnterpriseAuditLogDO();
enterpriseAuditLogDO.setEnterpriseId(enterprise.getId()); enterpriseAuditLogDO.setEnterpriseId(enterprise.getId());
enterpriseAuditLogDO.setAudit(1);
enterpriseAuditLogMapper.insert(enterpriseAuditLogDO); enterpriseAuditLogMapper.insert(enterpriseAuditLogDO);
//用户表修改用户真实姓名和手机号 //用户表修改用户真实姓名和手机号
@ -203,6 +202,7 @@ public class EnterpriseServiceImpl implements EnterpriseService {
createReqVO.setDeptId(user.getDeptId()); createReqVO.setDeptId(user.getDeptId());
EnterpriseDO enterprise = BeanUtils.toBean(createReqVO, EnterpriseDO.class); EnterpriseDO enterprise = BeanUtils.toBean(createReqVO, EnterpriseDO.class);
enterprise.setDepartmentId(createReqVO.getDeptId()); enterprise.setDepartmentId(createReqVO.getDeptId());
enterprise.setIsAudit(true);
enterpriseMapper.insert(enterprise); enterpriseMapper.insert(enterprise);
if (createReqVO.getFileIds() != null && createReqVO.getFileIds().length > 0) { if (createReqVO.getFileIds() != null && createReqVO.getFileIds().length > 0) {
for (Long fileId : createReqVO.getFileIds()) { for (Long fileId : createReqVO.getFileIds()) {
@ -231,6 +231,7 @@ public class EnterpriseServiceImpl implements EnterpriseService {
wrapper.eq(FileInfoDO::getUnitId, updateReqVO.getId().toString()); wrapper.eq(FileInfoDO::getUnitId, updateReqVO.getId().toString());
fileInfoMapper.delete(wrapper); fileInfoMapper.delete(wrapper);
} }
if (updateReqVO.getFileIds() != null && updateReqVO.getFileIds().length > 0) { if (updateReqVO.getFileIds() != null && updateReqVO.getFileIds().length > 0) {
for (Long fileId : updateReqVO.getFileIds()) { for (Long fileId : updateReqVO.getFileIds()) {
FileInfoDO fileInfoDO = new FileInfoDO(); FileInfoDO fileInfoDO = new FileInfoDO();
@ -241,33 +242,23 @@ public class EnterpriseServiceImpl implements EnterpriseService {
fileInfoMapper.insert(fileInfoDO); fileInfoMapper.insert(fileInfoDO);
} }
} }
//插入企业标签
if(!CollectionUtils.isAnyEmpty(updateReqVO.getTagIds())) {
//先删除原有数据
LambdaQueryWrapper<EnterpriseTagDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(EnterpriseTagDO::getEnterpriseId, updateReqVO.getId());
enterpriseTagMapper.delete(wrapper);
// //如果专管员发生改变, 先删除关联表中的数据 List<EnterpriseTagDO> enterpriseTagDOList = new ArrayList<>();
// if (!enterpriseDO.getUserId().equals(updateReqVO.getUserId())) { for (Long tagId : updateReqVO.getTagIds()) {
// LambdaQueryWrapper<EnterpriseDO> wrapper = new LambdaQueryWrapper<>(); EnterpriseTagDO enterpriseTagDO = new EnterpriseTagDO();
// wrapper.eq(EnterpriseDO::getUserId, enterpriseDO.getUserId()); enterpriseTagDO.setEnterpriseId(updateReqVO.getId());
// wrapper.eq(EnterpriseDO::getRegion, enterpriseDO.getRegion()); enterpriseTagDO.setTagId(tagId);
// final List<EnterpriseDO> enterpriseDOS = enterpriseMapper.selectList(wrapper); enterpriseTagDOList.add(enterpriseTagDO);
// if (enterpriseDOS != null && enterpriseDOS.size() == 1) { }
// LambdaQueryWrapper<UserAreaDO> queryWrapper = new LambdaQueryWrapper<>(); enterpriseTagMapper.insertBatch(enterpriseTagDOList);
// queryWrapper.eq(UserAreaDO::getUserId, enterpriseDO.getUserId());
// queryWrapper.eq(UserAreaDO::getArea, enterpriseDO.getRegion()); }
// userAreaMapper.delete(queryWrapper);
// }
//
// //给新专管人员 添加区域关联表
// LambdaQueryWrapper<UserAreaDO> wrapper1 = new LambdaQueryWrapper<>();
// wrapper1.eq(UserAreaDO::getUserId, updateReqVO.getUserId());
// wrapper1.eq(UserAreaDO::getArea, updateReqVO.getRegion());
// final List<UserAreaDO> userAreaDOS = userAreaMapper.selectList(wrapper1);
// if (userAreaDOS == null && updateReqVO.getRegion() != null) {
// Integer region = Integer.valueOf(updateReqVO.getRegion());
// UserAreaDO userAreaDO = new UserAreaDO();
// userAreaDO.setArea(region);
// userAreaDO.setUserId(updateReqVO.getUserId());
// userAreaMapper.insert(userAreaDO);
// }
// }
// 更新 // 更新
EnterpriseDO updateObj = BeanUtils.toBean(updateReqVO, EnterpriseDO.class); EnterpriseDO updateObj = BeanUtils.toBean(updateReqVO, EnterpriseDO.class);
@ -311,6 +302,15 @@ public class EnterpriseServiceImpl implements EnterpriseService {
} }
} }
if (pageReqVO.getType() != null) {
QueryWrapper<EnterpriseTagDO> queryWrapper = new QueryWrapper<>();
queryWrapper.in("tag_id", pageReqVO.getType());
final List<EnterpriseTagDO> enterpriseTagDOS = enterpriseTagMapper.selectList(queryWrapper);
if (!CollectionUtils.isAnyEmpty(enterpriseTagDOS)) {
pageReqVO.setEnterpriseIds(CollectionUtils.convertList(enterpriseTagDOS, EnterpriseTagDO::getEnterpriseId));
}
}
final PageResult<EnterpriseDO> enterpriseDOPageResult = enterpriseMapper.selectPage(pageReqVO); final PageResult<EnterpriseDO> enterpriseDOPageResult = enterpriseMapper.selectPage(pageReqVO);
return enterpriseDOPageResult; return enterpriseDOPageResult;
} }

2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/enterpriseinspections/EnterpriseInspectionsService.java

@ -65,4 +65,6 @@ public interface EnterpriseInspectionsService {
List<EnterpriseInspectionsDO> getEnterpriseInspectionsList(EnterpriseInspectionsPageReqVO pageReqVO); List<EnterpriseInspectionsDO> getEnterpriseInspectionsList(EnterpriseInspectionsPageReqVO pageReqVO);
List<SelectUserChangeVO> changeSelectUser(Long deptId); List<SelectUserChangeVO> changeSelectUser(Long deptId);
PageResult<InspectionByEnterpriseIdRespVO> inspectionsByEnterpriseId(EnterpriseInspectionsPageReqVO pageReqVO);
} }

54
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/enterpriseinspections/EnterpriseInspectionsServiceImpl.java

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.system.service.enterpriseinspections; package cn.iocoder.yudao.module.system.service.enterpriseinspections;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.RoleNameAndSelectTypeVO; import cn.iocoder.yudao.module.system.controller.admin.auth.vo.RoleNameAndSelectTypeVO;
import cn.iocoder.yudao.module.system.convert.user.UserConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO; import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
import cn.iocoder.yudao.module.system.dal.dataobject.enterprise.EnterpriseDO; import cn.iocoder.yudao.module.system.dal.dataobject.enterprise.EnterpriseDO;
@ -31,6 +32,9 @@ import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import cn.iocoder.yudao.module.system.util.EntityUtils; import cn.iocoder.yudao.module.system.util.EntityUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.sun.xml.bind.v2.TODO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -265,7 +269,7 @@ public class EnterpriseInspectionsServiceImpl implements EnterpriseInspectionsSe
} }
} }
//TODO 按状态查询不好用
final PageResult<EnterpriseInspectionsDO> enterpriseInspectionsDOPageResult = enterpriseInspectionsMapper.selectPage(pageReqVO); final PageResult<EnterpriseInspectionsDO> enterpriseInspectionsDOPageResult = enterpriseInspectionsMapper.selectPage(pageReqVO);
if ( enterpriseInspectionsDOPageResult.getList() != null && enterpriseInspectionsDOPageResult.getList().size() > 0 ) { if ( enterpriseInspectionsDOPageResult.getList() != null && enterpriseInspectionsDOPageResult.getList().size() > 0 ) {
enterpriseInspectionsDOPageResult.getList().forEach(item->{ enterpriseInspectionsDOPageResult.getList().forEach(item->{
@ -479,4 +483,52 @@ public class EnterpriseInspectionsServiceImpl implements EnterpriseInspectionsSe
return list; return list;
} }
@Override
public PageResult<InspectionByEnterpriseIdRespVO> inspectionsByEnterpriseId(EnterpriseInspectionsPageReqVO pageReqVO) {
// 分页查询主记录
Page<InspectionsLogDO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
IPage<InspectionByEnterpriseIdVO> inspectionByEnterpriseIdVOS = enterpriseInspectionsMapper.inspectionsByEnterpriseId(page, pageReqVO);
// 无数据时直接返回空分页结果
if (inspectionByEnterpriseIdVOS.getRecords().isEmpty()) {
return new PageResult<>(Collections.emptyList(), inspectionByEnterpriseIdVOS.getTotal());
}
// 批量获取所有关联的签到日志(一次性查询)
List<Long> logIds = inspectionByEnterpriseIdVOS.getRecords().stream()
.map(InspectionByEnterpriseIdVO::getLogId)
.collect(Collectors.toList());
LambdaQueryWrapper<SignInLogDO> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SignInLogDO::getInsId, logIds);
List<SignInLogDO> allSignInLogs = signInLogMapper.selectList(wrapper);
// 按日志ID分组签到记录(内存快速匹配)
Map<Long, List<SignInLogDO>> signInLogMap = allSignInLogs.stream()
.collect(Collectors.groupingBy(SignInLogDO::getInsId));
// 构建响应列表
List<InspectionByEnterpriseIdRespVO> inspectionByEnterpriseIdList =
inspectionByEnterpriseIdVOS.getRecords().stream().map(item -> {
InspectionByEnterpriseIdRespVO respVO = new InspectionByEnterpriseIdRespVO();
respVO.setInspectionsId(item.getLogId());
respVO.setTaskId(item.getTaskId());
respVO.setTitle(item.getTitle());
respVO.setTime(item.getCreateTime());
respVO.setStatus(item.getStatus());
// 从预加载的Map中获取签到人员(避免单独查询)
List<SignInLogDO> signInLogs = signInLogMap.getOrDefault(item.getLogId(), Collections.emptyList());
String inspectNames = signInLogs.stream()
.map(SignInLogDO::getRealName)
.collect(Collectors.joining(", "));
respVO.setInspectNames(inspectNames);
return respVO;
}).collect(Collectors.toList());
// 使用主查询的总数(而非当前页数量)
return new PageResult<>(inspectionByEnterpriseIdList, inspectionByEnterpriseIdVOS.getTotal());
}
} }

3
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/fileInfo/FileInfoService.java

@ -56,6 +56,7 @@ public interface FileInfoService {
PageResult<FileInfoDO> getFileInfoPage(FileInfoPageReqVO pageReqVO); PageResult<FileInfoDO> getFileInfoPage(FileInfoPageReqVO pageReqVO);
List<InfraFileInfoDTO> getFileList(Long dictType, Long dictData, String unitId); List<InfraFileInfoDTO> getFileList(Long dictType, Long dictData, String unitId);
Map<String,List<InfraFileInfoDTO>> getFileListMap(Long dictType, Long dictData, Collection<String> unitId); Map<String,List<InfraFileInfoDTO>> getFileListMap(Long dictType, Long dictData, Collection<String> unitId);
/** /**
@ -71,4 +72,6 @@ public interface FileInfoService {
void deleteFilesByDictData(Long dictType, Long dictData, String unitId); void deleteFilesByDictData(Long dictType, Long dictData, String unitId);
void deleteByInfraId(Long id) throws Exception;
} }

11
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/fileInfo/FileInfoServiceImpl.java

@ -171,4 +171,15 @@ public class FileInfoServiceImpl implements FileInfoService {
fileInfoMapper.delete(list); fileInfoMapper.delete(list);
} }
@Override
public void deleteByInfraId(Long id) throws Exception {
LambdaQueryWrapper<FileInfoDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(FileInfoDO::getInfraFileId, id);
fileInfoMapper.delete(wrapper);
fileApi.deleteFile(id);
}
} }

12
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionService.java

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.service.permission;
import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO; import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import java.util.Set; import java.util.Set;
import static java.util.Collections.singleton; import static java.util.Collections.singleton;
@ -34,7 +35,6 @@ public interface PermissionService {
boolean hasAnyRoles(Long userId, String... roles); boolean hasAnyRoles(Long userId, String... roles);
// ========== 角色-菜单的相关方法 ========== // ========== 角色-菜单的相关方法 ==========
/** /**
* 设置角色菜单 * 设置角色菜单
* *
@ -143,4 +143,14 @@ public interface PermissionService {
*/ */
DeptDataPermissionRespDTO getDeptDataPermission(Long userId); DeptDataPermissionRespDTO getDeptDataPermission(Long userId);
/*
根据用户id获得角色名称列表
*/
List<String> getRoleListByUserId(Long userId);
/*
根据用户id获得角色ID列表
*/
List<Long> getRoleIdListByUserId(Long userId);
} }

14
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/PermissionServiceImpl.java

@ -329,6 +329,20 @@ public class PermissionServiceImpl implements PermissionService {
return result; return result;
} }
@Override
public List<String> getRoleListByUserId(Long userId) {
final Set<Long> userRoleIdListByUserId = this.getUserRoleIdListByUserId(userId);
final List<RoleDO> roleList = roleService.getRoleListFromCache(userRoleIdListByUserId);
return CollectionUtils.convertList(roleList, RoleDO::getName);
}
@Override
public List<Long> getRoleIdListByUserId(Long userId) {
final Set<Long> userRoleIdListByUserId = this.getUserRoleIdListByUserId(userId);
final List<RoleDO> roleList = roleService.getRoleListFromCache(userRoleIdListByUserId);
return CollectionUtils.convertList(roleList, RoleDO::getId);
}
/** /**
* 获得自身的代理对象解决 AOP 生效问题 * 获得自身的代理对象解决 AOP 生效问题
* *

15
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/permission/RoleServiceImpl.java

@ -12,11 +12,14 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO; import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO;
import cn.iocoder.yudao.module.system.dal.mysql.permission.RoleMapper; import cn.iocoder.yudao.module.system.dal.mysql.permission.RoleMapper;
import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleMapper;
import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants; import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants;
import cn.iocoder.yudao.module.system.enums.permission.DataScopeEnum; import cn.iocoder.yudao.module.system.enums.permission.DataScopeEnum;
import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum; import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum;
import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum; import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import com.mzt.logapi.context.LogRecordContext; import com.mzt.logapi.context.LogRecordContext;
import com.mzt.logapi.service.impl.DiffParseFunction; import com.mzt.logapi.service.impl.DiffParseFunction;
@ -51,6 +54,9 @@ public class RoleServiceImpl implements RoleService {
@Resource @Resource
private RoleMapper roleMapper; private RoleMapper roleMapper;
@Resource
private UserRoleMapper userRoleMapper;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@LogRecord(type = SYSTEM_ROLE_TYPE, subType = SYSTEM_ROLE_CREATE_SUB_TYPE, bizNo = "{{#role.id}}", @LogRecord(type = SYSTEM_ROLE_TYPE, subType = SYSTEM_ROLE_CREATE_SUB_TYPE, bizNo = "{{#role.id}}",
@ -169,6 +175,15 @@ public class RoleServiceImpl implements RoleService {
if (RoleTypeEnum.SYSTEM.getType().equals(role.getType())) { if (RoleTypeEnum.SYSTEM.getType().equals(role.getType())) {
throw exception(ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE); throw exception(ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE);
} }
//角色下有用户,不允许删除
QueryWrapper<UserRoleDO> wrapper = new QueryWrapper<>();
wrapper.eq("role_id", id);
final List<UserRoleDO> userRoleDOS = userRoleMapper.selectList(wrapper);
if (! userRoleDOS.isEmpty()) {
throw exception(ROLE_USER_CODE_ERROR);
}
return role; return role;
} }

4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/taskinfo/TaskInfoService.java

@ -75,4 +75,8 @@ public interface TaskInfoService {
void test(); void test();
List<LabelValueLongVO> appSelectCreateDept(); List<LabelValueLongVO> appSelectCreateDept();
void audit(Long id);
void createTaskInfoBath(TaskInfoRespVO taskInfoDO);
} }

129
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/taskinfo/TaskInfoServiceImpl.java

@ -18,12 +18,14 @@ import cn.iocoder.yudao.module.system.controller.admin.tasktag.vo.TaskTagPageReq
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.enterprise.EnterpriseDO; import cn.iocoder.yudao.module.system.dal.dataobject.enterprise.EnterpriseDO;
import cn.iocoder.yudao.module.system.dal.dataobject.enterpriseinspections.EnterpriseInspectionsDO; import cn.iocoder.yudao.module.system.dal.dataobject.enterpriseinspections.EnterpriseInspectionsDO;
import cn.iocoder.yudao.module.system.dal.dataobject.fileInfo.FileInfoDO;
import cn.iocoder.yudao.module.system.dal.dataobject.taglibrary.TagLibraryDO; import cn.iocoder.yudao.module.system.dal.dataobject.taglibrary.TagLibraryDO;
import cn.iocoder.yudao.module.system.dal.dataobject.tasktag.TaskTagDO; import cn.iocoder.yudao.module.system.dal.dataobject.tasktag.TaskTagDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.dal.dataobject.userarea.UserAreaDO; import cn.iocoder.yudao.module.system.dal.dataobject.userarea.UserAreaDO;
import cn.iocoder.yudao.module.system.dal.mysql.enterprise.EnterpriseMapper; import cn.iocoder.yudao.module.system.dal.mysql.enterprise.EnterpriseMapper;
import cn.iocoder.yudao.module.system.dal.mysql.enterpriseinspections.EnterpriseInspectionsMapper; import cn.iocoder.yudao.module.system.dal.mysql.enterpriseinspections.EnterpriseInspectionsMapper;
import cn.iocoder.yudao.module.system.dal.mysql.fileInfo.FileInfoMapper;
import cn.iocoder.yudao.module.system.dal.mysql.taglibrary.TagLibraryMapper; import cn.iocoder.yudao.module.system.dal.mysql.taglibrary.TagLibraryMapper;
import cn.iocoder.yudao.module.system.dal.mysql.tasktag.TaskTagMapper; import cn.iocoder.yudao.module.system.dal.mysql.tasktag.TaskTagMapper;
import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper; import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
@ -93,6 +95,13 @@ public class TaskInfoServiceImpl implements TaskInfoService {
NotifyMessageSendApi notifyMessageSendApi; NotifyMessageSendApi notifyMessageSendApi;
@Resource @Resource
private UserAreaMapper userAreaMapper; private UserAreaMapper userAreaMapper;
@Resource
private FileInfoMapper fileInfoMapper;
//企业红头文件
public final static Long DEFAULT_DICT_DATA_QY = 4L;
public final static Long DEFAULT_DICT_TYPE = 644L;
@Override @Override
@Transactional @Transactional
@ -141,6 +150,20 @@ public class TaskInfoServiceImpl implements TaskInfoService {
list.add(inspection); list.add(inspection);
}); });
//添加红头文件
if (createReqVO.getFileIds() != null && createReqVO.getFileIds().length > 0) {
List<FileInfoDO> fileInfoDOS = new ArrayList<>();
for (Long fileId : createReqVO.getFileIds()) {
FileInfoDO fileInfoDO = new FileInfoDO();
fileInfoDO.setDictData(DEFAULT_DICT_DATA_QY);
fileInfoDO.setDictType(DEFAULT_DICT_TYPE);
fileInfoDO.setUnitId(taskInfo.getId().toString());
fileInfoDO.setInfraFileId(fileId);
fileInfoDOS.add(fileInfoDO);
}
fileInfoMapper.insertBatch(fileInfoDOS);
}
enterpriseInspectionsMapper.insertBatch(list); enterpriseInspectionsMapper.insertBatch(list);
} }
// 返回 // 返回
@ -149,11 +172,27 @@ public class TaskInfoServiceImpl implements TaskInfoService {
@Override @Override
@Transactional
public void updateTaskInfo(TaskInfoSaveReqVO updateReqVO) { public void updateTaskInfo(TaskInfoSaveReqVO updateReqVO) {
// 校验存在 // 校验存在
validateTaskInfoExists(updateReqVO.getId()); validateTaskInfoExists(updateReqVO.getId());
// 更新 // 更新
TaskInfoDO updateObj = BeanUtils.toBean(updateReqVO, TaskInfoDO.class); TaskInfoDO updateObj = BeanUtils.toBean(updateReqVO, TaskInfoDO.class);
//添加红头文件
if (updateReqVO.getFileIds() != null && updateReqVO.getFileIds().length > 0) {
List<FileInfoDO> fileInfoDOS = new ArrayList<>();
for (Long fileId : updateReqVO.getFileIds()) {
FileInfoDO fileInfoDO = new FileInfoDO();
fileInfoDO.setDictData(DEFAULT_DICT_DATA_QY);
fileInfoDO.setDictType(DEFAULT_DICT_TYPE);
fileInfoDO.setUnitId(updateReqVO.getId().toString());
fileInfoDO.setInfraFileId(fileId);
fileInfoDOS.add(fileInfoDO);
}
fileInfoMapper.insertBatch(fileInfoDOS);
}
taskInfoMapper.updateById(updateObj); taskInfoMapper.updateById(updateObj);
} }
@ -265,7 +304,6 @@ public class TaskInfoServiceImpl implements TaskInfoService {
} }
Page<TaskInfoDO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); Page<TaskInfoDO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
log.info("taskInfoDOIPage:{}", pageReqVO);
final IPage<TaskInfoDO> taskInfoDOIPage = taskInfoMapper.selectMyPage(page, pageReqVO); final IPage<TaskInfoDO> taskInfoDOIPage = taskInfoMapper.selectMyPage(page, pageReqVO);
final PageResult<TaskInfoDO> taskInfoDOPageResult = new PageResult<>(taskInfoDOIPage.getRecords(), taskInfoDOIPage.getTotal()); final PageResult<TaskInfoDO> taskInfoDOPageResult = new PageResult<>(taskInfoDOIPage.getRecords(), taskInfoDOIPage.getTotal());
@ -426,4 +464,93 @@ public class TaskInfoServiceImpl implements TaskInfoService {
return taskInfoMapper.appSelectCreateDept(map); return taskInfoMapper.appSelectCreateDept(map);
} }
@Override
public void audit(Long id) {
final TaskInfoDO taskInfoDO = validateTaskInfoExists(id);
// 当前日期
LocalDateTime currentDate = LocalDateTime.now();
//大于当前时间直接发布
// 比较逻辑
final LocalDateTime startDate = taskInfoDO.getStartDate();
final LocalDate localDate = startDate.toLocalDate();
final LocalDateTime startTime = localDate.atTime(taskInfoDO.getExecCycle(), 0);
if (currentDate.isBefore(startTime)) {
taskInfoDO.setStatus(1);
taskInfoMapper.updateById(taskInfoDO);
} else {
LambdaQueryWrapper<EnterpriseInspectionsDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(EnterpriseInspectionsDO::getTaskId, taskInfoDO.getId());
final List<EnterpriseInspectionsDO> enterpriseInspectionsDOS = enterpriseInspectionsMapper.selectList(wrapper);
TaskInfoRespVO taskInfoRespVO = new TaskInfoRespVO();
BeanUtils.copyProperties(taskInfoDO, taskInfoRespVO);
taskInfoRespVO.setEnterpriseIdeTasks(enterpriseInspectionsDOS);
createTaskInfoBath(taskInfoRespVO);
}
}
/*
直接发布任务
*/
@Override
public void createTaskInfoBath(TaskInfoRespVO taskInfoDO) {
taskInfoDO.getEnterpriseIdeTasks().forEach(x ->{
if(x.getUserId()!= null){
try {
//发送消息);
SocialWxaSubscribeMessageSendReqDTO reqDTO = new SocialWxaSubscribeMessageSendReqDTO();
reqDTO.setUserType(1);
reqDTO.setTemplateTitle("环保任务通知");
reqDTO.setPage("sub/task/detail?id="+taskInfoDO.getId());
reqDTO.setUserId(x.getUserId());
Map<String, String> message = new HashMap<>();
message.put("thing2", StringUtil.truncateString(taskInfoDO.getTitle(), 15));
message.put("time5", DateUtil.format(taskInfoDO.getStartDate().atStartOfDay(), DateUtils.FORMAT_YEAR_MONTH_DAY));
message.put("thing4", StringUtil.truncateString(taskInfoDO.getDescription(), 15));
message.put("time3", DateUtil.format(taskInfoDO.getEndDate().atStartOfDay(), DateUtils.FORMAT_YEAR_MONTH_DAY));
reqDTO.setMessages(message);
socialClientApi.sendWxaSubscribeMessage(reqDTO);
}
catch (Exception e){
log.error("任务发送通知错误:",e.toString());
}
//修改任务状态
final TaskInfoDO updateTask = taskInfoMapper.selectById(taskInfoDO.getId());
updateTask.setStatus(2);
taskInfoMapper.updateById(updateTask);
//执法任务更改状态
LambdaQueryWrapper<EnterpriseInspectionsDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(EnterpriseInspectionsDO::getTaskId, x.getTaskId());
List<EnterpriseInspectionsDO> enterpriseInspectionsDOList = enterpriseInspectionsMapper.selectList(wrapper);
if(enterpriseInspectionsDOList!=null && enterpriseInspectionsDOList.size() > 0) {
List<EnterpriseInspectionsDO> list = new ArrayList<>();
for (EnterpriseInspectionsDO enterpriseInspectionsDO : enterpriseInspectionsDOList) {
//站内信发送通知
NotifySendSingleToUserReqDTO notifyMessage = new NotifySendSingleToUserReqDTO();
notifyMessage.setUserId(Long.valueOf(enterpriseInspectionsDO.getUserId()));
notifyMessage.setTemplateCode("task_messages");
Map<String, Object> templateParams = new HashMap<>();
templateParams.put("title", taskInfoDO.getTitle());
templateParams.put("startTime", DateUtil.format(taskInfoDO.getStartDate().atStartOfDay(), DateUtils.FORMAT_YEAR_MONTH_DAY));
templateParams.put("endTime", DateUtil.format(taskInfoDO.getEndDate().atStartOfDay(), DateUtils.FORMAT_YEAR_MONTH_DAY) );
templateParams.put("url", "/sub/task/detail?id="+ enterpriseInspectionsDO.getTaskId());
notifyMessage.setTemplateParams(templateParams);
notifyMessageSendApi.sendSingleMessageToAdmin(notifyMessage);
enterpriseInspectionsDO.setStatus(2);
list.add(enterpriseInspectionsDO);
}
enterpriseInspectionsMapper.updateBatch(list);
}
}
});
}
} }

5
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java

@ -185,6 +185,11 @@ public class AdminUserServiceImpl implements AdminUserService {
// 2.2 更新岗位 // 2.2 更新岗位
updateUserPost(updateReqVO, updateObj); updateUserPost(updateReqVO, updateObj);
//更新职位
if (updateReqVO.getRoleIds() != null) {
permissionService.assignUserRole(updateReqVO.getId(), updateReqVO.getRoleIds());
}
//2.3 添加管理区域 todo //2.3 添加管理区域 todo
// 3. 记录操作日志上下文 // 3. 记录操作日志上下文

222
yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/bigviewdata/BigViewDataMapper.xml

@ -54,94 +54,186 @@
GROUP BY status; GROUP BY status;
</select> </select>
<select id="selectTaskTypeGroupCount" <select id="selectTaskTypeGroupCount"
resultType="cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.NameCountVO"> resultType="cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.LeftFirstDataVO">
select select
tl.tag_name as name, count(DISTINCT t.id) as taskCount,
count(tl.id) as value count(e.id) as enterpriseCount,
sd.name as name
from from
task_info t task_info t
left join tag_library tl on tl.id = t.task_type left join enterprise_inspections ei on ei.task_id = t.id
left join enterprises e on e.id = ei.enterprise_id
left join system_dept sd on sd.id = e.department_id
where where
t.deleted = 0 t.deleted = 0 and t.`status` > 1 and e.deleted = 0
<if test="time != null and time != ''"> GROUP BY e.department_id
AND t.end_time between
<foreach collection="time" item="i" open=" " separator="and" close=" ">
#{i}
</foreach>
</if>
group by
tl.id
</select> </select>
<select id="getInspectionsTaskGroupCount" <select id="getInspectionsTaskGroupCount"
resultType="cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.StatusCountVO"> resultType="cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.MonthTaskInspectionVO">
SELECT SELECT
sd.`name` as name, date_table.month_value as name,
COUNT(DISTINCT ei.id) AS value, COALESCE(COUNT(DISTINCT ei.id), 0) AS inspectionsCount,
count(DISTINCT ei.task_id) as taskValue COALESCE(COUNT(DISTINCT ei.task_id), 0) AS taskCount
FROM FROM (
task_info t SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 5 MONTH), '%Y-%m') AS month_value
UNION SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 4 MONTH), '%Y-%m')
LEFT JOIN enterprise_inspections ei on t.id = ei.task_id UNION SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m')
LEFT JOIN UNION SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 MONTH), '%Y-%m')
enterprises e ON e.id = ei.enterprise_id UNION SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH),'%Y-%m')
LEFT JOIN UNION SELECT DATE_FORMAT(CURDATE(), '%Y-%m')
inspections_log il ON ei.id = il.inspections_id ) date_table
left Join system_users su on su.id = ei.user_id LEFT JOIN task_info t ON
left Join system_dept sd on sd.id = e.department_id DATE_FORMAT(t.start_date, '%Y-%m') = date_table.month_value
WHERE AND t.start_date >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)
ei.deleted = 0 AND e.deleted = 0 and ei.status = 2 and sd.parent_id = 116 LEFT JOIN enterprise_inspections ei ON
<if test="time != null and time != ''"> t.id = ei.task_id
AND t.end_time between AND ei.deleted = 0
<foreach collection="time" item="i" open="" separator="and" close=""> AND ei.status = 2
#{i} LEFT JOIN enterprises e ON
</foreach> e.id = ei.enterprise_id
</if> AND e.deleted = 0
LEFT JOIN system_dept sd ON
sd.id = e.department_id
AND sd.parent_id = 116
GROUP BY GROUP BY
e.department_id date_table.month_value
ORDER BY
date_table.month_value;
</select> </select>
<!-- 定义时间范围变量 --> <!-- 定义时间范围变量 -->
<select id="getInspectionsTaskGroupCountCompare" <select id="getInspectionsTaskGroupCountCompare"
resultType="cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.BigViewGroupCountCompareVO"> resultType="cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.BigViewGroupCountCompareVO">
SELECT SELECT
sd.name AS name, m1.name,
-- 当前月执法统计 m1.inspectionsCount,
COUNT(DISTINCT CASE WHEN t.create_time BETWEEN #{currentStartTime} AND #{currentEndTime} THEN ei.id ELSE 0 END) AS currentEnforcementCount, m1.taskCount,
-- 上个月执法统计 -- 计算执法环比增长率
COUNT(DISTINCT CASE WHEN t.create_time BETWEEN #{previousStartTime} AND #{previousEndTime} THEN ei.id ELSE 0 END) AS previousEnforcementCount,
-- 执法环比增长率计算
IFNULL( IFNULL(
(COUNT(DISTINCT CASE WHEN t.create_time BETWEEN #{currentStartTime} AND #{currentEndTime} THEN ei.id END) - (m1.inspectionsCount - m2.inspectionsCount) / NULLIF(m2.inspectionsCount, 0) * 100,
COUNT(DISTINCT CASE WHEN t.create_time BETWEEN #{previousStartTime} AND #{previousEndTime} THEN ei.id END)) /
NULLIF(COUNT(DISTINCT CASE WHEN t.create_time BETWEEN #{previousStartTime} AND #{previousEndTime} THEN ei.id END), 0),
0 0
) * 100 AS enforcementGrowthRate, ) AS inspectionsGrowthRate,
-- 计算任务环比增长率
-- 当前月任务统计
COUNT(DISTINCT CASE WHEN t.create_time BETWEEN '2025-02-01' AND '2025-02-25' THEN ei.task_id END) AS currentTaskCount,
-- 上个月任务统计
COUNT(DISTINCT CASE WHEN t.create_time BETWEEN '2025-01-01' AND '2025-01-25' THEN ei.task_id END) AS previousTaskCount,
-- 任务环比增长率计算
IFNULL( IFNULL(
(COUNT(DISTINCT CASE WHEN t.create_time BETWEEN #{currentStartTime} AND #{currentEndTime} THEN ei.task_id END) - (m1.taskCount - m2.taskCount) / NULLIF(m2.taskCount, 0) * 100,
COUNT(DISTINCT CASE WHEN t.create_time BETWEEN #{previousStartTime} AND #{previousEndTime} THEN ei.task_id END)) /
NULLIF(COUNT(DISTINCT CASE WHEN t.create_time BETWEEN #{previousStartTime} AND #{previousEndTime} THEN ei.task_id END), 0),
0 0
) * 100 AS taskGrowthRate ) AS taskGrowthRate
FROM (
-- 基础数据统计(含近6个月数据)
SELECT
date_table.month_value AS name,
COALESCE(COUNT(DISTINCT ei.id), 0) AS inspectionsCount,
COALESCE(COUNT(DISTINCT ei.task_id), 0) AS taskCount
FROM (
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 5 MONTH), '%Y-%m') AS month_value
UNION ALL
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 4 MONTH), '%Y-%m')
UNION ALL
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m')
UNION ALL
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 MONTH), '%Y-%m')
UNION ALL
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m')
UNION ALL
SELECT DATE_FORMAT(CURDATE(), '%Y-%m')
) date_table
LEFT JOIN task_info t
ON DATE_FORMAT(t.start_date, '%Y-%m') = date_table.month_value
AND t.start_date >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)
LEFT JOIN enterprise_inspections ei
ON t.id = ei.task_id
AND ei.deleted = 0
AND ei.status = 2
LEFT JOIN enterprises e
ON e.id = ei.enterprise_id
AND e.deleted = 0
LEFT JOIN system_dept sd
ON sd.id = e.department_id
AND sd.parent_id = 116
GROUP BY date_table.month_value
) m1
LEFT JOIN (
SELECT
date_table.month_value AS name,
COALESCE(COUNT(DISTINCT ei.id), 0) AS inspectionsCount,
COALESCE(COUNT(DISTINCT ei.task_id), 0) AS taskCount
FROM (
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 5 MONTH), '%Y-%m') AS month_value
UNION ALL
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 4 MONTH), '%Y-%m')
UNION ALL
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m')
UNION ALL
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 2 MONTH), '%Y-%m')
UNION ALL
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m')
UNION ALL
SELECT DATE_FORMAT(CURDATE(), '%Y-%m')
) date_table
LEFT JOIN task_info t
ON DATE_FORMAT(t.start_date, '%Y-%m') = date_table.month_value
AND t.start_date >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)
LEFT JOIN enterprise_inspections ei
ON t.id = ei.task_id
AND ei.deleted = 0
AND ei.status = 2
LEFT JOIN enterprises e
ON e.id = ei.enterprise_id
AND e.deleted = 0
LEFT JOIN system_dept sd
ON sd.id = e.department_id
AND sd.parent_id = 116
GROUP BY date_table.month_value
) m2 ON m1.name = DATE_FORMAT(DATE_ADD(STR_TO_DATE(CONCAT(m2.name, '-01'), '%Y-%m-%d'), INTERVAL 1 MONTH), '%Y-%m')
ORDER BY m1.name;
</select>
<select id="getTaskCount"
resultType="cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.TaskCountVO">
SELECT
e.`region` AS region,
COUNT(DISTINCT ei.task_id) AS taskCount -- 统计任务数量
FROM FROM
task_info t enterprise_inspections ei
LEFT JOIN enterprise_inspections ei ON t.id = ei.task_id LEFT JOIN
LEFT JOIN enterprises e ON e.id = ei.enterprise_id enterprises e ON e.id = ei.enterprise_id
LEFT JOIN inspections_log il ON ei.id = il.inspections_id LEFT JOIN
LEFT JOIN system_dept sd ON sd.id = e.department_id task_info t ON t.id = ei.task_id
WHERE WHERE
ei.deleted = 0 ei.deleted = 0
<if test="time != null and time != ''">
AND t.start_date between
<foreach collection="time" item="i" open=" " separator="and" close=" ">
#{i}
</foreach>
</if>
AND e.deleted = 0 AND e.deleted = 0
AND ei.status = 2 AND ei.`status` > 1
AND sd.parent_id = 116
GROUP BY GROUP BY
sd.name; e.region
</select>
<select id="getRightThird"
resultType="cn.iocoder.yudao.module.system.controller.admin.bigviewdata.vo.RightThirdDataVO">
select
eq.expiry_date as expiryDate,
DATEDIFF(eq.expiry_date, NOW()) AS count,
e.enterprises_name as name,
su.real_name as realName
from enterprise_qualification eq
LEFT JOIN
enterprises e ON eq.enterprise_id = e.id
LEFT JOIN
system_users su on su.id = e.user_id
WHERE
e.deleted = 0 and eq.deleted = 0 AND eq.expiry_date &lt; DATE_ADD(NOW(), INTERVAL 16 DAY)
<if test="time != null and time != ''">
and eq.expiry_date between
<foreach collection="time" item="i" open="" separator="and" close="">
#{i}
</foreach>
</if>
ORDER BY count ASC Limit 10
</select> </select>
</mapper> </mapper>

17
yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/enterpriseinspections/EnterpriseInspections.xml

@ -21,4 +21,21 @@
WHERE WHERE
ei.deleted = 0 and el.correction_time &lt; NOW() ei.deleted = 0 and el.correction_time &lt; NOW()
</select> </select>
<select id="inspectionsByEnterpriseId"
resultType="cn.iocoder.yudao.module.system.controller.admin.enterpriseinspections.vo.InspectionByEnterpriseIdVO">
SELECT
t.id as taskId,
t.title as title,
il.inspections_id as inspectionsId,
il.id as logId,
il.status as status,
il.create_time as createTime
FROM
enterprise_inspections ei
LEFT JOIN inspections_log il ON ei.id = il.inspections_id
LEFT JOIN task_info t on ei.task_id = t.id
WHERE
ei.enterprise_id = #{params.enterpriseId} and il.inspections_id is NOT NULL
</select>
</mapper> </mapper>

3
yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/taskinfo/TaskInfoMapper.xml

@ -50,9 +50,6 @@
GROUP BY t.id ORDER BY t.create_time DESC GROUP BY t.id ORDER BY t.create_time DESC
</select> </select>
<select id="selectPageByEnterpriseId" resultType="cn.iocoder.yudao.module.system.dal.dataobject.taskinfo.TaskInfoDO"> <select id="selectPageByEnterpriseId" resultType="cn.iocoder.yudao.module.system.dal.dataobject.taskinfo.TaskInfoDO">
SELECT SELECT
t.* t.*

4
yudao-server/src/main/resources/application-local.yaml

@ -46,7 +46,7 @@ spring:
primary: master primary: master
datasource: datasource:
master: master:
url: jdbc:mysql://192.168.2.5:3306/hb-yudao?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例 url: jdbc:mysql://188.188.3.232:3306/huanbao?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
# url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true # MySQL Connector/J 5.X 连接的示例 # url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true # MySQL Connector/J 5.X 连接的示例
# url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 连接的示例 # url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 连接的示例
# url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
@ -55,7 +55,7 @@ spring:
# url: jdbc:kingbase8://127.0.0.1:54321/test # 人大金仓 KingbaseES 连接的示例 # url: jdbc:kingbase8://127.0.0.1:54321/test # 人大金仓 KingbaseES 连接的示例
# url: jdbc:postgresql://127.0.0.1:5432/postgres # OpenGauss 连接的示例 # url: jdbc:postgresql://127.0.0.1:5432/postgres # OpenGauss 连接的示例
username: root username: root
password: jingke@123 password: 123456
slave: # 模拟从库,可根据自己需要修改 slave: # 模拟从库,可根据自己需要修改
lazy: true # 开启懒加载,保证启动速度 lazy: true # 开启懒加载,保证启动速度
url: jdbc:mysql://192.168.2.5:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true url: jdbc:mysql://192.168.2.5:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true

Loading…
Cancel
Save