| | |
| | | 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; |
对比新文件 |
| | |
| | | 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)); |
| | | } |
| | | |
| | | } |
| | |
| | | @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)); |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | 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; |
| | |
| | | |
| | | @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)); |
| | | } |
| | | |
| | |
| | | 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 |
| | |
| | | application: |
| | | name: assess_admin |
| | | profiles: |
| | | active: dev |
| | | active: pro |
| | | servlet: |
| | | multipart: |
| | | enabled: true |
| | |
| | | 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)'; |
对比新文件 |
| | |
| | | ALTER TABLE `smart_assess`.`ass_face_recognition` |
| | | CHANGE COLUMN `insurance_pic_id` `insurance_path` varchar(100) NULL DEFAULT NULL COMMENT '承诺书图片路径'; |
对比新文件 |
| | |
| | | ALTER TABLE `smart_assess`.`ass_project` |
| | | ADD INDEX `index_name`(`name`) USING BTREE, |
| | | ADD INDEX `index_create_time`(`create_time`) USING BTREE; |
对比新文件 |
| | |
| | | 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; |
对比新文件 |
| | |
| | | ALTER TABLE `smart_assess`.`ass_accessory_file` |
| | | ADD INDEX `index_project_id`(`project_id`) USING BTREE; |
对比新文件 |
| | |
| | | ALTER TABLE `smart_assess`.`ass_plan_person` |
| | | ADD INDEX `index_project_id`(`project_id`) USING BTREE; |
对比新文件 |
| | |
| | | ALTER TABLE `smart_assess`.`ass_face_record` |
| | | ADD INDEX `index_project_id`(`project_id`) USING BTREE; |
对比新文件 |
| | |
| | | ALTER TABLE `smart_assess`.`ass_face_recognition` |
| | | ADD INDEX `index_project_id`(`project_id`) USING BTREE; |
对比新文件 |
| | |
| | | ALTER TABLE `smart_assess`.`ass_estimate_schedule` |
| | | ADD INDEX `index_project_id`(`project_id`) USING BTREE; |
对比新文件 |
| | |
| | | ALTER TABLE `smart_assess`.`ass_device` |
| | | ADD INDEX `index_project_id`(`project_id`) USING BTREE; |
| | |
| | | import lombok.Setter; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.validation.constraints.NotBlank; |
| | | import javax.validation.constraints.NotNull; |
| | | |
| | | import java.util.List; |
| | |
| | | @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("乐观锁") |
| | |
| | | @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; |
| | | |
| | | } |
| | |
| | | |
| | | 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; |
| | |
| | | @ApiModelProperty("要件数量") |
| | | @TableField(exist = false) |
| | | private Integer materialCnt; |
| | | |
| | | @ApiModelProperty("归档确认总人数和已确认人数") |
| | | @TableField(exist = false) |
| | | private PersonRecognitionVO personRecognition; |
| | | } |
对比新文件 |
| | |
| | | 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; |
| | | |
| | | } |
| | |
| | | |
| | | 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> |
| | |
| | | */ |
| | | List<AssPlanPerson> getPlanPersonsByIds(List<Long> ids); |
| | | |
| | | /** |
| | | * 根据项目id获取项目归档总人数和已签字人数 |
| | | * @param projectIds |
| | | * @return |
| | | */ |
| | | List<PersonRecognitionVO> getPersonAndRecognitionCount(List<Long> projectIds); |
| | | |
| | | } |
| | |
| | | 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; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | 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())); |
| | |
| | | |
| | | @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; |
| | | } |
| | | |
| | |
| | | @Override |
| | | public List<AssFaceRecognition> getFaceRecognitionByProjectId(Long projectId) { |
| | | projectService.checkUserAllowed(projectId); |
| | | return baseMapper.getFaceRecognitionByProjectId(projectId); |
| | | List<AssFaceRecognition> faceRecognitionList= baseMapper.getFaceRecognitionByProjectId(projectId); |
| | | return faceRecognitionList; |
| | | } |
| | | |
| | | |
| | |
| | | public AssInvestigation getInvestigationByProjectId(Long projectId) { |
| | | projectService.checkUserAllowed(projectId); |
| | | AssInvestigation investigation= baseMapper.getInvestigationByProjectId(projectId); |
| | | 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())); |
| | | |
| | | 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; |
| | | } |
| | | |
| | |
| | | PlayRoleEnum playRoleEnum=PlayRoleEnum.getInfoByCode(pPerson.getPlayRole()); |
| | | String message=playRoleEnum!=null?playRoleEnum.getInfo():""; |
| | | if(StringUtils.isBlank(message)){ |
| | | message="改用户已存在"; |
| | | message="该用户已存在"; |
| | | }else{ |
| | | message="该用户已担任"+message; |
| | | } |
| | |
| | | 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; |
| | |
| | | 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); |
| | |
| | | @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 ; |
| | |
| | | <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" /> |
| | |
| | | <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"> |
| | |
| | | <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> |
| | | |
| | |
| | | </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"> |
| | |
| | | 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> |
| | |
| | | </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> |
| | |
| | | </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 |