assess-admin/src/main/java/com/gkhy/assess/admin/GkhyAdminApplication.java
@@ -1,6 +1,5 @@ package com.gkhy.assess.admin; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; assess-admin/src/main/java/com/gkhy/assess/admin/controller/app/AppCommonController.java
对比新文件 @@ -0,0 +1,32 @@ package com.gkhy.assess.admin.controller.app; import com.gkhy.assess.common.api.CommonResult; import com.gkhy.assess.system.domain.vo.UploadObjectVO; import com.gkhy.assess.system.service.SysCommonService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @Api(tags = "APP通用接口前端控制器") @RestController @RequestMapping("/app/system/common") public class AppCommonController { @Autowired private SysCommonService commonService; @ApiOperation(value = "上传图片/文件") @PostMapping("/uploadFile") public CommonResult<UploadObjectVO> uploadFile(MultipartFile file){ return CommonResult.success(commonService.uploadFile(file)); } @ApiOperation(value = "删除图片") @DeleteMapping("/removeFile") public CommonResult removeFile(@RequestParam(required = true) String path){ return CommonResult.success(commonService.removeFile(path)); } } assess-admin/src/main/java/com/gkhy/assess/admin/controller/app/AppFaceRecognitionController.java
@@ -33,7 +33,7 @@ @RepeatSubmit @ApiOperation(value = "新增签字确认") @PostMapping("/add") public CommonResult addContract(@Validated @ModelAttribute AssFaceRecognition faceRecognition){ public CommonResult addContract(@Validated @RequestBody AssFaceRecognition faceRecognition){ return CommonResult.success(faceRecognitionService.addFaceRecognition(faceRecognition)); } assess-admin/src/main/java/com/gkhy/assess/admin/controller/app/AppProjectController.java
@@ -2,6 +2,7 @@ import com.gkhy.assess.common.api.CommonResult; import com.gkhy.assess.system.domain.AssProject; import com.gkhy.assess.system.service.AssProjectService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -51,7 +52,7 @@ @ApiOperation(value = "根据id获取项目详情") @GetMapping("/detail/{projectId}") public CommonResult projectDetail(@PathVariable(value = "projectId") Long projectId){ public CommonResult<AssProject> projectDetail(@PathVariable(value = "projectId") Long projectId){ return CommonResult.success(projectService.getProjectById(projectId)); } assess-admin/src/main/resources/application-pro.yml
@@ -5,9 +5,9 @@ druid: # 主库数据源 master: url: jdbc:mysql://192.168.30.118:3306/smart_assess?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai&useSSL=false url: jdbc:mysql://172.17.254.237:7006/smart_assess?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai&useSSL=false username: root password: e7be93ef5413e5ed password: 2farwL3yPXfbH2AP # 从库数据源 slave: enabled: false assess-admin/src/main/resources/application.yml
@@ -2,7 +2,7 @@ application: name: assess_admin profiles: active: dev active: pro servlet: multipart: enabled: true assess-admin/src/main/resources/db/migration/V20240109001_add_delflag.sql
@@ -1,11 +0,0 @@ ALTER TABLE `smart_assess`.`sys_dict_data` ADD COLUMN `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0代表存在,1代表删除,默认0)'; ALTER TABLE `smart_assess`.`sys_dict_type` ADD COLUMN `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0代表存在,1代表删除,默认0)'; ALTER TABLE `smart_assess`.`sys_notice` ADD COLUMN `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0代表存在,1代表删除,默认0)'; ALTER TABLE `smart_assess`.`sys_law` ADD COLUMN `del_flag` tinyint NULL DEFAULT 0 COMMENT '删除标志(0代表存在,1代表删除,默认0)'; assess-admin/src/main/resources/db/migration/V20240131001_change_recogmotopm.sql
对比新文件 @@ -0,0 +1,2 @@ ALTER TABLE `smart_assess`.`ass_face_recognition` CHANGE COLUMN `insurance_pic_id` `insurance_path` varchar(100) NULL DEFAULT NULL COMMENT '承诺书图片路径'; assess-admin/src/main/resources/db/migration/V20240226001_project_index.sql
对比新文件 @@ -0,0 +1,3 @@ ALTER TABLE `smart_assess`.`ass_project` ADD INDEX `index_name`(`name`) USING BTREE, ADD INDEX `index_create_time`(`create_time`) USING BTREE; assess-admin/src/main/resources/db/migration/V20240226002_user_index.sql
对比新文件 @@ -0,0 +1,4 @@ ALTER TABLE `smart_assess`.`sys_user` ADD INDEX `index_phone`(`phone`) USING BTREE, ADD INDEX `index_post`(`post`) USING BTREE, ADD INDEX `index_level`(`level`) USING BTREE; assess-admin/src/main/resources/db/migration/V20240226003_accessory_file_index.sql
对比新文件 @@ -0,0 +1,2 @@ ALTER TABLE `smart_assess`.`ass_accessory_file` ADD INDEX `index_project_id`(`project_id`) USING BTREE; assess-admin/src/main/resources/db/migration/V20240226004_plan_person_index.sql
对比新文件 @@ -0,0 +1,2 @@ ALTER TABLE `smart_assess`.`ass_plan_person` ADD INDEX `index_project_id`(`project_id`) USING BTREE; assess-admin/src/main/resources/db/migration/V20240226005_face_record_index.sql
对比新文件 @@ -0,0 +1,2 @@ ALTER TABLE `smart_assess`.`ass_face_record` ADD INDEX `index_project_id`(`project_id`) USING BTREE; assess-admin/src/main/resources/db/migration/V20240226006_face_recognition_index.sql
对比新文件 @@ -0,0 +1,2 @@ ALTER TABLE `smart_assess`.`ass_face_recognition` ADD INDEX `index_project_id`(`project_id`) USING BTREE; assess-admin/src/main/resources/db/migration/V20240226007_estimate_schedule_index.sql
对比新文件 @@ -0,0 +1,2 @@ ALTER TABLE `smart_assess`.`ass_estimate_schedule` ADD INDEX `index_project_id`(`project_id`) USING BTREE; assess-admin/src/main/resources/db/migration/V20240226008_device_index.sql
对比新文件 @@ -0,0 +1,2 @@ ALTER TABLE `smart_assess`.`ass_device` ADD INDEX `index_project_id`(`project_id`) USING BTREE; assess-system/src/main/java/com/gkhy/assess/system/domain/AssFaceRecognition.java
@@ -13,6 +13,7 @@ import lombok.Setter; import org.springframework.web.multipart.MultipartFile; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.util.List; @@ -49,13 +50,15 @@ @TableField("project_id") private Long projectId; @ApiModelProperty(value = "签字图片路径") @NotBlank(message = "签字图片路径不能为空") @ApiModelProperty(value = "签字图片路径",required = true) @TableField("sign_path") private String signPath; @ApiModelProperty(value = "承诺书图片id",required = true) @TableField("insurance_pic_id") private Long insurancePicId; @NotBlank(message = "承诺书图片路径不能为空") @ApiModelProperty(value = "承诺书图片路径",required = true) @TableField("insurance_path") private String insurancePath; @ApiModelProperty("乐观锁") @@ -66,18 +69,13 @@ @TableField("del_flag") private Integer delFlag; @NotNull(message = "签字图片对象不能为空") @ApiModelProperty(value = "签字图片对象",required = true) @TableField(exist = false) private MultipartFile file; @ApiModelProperty("人脸识别记录对象") @ApiModelProperty(value = "人脸识别记录对象",required = false) @TableField(exist = false) private AssFaceRecord faceRecord; @ApiModelProperty("人员对象") @TableField(exist = false) private SysUser person; private AssPlanPerson planPerson; } assess-system/src/main/java/com/gkhy/assess/system/domain/AssProject.java
@@ -7,6 +7,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.gkhy.assess.common.domain.BaseEntity; import com.gkhy.assess.system.domain.vo.PersonRecognitionVO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; @@ -189,4 +190,8 @@ @ApiModelProperty("要件数量") @TableField(exist = false) private Integer materialCnt; @ApiModelProperty("归档确认总人数和已确认人数") @TableField(exist = false) private PersonRecognitionVO personRecognition; } assess-system/src/main/java/com/gkhy/assess/system/domain/vo/PersonRecognitionVO.java
对比新文件 @@ -0,0 +1,33 @@ package com.gkhy.assess.system.domain.vo; import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL; /** * <p> * 项目归档总人数和已签字人数对象 * </p> * * @author kzy * @since 2023-12-12 10:46:54 */ @Getter @Setter @ApiModel(value = "ProjectPersonRecognitionVO对象", description = "项目归档总人数和已签字人数对象") public class PersonRecognitionVO { @ApiModelProperty(value = "项目id",required = true) private Long projectId; @ApiModelProperty(value = "总人数",required = true) private Integer personCnt; @ApiModelProperty(value = "已签字确认人数",required = true) private Integer recognitionCnt; } assess-system/src/main/java/com/gkhy/assess/system/mapper/AssPlanPersonMapper.java
@@ -2,9 +2,11 @@ import com.gkhy.assess.system.domain.AssPlanPerson; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gkhy.assess.system.domain.vo.PersonRecognitionVO; import org.apache.ibatis.annotations.Mapper; import java.util.List; import java.util.Map; /** * <p> @@ -44,4 +46,11 @@ */ List<AssPlanPerson> getPlanPersonsByIds(List<Long> ids); /** * 根据项目id获取项目归档总人数和已签字人数 * @param projectIds * @return */ List<PersonRecognitionVO> getPersonAndRecognitionCount(List<Long> projectIds); } assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssEstimatePlanServiceImpl.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.assess.common.exception.ApiException; import com.gkhy.assess.system.domain.AssEstimatePlan; import com.gkhy.assess.system.domain.AssEstimateSchedule; import com.gkhy.assess.system.domain.AssPlanPerson; import com.gkhy.assess.system.enums.PlayRoleEnum; import com.gkhy.assess.system.enums.ReportProgressEnum; @@ -12,6 +13,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * <p> @@ -74,6 +77,10 @@ AssEstimatePlan oldPlan=getById(estimatePlan.getId()); estimatePlan.setUpdateBy(ShiroUtils.getSysUser().getUsername()); int row=baseMapper.updateById(estimatePlan); List<AssEstimateSchedule> estimateScheduleList=estimatePlan.getEstimateSchedules(); if(estimateScheduleList!=null&&estimateScheduleList.size()>0){ estimateScheduleService.updateBatchById(estimateScheduleList); } if(row>0) { if (estimatePlan.getAuserId() != null && !estimatePlan.getAuserId().equals(oldPlan.getAuserId())) { planPersonService.checkPersonUnique(new AssPlanPerson().setPersonId(estimatePlan.getAuserId()).setProjectId(oldPlan.getProjectId())); assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssFaceRecognitionServiceImpl.java
@@ -43,19 +43,13 @@ @Override public int addFaceRecognition(AssFaceRecognition faceRecognition) { int row=0; projectService.checkUserAllowed(faceRecognition.getProjectId()); UploadObjectVO uploadObjectVO=commonService.doUpload(faceRecognition.getFile()); faceRecognition.setSignPath(uploadObjectVO.getPath()); AssFaceRecognition existRecord=checkFaceRecognitionUnique(faceRecognition.getPersonId(),faceRecognition.getProjectId()); if(existRecord!=null){ existRecord.setSignPath(faceRecognition.getSignPath()); existRecord.setUpdateBy(ShiroUtils.getSysUser().getUsername()); row =baseMapper.updateById(existRecord); }else{ faceRecognition.setCreateBy(ShiroUtils.getSysUser().getUsername()); row=baseMapper.insert(faceRecognition); throw new ApiException("签字确认记录已存在"); } faceRecognition.setCreateBy(ShiroUtils.getSysUser().getUsername()); int row=baseMapper.insert(faceRecognition); return row; } @@ -109,7 +103,8 @@ @Override public List<AssFaceRecognition> getFaceRecognitionByProjectId(Long projectId) { projectService.checkUserAllowed(projectId); return baseMapper.getFaceRecognitionByProjectId(projectId); List<AssFaceRecognition> faceRecognitionList= baseMapper.getFaceRecognitionByProjectId(projectId); return faceRecognitionList; } assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssInvestigationServiceImpl.java
@@ -99,12 +99,13 @@ public AssInvestigation getInvestigationByProjectId(Long projectId) { projectService.checkUserAllowed(projectId); AssInvestigation investigation= baseMapper.getInvestigationByProjectId(projectId); if(investigation!=null) { investigation.setAssAccessoryFiles(accessoryFileService.getAccessoryFileByProjectId(projectId, AccessoryFileTypeEnum.INVESTINGATION_ATTACHMENT.getCode())); investigation.setCcompanyImages(accessoryFileService.getAccessoryFileByProjectId(projectId, AccessoryFileTypeEnum.COMPANY_IMAGE.getCode())); investigation.setDeviceImages(accessoryFileService.getAccessoryFileByProjectId(projectId, AccessoryFileTypeEnum.DEVICE_IMAGE.getCode())); investigation.setInvestingationImages(accessoryFileService.getAccessoryFileByProjectId(projectId, AccessoryFileTypeEnum.INVESTINGATION_IMAGE.getCode())); investigation.setInvestingationVideos(accessoryFileService.getAccessoryFileByProjectId(projectId, AccessoryFileTypeEnum.INVESTINGATION_VIDEO.getCode())); } return investigation; } assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssPlanPersonServiceImpl.java
@@ -59,7 +59,7 @@ PlayRoleEnum playRoleEnum=PlayRoleEnum.getInfoByCode(pPerson.getPlayRole()); String message=playRoleEnum!=null?playRoleEnum.getInfo():""; if(StringUtils.isBlank(message)){ message="改用户已存在"; message="该用户已存在"; }else{ message="该用户已担任"+message; } assess-system/src/main/java/com/gkhy/assess/system/service/impl/AssProjectServiceImpl.java
@@ -8,6 +8,7 @@ import com.gkhy.assess.common.utils.PageUtil; import com.gkhy.assess.system.domain.AssPlanPerson; import com.gkhy.assess.system.domain.AssProject; import com.gkhy.assess.system.domain.vo.PersonRecognitionVO; import com.gkhy.assess.system.domain.vo.ProjectStaticVO; import com.gkhy.assess.system.enums.ProgressPhaseEnum; import com.gkhy.assess.system.enums.ReportProgressEnum; @@ -52,9 +53,24 @@ PageUtil.startPage(); List<AssProject> projects=baseMapper.projectList(project); //获取签字确认人数 handleProjectRecognitionCount(projects); return CommonPage.restPage(projects); } public void handleProjectRecognitionCount(List<AssProject> projects){ List<Long>projectIds=projects.stream().map(item -> item.getId()).collect(Collectors.toList()); if(!projectIds.isEmpty()) { List<PersonRecognitionVO> personAndRecognitions = planPersonMapper.getPersonAndRecognitionCount(projectIds); Map<Long, PersonRecognitionVO> map = personAndRecognitions.stream().collect(Collectors.toMap(PersonRecognitionVO::getProjectId, a -> a)); for (AssProject project : projects) { PersonRecognitionVO personRecognitionVO = map.get(project.getId()); if (personRecognitionVO != null) { project.setPersonRecognition(personRecognitionVO); } } } } @Override public AssProject getProjectById(Long projectId) { return baseMapper.getProjectById(projectId); assess-system/src/main/java/com/gkhy/assess/system/service/impl/SysUserServiceImpl.java
@@ -71,7 +71,7 @@ @Override public AccountVO login(LoginBody loginBody) { // 验证码校验 //validateCaptcha(loginBody.getUsername(), loginBody.getCode(), loginBody.getUuid()); validateCaptcha(loginBody.getUsername(), loginBody.getCode(), loginBody.getUuid()); UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(loginBody.getUsername(), Base64.decodeStr(loginBody.getPassword()), false); Subject subject= SecurityUtils.getSubject(); String msg ; assess-system/src/main/resources/mapper/AssFaceRecognitionMapper.xml
@@ -6,7 +6,7 @@ <result property="personId" column="person_id" /> <result property="projectId" column="project_id" /> <result property="signPath" column="sign_path" /> <result property="insurancePicId" column="insurance_pic_id" /> <result property="insurancePath" column="insurance_path" /> <result property="delFlag" column="del_flag" /> <result property="version" column="version" /> <result property="createBy" column="create_by" /> @@ -15,13 +15,21 @@ <result property="updateTime" column="update_time" /> <result property="remark" column="remark" /> <association property="faceRecord" javaType="com.gkhy.assess.system.domain.AssFaceRecord" resultMap="faceRecordesult" /> <association property="person" javaType="com.gkhy.assess.system.domain.SysUser" resultMap="userResult" /> <association property="planPerson" javaType="com.gkhy.assess.system.domain.AssPlanPerson" resultMap="personResult" /> </resultMap> <resultMap id="faceRecordesult" type="com.gkhy.assess.system.domain.AssFaceRecord"> <id property="id" column="person_id" /> <result property="facePath" column="face_path" /> <result property="updateTime" column="face_time" /> </resultMap> <resultMap id="personResult" type="com.gkhy.assess.system.domain.AssPlanPerson"> <id property="id" column="person_id" /> <result property="jobType" column="job_type" /> <result property="playRole" column="play_role" /> <result property="projectId" column="project_id" /> <association property="person" javaType="com.gkhy.assess.system.domain.AssFaceRecord" resultMap="userResult" /> </resultMap> <resultMap id="userResult" type="com.gkhy.assess.system.domain.SysUser"> @@ -31,16 +39,19 @@ <result property="phone" column="person_phone" /> <result property="post" column="person_post" /> <result property="level" column="person_level" /> <collection property="majorNames" ofType="java.lang.String" select="getMajorById" column="{major=person_major}"/> </resultMap> <sql id="selectFaceRecognitionVo"> select f.id,f.person_id,f.project_id,f.sign_path,f.insurance_pic_id, select f.id,f.person_id,f.project_id,f.sign_path,f.insurance_path, f.version,f.del_flag,f.create_by,f.create_time,f.update_by,f.update_time,f.remark, p.job_type,p.play_role, u.name as person_name,u.major as person_major,u.phone as person_phone,u.post as person_post,u.level as person_level, a.face_path,a.update_time as face_time from ass_face_recognition f left join ass_plan_person p on p.person_id=f.person_id and p.project_id=f.project_id left join sys_user u on u.id=f.person_id left join ass_face_record a on a.person_id=f.person_id left join ass_face_record a on a.person_id=f.person_id and a.project_id=f.project_id </sql> @@ -52,8 +63,16 @@ </select> <select id="getFaceRecognitionByProjectId" resultMap="faceRecognitionResult"> <include refid="selectFaceRecognitionVo"/> where f.project_id=#{projectId} and f.del_flag=0 and a.del_flag=0 select f.id,f.person_id,p.project_id,f.sign_path,f.insurance_path, f.version,f.del_flag,f.create_by,f.create_time,f.update_by,f.update_time,f.remark, p.job_type,p.play_role, u.name as person_name,u.major as person_major,u.phone as person_phone,u.post as person_post,u.level as person_level, a.face_path,a.update_time as face_time from ass_plan_person p left join ass_face_recognition f on f.person_id=p.person_id and f.project_id=p.project_id and f.del_flag=0 left join sys_user u on u.id=p.person_id left join ass_face_record a on a.person_id=p.person_id and a.project_id=p.project_id and a.del_flag=0 where p.project_id=#{projectId} and p.del_flag=0 </select> <select id="getFaceRecognitionById" resultMap="faceRecognitionResult"> @@ -65,4 +84,11 @@ select count(1) from ass_face_recognition where project_id=#{projectId} and del_flag=0 </select> <select id="getMajorById" resultType="java.lang.String"> select label from sys_dict_data where id in <foreach item="item" index="index" collection="major.split(',')" open="(" separator="," close=")"> #{item} </foreach> </select> </mapper> assess-system/src/main/resources/mapper/AssPlanPersonMapper.xml
@@ -72,4 +72,13 @@ </foreach> </select> <select id="getPersonAndRecognitionCount" resultType="com.gkhy.assess.system.domain.vo.PersonRecognitionVO"> select count(1) as person_cnt,project_id,(select count(1) from ass_face_recognition where project_id =a.project_id) as recognition_cnt from ass_plan_person a where a.del_flag=0 and a.project_id in <foreach collection="projectIds" item="projectId" open="(" separator="," close=")"> #{projectId} </foreach> group by a.project_id </select> </mapper> assess-system/src/main/resources/mapper/AssRecitificationMapper.xml
@@ -26,7 +26,7 @@ </resultMap> <sql id="selectProjectMaterialVo"> select r.id,r.rectify_person,r.rectify_person,r.project_id,r.file_id,r.reason, select r.id,r.rectify_person,r.rectify_person,r.project_id,r.file_id,r.reason,r.rectify_time, r.version,r.del_flag,r.create_by,r.create_time,r.update_by,r.update_time,r.remark,a.origin_name,a.file_name,a.path from ass_recitification r left join ass_accessory_file a on a.id=r.file_id