goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/controller/TargetExamineController.java
@@ -1,39 +1,23 @@ package com.gkhy.safePlatform.targetDuty.controller; import java.util.*; import java.sql.Timestamp; import com.gkhy.safePlatform.targetDuty.utils.DateUtils; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gkhy.safePlatform.commons.utils.BeanCopyUtils; import com.gkhy.safePlatform.targetDuty.entity.ExamineItem; import com.gkhy.safePlatform.targetDuty.entity.TargetDutyfileInfo; import com.gkhy.safePlatform.targetDuty.entity.TargetExamine; import com.gkhy.safePlatform.targetDuty.entity.TargetMng; import com.gkhy.safePlatform.targetDuty.model.dto.req.ExamineTemplateSaveOrUpdate; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetDutyfileInfoQueryCriteria; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetExamineSaveOrUpdate; import com.gkhy.safePlatform.targetDuty.model.dto.resp.ExamineTemplateDto; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetExamineDivideDto; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetExamineDto; import com.gkhy.safePlatform.targetDuty.service.CommonService; import com.gkhy.safePlatform.targetDuty.service.TargetExamineService; import com.gkhy.safePlatform.targetDuty.service.TargetMngService; import com.google.common.collect.Lists; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import com.gkhy.safePlatform.commons.enums.ResultCodes; import com.gkhy.safePlatform.commons.query.PageQuery; import com.gkhy.safePlatform.commons.utils.PageUtils; import com.gkhy.safePlatform.commons.vo.ResultVO; import com.gkhy.safePlatform.commons.enums.ResultCodes; import com.gkhy.safePlatform.targetDuty.entity.TargetExamine; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetExamineQueryCriteria; import com.gkhy.safePlatform.targetDuty.service.CommonService; import com.gkhy.safePlatform.targetDuty.service.TargetExamineService; import com.gkhy.safePlatform.targetDuty.service.TargetMngService; import org.springframework.web.bind.annotation.*; import java.util.stream.Collectors; import javax.annotation.Resource; import java.io.Serializable; import java.sql.Timestamp; import java.util.Arrays; import java.util.Date; import java.util.List; /** * (TargetExamine)表控制层 @@ -176,4 +160,4 @@ // saveOrUpdate.setExamineList(examineList); // System.out.println(JSONObject.toJSONString(saveOrUpdate)); } } } goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/controller/TargetMngController.java
@@ -74,7 +74,7 @@ PageUtils.checkCheck(pageQuery); return this.targetMngService.queryAll(pageQuery); } /** * 通过主键查询单条数据 @@ -225,6 +225,16 @@ return this.targetMngService.queryAll(currentUser.getUid(),pageQuery); } /** * 统计 * * @return 删除结果 */ @GetMapping(value = "/statistics") public ResultVO statistics(TargetMngQueryCriteria criteria) { return new ResultVO<>(ResultCodes.OK,this.targetMngService.statistics(criteria)); } public static void main(String[] args) { TargetMng mng = new TargetMng(); @@ -240,4 +250,4 @@ System.out.println(JSONObject.toJSONString(mng)); } } } goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/req/TargetExamineQueryCriteria.java
@@ -4,15 +4,51 @@ import com.gkhy.safePlatform.targetDuty.annotation.Query; public class TargetExamineQueryCriteria { //关联的目标指标/外键 //安全目标指标 @Query(type = Query.Type.INNER_LIKE) private String qName; //目标指标编号 @Query(type = Query.Type.INNER_LIKE) private String indexNum; //指标类型 1:年指标 2:月指标 3:半年 4:季度 @Query() private Long targetId; //关联的目标指标/外键 public Long getTargetId() { return targetId; private Integer targetType; //分解状态 1:已分解 2:未分解 @Query() private Integer divideStatus; public Integer getDivideStatus() { return divideStatus; } public void setTargetId(Long targetId) { this.targetId = targetId; public void setDivideStatus(Integer divideStatus) { this.divideStatus = divideStatus; } //安全目标指标 public String getqName() { return qName; } public void setqName(String qName) { this.qName = qName; } //目标指标编号 public String getIndexNum() { return indexNum; } public void setIndexNum(String indexNum) { this.indexNum = indexNum; } //指标类型 1:年指标 2:月指标 public Integer getTargetType() { return targetType; } public void setTargetType(Integer targetType) { this.targetType = targetType; } } goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/resp/TargetDivideDetailDto.java
@@ -1,5 +1,7 @@ package com.gkhy.safePlatform.targetDuty.model.dto.resp; import com.fasterxml.jackson.annotation.JsonFormat; import java.sql.Timestamp; import java.io.Serializable; @@ -180,4 +182,47 @@ public void setUpdateTime(Timestamp updateTime) { this.updateTime = updateTime; } //考核结果 1:合格 2:不合格 private Integer examineResult; public Integer getExamineResult() { return examineResult; } public void setExamineResult(Integer examineResult) { this.examineResult = examineResult; } //考核人ID/外键 private Long examinePersonId; public Long getExaminePersonId() { return examinePersonId; } public void setExaminePersonId(Long examinePersonId) { this.examinePersonId = examinePersonId; } //考核人名称 private String examinePersonName; public String getExaminePersonName() { return examinePersonName; } public void setExaminePersonName(String examinePersonName) { this.examinePersonName = examinePersonName; } //考核时间 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Timestamp examineDate; public Timestamp getExamineDate() { return examineDate; } public void setExamineDate(Timestamp examineDate) { this.examineDate = examineDate; } } goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/resp/TargetExamineDto.java
@@ -11,7 +11,42 @@ import java.util.List; public class TargetExamineDto implements Serializable { private Long id; //安全目标指标 private String qName; //目标指标编号 private String indexNum; //年度 private String year; //指标值 private String value; //指标级别 1:公司级 2:部门分厂级 3:工段班组级 private Integer level; //完成期限 private Timestamp completeDate; //备注信息 private String memo; //指标类型 1:年指标 2:月指标 private Integer targetType; //分解状态 1:已分解 2:未分解 private Integer divideStatus; private Timestamp createTime; private Timestamp updateTime; //目标指标分解列表 private List<TargetDivideDetailDto> targetDivideDetailList = new ArrayList<>(); public List<TargetDivideDetailDto> getTargetDivideDetailList() { return targetDivideDetailList; } public void setTargetDivideDetailList(List<TargetDivideDetailDto> targetDivideDetailList) { this.targetDivideDetailList = targetDivideDetailList; } public Long getId() { return id; } @@ -20,142 +55,92 @@ this.id = id; } //关联的目标指标/外键 private Long targetId; public Long getTargetId() { return targetId; public String getqName() { return qName; } public void setTargetId(Long targetId) { this.targetId = targetId; } //责任部门id/外键 private Long dutyDepartmentId; public Long getDutyDepartmentId() { return dutyDepartmentId; public void setqName(String qName) { this.qName = qName; } public void setDutyDepartmentId(Long dutyDepartmentId) { this.dutyDepartmentId = dutyDepartmentId; //目标指标编号 public String getIndexNum() { return indexNum; } //责任部门名称 private String dutyDepartmentName; //考核指标 private String examineValue; public String getExamineValue() { return examineValue; public void setIndexNum(String indexNum) { this.indexNum = indexNum; } //年度 public String getYear() { return year; } public void setExamineValue(String examineValue) { this.examineValue = examineValue; public void setYear(String year) { this.year = year; } //制定部门id/外键 private Long makerDepartmentId; public Long getMakerDepartmentId() { return makerDepartmentId; //指标值 public String getValue() { return value; } public void setMakerDepartmentId(Long makerDepartmentId) { this.makerDepartmentId = makerDepartmentId; public void setValue(String value) { this.value = value; } //指标级别 1:公司级 2:部门分厂级 3:工段班组级 public Integer getLevel() { return level; } //制定部门名称 private String makerDepartmentName; //制定日期 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Timestamp makeDate; public Timestamp getMakeDate() { return makeDate; public void setLevel(Integer level) { this.level = level; } //完成期限 public Timestamp getCompleteDate() { return completeDate; } public void setMakeDate(Timestamp makeDate) { this.makeDate = makeDate; public void setCompleteDate(Timestamp completeDate) { this.completeDate = completeDate; } //上报值 private String uploadValue; public String getUploadValue() { return uploadValue; //备注信息 public String getMemo() { return memo; } public void setUploadValue(String uploadValue) { this.uploadValue = uploadValue; public void setMemo(String memo) { this.memo = memo; } //上报时间 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Timestamp uploadDate; public Timestamp getUploadDate() { return uploadDate; //指标类型 1:年指标 2:月指标 public Integer getTargetType() { return targetType; } public void setUploadDate(Timestamp uploadDate) { this.uploadDate = uploadDate; public void setTargetType(Integer targetType) { this.targetType = targetType; } //考核结果 1:合格 2:不合格 private Integer examineResult; public Integer getExamineResult() { return examineResult; //分解状态 1:已分解 2:未分解 public Integer getDivideStatus() { return divideStatus; } public void setExamineResult(Integer examineResult) { this.examineResult = examineResult; } //考核人ID/外键 private Long examinePersonId; public Long getExaminePersonId() { return examinePersonId; public void setDivideStatus(Integer divideStatus) { this.divideStatus = divideStatus; } public void setExaminePersonId(Long examinePersonId) { this.examinePersonId = examinePersonId; } //考核人名称 private String examinePersonName; public String getExaminePersonName() { return examinePersonName; public Timestamp getCreateTime() { return createTime; } public void setExaminePersonName(String examinePersonName) { this.examinePersonName = examinePersonName; } //考核时间 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Timestamp examineDate; public Timestamp getExamineDate() { return examineDate; public void setCreateTime(Timestamp createTime) { this.createTime = createTime; } public void setExamineDate(Timestamp examineDate) { this.examineDate = examineDate; public Timestamp getUpdateTime() { return updateTime; } public String getDutyDepartmentName() { return dutyDepartmentName; public void setUpdateTime(Timestamp updateTime) { this.updateTime = updateTime; } public void setDutyDepartmentName(String dutyDepartmentName) { this.dutyDepartmentName = dutyDepartmentName; } public String getMakerDepartmentName() { return makerDepartmentName; } public void setMakerDepartmentName(String makerDepartmentName) { this.makerDepartmentName = makerDepartmentName; } } goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/repository/TargetMngRepository.java
@@ -2,7 +2,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gkhy.safePlatform.targetDuty.entity.TargetMng; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; import java.util.Map; /** * 目标指标(TargetMng)表数据库访问层 @@ -12,5 +15,20 @@ */ @Repository public interface TargetMngRepository extends BaseMapper<TargetMng> { @Select("<script>select COUNT(1) from target_mng where 1=1 " + "<if test =\"divideStatus !='' and divideStatus !=null\">and divide_status = #{divideStatus}</if> " + "<if test =\"targetType !='' and targetType !=null\">and target_type = #{targetType}</if>" + "<if test =\"qName !='' and qName !=null\">and q_name = #{qName}</if>" + "<if test =\"indexNum !='' and indexNum !=null\">and index_num = #{indexNum}</if>" + "</script> ") Integer selectTotal(Map<String, Object> beanToMap); @Select("<script>select COUNT(target_id) from target_divide_detail a INNER JOIN target_mng b on a.target_id = b.id \n" + "WHERE a.id not in (select target_divide_detail_id from target_examine where examine_result = 1)\n" + "<if test =\"divideStatus !='' and divideStatus !=null\">and b.divide_status = #{divideStatus}</if> " + "<if test =\"targetType !='' and targetType !=null\">and b.target_type = #{targetType}</if>" + "<if test =\"qName !='' and qName !=null\">and b.q_name = #{qName}</if>" + "<if test =\"indexNum !='' and indexNum !=null\">and b.index_num = #{indexNum}</if>" + "GROUP BY a.target_id</script> ") Integer selectNoComplete(Map<String, Object> beanToMap); } goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/TargetMngService.java
@@ -26,4 +26,6 @@ Object selectOne(Serializable id); ResultVO queryAll(Long uid, PageQuery<TargetCheckAndSubmitQueryCriteria> pageQuery); Object statistics(TargetMngQueryCriteria criteria); } goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetDivideDetailServiceImpl.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.safePlatform.targetDuty.entity.ExamineItem; import com.gkhy.safePlatform.targetDuty.entity.TargetMng; import com.gkhy.safePlatform.targetDuty.enums.TargetDutyResultCodes; import com.gkhy.safePlatform.targetDuty.excepiton.TargetDutyException; @@ -96,8 +97,15 @@ list.forEach(f->{f.setTargetId(infoDto.getTargetId());}); this.saveOrUpdateBatch(list); //设置状态为 《已分解》 targetMng.setDivideStatus(1); //查询最新的分解数量,如果>0,设置状态为 《已分解》,否则设置为未分解 int divideStatus = 2; if(infoDto.getTargetId() != null){ long number = this.count(new QueryWrapper<TargetDivideDetail>().eq("target_id",infoDto.getTargetId())); if(number > 0){ divideStatus = 1; } } targetMng.setDivideStatus(divideStatus); targetMngRepository.update(targetMng,new UpdateWrapper<TargetMng>().eq("id",targetMng.getId())); goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetExamineServiceImpl.java
@@ -4,9 +4,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.safePlatform.targetDuty.entity.TargetMng; import com.gkhy.safePlatform.targetDuty.entity.TargetType; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetDivideDetailQueryCriteria; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetExamineSaveOrUpdate; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetDivideDetailDto; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetMngDto; import com.gkhy.safePlatform.targetDuty.repository.TargetExamineRepository; import com.gkhy.safePlatform.targetDuty.entity.TargetExamine; import com.gkhy.safePlatform.targetDuty.repository.TargetMngRepository; import com.gkhy.safePlatform.targetDuty.repository.TargetTypeRepository; import com.gkhy.safePlatform.targetDuty.service.CommonService; import com.gkhy.safePlatform.targetDuty.service.TargetDivideDetailService; import com.gkhy.safePlatform.targetDuty.service.TargetExamineService; import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; @@ -20,8 +29,8 @@ import com.gkhy.safePlatform.commons.utils.BeanCopyUtils; import org.springframework.util.StringUtils; import java.util.Arrays; import java.util.List; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; /** @@ -35,18 +44,87 @@ @Autowired private TargetExamineRepository targetExamineRepository; @Override @Autowired private TargetMngRepository targetMngRepository; @Resource private CommonService commonService; @Resource private TargetDivideDetailService targetDivideDetailService; @Autowired private TargetTypeRepository targetTypeRepository; @Override public ResultVO queryAll(PageQuery<TargetExamineQueryCriteria> pageQuery) { Long pageIndex = pageQuery.getPageIndex(); Long pageSize = pageQuery.getPageSize(); IPage<TargetExamine> page = new Page<>(pageIndex, pageSize); IPage<TargetMng> page = new Page<>(pageIndex, pageSize); page = baseMapper.selectPage(page, QueryHelpPlus.getPredicate(TargetExamine.class, pageQuery.getSearchParams())); page = targetMngRepository.selectPage(page, QueryHelpPlus.getPredicate(TargetMng.class, pageQuery.getSearchParams())); List<TargetExamineDto> respList = BeanCopyUtils.copyBeanList(page.getRecords(), TargetExamineDto.class); respList.forEach(dto->{ //查询关联分解信息 TargetDivideDetailQueryCriteria criteria = new TargetDivideDetailQueryCriteria(); criteria.setTargetId(dto.getId()); List<TargetDivideDetailDto> respList1 = BeanCopyUtils.copyBeanList(targetDivideDetailService.queryAll(criteria), TargetDivideDetailDto.class); // --------------------------- 获取部门信息----------------------- //收集所用到的部门ID Set<Long> collectDepIdSet = new HashSet(); respList1.forEach(f->{ collectDepIdSet.add(f.getDutyDepartmentId()); collectDepIdSet.add(f.getMakerDepartmentId()); }); //获取部门名集合 Map<Long,String> depNameMap = commonService.getDepName(collectDepIdSet); respList1.forEach(f->{ f.setDutyDepartmentName(depNameMap.get(f.getDutyDepartmentId())); f.setMakerDepartmentName(depNameMap.get(f.getMakerDepartmentId())); }); // --------------------------- 获取目标分类名称----------------------- //收集所用到的目标分类ID Set<Long> collectTypeSet = new HashSet(); respList1.forEach(f->{ collectTypeSet.add(f.getTargetTypeId()); }); //获取目标分类名集合 if(!collectTypeSet.isEmpty()){ List<TargetType> typeList = targetTypeRepository.selectBatchIds(collectTypeSet); // TODO Map<Long,String> typeNameMap = typeList.stream() .collect(Collectors.toMap(TargetType::getId, TargetType::getTypeName,(k1, k2)->k1)); respList1.forEach(f->{ f.setTargetTypeName(typeNameMap.get(f.getTargetTypeId())); }); } // --------------------------- 获取考核结果----------------------- //收集所用到的分解详情ID Set<Long> collectExamResultSet = new HashSet(); respList1.forEach(f->{ collectExamResultSet.add(f.getId()); }); //获取核结果集合 if(!collectTypeSet.isEmpty()){ List<TargetExamine> typeList = targetExamineRepository.selectBatchIds(collectTypeSet); Map<Long,Integer> examResultMap = typeList.stream() .collect(Collectors.toMap(TargetExamine::getId, TargetExamine::getExamineResult,(k1, k2)->k1)); respList1.forEach(f->{ f.setExamineResult(examResultMap.get(f.getId())); }); } dto.setTargetDivideDetailList(respList1); }); return new SearchResultVO<>( true, goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetMngServiceImpl.java
@@ -1,42 +1,42 @@ package com.gkhy.safePlatform.targetDuty.service.impl; import java.sql.Timestamp; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.toolkit.BeanUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.safePlatform.account.rpc.apimodel.AccountDepartmentService; import com.gkhy.safePlatform.account.rpc.apimodel.model.resp.DepInfoRPCRespDTO; import com.gkhy.safePlatform.targetDuty.entity.ExamineItem; import com.gkhy.safePlatform.commons.enums.ResultCodes; import com.gkhy.safePlatform.commons.query.PageQuery; import com.gkhy.safePlatform.commons.utils.BeanCopyUtils; import com.gkhy.safePlatform.commons.vo.ResultVO; import com.gkhy.safePlatform.commons.vo.SearchResultVO; import com.gkhy.safePlatform.targetDuty.entity.TargetDutyWorkApprove; import com.gkhy.safePlatform.targetDuty.entity.TargetExamine; import com.gkhy.safePlatform.targetDuty.entity.TargetMng; import com.gkhy.safePlatform.targetDuty.entity.TargetType; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetCheckAndSubmitQueryCriteria; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetDivideDetailQueryCriteria; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetMngQueryCriteria; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetCheckAndSubmitDto; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetDivideDetailDto; import com.gkhy.safePlatform.targetDuty.model.dto.resp.WorkApproveRelateDesc; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetMngDto; import com.gkhy.safePlatform.targetDuty.repository.TargetDutyWorkApproveRepository; import com.gkhy.safePlatform.targetDuty.repository.TargetExamineRepository; import com.gkhy.safePlatform.targetDuty.repository.TargetMngRepository; import com.gkhy.safePlatform.targetDuty.entity.TargetMng; import com.gkhy.safePlatform.targetDuty.repository.TargetTypeRepository; import com.gkhy.safePlatform.targetDuty.service.CommonService; import com.gkhy.safePlatform.targetDuty.service.TargetDivideDetailService; import com.gkhy.safePlatform.targetDuty.service.TargetMngService; import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import com.gkhy.safePlatform.commons.enums.ResultCodes; import com.gkhy.safePlatform.commons.query.PageQuery; import com.gkhy.safePlatform.commons.vo.ResultVO; import com.gkhy.safePlatform.commons.vo.SearchResultVO; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetMngQueryCriteria; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetMngDto; import com.gkhy.safePlatform.targetDuty.utils.BeanToMapUtil; import com.gkhy.safePlatform.targetDuty.utils.QueryHelpPlus; import com.gkhy.safePlatform.commons.utils.BeanCopyUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.beans.IntrospectionException; import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -64,8 +64,11 @@ @Autowired private TargetTypeRepository targetTypeRepository; @Override @Autowired private TargetExamineRepository targetExamineRepository; @Override public ResultVO queryAll(PageQuery<TargetMngQueryCriteria> pageQuery) { Long pageIndex = pageQuery.getPageIndex(); Long pageSize = pageQuery.getPageSize(); @@ -161,6 +164,32 @@ }); // --------------------------- 获取考核结果----------------------- //收集所用到的分解详情ID Set<Long> collectExamResultSet = new HashSet(); respList.forEach(f->{ collectExamResultSet.add(f.getId()); }); //获取核结果集合 if(!collectExamResultSet.isEmpty()){ List<TargetExamine> typeList = targetExamineRepository.selectList(new QueryWrapper<TargetExamine>().in("target_divide_detail_id",collectExamResultSet)); Map<Long,TargetExamine> examResultMap = typeList.stream() .collect(Collectors.toMap(TargetExamine::getTargetDivideDetailId, Function.identity(),(k1, k2)->k1)); respList.forEach(f->{ TargetExamine targetExamine = examResultMap.get(f.getId()); if(targetExamine != null){ f.setExamineResult(targetExamine.getExamineResult()); f.setExamineDate(targetExamine.getExamineDate()); f.setExaminePersonId(targetExamine.getExaminePersonId()); f.setExaminePersonName(targetExamine.getExaminePersonName()); } }); } targetMngDto.setTargetDivideDetailList(respList); return targetMngDto; } @@ -204,5 +233,34 @@ ); } @Override public Object statistics(TargetMngQueryCriteria criteria) { Map<String,String> map = new HashMap<>(); // 查询总数 Integer total = null; try { total = targetMngRepository.selectTotal(BeanToMapUtil.convertBean(criteria)); //未完成数量 Integer noComplete = targetMngRepository.selectNoComplete(BeanToMapUtil.convertBean(criteria)); } if(noComplete == null){ noComplete = 0; } //已完成数 int complete = total-noComplete; map.put("total",total+""); map.put("noComplete",noComplete+""); map.put("complete",complete+""); return map; } catch (Exception e) { } return map; } } goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/utils/BeanToMapUtil.java
对比新文件 @@ -0,0 +1,107 @@ package com.gkhy.safePlatform.targetDuty.utils; /** */ import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; public class BeanToMapUtil { /** * 将一个 Map 对象转化为一个 JavaBean * @param type 要转化的类型 * @param map 包含属性值的 map * @return 转化出来的 JavaBean 对象 * @throws IntrospectionException * 如果分析类属性失败 * @throws IllegalAccessException * 如果实例化 JavaBean 失败 * @throws InstantiationException * 如果实例化 JavaBean 失败 * @throws InvocationTargetException * 如果调用属性的 setter 方法失败 */ public static Object convertMap(Class type, Map map) throws IntrospectionException, IllegalAccessException, InstantiationException, InvocationTargetException { BeanInfo beanInfo = Introspector.getBeanInfo(type); // 获取类属性 Object obj = type.newInstance(); // 创建 JavaBean 对象 // 给 JavaBean 对象的属性赋值 PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (int i = 0; i< propertyDescriptors.length; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; String propertyName = descriptor.getName(); if (map.containsKey(propertyName)) { // 下面一句可以 try 起来,这样当一个属性赋值失败的时候就不会影响其他属性赋值。 Object value = map.get(propertyName); Object[] args = new Object[1]; args[0] = value; descriptor.getWriteMethod().invoke(obj, args); } } return obj; } /** * 将一个 JavaBean 对象转化为一个 Map * @param bean 要转化的JavaBean 对象 * @return 转化出来的 Map 对象 * @throws IntrospectionException 如果分析类属性失败 * @throws IllegalAccessException 如果实例化 JavaBean 失败 * @throws InvocationTargetException 如果调用属性的 setter 方法失败 */ public static Map convertBean(Object bean) throws IntrospectionException, IllegalAccessException, InvocationTargetException { Class type = bean.getClass(); Map returnMap = new HashMap(); BeanInfo beanInfo = Introspector.getBeanInfo(type); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (int i = 0; i< propertyDescriptors.length; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; String propertyName = descriptor.getName(); if (!propertyName.equals("class")) { Method readMethod = descriptor.getReadMethod(); Object result = readMethod.invoke(bean, new Object[0]); if (result != null) { returnMap.put(propertyName, result); } else { returnMap.put(propertyName, ""); } } } return returnMap; } public static Map convertHaveDataBean(Object bean) throws IntrospectionException, IllegalAccessException, InvocationTargetException { Class type = bean.getClass(); Map returnMap = new HashMap(); BeanInfo beanInfo = Introspector.getBeanInfo(type); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (int i = 0; i< propertyDescriptors.length; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; String propertyName = descriptor.getName(); if (!propertyName.equals("class")) { Method readMethod = descriptor.getReadMethod(); Object result = readMethod.invoke(bean, new Object[0]); if (result != null) { //有值得字段放入map中,其他的不要 returnMap.put(propertyName, result); } } } return returnMap; } }