From 28aaf2ffa1dbb860a292ba330a7e9362e60e7832 Mon Sep 17 00:00:00 2001 From: kongzy <kongzy> Date: 星期五, 12 七月 2024 16:41:03 +0800 Subject: [PATCH] update --- assess-admin/src/main/resources/application-dev.yml | 1 assess-admin/src/main/resources/db/migration/V20240712001_change_expert_info.sql | 6 assess-system/src/main/java/com/gkhy/assess/system/domain/AssDevice.java | 7 assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectSupplementServiceImpl.java | 139 ++++ assess-system/src/main/resources/mapper/SysExpertInfoMapper.xml | 2 assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssConclusionServiceImpl.java | 1 assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssProjectController.java | 3 assess-system/src/main/resources/mapper/AssProjectSupplementFileMapper.xml | 12 assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimateTask.java | 7 assess-system/src/main/java/com/gkhy/assess/system/domain/AssConclusion.java | 8 assess-admin/src/main/resources/db/migration/V20240611002_project_supplement_file.sql | 17 assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysCommonServiceImpl.java | 15 assess-system/src/main/java/com/gkhy/assess/system/mapper/AssProjectSupplementMapper.java | 41 + assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/SysUserController.java | 2 assess-admin/src/main/resources/db/migration/V20240615001_change_project.sql | 5 assess-common/src/main/java/com/gkhy/assess/common/domain/vo/AccountVO.java | 3 assess-system/src/main/java/com/gkhy/assess/system/domain/vo/SysExpertInfoExcelVO.java | 105 +++ assess-system/src/main/java/com/gkhy/assess/system/excel/ExpertExcelListener.java | 98 +++ assess-system/src/main/java/com/gkhy/assess/system/service/SysCommonService.java | 6 assess-system/src/main/java/com/gkhy/assess/system/domain/AssContract.java | 7 assess-system/src/main/java/com/gkhy/assess/system/domain/AssRiskEstimate.java | 6 assess-system/src/main/java/com/gkhy/assess/system/domain/SysAgency.java | 2 assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/SysCommonController.java | 10 assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssEstimateTaskServiceImpl.java | 6 assess-admin/src/main/resources/application.yml | 2 assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssPlanPersonServiceImpl.java | 22 assess-system/src/main/java/com/gkhy/assess/system/service/AssProjectSupplementService.java | 58 ++ assess-system/src/main/java/com/gkhy/assess/system/domain/AssProjectSupplementFile.java | 71 ++ assess-admin/src/main/resources/db/migration/V20240613001_change_supplement_file.sql | 2 assess-system/src/main/java/com/gkhy/assess/system/domain/AssAudit.java | 7 assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssAccessoryFileController.java | 9 assess-system/src/main/java/com/gkhy/assess/system/domain/SysUserFace.java | 7 assess-system/src/main/java/com/gkhy/assess/system/service/AssProjectSupplementFileService.java | 34 + assess-common/src/main/java/com/gkhy/assess/common/excel/SexConvert.java | 33 + assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssFaceRecognitionServiceImpl.java | 19 assess-system/src/main/java/com/gkhy/assess/system/domain/SysUser.java | 8 assess-system/src/main/java/com/gkhy/assess/system/domain/AssAccessoryFile.java | 7 assess-system/src/main/java/com/gkhy/assess/system/domain/AssProjectMaterial.java | 6 assess-system/src/main/java/com/gkhy/assess/system/mapper/AssProjectSupplementFileMapper.java | 33 + assess-system/src/main/resources/mapper/AssProjectSupplementMapper.xml | 50 + assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssEstimatePlanServiceImpl.java | 19 assess-admin/src/test/java/com/gkhy/admin/ExcelTest.java | 33 + assess-system/src/main/java/com/gkhy/assess/system/domain/AssProject.java | 1 assess-system/src/main/java/com/gkhy/assess/system/domain/AssInvestigation.java | 7 assess-system/src/main/java/com/gkhy/assess/system/domain/AssWorkNotification.java | 7 assess-system/src/main/java/com/gkhy/assess/system/domain/AssProcessAudit.java | 6 assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java | 172 ++++- assess-system/src/main/java/com/gkhy/assess/system/service/AssPlanPersonService.java | 9 assess-common/pom.xml | 5 assess-framework/src/main/java/com/gkhy/assess/framework/shiro/ShiroConfig.java | 1 pom.xml | 7 assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssAuditServiceImpl.java | 6 assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectSupplementFileServiceImpl.java | 39 + assess-common/src/main/java/com/gkhy/assess/common/utils/JwtTokenUtil.java | 4 assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectServiceImpl.java | 20 assess-framework/src/main/java/com/gkhy/assess/framework/shiro/service/SysLoginService.java | 19 assess-system/src/main/java/com/gkhy/assess/system/mapper/AssProjectMapper.java | 2 assess-system/src/main/java/com/gkhy/assess/system/domain/AssFilingApply.java | 6 assess-system/src/main/java/com/gkhy/assess/system/domain/AssRecitification.java | 6 assess-common/src/main/java/com/gkhy/assess/common/excel/BirthdayConvert.java | 34 + assess-system/src/main/java/com/gkhy/assess/system/domain/AssFaceRecognition.java | 8 assess-system/src/main/resources/mapper/SysUserMapper.xml | 9 assess-framework/src/main/java/com/gkhy/assess/framework/shiro/realm/UserRealm.java | 3 assess-framework/src/main/java/com/gkhy/assess/framework/config/ApplicationConfig.java | 23 assess-system/src/main/java/com/gkhy/assess/system/domain/AssFaceRecord.java | 6 assess-system/src/main/java/com/gkhy/assess/system/mapper/AssPlanPersonMapper.java | 6 assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssInvestigationServiceImpl.java | 24 assess-system/src/main/resources/mapper/AssPlanPersonMapper.xml | 4 assess-system/src/main/resources/mapper/AssProjectMapper.xml | 16 assess-admin/src/main/resources/db/migration/V20240611001_project_supplement.sql | 20 assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssFaceRecordServiceImpl.java | 10 assess-system/src/main/java/com/gkhy/assess/system/domain/AssProjectSupplement.java | 106 +++ assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimateSchedule.java | 7 assess-system/src/main/java/com/gkhy/assess/system/domain/SysExpertInfo.java | 8 assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProcessAuditServiceImpl.java | 6 assess-common/src/main/java/com/gkhy/assess/common/excel/DutyConvert.java | 33 + assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimatePlan.java | 6 assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssProjectSupplementController.java | 71 ++ assess-system/src/main/java/com/gkhy/assess/system/domain/AssPlanPerson.java | 12 assess-admin/src/main/resources/db/migration/V20240614001_add_index.sql | 44 + 80 files changed, 1,503 insertions(+), 199 deletions(-) diff --git a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssAccessoryFileController.java b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssAccessoryFileController.java index 63580c4..97c3298 100644 --- a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssAccessoryFileController.java +++ b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssAccessoryFileController.java @@ -3,11 +3,14 @@ import com.gkhy.assess.common.annotation.RepeatSubmit; import com.gkhy.assess.common.api.CommonResult; +import com.gkhy.assess.system.domain.AssProjectSupplement; import com.gkhy.assess.system.service.AssAccessoryFileService; +import com.gkhy.assess.system.service.AssProjectSupplementFileService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -28,6 +31,8 @@ public class AssAccessoryFileController { @Autowired private AssAccessoryFileService assAccessoryFileService; + @Autowired + private AssProjectSupplementFileService assProjectSupplementFileService; @RepeatSubmit @ApiOperation(value = "评估文件上传(图片/文件)") @@ -36,8 +41,8 @@ @ApiImplicitParam(paramType = "body", name = "projectId", dataType = "long", required = true, value = "项目id"), @ApiImplicitParam(paramType = "body", name = "moduleType", dataType = "int", required = true, value = "上传模块code:1主要装置前的合影照片,2现场勘验照片,3企业陪同人员图片,4现场勘验视频,5编制现场安全检查表,6评审记录附件,7评价结论,8过程控制记录文档附件,9项目归档材料,10报备申请附件,11项目整改情况附件") }) - public CommonResult uploadFile(@RequestParam @NotNull Long projectId,@RequestParam @NotNull Integer moduleType, @RequestParam MultipartFile file){ - return CommonResult.success(assAccessoryFileService.uploadFile(projectId,moduleType,file)); + public CommonResult uploadFile(@RequestParam @NotNull Long projectId,@RequestParam @NotNull Integer moduleType,@RequestParam MultipartFile file){ + return CommonResult.success(assAccessoryFileService.uploadFile(projectId, moduleType, file)); } @ApiOperation(value = "根据项目id获取评估文件") diff --git a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssProjectController.java b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssProjectController.java index 9bdaf66..1243d26 100644 --- a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssProjectController.java +++ b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssProjectController.java @@ -9,6 +9,8 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.Logical; +import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -69,6 +71,7 @@ @RepeatSubmit + @RequiresPermissions(value={"system:assess:monitor","system:assess:agency"},logical = Logical.OR) @ApiOperation(value = "删除项目") @DeleteMapping("/remove/{projectId}") public CommonResult deleteProject(@PathVariable(value = "projectId")Long projectId){ diff --git a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssProjectSupplementController.java b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssProjectSupplementController.java new file mode 100644 index 0000000..ebdd9ee --- /dev/null +++ b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/AssProjectSupplementController.java @@ -0,0 +1,71 @@ +package com.gkhy.assess.admin.controller.web; + + +import com.gkhy.assess.common.annotation.RepeatSubmit; +import com.gkhy.assess.common.api.CommonResult; +import com.gkhy.assess.system.domain.AssProjectSupplement; +import com.gkhy.assess.system.service.AssProjectSupplementService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * <p> + * 项目补录表 前端控制器 + * </p> + * + * @author kzy + * @since 2023-12-11 14:16:18 + */ +@Api(tags = "项目补录前端控制器") +@RestController +@RequestMapping("/manage/project-supplement") +public class AssProjectSupplementController { + @Autowired + private AssProjectSupplementService projectSupplementService; + + @ApiOperation(value = "项目列表(分页)") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"), + @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10,最大50") + }) + @GetMapping("/list") + public CommonResult projectList(AssProjectSupplement projectSupplement){ + return CommonResult.success(projectSupplementService.projectSupplementList(projectSupplement)); + } + + @ApiOperation(value = "根据id获取项目详情") + @GetMapping("/detail/{projectId}") + public CommonResult projectDetail(@PathVariable(value = "projectId") Long projectId){ + return CommonResult.success(projectSupplementService.getProjectSupplementById(projectId)); + } + + + @RepeatSubmit + @ApiOperation(value = "创建项目补录") + @PostMapping("/add") + public CommonResult addProject(@Validated @RequestBody AssProjectSupplement projectSupplement){ + return CommonResult.success(projectSupplementService.addProjectSupplement(projectSupplement)); + } + + + @RepeatSubmit + @ApiOperation(value = "编辑项目补录") + @PutMapping("/edit") + public CommonResult editProject(@Validated @RequestBody AssProjectSupplement projectSupplement){ + return CommonResult.success(projectSupplementService.editProjectSupplement(projectSupplement)); + } + + + @RepeatSubmit + @ApiOperation(value = "删除项目") + @DeleteMapping("/remove/{projectId}") + public CommonResult deleteProject(@PathVariable(value = "projectId")Long projectId){ + return CommonResult.success(projectSupplementService.deleteProjectSupplement(projectId)); + } + +} diff --git a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/SysCommonController.java b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/SysCommonController.java index b3e22f6..6ef14fb 100644 --- a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/SysCommonController.java +++ b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/SysCommonController.java @@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; + @Api(tags = "通用接口前端控制器") @RestController @RequestMapping("/system/common") @@ -34,4 +36,12 @@ } + @ApiOperation(value = "Excel导入") + @GetMapping("/importExcel") + public CommonResult importExcel() throws IOException { + commonService.importExcel(); + return CommonResult.success(); + } + + } diff --git a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/SysUserController.java b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/SysUserController.java index 2f13c70..4945ee7 100644 --- a/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/SysUserController.java +++ b/assess-admin/src/main/java/com/gkhy/assess/admin/controller/web/SysUserController.java @@ -90,7 +90,7 @@ } @RepeatSubmit - @RequiresPermissions("system:assess:monitor") + @RequiresPermissions(value = {"system:assess:monitor","system:assess:agency"},logical = Logical.OR) @ApiOperation(value = "编辑机构") @PutMapping("/editAgency") public CommonResult editAgency(@RequestBody SysUser user){ diff --git a/assess-admin/src/main/resources/application-dev.yml b/assess-admin/src/main/resources/application-dev.yml index 4a7ca0a..e579e73 100644 --- a/assess-admin/src/main/resources/application-dev.yml +++ b/assess-admin/src/main/resources/application-dev.yml @@ -8,7 +8,6 @@ url: jdbc:mysql://localhost:3306/smart_assess?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai&useSSL=false username: root password: password - # 从库数据源 slave: enabled: false url: diff --git a/assess-admin/src/main/resources/application.yml b/assess-admin/src/main/resources/application.yml index 79b029e..64b5108 100644 --- a/assess-admin/src/main/resources/application.yml +++ b/assess-admin/src/main/resources/application.yml @@ -7,7 +7,7 @@ multipart: enabled: true # 单个文件大小 - max-file-size: 20MB + max-file-size: 50MB # 设置总上传的文件大小 max-request-size: 100MB mvc: diff --git a/assess-admin/src/main/resources/db/migration/V20240611001_project_supplement.sql b/assess-admin/src/main/resources/db/migration/V20240611001_project_supplement.sql new file mode 100644 index 0000000..2b0e259 --- /dev/null +++ b/assess-admin/src/main/resources/db/migration/V20240611001_project_supplement.sql @@ -0,0 +1,20 @@ + +-- ---------------------------- +-- 项目补录表 +-- ---------------------------- +CREATE TABLE `smart_assess`.`ass_project_supplement` ( +`id` bigint NOT NULL AUTO_INCREMENT, +`name` varchar(50) NOT NULL COMMENT '项目名称', +`writer` varchar(50) NOT NULL COMMENT '报告撰写人', +`reviewer` varchar(50) NOT NULL COMMENT '报告审批人', +`filing_date` datetime NOT NULL COMMENT '项目时间', +`agency_id` bigint NOT NULL COMMENT '机构id', +`del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0正常,1删除,默认0)', +`version` int NULL DEFAULT 0 COMMENT '乐观锁', +`create_by` varchar(20) NULL COMMENT '创建人', +`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', +`update_by` varchar(20) NULL COMMENT '更新人', +`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', +`remark` varchar(100) NULL COMMENT '备注', +PRIMARY KEY (`id`) +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目补录表' ROW_FORMAT = DYNAMIC; \ No newline at end of file diff --git a/assess-admin/src/main/resources/db/migration/V20240611002_project_supplement_file.sql b/assess-admin/src/main/resources/db/migration/V20240611002_project_supplement_file.sql new file mode 100644 index 0000000..c181d6d --- /dev/null +++ b/assess-admin/src/main/resources/db/migration/V20240611002_project_supplement_file.sql @@ -0,0 +1,17 @@ + +-- ---------------------------- +-- 项目补录附件表 +-- ---------------------------- +CREATE TABLE `smart_assess`.`ass_project_supplement_file` ( +`id` bigint NOT NULL AUTO_INCREMENT, +`file_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件名称', +`origin_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件原始名称', +`path` varchar(70) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件存放路径', +`project_id` bigint NOT NULL COMMENT '项目补录id', +`version` int NULL DEFAULT 0 COMMENT '乐观锁', +`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '创建人', +`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, +`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '更新人', +`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, +PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '项目补录附件表' ROW_FORMAT = DYNAMIC; \ No newline at end of file diff --git a/assess-admin/src/main/resources/db/migration/V20240613001_change_supplement_file.sql b/assess-admin/src/main/resources/db/migration/V20240613001_change_supplement_file.sql new file mode 100644 index 0000000..91dcaea --- /dev/null +++ b/assess-admin/src/main/resources/db/migration/V20240613001_change_supplement_file.sql @@ -0,0 +1,2 @@ +ALTER TABLE `smart_assess`.`ass_project_supplement_file` +MODIFY COLUMN `origin_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件原始名称'; \ No newline at end of file diff --git a/assess-admin/src/main/resources/db/migration/V20240614001_add_index.sql b/assess-admin/src/main/resources/db/migration/V20240614001_add_index.sql new file mode 100644 index 0000000..e79ef69 --- /dev/null +++ b/assess-admin/src/main/resources/db/migration/V20240614001_add_index.sql @@ -0,0 +1,44 @@ +ALTER TABLE `smart_assess`.`ass_project` +ADD INDEX `index_agency_id`(`agency_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_audit` +ADD INDEX `index_project_id`(`project_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_conclusion` +ADD INDEX `index_project_id`(`project_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_contract` +ADD INDEX `index_project_id`(`project_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_estimate_plan` + ADD INDEX `index_project_id`(`project_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_estimate_task` + ADD INDEX `index_project_id`(`project_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_filing_apply` + ADD INDEX `index_project_id`(`project_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_investigation` + ADD INDEX `index_project_id`(`project_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_process_audit` + ADD INDEX `index_project_id`(`project_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_project_material` + ADD INDEX `index_project_id`(`project_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_project_supplement` + ADD INDEX `index_agency_id`(`agency_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_project_supplement_file` + ADD INDEX `index_project_id`(`project_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_recitification` + ADD INDEX `index_project_id`(`project_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_risk_estimate` + ADD INDEX `index_project_id`(`project_id`) USING BTREE; + +ALTER TABLE `smart_assess`.`ass_work_notification` + ADD INDEX `index_project_id`(`project_id`) USING BTREE; diff --git a/assess-admin/src/main/resources/db/migration/V20240615001_change_project.sql b/assess-admin/src/main/resources/db/migration/V20240615001_change_project.sql new file mode 100644 index 0000000..444bbf4 --- /dev/null +++ b/assess-admin/src/main/resources/db/migration/V20240615001_change_project.sql @@ -0,0 +1,5 @@ +ALTER TABLE `smart_assess`.`ass_project` +MODIFY COLUMN `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '项目名称'; + +ALTER TABLE `smart_assess`.`ass_project_supplement` +MODIFY COLUMN `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '项目名称'; \ No newline at end of file diff --git a/assess-admin/src/main/resources/db/migration/V20240712001_change_expert_info.sql b/assess-admin/src/main/resources/db/migration/V20240712001_change_expert_info.sql new file mode 100644 index 0000000..8b440b0 --- /dev/null +++ b/assess-admin/src/main/resources/db/migration/V20240712001_change_expert_info.sql @@ -0,0 +1,6 @@ +ALTER TABLE `smart_assess`.`sys_expert_info` +MODIFY COLUMN `title` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '职称', +MODIFY COLUMN `company_name` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '单位名称', +MODIFY COLUMN `current_profession` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '现在从事专业或方向', +ADD COLUMN `domain` varchar(10) NULL COMMENT '专家领域', +ADD COLUMN `level` varchar(10) NULL COMMENT '入库分级'; \ No newline at end of file diff --git a/assess-admin/src/test/java/com/gkhy/admin/ExcelTest.java b/assess-admin/src/test/java/com/gkhy/admin/ExcelTest.java new file mode 100644 index 0000000..873d322 --- /dev/null +++ b/assess-admin/src/test/java/com/gkhy/admin/ExcelTest.java @@ -0,0 +1,33 @@ +package com.gkhy.admin; + +import com.alibaba.excel.EasyExcel; +import com.gkhy.assess.admin.GkhyAdminApplication; +import com.gkhy.assess.system.excel.ExpertExcelListener; +import com.gkhy.assess.system.domain.vo.SysExpertInfoExcelVO; +import lombok.extern.slf4j.Slf4j; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.core.io.Resource; +import org.springframework.test.context.junit4.SpringRunner; + +import java.io.IOException; +import java.io.InputStream; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = GkhyAdminApplication.class) +//@ActiveProfiles("dev") +@Slf4j +public class ExcelTest { + @Autowired + private ApplicationContext applicationContext; + + @Test + public void testExcel() throws IOException { + Resource resource = applicationContext.getResource("classpath:abc.xlsx"); + InputStream resourceAsStream =resource.getInputStream(); + EasyExcel.read(resourceAsStream, SysExpertInfoExcelVO.class,new ExpertExcelListener()).sheet(0).doRead(); + } +} diff --git a/assess-common/pom.xml b/assess-common/pom.xml index 2e310ce..f22f60d 100644 --- a/assess-common/pom.xml +++ b/assess-common/pom.xml @@ -116,6 +116,11 @@ <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </dependency> + + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>easyexcel</artifactId> + </dependency> </dependencies> </project> \ No newline at end of file diff --git a/assess-common/src/main/java/com/gkhy/assess/common/domain/vo/AccountVO.java b/assess-common/src/main/java/com/gkhy/assess/common/domain/vo/AccountVO.java index 8d8860f..047dfa7 100644 --- a/assess-common/src/main/java/com/gkhy/assess/common/domain/vo/AccountVO.java +++ b/assess-common/src/main/java/com/gkhy/assess/common/domain/vo/AccountVO.java @@ -33,6 +33,9 @@ @ApiModelProperty(value = "机构Id") private Long agentId; + @ApiModelProperty(value = "审批状态(0暂存,1审核中,2审批通过,3审批驳回,4已作废 默认1)") + private Integer state; + @ApiModelProperty("用户角色") private String role; diff --git a/assess-common/src/main/java/com/gkhy/assess/common/excel/BirthdayConvert.java b/assess-common/src/main/java/com/gkhy/assess/common/excel/BirthdayConvert.java new file mode 100644 index 0000000..5bc0f4c --- /dev/null +++ b/assess-common/src/main/java/com/gkhy/assess/common/excel/BirthdayConvert.java @@ -0,0 +1,34 @@ +package com.gkhy.assess.common.excel; + + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.data.DataFormatData; + +import java.util.Date; + +public class BirthdayConvert implements Converter<Date> { + + @Override + public Class<?> supportJavaTypeKey() { + return Date.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public Date convertToJavaData(ReadConverterContext<?> context) throws Exception { + DataFormatData dataFormatData = context.getReadCellData().getDataFormatData(); + Object data = context.getReadCellData().getData(); + String borthday=dataFormatData.toString(); + borthday=borthday.trim(); + String year=borthday.substring(0,4); + + return new Date(); + + } +} diff --git a/assess-common/src/main/java/com/gkhy/assess/common/excel/DutyConvert.java b/assess-common/src/main/java/com/gkhy/assess/common/excel/DutyConvert.java new file mode 100644 index 0000000..9a52ec3 --- /dev/null +++ b/assess-common/src/main/java/com/gkhy/assess/common/excel/DutyConvert.java @@ -0,0 +1,33 @@ +package com.gkhy.assess.common.excel; + + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.enums.CellDataTypeEnum; + +public class DutyConvert implements Converter<Integer> { + + @Override + public Class<?> supportJavaTypeKey() { + return Integer.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public Integer convertToJavaData(ReadConverterContext<?> context) throws Exception { + String duty=context.getReadCellData().getStringValue(); + switch (duty){ + case "在岗": + return 0; + case "退休": + return 1; + default: + return 0; + } + + } +} diff --git a/assess-common/src/main/java/com/gkhy/assess/common/excel/SexConvert.java b/assess-common/src/main/java/com/gkhy/assess/common/excel/SexConvert.java new file mode 100644 index 0000000..5a8b2d2 --- /dev/null +++ b/assess-common/src/main/java/com/gkhy/assess/common/excel/SexConvert.java @@ -0,0 +1,33 @@ +package com.gkhy.assess.common.excel; + + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.enums.CellDataTypeEnum; + +public class SexConvert implements Converter<Integer> { + + @Override + public Class<?> supportJavaTypeKey() { + return Integer.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public Integer convertToJavaData(ReadConverterContext<?> context) throws Exception { + String sex=context.getReadCellData().getStringValue(); + switch (sex){ + case "男": + return 0; + case "女": + return 1; + default: + return 2; + } + + } +} diff --git a/assess-common/src/main/java/com/gkhy/assess/common/utils/JwtTokenUtil.java b/assess-common/src/main/java/com/gkhy/assess/common/utils/JwtTokenUtil.java index dd9aae4..302045a 100644 --- a/assess-common/src/main/java/com/gkhy/assess/common/utils/JwtTokenUtil.java +++ b/assess-common/src/main/java/com/gkhy/assess/common/utils/JwtTokenUtil.java @@ -49,7 +49,7 @@ public static String tokenHead=""; /**Token有效期为1天(Token在reids中缓存时间为两倍) 单位ms*/ - public static final long EXPIRATION=(1 * 24) * 60 * 60 * 1000; //JWT的超期限时间(60*60*24*1) + public static final long EXPIRATION=(1 *12) * 60 * 60 * 1000; //JWT的超期限时间(60*60*24*1) /** * token有效期还有30分钟,刷新token 单位ms @@ -127,7 +127,7 @@ * @return */ public static String sign(String username,String secret,Integer identity){ - Date date=new Date(System.currentTimeMillis()+EXPIRATION*1000); + Date date=new Date(System.currentTimeMillis()+EXPIRATION); Algorithm algorithm=Algorithm.HMAC256(secret); return JWT.create().withClaim("username",username) .withClaim("identity",identity).withExpiresAt(date).sign(algorithm); diff --git a/assess-framework/src/main/java/com/gkhy/assess/framework/config/ApplicationConfig.java b/assess-framework/src/main/java/com/gkhy/assess/framework/config/ApplicationConfig.java index 5bc2a53..f820a65 100644 --- a/assess-framework/src/main/java/com/gkhy/assess/framework/config/ApplicationConfig.java +++ b/assess-framework/src/main/java/com/gkhy/assess/framework/config/ApplicationConfig.java @@ -13,8 +13,10 @@ import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; +import java.lang.reflect.Array; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Arrays; import java.util.TimeZone; /** @@ -61,16 +63,21 @@ @Bean public CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource(); - final CorsConfiguration corsConfiguration = new CorsConfiguration(); + final CorsConfiguration config = new CorsConfiguration(); //是否允许请求带有验证信息 - corsConfiguration.setAllowCredentials(true); + config.setAllowCredentials(true); + config.setAllowedOrigins(Arrays.asList("*")); + config.setAllowedMethods(Arrays.asList("*")); + config.setAllowCredentials(true); + config.setMaxAge(168000L); + // 允许访问的客户端域名 - corsConfiguration.addAllowedOriginPattern("*"); - // 允许服务端访问的客户端请求头 - corsConfiguration.addAllowedHeader("*"); - // 允许访问的方法名,GET POST等 - corsConfiguration.addAllowedMethod("*"); - urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration); +// config.addAllowedOriginPattern("*"); +// // 允许服务端访问的客户端请求头 +// config.addAllowedHeader("*"); +// // 允许访问的方法名,GET POST等 +// config.addAllowedMethod("*"); + urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", config); return new CorsFilter(urlBasedCorsConfigurationSource); } } diff --git a/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/ShiroConfig.java b/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/ShiroConfig.java index f2deed4..fa572be 100644 --- a/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/ShiroConfig.java +++ b/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/ShiroConfig.java @@ -67,6 +67,7 @@ // 配置shiro错误从定向问题 /error 路径的错误处理 chain.addPathDefinition("/error", "anon"); chain.addPathDefinition("/upload/**", "anon"); + chain.addPathDefinition("/system/common/importExcel", "anon"); chain.addPathDefinition("/system/account/login","anon"); chain.addPathDefinition("/system/logout", "anon"); diff --git a/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/realm/UserRealm.java b/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/realm/UserRealm.java index cd24912..5a55de1 100644 --- a/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/realm/UserRealm.java +++ b/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/realm/UserRealm.java @@ -5,6 +5,7 @@ import com.gkhy.assess.common.utils.RequestUtil; import com.gkhy.assess.common.utils.SpringContextUtils; import com.gkhy.assess.common.domain.JwtToken; +import com.gkhy.assess.common.utils.StringUtils; import com.gkhy.assess.framework.shiro.service.SysLoginService; import com.gkhy.assess.system.domain.SysUser; import lombok.extern.slf4j.Slf4j; @@ -65,7 +66,7 @@ SysUser sysUser=null; if(authenticationToken instanceof JwtToken){ String token= (String) authenticationToken.getCredentials(); - if(token==null){ + if(StringUtils.isBlank(token)){ log.info("————————身份认证失败——————————IP地址: "+ RequestUtil.getRequestIp(req) +",URL:"+req.getRequestURI()); throw new AuthenticationException("token为空!"); } diff --git a/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/service/SysLoginService.java b/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/service/SysLoginService.java index 96d9a40..f2a37b9 100644 --- a/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/service/SysLoginService.java +++ b/assess-framework/src/main/java/com/gkhy/assess/framework/shiro/service/SysLoginService.java @@ -56,11 +56,11 @@ if(UserStatusEnum.DISABLE.getCode().equals(sysUser.getStatus())){ throw new AuthenticationException("用户已被停用"); } - if(UserIdentityEnum.AGENCY.getCode().equals(sysUser.getIdentity())){ - if(!ApproveStatusEnum.APPROVED.getCode().equals(sysUser.getState())){ - throw new AuthenticationException("机构账户审批还未通过"); - } - } +// if(UserIdentityEnum.AGENCY.getCode().equals(sysUser.getIdentity())){ +// if(!ApproveStatusEnum.APPROVED.getCode().equals(sysUser.getState())){ +// throw new AuthenticationException("机构账户审批还未通过"); +// } +// } } public SysUser validJwtToken(String jwtToken){ @@ -76,7 +76,7 @@ throw new AuthenticationException("token非法无效!"); } if(!jwtTokenRefresh(jwtToken,username,sysUser.getPassword(),identity)){ - throw new AuthenticationException("Token已失效,请重新登录!"); + throw new AuthenticationException("您的账号登录过期,请重新登录!"); } // setRolePermission(sysUser); return sysUser; @@ -97,16 +97,15 @@ */ public boolean jwtTokenRefresh(String jwtToken, String username, String passWord, Integer identity){ String tokenKey=redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+JwtTokenUtil.md5Encode(jwtToken)); - String userKey=redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+username+"_"+identity); + // String userKey=redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+username+"_"+identity); String cacheToken= (String) redisUtils.get(tokenKey); if(StringUtils.isNotEmpty(cacheToken)){ // 校验token有效性 if(!JwtTokenUtil.isNeedUpdate(cacheToken,username,passWord,identity)){ String newToken=JwtTokenUtil.sign(username,passWord,identity); // 设置超时时间 - redisUtils.set(tokenKey,newToken); - redisUtils.expire(tokenKey,JwtTokenUtil.EXPIRATION*2/1000); - redisUtils.expire(userKey,(JwtTokenUtil.EXPIRATION*2/1000)+2); + redisUtils.set(tokenKey,newToken,JwtTokenUtil.EXPIRATION*2/1000); + // redisUtils.expire(userKey,(JwtTokenUtil.EXPIRATION*2/1000)+2); } return true; } diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssAccessoryFile.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssAccessoryFile.java index 24c7e2e..2bbcbfd 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssAccessoryFile.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssAccessoryFile.java @@ -1,9 +1,7 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; + import java.io.Serializable; import java.time.LocalDateTime; @@ -65,6 +63,7 @@ @TableField("project_id") private Long projectId; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssAudit.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssAudit.java index b0c0e6a..eadfc01 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssAudit.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssAudit.java @@ -1,9 +1,7 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; + import java.io.Serializable; import java.time.LocalDateTime; @@ -147,6 +145,7 @@ @TableField("del_flag") private Integer delFlag; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssConclusion.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssConclusion.java index 95ac9a2..99a407b 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssConclusion.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssConclusion.java @@ -1,9 +1,6 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import java.util.List; @@ -15,6 +12,7 @@ import lombok.Setter; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL; @@ -54,6 +52,7 @@ @TableField("project_id") private Long projectId; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; @@ -62,6 +61,7 @@ @TableField("del_flag") private Integer delFlag; + @NotEmpty(message = "评价报告不能为空") @ApiModelProperty("评价结论附件") @TableField(exist = false) List<AssAccessoryFile> accessoryFiles; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssContract.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssContract.java index ec298b7..4dfb7d7 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssContract.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssContract.java @@ -1,9 +1,7 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; + import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -71,6 +69,7 @@ @TableField("del_flag") private Integer delFlag; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssDevice.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssDevice.java index 9075f00..18453d8 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssDevice.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssDevice.java @@ -1,9 +1,7 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; + import java.io.Serializable; import java.time.LocalDateTime; @@ -66,6 +64,7 @@ @TableField("del_flag") private Integer delFlag; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimatePlan.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimatePlan.java index 0ee466b..238ee3a 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimatePlan.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimatePlan.java @@ -1,9 +1,6 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import java.time.LocalDateTime; import java.util.List; @@ -64,6 +61,7 @@ @TableField("del_flag") private Integer delFlag; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimateSchedule.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimateSchedule.java index b7c506b..93543f6 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimateSchedule.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimateSchedule.java @@ -1,9 +1,7 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; + import java.io.Serializable; import java.time.LocalDateTime; @@ -68,6 +66,7 @@ @TableField("del_flag") private Integer delFlag; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimateTask.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimateTask.java index fa84b3c..a263e76 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimateTask.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssEstimateTask.java @@ -1,9 +1,7 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; + import java.io.Serializable; import java.time.LocalDateTime; @@ -79,6 +77,7 @@ @TableField("del_flag") private Integer delFlag; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssFaceRecognition.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssFaceRecognition.java index 0992ee0..ceb2aee 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssFaceRecognition.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssFaceRecognition.java @@ -1,9 +1,6 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonInclude; import com.gkhy.assess.common.domain.BaseEntity; @@ -55,12 +52,13 @@ @TableField("sign_path") private String signPath; - @NotBlank(message = "承诺书图片路径不能为空") + // @NotBlank(message = "承诺书图片路径不能为空") @ApiModelProperty(value = "承诺书图片路径",required = true) @TableField("insurance_path") private String insurancePath; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssFaceRecord.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssFaceRecord.java index 9c7a4f1..cd57849 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssFaceRecord.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssFaceRecord.java @@ -1,9 +1,6 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonInclude; import com.gkhy.assess.common.domain.BaseEntity; @@ -64,6 +61,7 @@ @TableField("scene") private Integer scene; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssFilingApply.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssFilingApply.java index 8876572..d02fd21 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssFilingApply.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssFilingApply.java @@ -1,9 +1,6 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonInclude; import com.gkhy.assess.common.domain.BaseEntity; @@ -47,6 +44,7 @@ @TableField("file_id") private Long fileId; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssInvestigation.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssInvestigation.java index 28c791a..214c3ff 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssInvestigation.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssInvestigation.java @@ -1,9 +1,7 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; + import java.io.Serializable; import java.time.LocalDateTime; import java.util.List; @@ -73,6 +71,7 @@ @TableField("del_flag") private Integer delFlag; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssPlanPerson.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssPlanPerson.java index 7e2b11a..feb2b87 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssPlanPerson.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssPlanPerson.java @@ -1,11 +1,10 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; + import java.io.Serializable; import java.time.LocalDateTime; +import java.util.List; import com.fasterxml.jackson.annotation.JsonInclude; import com.gkhy.assess.common.domain.BaseEntity; @@ -93,6 +92,7 @@ @TableField("del_flag") private Integer delFlag; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; @@ -101,4 +101,8 @@ @TableField(exist = false) private SysUser person; + @ApiModelProperty("项目担任角色数组") + @TableField(exist = false) + private List<Integer> playRoles; + } diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProcessAudit.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProcessAudit.java index 967145f..05da18d 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProcessAudit.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProcessAudit.java @@ -1,9 +1,6 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonInclude; import com.gkhy.assess.common.domain.BaseEntity; import com.gkhy.assess.system.domain.SysUser; @@ -165,6 +162,7 @@ @TableField("project_id") private Long projectId; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProject.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProject.java index 6fca7e2..6639a88 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProject.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProject.java @@ -42,6 +42,7 @@ private Long id; @NotBlank(message = "项目名称不能为空") + @Length(min=1,max=100,message = "项目名称不能超过{max}字符") @ApiModelProperty(value = "项目名称",required = true) @TableField("name") private String name; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProjectMaterial.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProjectMaterial.java index b1b95b6..cd6e697 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProjectMaterial.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProjectMaterial.java @@ -1,9 +1,6 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonInclude; import com.gkhy.assess.common.domain.BaseEntity; @@ -56,6 +53,7 @@ @TableField("file_id") private Long fileId; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProjectSupplement.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProjectSupplement.java new file mode 100644 index 0000000..1a3e66b --- /dev/null +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProjectSupplement.java @@ -0,0 +1,106 @@ +package com.gkhy.assess.system.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +/** + * <p> + * 项目补录表 + * </p> + * + * @author kzy + * @since 2024-06-11 15:44:14 + */ +@Getter +@Setter +@TableName("ass_project_supplement") +@ApiModel(value = "AssProjectSupplement对象", description = "项目补录表") +public class AssProjectSupplement implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + + @NotBlank(message = "项目名称不能为空") + @Length(min=1,max=100,message = "项目名称不能超过{max}字符") + @ApiModelProperty(value = "项目名称",required = true) + @TableField("name") + private String name; + + @NotBlank(message = "报告撰写人不能为空") + @Length(min=1,max=50,message = "报告撰写人不能超过{max}字符") + @ApiModelProperty(value = "报告撰写人",required = true) + @TableField("writer") + private String writer; + + @NotBlank(message = "报告审批人不能为空") + @Length(min=1,max=50,message = "报告审批人不能超过{max}字符") + @ApiModelProperty(value = "报告审批人",required = true) + @TableField("reviewer") + private String reviewer; + + @NotNull(message = "项目时间不能为空") + @ApiModelProperty(value = "项目时间",required = true) + @TableField("filing_date") + private LocalDateTime filingDate; + + @NotNull(message = "机构id不能为空") + @ApiModelProperty(value = "机构id",required = true) + @TableField("agency_id") + private Long agencyId; + + @ApiModelProperty("删除标志(0正常,1删除,默认0)") + @TableField("del_flag") + private Integer delFlag; + + @Version + @ApiModelProperty("乐观锁") + @TableField("version") + private Integer version; + + @ApiModelProperty("创建人") + @TableField("create_by") + private String createBy; + + @ApiModelProperty("创建时间") + @TableField("create_time") + private LocalDateTime createTime; + + @ApiModelProperty("更新人") + @TableField("update_by") + private String updateBy; + + @ApiModelProperty("更新时间") + @TableField("update_time") + private LocalDateTime updateTime; + + @ApiModelProperty("备注") + @TableField("remark") + private String remark; + + @NotEmpty(message = "附件列表不能为空") + @ApiModelProperty(value = "附件列表",required = true) + @TableField(exist = false) + private List<AssProjectSupplementFile> files; + + @ApiModelProperty("机构名称") + @TableField(exist = false) + private String agencyName; + + +} diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProjectSupplementFile.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProjectSupplementFile.java new file mode 100644 index 0000000..16a8e77 --- /dev/null +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssProjectSupplementFile.java @@ -0,0 +1,71 @@ +package com.gkhy.assess.system.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; +import java.time.LocalDateTime; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; + +/** + * <p> + * 项目补录附件表 + * </p> + * + * @author kzy + * @since 2024-06-11 15:44:15 + */ +@Getter +@Setter +@TableName("ass_project_supplement_file") +@ApiModel(value = "AssProjectSupplementFile对象", description = "项目补录附件表") +public class AssProjectSupplementFile implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty("文件名称") + @TableField("file_name") + private String fileName; + + @Length(min = 0,max = 100,message = "文件名长度不能超过100个字符") + @ApiModelProperty("文件原始名称") + @TableField("origin_name") + private String originName; + + @ApiModelProperty("文件存放路径") + @TableField("path") + private String path; + + @ApiModelProperty("项目补录id") + @TableField("project_id") + private Long projectId; + + @Version + @ApiModelProperty("乐观锁") + @TableField("version") + private Integer version; + + @ApiModelProperty("创建人") + @TableField("create_by") + private String createBy; + + @TableField("create_time") + private LocalDateTime createTime; + + @ApiModelProperty("更新人") + @TableField("update_by") + private String updateBy; + + @TableField("update_time") + private LocalDateTime updateTime; + + +} diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssRecitification.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssRecitification.java index 8282aee..7899e8c 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssRecitification.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssRecitification.java @@ -1,9 +1,6 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import java.time.LocalDateTime; @@ -66,6 +63,7 @@ @TableField("reason") private String reason; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssRiskEstimate.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssRiskEstimate.java index 706b967..4df4982 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssRiskEstimate.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssRiskEstimate.java @@ -1,9 +1,6 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import java.time.LocalDateTime; @@ -131,6 +128,7 @@ @TableField("del_flag") private Integer delFlag; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssWorkNotification.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssWorkNotification.java index 83f962d..092d671 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/AssWorkNotification.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/AssWorkNotification.java @@ -1,9 +1,7 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; + import java.io.Serializable; import java.time.LocalDateTime; @@ -71,6 +69,7 @@ @TableField("del_flag") private Integer delFlag; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/SysAgency.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/SysAgency.java index f08252a..94a72a3 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/SysAgency.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/SysAgency.java @@ -74,7 +74,7 @@ private String province; - @NotBlank(message = "市不能为空") + // @NotBlank(message = "市不能为空") @ApiModelProperty(value = "市",required = true) @TableField("city") private String city; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/SysExpertInfo.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/SysExpertInfo.java index b755c85..2d201cc 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/SysExpertInfo.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/SysExpertInfo.java @@ -200,6 +200,14 @@ @TableField("version") private Integer version; + @ApiModelProperty("专家领域") + @TableField("domain") + private String domain; + + @ApiModelProperty("入库分级") + @TableField("level") + private String level; + } diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/SysUser.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/SysUser.java index 3c08c3d..128ec62 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/SysUser.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/SysUser.java @@ -178,17 +178,15 @@ @TableField(exist = false) private SysAgency agency; - @NotNull(message = "社保照片不能为空",groups ={ExpertGroup.class} ) + @ApiModelProperty("社保照片路径列表,创建专家传参") @TableField(exist = false) private List<SysAttach> socialAttach; - @NotNull(message = "医保照片不能为空",groups ={ExpertGroup.class} ) @ApiModelProperty("医保照片路径列表,创建专家传参") @TableField(exist = false) private List<SysAttach> medicalAttach; - @NotNull(message = "工资照片不能为空",groups ={ExpertGroup.class} ) @ApiModelProperty("工资照片路径列表,创建专家传参") @TableField(exist = false) private List<SysAttach> salaryAttach; @@ -201,4 +199,8 @@ @TableField(exist = false) private PersonProjectVO personProjectVO; + @ApiModelProperty("机构名称") + @TableField(exist = false) + private String agencyName; + } diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/SysUserFace.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/SysUserFace.java index b013c9a..07de6f8 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/domain/SysUserFace.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/SysUserFace.java @@ -1,9 +1,7 @@ package com.gkhy.assess.system.domain; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; + import java.io.Serializable; import java.time.LocalDateTime; @@ -50,6 +48,7 @@ @TableField("user_id") private Long userId; + @Version @ApiModelProperty("乐观锁") @TableField("version") private Integer version; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/domain/vo/SysExpertInfoExcelVO.java b/assess-system/src/main/java/com/gkhy/assess/system/domain/vo/SysExpertInfoExcelVO.java new file mode 100644 index 0000000..6c4abd2 --- /dev/null +++ b/assess-system/src/main/java/com/gkhy/assess/system/domain/vo/SysExpertInfoExcelVO.java @@ -0,0 +1,105 @@ +package com.gkhy.assess.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gkhy.assess.common.domain.BaseEntity; +import com.gkhy.assess.common.excel.BirthdayConvert; +import com.gkhy.assess.common.excel.DutyConvert; +import com.gkhy.assess.common.excel.SexConvert; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; +import java.io.Serializable; +import java.time.LocalDateTime; + +import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL; + +/** + * <p> + * 系统专家信息表 + * </p> + * + * @author kzy + * @since 2023-11-27 16:33:33 + */ +@Getter +@Setter +public class SysExpertInfoExcelVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("序号") + @ExcelProperty(value = "序号",index = 0) + private String number; + + @ApiModelProperty("专家名称") + @ExcelProperty(value = "姓名",index = 1) + private String name; + + @ApiModelProperty("身份证号码") + @ExcelProperty(value = "身份证号",index = 2) + private String idCard; + + + @ApiModelProperty("出生日期") + @ExcelProperty(value = "出生年月",index = 3) + private LocalDateTime birthday; + + @ApiModelProperty("性别(0男,1女,2未知,默认2)") + @ExcelProperty(value = "性别",converter = SexConvert.class,index = 4) + private Integer sex; + + @ApiModelProperty("最高学历") + @ExcelProperty(value = "学历",index = 5) + private String degree; + + + @ApiModelProperty("专业") + @ExcelProperty(value = "所学专业",index = 6) + private String speciality; + + @ApiModelProperty("职称") + @ExcelProperty(value = "职称",index = 7) + private String title; + + @ApiModelProperty("在岗情况(0在岗,1退休)") + @ExcelProperty(value = "在岗情况",converter = DutyConvert.class,index = 8) + private Integer dutyStatus; + + + @ApiModelProperty("单位名称") + @ExcelProperty(value = "单位全称",index = 9) + private String companyName; + + + + @ApiModelProperty("现在从事专业或方向") + @ExcelProperty(value = "现从事专业及方向",index = 10) + private String currentProfession; + + + @ApiModelProperty("手机号") + @ExcelProperty(value = "联系方式",index = 11) + private String phone; + + @ApiModelProperty("支撑方向安全生产") + @ExcelProperty(value = "支持方向",index = 12) + private String supportDirectionSafety; + + @ApiModelProperty("专家领域") + @ExcelProperty(value = "专家领域",index = 13) + private String domain; + + @ApiModelProperty("入库分级") + @ExcelProperty(value = "入库分级",index = 14) + private String level; + +} diff --git a/assess-system/src/main/java/com/gkhy/assess/system/excel/ExpertExcelListener.java b/assess-system/src/main/java/com/gkhy/assess/system/excel/ExpertExcelListener.java new file mode 100644 index 0000000..296877f --- /dev/null +++ b/assess-system/src/main/java/com/gkhy/assess/system/excel/ExpertExcelListener.java @@ -0,0 +1,98 @@ +package com.gkhy.assess.system.excel; + +import cn.hutool.extra.spring.SpringUtil; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.excel.util.ListUtils; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.gkhy.assess.common.utils.StringUtils; +import com.gkhy.assess.system.domain.SysExpertInfo; +import com.gkhy.assess.system.domain.vo.SysExpertInfoExcelVO; +import com.gkhy.assess.system.service.SysExpertInfoService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j + +public class ExpertExcelListener extends AnalysisEventListener<SysExpertInfoExcelVO> { + + + private static final int BATCH_COUNT=100; + + private List<SysExpertInfoExcelVO> cachedDateList= ListUtils.newArrayListWithExpectedSize(BATCH_COUNT); + + @Override + public void onException(Exception exception, AnalysisContext context) throws Exception { + log.error("解析异常:",exception); + throw exception; + } + + @Override + public void invoke(SysExpertInfoExcelVO sysExpertInfoExcelVO, AnalysisContext analysisContext) { + if(!StringUtils.isBlank(sysExpertInfoExcelVO.getName())){ + cachedDateList.add(sysExpertInfoExcelVO); + } + if(cachedDateList.size()>=BATCH_COUNT){ + saveData(); + cachedDateList.clear(); + } + } + + private void saveData(){ + for(SysExpertInfoExcelVO sysExpertInfoExcelVO:cachedDateList){ + String direction=sysExpertInfoExcelVO.getSupportDirectionSafety(); + String name=sysExpertInfoExcelVO.getName(); + String idCard = sysExpertInfoExcelVO.getIdCard(); + SysExpertInfo existExpertInfo = SpringUtil.getBean(SysExpertInfoService.class).getOne(Wrappers.<SysExpertInfo>lambdaQuery() + .eq(true, SysExpertInfo::getIdCard, idCard) + .last(" limit 1")); + direction=direction.replace("安全生产:","").trim(); + String[] splits = direction.split("、"); + List<String> safetyArray=new ArrayList<>(); + for(String str:splits){ + str=str.trim(); + String code="1"; + if(str.equals("现场检查")){ + code="1"; + }else if(str.equals("调查评估")){ + code="2"; + }else if(str.equals("咨询服务")){ + code="3"; + }else if(str.equals("教育培训")){ + code="4"; + }else{ + code="5"; + } + safetyArray.add(code); + } + if(existExpertInfo!=null){ + existExpertInfo.setState(2); + existExpertInfo.setSupportDirectionSafety(String.join( ",",safetyArray)); + existExpertInfo.setDomain(sysExpertInfoExcelVO.getDomain()); + existExpertInfo.setLevel(sysExpertInfoExcelVO.getLevel()); + SpringUtil.getBean(SysExpertInfoService.class).updateById(existExpertInfo); + }else{ + SysExpertInfo sysExpertInfo=new SysExpertInfo(); + BeanUtils.copyProperties(sysExpertInfoExcelVO,sysExpertInfo); + sysExpertInfo.setSupportDirectionSafety(String.join( ",",safetyArray)); + sysExpertInfo.setState(2); + SpringUtil.getBean(SysExpertInfoService.class).save(sysExpertInfo); + } + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + saveData(); + log.info("sheet={}解析完成",analysisContext.readSheetHolder().getSheetName()); + } +} diff --git a/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssPlanPersonMapper.java b/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssPlanPersonMapper.java index 0bf27f5..ab954ff 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssPlanPersonMapper.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssPlanPersonMapper.java @@ -53,4 +53,10 @@ */ List<PersonRecognitionVO> getPersonAndRecognitionCount(List<Long> projectIds); + /** + * 查找项目组长人数 + * @param projectId + * @return + */ + int getMajorPlanPersonCountByProject(Long projectId); } diff --git a/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssProjectMapper.java b/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssProjectMapper.java index 8f1747b..890aac0 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssProjectMapper.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssProjectMapper.java @@ -39,7 +39,7 @@ * @param name * @return */ - AssProject getProjectByName(String name); + AssProject getProjectByName(@Param("name")String name,@Param("agencyId")Long agencyId); /** * 获取项目状态 diff --git a/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssProjectSupplementFileMapper.java b/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssProjectSupplementFileMapper.java new file mode 100644 index 0000000..39d40bf --- /dev/null +++ b/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssProjectSupplementFileMapper.java @@ -0,0 +1,33 @@ +package com.gkhy.assess.system.mapper; + +import com.gkhy.assess.system.domain.AssProjectSupplementFile; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * <p> + * 项目补录附件表 Mapper 接口 + * </p> + * + * @author kzy + * @since 2024-06-11 15:44:15 + */ +@Mapper +public interface AssProjectSupplementFileMapper extends BaseMapper<AssProjectSupplementFile> { + /** + * 获取项目的附件 + * @param projectId + * @return + */ + List<AssProjectSupplementFile> getFilesByProjectId(Long projectId); + + + /** + * 根据项目id删除附件 + * @param projectId + * @return + */ + int deleteByProjectId(Long projectId); +} diff --git a/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssProjectSupplementMapper.java b/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssProjectSupplementMapper.java new file mode 100644 index 0000000..d85bda4 --- /dev/null +++ b/assess-system/src/main/java/com/gkhy/assess/system/mapper/AssProjectSupplementMapper.java @@ -0,0 +1,41 @@ +package com.gkhy.assess.system.mapper; + +import com.gkhy.assess.system.domain.AssProjectSupplement; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * <p> + * 项目补录表 Mapper 接口 + * </p> + * + * @author kzy + * @since 2024-06-11 15:44:14 + */ +@Mapper +public interface AssProjectSupplementMapper extends BaseMapper<AssProjectSupplement> { + /** + * 根据名称获取项目 + * @param name + * @param agencyId + * @return + */ + AssProjectSupplement getProjectByName(@Param("name") String name, @Param("agencyId") Long agencyId); + + /** + * 分页获取项目列表 + * @param projectSupplement + * @return + */ + List<AssProjectSupplement> projectList(AssProjectSupplement projectSupplement); + + /** + * 根据id查询项目 + * @param projectSupplementId + * @return + */ + AssProjectSupplement getProjectSupplementById(Long projectSupplementId); +} diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/AssPlanPersonService.java b/assess-system/src/main/java/com/gkhy/assess/system/service/AssPlanPersonService.java index 8c18244..1d23096 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/AssPlanPersonService.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/AssPlanPersonService.java @@ -49,7 +49,7 @@ * @param personId * @return */ - int deletePlanPersonByPersonId(Long personId); + int deletePlanPersonByPersonId(Long personId,Long projectId,Integer playCode); /** * 校验项目成员是否唯一 @@ -63,4 +63,11 @@ * @return */ AssPlanPerson getPlanPersonByPersonId(Long personId,Long projectId); + + /** + * 查询项目成员组长人数 + * @param projectId + * @return + */ + int getMajorPlanPersonCountByProject(Long projectId); } diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/AssProjectSupplementFileService.java b/assess-system/src/main/java/com/gkhy/assess/system/service/AssProjectSupplementFileService.java new file mode 100644 index 0000000..b86c0b4 --- /dev/null +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/AssProjectSupplementFileService.java @@ -0,0 +1,34 @@ +package com.gkhy.assess.system.service; + +import com.gkhy.assess.system.domain.AssAccessoryFile; +import com.gkhy.assess.system.domain.AssProjectSupplementFile; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + * <p> + * 项目补录附件表 服务类 + * </p> + * + * @author kzy + * @since 2024-06-11 15:44:15 + */ +public interface AssProjectSupplementFileService extends IService<AssProjectSupplementFile> { + + /** + * 根据项目id获取文件 + * @param projectId + * @return + */ + List<AssProjectSupplementFile> getSupplementFileByProjectId(Long projectId); + + + /** + * 根据项目id批量删除文件 + * @param projectId + * @return + */ + int deleteByProjectId(Long projectId); +} diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/AssProjectSupplementService.java b/assess-system/src/main/java/com/gkhy/assess/system/service/AssProjectSupplementService.java new file mode 100644 index 0000000..b30c892 --- /dev/null +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/AssProjectSupplementService.java @@ -0,0 +1,58 @@ +package com.gkhy.assess.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gkhy.assess.common.api.CommonPage; +import com.gkhy.assess.system.domain.AssProjectSupplement; + +/** + * <p> + * 项目补录表 服务类 + * </p> + * + * @author kzy + * @since 2024-06-11 15:44:14 + */ +public interface AssProjectSupplementService extends IService<AssProjectSupplement> { + /** + * 新增项目补录 + * @param projectSupplement + * @return + */ + int addProjectSupplement(AssProjectSupplement projectSupplement); + + /** + * 编辑项目补录 + * @param projectSupplement + * @return + */ + int editProjectSupplement(AssProjectSupplement projectSupplement); + + /** + * 根据id获取项目补录信息 + * @param projectSupplementId + * @return + */ + AssProjectSupplement getProjectSupplementById(Long projectSupplementId); + + /** + * 分页获取项目补录 + * @param projectSupplement + * @return + */ + CommonPage projectSupplementList(AssProjectSupplement projectSupplement); + + /** + * 删除项目补录 + * @param projectSupplementId + * @return + */ + int deleteProjectSupplement(Long projectSupplementId); + + /** + * 校验名称是否唯一 + * @param projectSupplement + * @return + */ + Boolean checkNameUnique(AssProjectSupplement projectSupplement); + +} diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/SysCommonService.java b/assess-system/src/main/java/com/gkhy/assess/system/service/SysCommonService.java index 8a03413..8c8116f 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/SysCommonService.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/SysCommonService.java @@ -3,6 +3,8 @@ import com.gkhy.assess.system.domain.vo.UploadObjectVO; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; + public interface SysCommonService { /** @@ -22,4 +24,8 @@ UploadObjectVO doUpload(String imageBase64); public boolean removeFile(String path); + + + + public void importExcel() throws IOException; } diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssAuditServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssAuditServiceImpl.java index 240fbb0..bcedb40 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssAuditServiceImpl.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssAuditServiceImpl.java @@ -41,7 +41,7 @@ Long projectId=audit.getProjectId(); projectService.checkUserAllowed(projectId); checkAuditCount(projectId,audit.getAuditType()); - planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(audit.getAssessorId()).setProjectId(projectId)); + // planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(audit.getAssessorId()).setProjectId(projectId)); //校验项目状态 projectService.checkReportProgress(projectId, audit.getAuditType()==1?ReportProgressEnum.INVESTINGATION:ReportProgressEnum.INNER_AUDIT); audit.setCreateBy(ShiroUtils.getSysUser().getUsername()); @@ -76,9 +76,9 @@ int row=baseMapper.updateById(audit); if(row>0){ if(audit.getAssessorId()!=null&& !audit.getAssessorId().equals(oldAudit.getAssessorId())){ - planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(audit.getAssessorId()).setProjectId(oldAudit.getProjectId())); + // planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(audit.getAssessorId()).setProjectId(oldAudit.getProjectId())); //todo 删除旧的项目成员 - planPersonService.deletePlanPersonByPersonId(oldAudit.getAssessorId()); + planPersonService.deletePlanPersonByPersonId(oldAudit.getAssessorId(),audit.getProjectId(),audit.getAuditType()==1?PlayRoleEnum.INNER_LEADER.getCode():PlayRoleEnum.TEACH_LEADER.getCode()); //todo 新增新的项目成员 planPersonService.addPlanPerson(new AssPlanPerson().setPersonId(audit.getAssessorId()) .setPlayRole(audit.getAuditType()==1?PlayRoleEnum.INNER_LEADER.getCode():PlayRoleEnum.TEACH_LEADER.getCode()) diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssConclusionServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssConclusionServiceImpl.java index 0cff0a8..b2ed2a0 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssConclusionServiceImpl.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssConclusionServiceImpl.java @@ -41,6 +41,7 @@ //校验项目状态 projectService.checkReportProgress(projectId, ReportProgressEnum.REVIEW_RECORD); conclusion.setCreateBy(ShiroUtils.getSysUser().getUsername()); + conclusion.setIsReviseManual(true); int row=baseMapper.insert(conclusion); if(row>0) { //更新项目状态 diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssEstimatePlanServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssEstimatePlanServiceImpl.java index ee94840..b192665 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssEstimatePlanServiceImpl.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssEstimatePlanServiceImpl.java @@ -44,9 +44,10 @@ Long projectId=estimatePlan.getProjectId(); projectService.checkUserAllowed(projectId); checkEstimatePlanCount(projectId); - planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(estimatePlan.getAuserId()).setProjectId(projectId)); //校验项目状态 projectService.checkReportProgress(projectId, ReportProgressEnum.ESTIMATE_TASK); + //校验是否设置了组长 + checkMajorPlanPersonCount(projectId); estimatePlan.setCreateBy(ShiroUtils.getSysUser().getUsername()); int row=baseMapper.insert(estimatePlan); if(row>0) { @@ -70,10 +71,22 @@ } } + /** + * 校验项目组成员是否设置了组长 + * @param projectId + */ + public void checkMajorPlanPersonCount(Long projectId){ + int count=planPersonService.getMajorPlanPersonCountByProject(projectId); + if(count<1){ + throw new ApiException("项目组成员中必须有一个人设置为组长"); + } + } + @Override @Transactional(rollbackFor = RuntimeException.class) public int editEstimatePlan(AssEstimatePlan estimatePlan) { projectService.checkUserAllowed(estimatePlan.getProjectId()); + checkMajorPlanPersonCount(estimatePlan.getProjectId()); AssEstimatePlan oldPlan=getById(estimatePlan.getId()); estimatePlan.setUpdateBy(ShiroUtils.getSysUser().getUsername()); int row=baseMapper.updateById(estimatePlan); @@ -83,9 +96,9 @@ } if(row>0) { if (estimatePlan.getAuserId() != null && !estimatePlan.getAuserId().equals(oldPlan.getAuserId())) { - planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(estimatePlan.getAuserId()).setProjectId(oldPlan.getProjectId())); + // planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(estimatePlan.getAuserId()).setProjectId(oldPlan.getProjectId())); //todo 删除旧的项目成员 - planPersonService.deletePlanPersonByPersonId(oldPlan.getAuserId()); + planPersonService.deletePlanPersonByPersonId(oldPlan.getAuserId(),estimatePlan.getProjectId(),PlayRoleEnum.ANGENCY_LEADER.getCode()); //todo 新增新的项目成员 planPersonService.addPlanPerson(new AssPlanPerson().setPersonId(estimatePlan.getAuserId()) .setPlayRole(PlayRoleEnum.ANGENCY_LEADER.getCode()) diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssEstimateTaskServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssEstimateTaskServiceImpl.java index 261bfd2..9b4c1e2 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssEstimateTaskServiceImpl.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssEstimateTaskServiceImpl.java @@ -36,7 +36,7 @@ Long projectId=estimateTask.getProjectId(); projectService.checkUserAllowed(projectId); checkTaskCount(projectId); - planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(estimateTask.getLeaderId()).setProjectId(projectId)); + // planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(estimateTask.getLeaderId()).setProjectId(projectId)); //校验项目状态 projectService.checkReportProgress(projectId, ReportProgressEnum.CONTRACT); estimateTask.setCreateBy(ShiroUtils.getSysUser().getUsername()); @@ -69,9 +69,9 @@ estimateTask.setUpdateBy(ShiroUtils.getSysUser().getUsername()); int row=baseMapper.updateById(estimateTask); if(row>0 &&estimateTask.getLeaderId()!=null&& !estimateTask.getLeaderId().equals(oldTask.getLeaderId())){ - planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(estimateTask.getLeaderId()).setProjectId(oldTask.getProjectId())); + // planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(estimateTask.getLeaderId()).setProjectId(oldTask.getProjectId())); //todo 删除旧的项目成员 - planPersonService.deletePlanPersonByPersonId(oldTask.getLeaderId()); + planPersonService.deletePlanPersonByPersonId(oldTask.getLeaderId(),estimateTask.getProjectId(),PlayRoleEnum.PROJECT_LEADER.getCode()); //todo 新增新的项目成员 planPersonService.addPlanPerson(new AssPlanPerson().setPersonId(estimateTask.getLeaderId()) .setPlayRole(PlayRoleEnum.PROJECT_LEADER.getCode()) diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssFaceRecognitionServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssFaceRecognitionServiceImpl.java index df6722f..917922f 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssFaceRecognitionServiceImpl.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssFaceRecognitionServiceImpl.java @@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -69,6 +70,8 @@ public Boolean checkAllFaceRecongnition(Long projectId){ projectService.checkUserAllowed(projectId); List<AssPlanPerson> planPersonList=planPersonMapper.getAllPlanPersonByProjectId(projectId); + Map<Long,AssPlanPerson> planPersonMap=planPersonList.stream().collect(Collectors.toMap(AssPlanPerson::getPersonId,a -> a,(k1,k2) -> k1)); + planPersonList=planPersonMap.values().stream().collect(Collectors.toList()); List<AssFaceRecognition> faceRecognitionList=baseMapper.getSimpleFaceRecognitionByProjectId(projectId); Map<Long,AssFaceRecognition> map=faceRecognitionList.stream().collect(Collectors.toMap(AssFaceRecognition::getPersonId,a -> a,(k1,k2) -> k1)); String message=""; @@ -104,7 +107,21 @@ public List<AssFaceRecognition> getFaceRecognitionByProjectId(Long projectId) { projectService.checkUserAllowed(projectId); List<AssFaceRecognition> faceRecognitionList= baseMapper.getFaceRecognitionByProjectId(projectId); - return faceRecognitionList; + //同一个人员担任多种角色 + Map<Long,List<Integer>> playRoleMap=faceRecognitionList.stream().collect(Collectors.toMap(AssFaceRecognition::getPersonId,p -> { + List<Integer> pRoles=new ArrayList<>(); + pRoles.add(p.getPlanPerson().getPlayRole()); + return pRoles; + },(List<Integer>value1,List<Integer> value2) -> { + value1.addAll(value2); + return value1; + })); + Map<Long,AssFaceRecognition> faceMap=faceRecognitionList.stream().collect(Collectors.toMap(AssFaceRecognition::getPersonId,a -> a,(k1,k2) -> k2)); + List<AssFaceRecognition> faceRecognitions=faceMap.values().stream().collect(Collectors.toList()); + for(AssFaceRecognition faceRecognition:faceRecognitions){ + faceRecognition.getPlanPerson().setPlayRoles(playRoleMap.get(faceRecognition.getPersonId())); + } + return faceRecognitions; } diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssFaceRecordServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssFaceRecordServiceImpl.java index 1e4e9b3..8dbff18 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssFaceRecordServiceImpl.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssFaceRecordServiceImpl.java @@ -40,11 +40,11 @@ faceRecord.setFacePath(uploadObjectVO.getPath()); AssFaceRecord existRecord=checkFaceUnique(faceRecord.getPersonId(),faceRecord.getProjectId()); if(existRecord!=null){ - throw new ApiException("已存在人脸识别记录"); -// existRecord.setFacePath(uploadObjectVO.getPath()); -// existRecord.setLocation(faceRecord.getLocation()); -// existRecord.setScene(faceRecord.getScene()); -// row =baseMapper.updateById(existRecord); + // throw new ApiException("已存在人脸识别记录"); + existRecord.setFacePath(uploadObjectVO.getPath()); + existRecord.setLocation(faceRecord.getLocation()); + existRecord.setScene(faceRecord.getScene()); + row =baseMapper.updateById(existRecord); }else{ faceRecord.setCreateBy(ShiroUtils.getSysUser().getUsername()); row=baseMapper.insert(faceRecord); diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssInvestigationServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssInvestigationServiceImpl.java index 24f5e55..bb5661c 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssInvestigationServiceImpl.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssInvestigationServiceImpl.java @@ -1,9 +1,14 @@ package com.gkhy.assess.system.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.gkhy.assess.common.enums.DeleteFlagEnum; import com.gkhy.assess.common.enums.RequestSourceEnum; import com.gkhy.assess.common.exception.ApiException; import com.gkhy.assess.system.domain.AssAccessoryFile; import com.gkhy.assess.system.domain.AssInvestigation; +import com.gkhy.assess.system.domain.AssPlanPerson; import com.gkhy.assess.system.enums.AccessoryFileTypeEnum; import com.gkhy.assess.system.enums.ReportProgressEnum; import com.gkhy.assess.system.mapper.AssInvestigationMapper; @@ -43,6 +48,11 @@ public Long addInvestigation(AssInvestigation investigation) { Long projectId=investigation.getProjectId(); projectService.checkUserAllowed(projectId); + String location=investigation.getLocation(); + String[] locationArray = location.split(","); + if(locationArray.length!=2){ + throw new ApiException("现场勘验位置格式不正确"); + } // checkInvestigationCount(projectId); investigation.setCreateBy(ShiroUtils.getSysUser().getUsername()); if(investigation.getIsSafetyCheck()!=null&&investigation.getIsSafetyCheck()==1){ @@ -68,6 +78,7 @@ } fileIds.add(accessoryFile.getId()); } + baseMapper.insert(investigation); //更新图片过程id accessoryFileService.batchUpdateAccessoryFileProcessId(fileIds,investigation.getId()); @@ -89,6 +100,11 @@ throw new ApiException("现场勘验记录id不能为空!"); } projectService.checkUserAllowed(investigation.getProjectId()); + String location=investigation.getLocation(); + String[] locationArray = location.split(","); + if(locationArray.length!=2){ + throw new ApiException("现场勘验位置格式不正确"); + } investigation.setUpdateBy(ShiroUtils.getSysUser().getUsername()); List<AssAccessoryFile> accessFiles=new ArrayList<>(); accessFiles.addAll(investigation.getCompanyImages()); @@ -138,6 +154,14 @@ Long projectId= Long.parseLong(map.get("projectId").toString()); projectService.checkUserAllowed(projectId); + LambdaQueryWrapper< AssInvestigation > lambdaQueryWrapper = Wrappers.<AssInvestigation>lambdaQuery() + .eq(AssInvestigation::getProjectId, projectId) + .eq(AssInvestigation::getDelFlag, DeleteFlagEnum.UN_DELETE); + + Long count= count(lambdaQueryWrapper); + if(count<1){ + throw new ApiException("现场勘验记录不能为空"); + } //校验项目状态 projectService.checkReportProgress(projectId, ReportProgressEnum.WORK_NOTIFICATION); //更新项目状态 diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssPlanPersonServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssPlanPersonServiceImpl.java index 3d3f27b..5b9beeb 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssPlanPersonServiceImpl.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssPlanPersonServiceImpl.java @@ -1,5 +1,6 @@ package com.gkhy.assess.system.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.gkhy.assess.common.enums.DeleteFlagEnum; @@ -17,7 +18,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -48,13 +52,16 @@ return baseMapper.insert(planPerson); } - @Override public void checkPersonUnique(AssPlanPerson planPerson) { + if(planPerson.getPlayRole()==null){ + planPerson.setPlayRole(PlayRoleEnum.PROJECT_MEMBER.getCode()); + } LambdaQueryWrapper<AssPlanPerson> lambdaQueryWrapper = Wrappers.<AssPlanPerson>lambdaQuery() .eq(AssPlanPerson::getPersonId, planPerson.getPersonId()) .eq(AssPlanPerson::getDelFlag, DeleteFlagEnum.UN_DELETE) - .eq(AssPlanPerson::getProjectId, planPerson.getProjectId()); + .eq(AssPlanPerson::getProjectId, planPerson.getProjectId()) + .eq(AssPlanPerson::getPlayRole,planPerson.getPlayRole()); if(planPerson.getId()!=null){ lambdaQueryWrapper.ne(AssPlanPerson::getId,planPerson.getId()); } @@ -84,6 +91,11 @@ } @Override + public int getMajorPlanPersonCountByProject(Long projectId) { + return baseMapper.getMajorPlanPersonCountByProject(projectId); + } + + @Override public int editPlanPerson(AssPlanPerson planPerson) { projectService.checkUserAllowed(planPerson.getProjectId()); if(planPerson.getPersonId()!=null){ @@ -104,10 +116,12 @@ } @Override - public int deletePlanPersonByPersonId(Long personId) { + public int deletePlanPersonByPersonId(Long personId,Long projectId,Integer playCode) { return baseMapper.update(null,Wrappers.<AssPlanPerson>lambdaUpdate() .set(AssPlanPerson::getDelFlag,DeleteFlagEnum.DELETED.getCode()) .set(AssPlanPerson::getUpdateBy,ShiroUtils.getSysUser().getUsername()) - .eq(AssPlanPerson::getPersonId,personId)); + .eq(AssPlanPerson::getPersonId,personId) + .eq(AssPlanPerson::getProjectId,projectId) + .eq(AssPlanPerson::getPlayRole,playCode)); } } diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProcessAuditServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProcessAuditServiceImpl.java index ec01bbf..ee6bf7b 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProcessAuditServiceImpl.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProcessAuditServiceImpl.java @@ -41,7 +41,7 @@ Long projectId=processAudit.getProjectId(); projectService.checkUserAllowed(projectId); checkProcessAuditCount(projectId); - planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(processAudit.getProcessLeaderId()).setProjectId(projectId)); + // planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(processAudit.getProcessLeaderId()).setProjectId(projectId)); //校验项目状态 projectService.checkReportProgress(projectId, ReportProgressEnum.CONCLUSION); processAudit.setCreateBy(ShiroUtils.getSysUser().getUsername()); @@ -74,9 +74,9 @@ processAudit.setUpdateBy(ShiroUtils.getSysUser().getUsername()); int row=baseMapper.updateById(processAudit); if(row>0 && processAudit.getProcessLeaderId()!=null&& !processAudit.getProcessLeaderId().equals(oldProcess.getProcessLeaderId())){ - planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(processAudit.getProcessLeaderId()).setProjectId(oldProcess.getProjectId())); + // planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(processAudit.getProcessLeaderId()).setProjectId(oldProcess.getProjectId())); //todo 删除旧的项目成员 - planPersonService.deletePlanPersonByPersonId(oldProcess.getProcessLeaderId()); + planPersonService.deletePlanPersonByPersonId(oldProcess.getProcessLeaderId(),processAudit.getProjectId(),PlayRoleEnum.PROCESS_LEADER.getCode()); //todo 新增新的项目成员 planPersonService.addPlanPerson(new AssPlanPerson().setPersonId(processAudit.getProcessLeaderId()) .setPlayRole(PlayRoleEnum.PROCESS_LEADER.getCode()) diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectServiceImpl.java index deb847c..2346449 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectServiceImpl.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectServiceImpl.java @@ -86,10 +86,11 @@ if(user.getAgencyId()==null){ throw new ApiException("用户机构id为空"); } + project.setAgencyId(user.getAgencyId()); if(!checkNameUnique(project)){ throw new ApiException("项目名已存在"); } - project.setAgencyId(user.getAgencyId()); + project.setReportProgress(ReportProgressEnum.ADD.getCode()); project.setCreateBy(ShiroUtils.getSysUser().getUsername()); int row=baseMapper.insert(project); @@ -101,7 +102,14 @@ //todo 权限校验 SysUser user= ShiroUtils.getSysUser(); checkUserAllowed(projectId); - AssProject project=new AssProject() + //判断项目流转状态 + AssProject project=getById(projectId); + if(project.getReportProgress().equals(ReportProgressEnum.CONFIRM_FINAL.getCode())){ + if(!user.getIdentity().equals(UserIdentityEnum.MONITOR.getCode())){ + throw new ApiException("没有权限删除确认完结的项目,请联系监管用户删除"); + } + } + project=new AssProject() .setId(projectId) .setDelFlag(DeleteFlagEnum.DELETED.getCode()); project.setUpdateBy(user.getUsername()); @@ -115,9 +123,9 @@ throw new ApiException("项目id不能为空"); } checkUserAllowed(projectId); - if(!checkNameUnique(project)){ - throw new ApiException("项目名已存在"); - } +// if(!checkNameUnique(project)){ +// throw new ApiException("项目名已存在"); +// } project.setAgencyId(null);//机构id不能修改 project.setReportProgress(null);//项目状态不能修改 project.setUpdateBy(ShiroUtils.getSysUser().getUsername()); @@ -140,7 +148,7 @@ @Override public boolean checkNameUnique(AssProject project) { Long projectId = project.getId()==null? -1L : project.getId(); - AssProject pro = baseMapper.getProjectByName(project.getName()); + AssProject pro = baseMapper.getProjectByName(project.getName(),project.getAgencyId()); if (pro!=null && pro.getId().longValue() != projectId.longValue()) { return false; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectSupplementFileServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectSupplementFileServiceImpl.java new file mode 100644 index 0000000..43b532b --- /dev/null +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectSupplementFileServiceImpl.java @@ -0,0 +1,39 @@ +package com.gkhy.assess.system.service.impl; + +import com.gkhy.assess.common.exception.ApiException; +import com.gkhy.assess.system.domain.AssAccessoryFile; +import com.gkhy.assess.system.domain.AssProjectSupplementFile; +import com.gkhy.assess.system.domain.vo.UploadObjectVO; +import com.gkhy.assess.system.mapper.AssProjectSupplementFileMapper; +import com.gkhy.assess.system.service.AssProjectSupplementFileService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gkhy.assess.system.utils.ShiroUtils; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +/** + * <p> + * 项目补录附件表 服务实现类 + * </p> + * + * @author kzy + * @since 2024-06-11 15:44:15 + */ +@Service +public class AssProjectSupplementFileServiceImpl extends ServiceImpl<AssProjectSupplementFileMapper, AssProjectSupplementFile> implements AssProjectSupplementFileService { + + + + @Override + public List<AssProjectSupplementFile> getSupplementFileByProjectId(Long projectId) { + return baseMapper.getFilesByProjectId(projectId); + } + + + @Override + public int deleteByProjectId(Long projectId) { + return baseMapper.deleteByProjectId(projectId); + } +} diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectSupplementServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectSupplementServiceImpl.java new file mode 100644 index 0000000..0ef40d3 --- /dev/null +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectSupplementServiceImpl.java @@ -0,0 +1,139 @@ +package com.gkhy.assess.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gkhy.assess.common.api.CommonPage; +import com.gkhy.assess.common.enums.UserIdentityEnum; +import com.gkhy.assess.common.exception.ApiException; +import com.gkhy.assess.common.utils.PageUtil; +import com.gkhy.assess.system.domain.AssProjectSupplement; +import com.gkhy.assess.system.domain.AssProjectSupplementFile; +import com.gkhy.assess.system.domain.SysAttach; +import com.gkhy.assess.system.domain.SysUser; +import com.gkhy.assess.system.mapper.AssProjectSupplementFileMapper; +import com.gkhy.assess.system.mapper.AssProjectSupplementMapper; +import com.gkhy.assess.system.service.AssProjectSupplementFileService; +import com.gkhy.assess.system.service.AssProjectSupplementService; +import com.gkhy.assess.system.service.SysCommonService; +import com.gkhy.assess.system.utils.ShiroUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * <p> + * 项目补录表 服务实现类 + * </p> + * + * @author kzy + * @since 2024-06-11 15:44:14 + */ +@Service +public class AssProjectSupplementServiceImpl extends ServiceImpl<AssProjectSupplementMapper, AssProjectSupplement> implements AssProjectSupplementService { + @Autowired + private AssProjectSupplementFileService projectSupplementFileService; + @Autowired + private SysCommonService commonService; + + @Override + @Transactional(rollbackFor = RuntimeException.class) + public int addProjectSupplement(AssProjectSupplement projectSupplement) { + if(!checkNameUnique(projectSupplement)){ + throw new ApiException("补录的项目名称已存在"); + } + projectSupplement.setCreateBy(ShiroUtils.getSysUser().getUsername()); + int row =baseMapper.insert(projectSupplement); + if(row<1){ + throw new ApiException("新增项目失败"); + } + List<AssProjectSupplementFile> fileList=projectSupplement.getFiles(); + if(ObjectUtil.isNotEmpty(fileList)) { + for (AssProjectSupplementFile file : fileList) { + file.setProjectId(projectSupplement.getId()); + } + projectSupplementFileService.saveBatch(fileList); + } + return row; + } + + @Override + @Transactional(rollbackFor = RuntimeException.class) + public int editProjectSupplement(AssProjectSupplement projectSupplement) { + if(!checkNameUnique(projectSupplement)){ + throw new ApiException("补录的项目名称已存在"); + } + projectSupplement.setUpdateBy(ShiroUtils.getSysUser().getUsername()); + int row =baseMapper.updateById(projectSupplement); + if(row<1){ + throw new ApiException("编辑项目失败"); + } + List<AssProjectSupplementFile> fileList=projectSupplement.getFiles(); + List<AssProjectSupplementFile> existFileList=projectSupplementFileService.getSupplementFileByProjectId(projectSupplement.getId()); + if(ObjectUtil.isNotEmpty(fileList)) { + for (AssProjectSupplementFile psf : fileList) { + psf.setProjectId(projectSupplement.getId()); + } + projectSupplementFileService.saveOrUpdateBatch(fileList); + } + //删除附件 + List<Long> newIds=fileList.stream().map(AssProjectSupplementFile::getId).collect(Collectors.toList()); + List<Long> delIds = new ArrayList<>(); + for(AssProjectSupplementFile psf:existFileList){ + if(!newIds.contains(psf.getId())){ + delIds.add(psf.getId()); + } + } + if(!delIds.isEmpty()){ + projectSupplementFileService.removeBatchByIds(delIds); + } + return row; + } + + @Override + public AssProjectSupplement getProjectSupplementById(Long projectSupplementId) { + return baseMapper.getProjectSupplementById(projectSupplementId); + } + + @Override + public CommonPage projectSupplementList(AssProjectSupplement projectSupplement) { + SysUser user= ShiroUtils.getSysUser(); + if(!user.getIdentity().equals(UserIdentityEnum.MONITOR.getCode())){ + //机构用户只能查看本机构的项目 + if(user.getAgencyId()==null){ + throw new ApiException("用户机构id为空"); + } + projectSupplement.setAgencyId(user.getAgencyId()); + } + PageUtil.startPage(); + List<AssProjectSupplement> projects=baseMapper.projectList(projectSupplement); + return CommonPage.restPage(projects); + } + + @Override + public int deleteProjectSupplement(Long projectSupplementId) { + //删除附件 + List<AssProjectSupplementFile> fileList=projectSupplementFileService.getSupplementFileByProjectId(projectSupplementId); + if(fileList.size()>0){ + for(AssProjectSupplementFile file:fileList){ + commonService.removeFile(file.getPath()); + projectSupplementFileService.removeById(file.getId()); + } + } + return baseMapper.deleteById(projectSupplementId); + } + + @Override + public Boolean checkNameUnique(AssProjectSupplement projectSupplement) { + Long projectId = projectSupplement.getId()==null? -1L : projectSupplement.getId(); + AssProjectSupplement pro = baseMapper.getProjectByName(projectSupplement.getName(),projectSupplement.getAgencyId()); + if (pro!=null && pro.getId().longValue() != projectId.longValue()) + { + return false; + } + return true; + } +} diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysCommonServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysCommonServiceImpl.java index c957622..da2a60a 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysCommonServiceImpl.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysCommonServiceImpl.java @@ -1,10 +1,15 @@ package com.gkhy.assess.system.service.impl; import cn.hutool.core.date.DateUtil; +import com.alibaba.excel.EasyExcel; import com.gkhy.assess.common.exception.ApiException; +import com.gkhy.assess.system.excel.ExpertExcelListener; +import com.gkhy.assess.system.domain.vo.SysExpertInfoExcelVO; import com.gkhy.assess.system.domain.vo.UploadObjectVO; import com.gkhy.assess.system.service.SysCommonService; import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import sun.misc.BASE64Decoder; @@ -44,6 +49,16 @@ } @Override + public void importExcel() throws IOException { + ClassPathResource classPathResource = new ClassPathResource("abc.xlsx"); + InputStream inputStream = classPathResource.getInputStream(); + if(inputStream==null){ + throw new ApiException("获取文件失败"); + } + EasyExcel.read(inputStream, SysExpertInfoExcelVO.class,new ExpertExcelListener()).sheet(0).doRead(); + } + + @Override public UploadObjectVO doUpload(MultipartFile file){ String originName=file.getOriginalFilename(); String filename=originName; diff --git a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java index c0cef63..f77f75f 100644 --- a/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java +++ b/assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java @@ -148,23 +148,42 @@ * 清空旧的登录信息,保证同时只有一个用户再登录,后登录用户会挤掉前一个用户 * @param username */ - public void cacheUserToken(String username,Integer identity,String newToken){ - String userKey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + username+"_"+identity); - String oldToken = (String) redisUtils.get(userKey); - if (StringUtils.isNotBlank(oldToken)) { - String oldTokenkey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + JwtTokenUtil.md5Encode(oldToken)); - redisUtils.del(oldTokenkey); - redisUtils.del(userKey); - } - redisUtils.set(userKey, newToken,(JwtTokenUtil.EXPIRATION*2/1000)+2); +// public void cacheUserToken(String username,Integer identity,String newToken){ +// String userKey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + username+"_"+identity); +// String oldToken = (String) redisUtils.get(userKey); +// if (StringUtils.isNotBlank(oldToken)) { +// String oldTokenkey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + JwtTokenUtil.md5Encode(oldToken)); +// redisUtils.del(oldTokenkey); +// redisUtils.del(userKey); +// } +// redisUtils.set(userKey, newToken,(JwtTokenUtil.EXPIRATION*2/1000)+2); +// +// +// String tokenKey= redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+JwtTokenUtil.md5Encode(newToken)); +// // 设置超时时间 +// redisUtils.set(tokenKey,newToken); +// redisUtils.expire(tokenKey,JwtTokenUtil.EXPIRATION*2/1000); +// } + + /** + * 清空旧的登录信息,保证同时只有一个用户再登录,后登录用户会挤掉前一个用户 + * @param username + */ + public void cacheUserToken(String username,Integer identity,String newToken){ + // String userKey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + username+"_"+identity); +// String oldToken = (String) redisUtils.get(userKey); +// if (StringUtils.isNotBlank(oldToken)) { +// String oldTokenkey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + JwtTokenUtil.md5Encode(oldToken)); +// redisUtils.del(oldTokenkey); +// redisUtils.del(userKey); +// } + // redisUtils.set(userKey, newToken,(JwtTokenUtil.EXPIRATION*2/1000)+2); String tokenKey= redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+JwtTokenUtil.md5Encode(newToken)); // 设置超时时间 - redisUtils.set(tokenKey,newToken); - redisUtils.expire(tokenKey,JwtTokenUtil.EXPIRATION*2/1000); + redisUtils.set(tokenKey,newToken,JwtTokenUtil.EXPIRATION*2/1000); } - /** * 校验验证码 @@ -198,11 +217,11 @@ if(StringUtils.isNotBlank(jwtToken)){ String username=JwtTokenUtil.getUsername(jwtToken); Integer identity=JwtTokenUtil.getIdentity(jwtToken); - String userKey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + username+"_"+identity); + // String userKey = redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN + ":" + username+"_"+identity); String tokenKey= redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+JwtTokenUtil.md5Encode(jwtToken)); //删除redis缓存 redisUtils.del(tokenKey); - redisUtils.del(userKey); + // redisUtils.del(userKey); } } @@ -355,6 +374,17 @@ if(!checkPhoneUnique(new SysUser().setUsername(user.getPhone()).setIdentity(UserIdentityEnum.EXPERT.getCode()))){ throw new ApiException("手机号已存在"); } + List<SysAttach> socialAttach=user.getSocialAttach(); + List<SysAttach> medicalAttach=user.getMedicalAttach(); + List<SysAttach> salaryAttach=user.getSalaryAttach(); + //疆外企业必须上传社保、医保、薪资 + SysAgency agency=agencyService.getAgencyById(user.getAgencyId()); + if(agency.getAttribute()==0){ + if(ObjectUtil.isEmpty(socialAttach)||ObjectUtil.isEmpty(medicalAttach)||ObjectUtil.isEmpty(salaryAttach)){ + throw new ApiException("疆内企业必须上传社保、医保、工资照片"); + } + } + String major=user.getMajor(); List<Integer> majors=new ArrayList<>(); JSONObject jsonObject=JSONObject.parseObject(major); @@ -372,26 +402,32 @@ if(!b){ throw new ApiException("创建专家信息失败"); } - List<SysAttach> socialAttach=user.getSocialAttach(); - List<SysAttach> medicalAttach=user.getMedicalAttach(); - List<SysAttach> salaryAttach=user.getSalaryAttach(); + List<SysAttach> attaches=new ArrayList<>(); - for(SysAttach attach:socialAttach){ - attach.setType(AttachTypeEnum.SOCIAL.getCode()); - attach.setUserId(user.getId()); - attaches.add(attach); + if(socialAttach!=null&& !socialAttach.isEmpty()) { + for (SysAttach attach : socialAttach) { + attach.setType(AttachTypeEnum.SOCIAL.getCode()); + attach.setUserId(user.getId()); + attaches.add(attach); + } } - for(SysAttach attach:medicalAttach){ - attach.setType(AttachTypeEnum.MEDICAL.getCode()); - attach.setUserId(user.getId()); - attaches.add(attach); + if(medicalAttach!=null&& !medicalAttach.isEmpty()) { + for (SysAttach attach : medicalAttach) { + attach.setType(AttachTypeEnum.MEDICAL.getCode()); + attach.setUserId(user.getId()); + attaches.add(attach); + } } - for(SysAttach attach:salaryAttach){ - attach.setType(AttachTypeEnum.SALARY.getCode()); - attach.setUserId(user.getId()); - attaches.add(attach); + if(salaryAttach!=null&& !salaryAttach.isEmpty()) { + for (SysAttach attach : salaryAttach) { + attach.setType(AttachTypeEnum.SALARY.getCode()); + attach.setUserId(user.getId()); + attaches.add(attach); + } } - attachService.saveBatch(attaches); + if(!attaches.isEmpty()) { + attachService.saveBatch(attaches); + } return 1; } @@ -435,6 +471,7 @@ } } delCacheByUsername(user.getUsername(),user.getIdentity()); + delCacheByUsername(user.getPhone(),user.getIdentity()); user=new SysUser().setId(userId); user.setUpdateBy(ShiroUtils.getSysUser().getUsername()); user.setDelFlag(DeleteFlagEnum.DELETED.getCode()); @@ -451,6 +488,7 @@ throw new ApiException("手机号已存在"); } delCacheByUsername(user.getUsername(),UserIdentityEnum.MONITOR.getCode()); + delCacheByUsername(user.getPhone(),UserIdentityEnum.MONITOR.getCode()); user.setPassword(null); user.setUpdateBy(ShiroUtils.getSysUser().getUsername()); boolean b=updateById(user); @@ -480,12 +518,19 @@ if(!agencyService.checkAgencyNameUnique(agency)){ throw new ApiException("机构名称已存在"); } + SysUser currentUser=ShiroUtils.getSysUser(); + if(!currentUser.getIdentity().equals(UserIdentityEnum.MONITOR.getCode())){ + if(!user.getId().equals(currentUser.getId())){ + throw new ApiException("只能修改自身数据"); + } + } delCacheByUsername(user.getUsername(),UserIdentityEnum.AGENCY.getCode()); - agency.setUpdateBy(ShiroUtils.getSysUser().getUsername()); + delCacheByUsername(user.getPhone(),UserIdentityEnum.AGENCY.getCode()); + agency.setUpdateBy(currentUser.getUsername()); agencyService.updateById(agency); user.setPassword(null); - user.setUpdateBy(ShiroUtils.getSysUser().getUsername()); + user.setUpdateBy(currentUser.getUsername()); boolean b=updateById(user); if(!b){ throw new ApiException("更新用户失败"); @@ -503,6 +548,17 @@ if(!checkPhoneUnique(user.setIdentity(UserIdentityEnum.EXPERT.getCode()))){ throw new ApiException("手机号已存在"); } + List<SysAttach> socialAttach=user.getSocialAttach(); + List<SysAttach> medicalAttach=user.getMedicalAttach(); + List<SysAttach> salaryAttach=user.getSalaryAttach(); + //疆外企业必须上传社保、医保、薪资 + SysAgency agency=agencyService.getAgencyById(user.getAgencyId()); + if(agency.getAttribute()==0){ + if(ObjectUtil.isEmpty(socialAttach)||ObjectUtil.isEmpty(medicalAttach)||ObjectUtil.isEmpty(salaryAttach)){ + throw new ApiException("疆内企业必须上传社保、医保、工资照片"); + } + } + String major=user.getMajor(); if(StringUtils.isNotBlank(major)){ List<Integer> majors=new ArrayList<>(); @@ -521,38 +577,45 @@ // 刪除旧数据 // attachService.deleteAttachsByUserId(user.getId(),null); - List<SysAttach> socialAttach=user.getSocialAttach(); - List<SysAttach> medicalAttach=user.getMedicalAttach(); - List<SysAttach> salaryAttach=user.getSalaryAttach(); List<SysAttach> attaches=new ArrayList<>(); - for(SysAttach attach:socialAttach){ - attach.setType(AttachTypeEnum.SOCIAL.getCode()); - attach.setUserId(user.getId()); - attaches.add(attach); + if(socialAttach!=null&& !socialAttach.isEmpty()) { + for (SysAttach attach : socialAttach) { + attach.setType(AttachTypeEnum.SOCIAL.getCode()); + attach.setUserId(user.getId()); + attaches.add(attach); + } } - for(SysAttach attach:medicalAttach){ - attach.setType(AttachTypeEnum.MEDICAL.getCode()); - attach.setUserId(user.getId()); - attaches.add(attach); + if(medicalAttach!=null&& !medicalAttach.isEmpty()) { + for (SysAttach attach : medicalAttach) { + attach.setType(AttachTypeEnum.MEDICAL.getCode()); + attach.setUserId(user.getId()); + attaches.add(attach); + } } - for(SysAttach attach:salaryAttach){ - attach.setType(AttachTypeEnum.SALARY.getCode()); - attach.setUserId(user.getId()); - attaches.add(attach); + if(salaryAttach!=null&& !salaryAttach.isEmpty()) { + for (SysAttach attach : salaryAttach) { + attach.setType(AttachTypeEnum.SALARY.getCode()); + attach.setUserId(user.getId()); + attaches.add(attach); + } } - attachService.saveOrUpdateBatch(attaches); + if(!attaches.isEmpty()) { + attachService.saveOrUpdateBatch(attaches); + } - List<Long> newIds=attaches.stream().map(SysAttach::getId).collect(Collectors.toList()); - List<Long> delIds=new ArrayList<>(); - for(SysAttach attach:existAttaches){ - if(!newIds.contains(attach.getId())){ + List<Long> newIds = attaches.stream().map(SysAttach::getId).collect(Collectors.toList()); + List<Long> delIds = new ArrayList<>(); + for (SysAttach attach : existAttaches) { + if (!newIds.contains(attach.getId())) { delIds.add(attach.getId()); } } - if(!delIds.isEmpty()){ + if (!delIds.isEmpty()) { attachService.deleteAttachsByIds(delIds); } + delCacheByUsername(user.getUsername(),UserIdentityEnum.EXPERT.getCode()); + delCacheByUsername(user.getPhone(),UserIdentityEnum.EXPERT.getCode()); return row; } @@ -565,6 +628,7 @@ SysUser newUser=new SysUser().setId(user.getId()).setPassword(JwtTokenUtil.encryptPassword(oldUser.getUsername(),originPsword,oldUser.getSalt())); newUser.setUpdateBy(ShiroUtils.getSysUser().getUsername()); delCacheByUsername(oldUser.getUsername(),oldUser.getIdentity()); + delCacheByUsername(oldUser.getPhone(),oldUser.getIdentity()); return updateById(newUser); } @@ -639,6 +703,7 @@ SysUser su=new SysUser().setId(user.getId()).setStatus(user.getStatus()); su.setUpdateBy(ShiroUtils.getSysUser().getUsername()); delCacheByUsername(existUser.getUsername(),existUser.getIdentity()); + delCacheByUsername(existUser.getPhone(),existUser.getIdentity()); return updateById(su); } @@ -648,6 +713,7 @@ SysUser su=new SysUser().setId(user.getId()).setState(user.getState()); su.setUpdateBy(ShiroUtils.getSysUser().getUsername()); delCacheByUsername(existUser.getUsername(),existUser.getIdentity()); + delCacheByUsername(existUser.getPhone(),existUser.getIdentity()); return updateById(su); } } diff --git a/assess-system/src/main/resources/mapper/AssPlanPersonMapper.xml b/assess-system/src/main/resources/mapper/AssPlanPersonMapper.xml index 1fd23dd..a2caef0 100644 --- a/assess-system/src/main/resources/mapper/AssPlanPersonMapper.xml +++ b/assess-system/src/main/resources/mapper/AssPlanPersonMapper.xml @@ -81,4 +81,8 @@ group by a.project_id </select> + <select id="getMajorPlanPersonCountByProject" resultType="java.lang.Integer"> + select count(1) from ass_plan_person where del_flag=0 and job_type=2 and project_id=#{projectId} + </select> + </mapper> diff --git a/assess-system/src/main/resources/mapper/AssProjectMapper.xml b/assess-system/src/main/resources/mapper/AssProjectMapper.xml index 6171261..4dc1a92 100644 --- a/assess-system/src/main/resources/mapper/AssProjectMapper.xml +++ b/assess-system/src/main/resources/mapper/AssProjectMapper.xml @@ -71,7 +71,7 @@ <select id="projectList" resultMap="projectResult"> <include refid="selectProjectVo"/> <if test="params.personId != null and params.personId != ''"> - left join ass_plan_person a on a.project_id=p.id + left join ass_plan_person pp on pp.project_id=p.id </if> <if test="params.lostMaterial != null"> left join ass_project_material m on m.project_id=p.id @@ -112,7 +112,7 @@ and date_format(p.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') </if> <if test="params.personId != null and params.personId != ''"> - and a.person_id=#{params.personId} and a.del_flag=0 + and pp.person_id=#{params.personId} and pp.del_flag=0 </if> <if test="params.lostMaterial != null and params.lostMaterial==1"> and (m.file_id is null) @@ -131,7 +131,7 @@ <select id="getProjectByName" resultType="com.gkhy.assess.system.domain.AssProject"> select id,name from ass_project - where name=#{name} + where name=#{name} and agency_id=#{agencyId} and del_flag=0 limit 1 </select> <select id="getReportProgress" resultType="java.lang.Integer"> @@ -140,7 +140,7 @@ </select> <select id="getMemberProjectByUserId" resultMap="projectResult"> - select p.id,p.name,p.report_progress,p.code,p.client,p.province,p.city,p.district,p.business,p.create_time,a.id as plan_person_id, + select distinct p.id,p.name,p.report_progress,p.code,p.client,p.province,p.city,p.district,p.business,p.create_time,a.id as plan_person_id, e.leader_id,u.name as leader_name from ass_project p left join ass_plan_person a on a.project_id=p.id @@ -162,7 +162,7 @@ </select> <select id="getLeaderProjectByUserId" resultMap="projectResult"> - select p.id,p.name,p.report_progress,p.code,p.client,p.province,p.city,p.district,p.business,p.create_time,a.id as plan_person_id, + select distinct p.id,p.name,p.report_progress,p.code,p.client,p.province,p.city,p.district,p.business,p.create_time,a.id as plan_person_id, e.leader_id,u.name as leader_name from ass_project p left join ass_plan_person a on a.project_id=p.id @@ -225,13 +225,15 @@ </select> <select id="getProjectByPersonIds" resultType="com.gkhy.assess.system.domain.vo.PersonProjectVO"> - select a.person_id,count(*) as project_count,max(p.create_time) as last_estimate_time from ass_project p + select d.person_id,count(*) as project_count,max(d.create_time) as last_estimate_time from + (select a.person_id,a.project_id,max(p.create_time) as create_time from ass_project p left join ass_plan_person a on a.project_id=p.id where a.del_flag=0 and p.del_flag=0 and a.person_id in <foreach collection="personIds" item="personId" open="(" separator="," close=")"> #{personId} </foreach> - group by a.person_id + group by a.person_id,a.project_id) d + group by d.person_id </select> </mapper> diff --git a/assess-system/src/main/resources/mapper/AssProjectSupplementFileMapper.xml b/assess-system/src/main/resources/mapper/AssProjectSupplementFileMapper.xml new file mode 100644 index 0000000..529cc7a --- /dev/null +++ b/assess-system/src/main/resources/mapper/AssProjectSupplementFileMapper.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.gkhy.assess.system.mapper.AssProjectSupplementFileMapper"> + + <delete id="deleteByProjectId"> + delete from ass_project_supplement_file where project_id=#{projectId} + </delete> + + <select id="getFilesByProjectId" resultType="com.gkhy.assess.system.domain.AssProjectSupplementFile"> + select * from ass_project_supplement_file where project_id=#{projectId} + </select> +</mapper> diff --git a/assess-system/src/main/resources/mapper/AssProjectSupplementMapper.xml b/assess-system/src/main/resources/mapper/AssProjectSupplementMapper.xml new file mode 100644 index 0000000..d2fe450 --- /dev/null +++ b/assess-system/src/main/resources/mapper/AssProjectSupplementMapper.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.gkhy.assess.system.mapper.AssProjectSupplementMapper"> + <resultMap type="com.gkhy.assess.system.domain.AssProjectSupplement" id="projectResult"> + <id property="id" column="id" /> + <result property="name" column="name" /> + <result property="writer" column="writer" /> + <result property="reviewer" column="reviewer" /> + <result property="filingDate" column="filing_date" /> + <result property="agencyId" column="agency_id" /> + <result property="delFlag" column="del_flag" /> + <result property="version" column="version" /> + <result property="createBy" column="create_by" /> + <result property="createTime" column="create_time" /> + <result property="updateBy" column="update_by" /> + <result property="updateTime" column="update_time" /> + <result property="remark" column="remark" /> + <result property="agencyName" column="agency_name" /> + <collection property="files" ofType="com.gkhy.assess.system.domain.AssProjectSupplementFile" select="getFileByProjectId" column="{projectId=id}"/> + </resultMap> + + <select id="getProjectByName" resultType="com.gkhy.assess.system.domain.AssProjectSupplement"> + select id,name,agency_id from ass_project_supplement where name=#{name} and agency_id=#{agencyId} limit 1 + </select> + + <select id="projectList" resultMap="projectResult"> + select s.*,a.name as agency_name from ass_project_supplement s + left join sys_agency a on a.id=s.agency_id + <where> + <if test="name!=null and name!=''"> + and s.name like ('%',#{name},'%') + </if> + <if test="agencyId!=null"> + and s.agency_id =#{agencyId} + </if> + </where> + order by s.create_time desc + </select> + + <select id="getFileByProjectId" resultType="com.gkhy.assess.system.domain.AssProjectSupplementFile"> + select * from ass_project_supplement_file where project_id=#{projectId} + </select> + + <select id="getProjectSupplementById" resultMap="projectResult"> + select s.*,a.name as agency_name from ass_project_supplement s + left join sys_agency a on a.id=s.agency_id + where s.id=#{projectSupplementId} + </select> + +</mapper> diff --git a/assess-system/src/main/resources/mapper/SysExpertInfoMapper.xml b/assess-system/src/main/resources/mapper/SysExpertInfoMapper.xml index 36bc8ef..29e81b0 100644 --- a/assess-system/src/main/resources/mapper/SysExpertInfoMapper.xml +++ b/assess-system/src/main/resources/mapper/SysExpertInfoMapper.xml @@ -20,7 +20,7 @@ </update> <select id="expertInfoList" resultType="com.gkhy.assess.system.domain.SysExpertInfo"> - select id,name,sex,birthday,phone,title,degree,state,speciality,big_classify,small_classify,create_time from sys_expert_info + select id,name,sex,birthday,phone,title,degree,state,speciality,big_classify,small_classify,id_card,company_name,domain,level,current_profession,duty_status,support_direction_safety,create_time from sys_expert_info <where> and del_flag = 0 <if test="name != null and name != ''"> diff --git a/assess-system/src/main/resources/mapper/SysUserMapper.xml b/assess-system/src/main/resources/mapper/SysUserMapper.xml index af9f852..9811df4 100644 --- a/assess-system/src/main/resources/mapper/SysUserMapper.xml +++ b/assess-system/src/main/resources/mapper/SysUserMapper.xml @@ -46,13 +46,14 @@ <id property="id" column="agency_id" /> <result property="name" column="agency_name" /> <result property="creditCode" column="credit_code" /> + <result property="attribute" column="attribute" /> </resultMap> <sql id="selectUserVo"> select u.id,u.username, u.name,u.identity,u.user_type,u.phone,u.sex,u.status, u.del_flag,u.manage_region,u.expert_type,u.agency_id,u.post,u.job_title, u.major,u.state,u.create_time,u.remark,u.level,u.id_photo,u.certificate_no, - a.id as agency_id,a.name as agency_name,a.credit_code + a.id as agency_id,a.name as agency_name,a.credit_code,a.attribute from sys_user u left join sys_agency a on u.agency_id=a.id </sql> @@ -90,9 +91,15 @@ <if test="status != null"> AND u.status = #{status} </if> + <if test="state != null"> + AND u.state = #{state} + </if> <if test="phone != null and phone != ''"> AND u.phone like concat('%', #{phone}, '%') </if> + <if test="agencyName != null and agencyName != ''"> + AND a.name like concat('%', #{agencyName}, '%') + </if> </where> order by u.create_time desc </select> diff --git a/pom.xml b/pom.xml index e6f7a16..00cf479 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,7 @@ <caffeine.version>2.9.3</caffeine.version> <kaptcha.version>2.3.2</kaptcha.version> <commons.io.version>2.13.0</commons.io.version> + <easyexcel.version>4.0.1</easyexcel.version> </properties> <dependencyManagement> <dependencies> @@ -158,6 +159,12 @@ <version>${commons.io.version}</version> </dependency> + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>easyexcel</artifactId> + <version>${easyexcel.version}</version> + </dependency> + </dependencies> </dependencyManagement> -- Gitblit v1.9.2