From 2595c1008bfe2d0d5e01f3b6b035faa7ccb8a2b8 Mon Sep 17 00:00:00 2001 From: songhuangfeng123 <shf18767906695@163.com> Date: 星期五, 19 八月 2022 17:46:03 +0800 Subject: [PATCH] 目标考核 --- goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/utils/BeanToMapUtil.java | 107 ++++++++ goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/repository/TargetMngRepository.java | 18 + goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetDivideDetailServiceImpl.java | 12 goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetMngServiceImpl.java | 96 ++++++- goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/TargetMngService.java | 2 goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/req/TargetExamineQueryCriteria.java | 50 +++ goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/controller/TargetExamineController.java | 38 -- goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/controller/TargetMngController.java | 14 + goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetExamineServiceImpl.java | 96 +++++++ goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/resp/TargetExamineDto.java | 195 +++++++-------- goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/resp/TargetDivideDetailDto.java | 45 +++ 11 files changed, 502 insertions(+), 171 deletions(-) diff --git a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/controller/TargetExamineController.java b/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/controller/TargetExamineController.java index 1f9a735..768aebe 100644 --- a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/controller/TargetExamineController.java +++ b/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)); } -} +} \ No newline at end of file diff --git a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/controller/TargetMngController.java b/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/controller/TargetMngController.java index 7a63cb2..d7bfeff 100644 --- a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/controller/TargetMngController.java +++ b/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)); } -} \ No newline at end of file +} diff --git a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/req/TargetExamineQueryCriteria.java b/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/req/TargetExamineQueryCriteria.java index f0c9021..60d22be 100644 --- a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/req/TargetExamineQueryCriteria.java +++ b/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; } } \ No newline at end of file diff --git a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/resp/TargetDivideDetailDto.java b/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/resp/TargetDivideDetailDto.java index 1207fbd..3cca7bf 100644 --- a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/resp/TargetDivideDetailDto.java +++ b/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; + } } \ No newline at end of file diff --git a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/resp/TargetExamineDto.java b/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/resp/TargetExamineDto.java index eaa5287..9065579 100644 --- a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/model/dto/resp/TargetExamineDto.java +++ b/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; - } - } \ No newline at end of file diff --git a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/repository/TargetMngRepository.java b/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/repository/TargetMngRepository.java index 424f49b..45d375e 100644 --- a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/repository/TargetMngRepository.java +++ b/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); } \ No newline at end of file diff --git a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/TargetMngService.java b/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/TargetMngService.java index 4a78422..90e01db 100644 --- a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/TargetMngService.java +++ b/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); } \ No newline at end of file diff --git a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetDivideDetailServiceImpl.java b/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetDivideDetailServiceImpl.java index 5c6b9c5..287af74 100644 --- a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetDivideDetailServiceImpl.java +++ b/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())); diff --git a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetExamineServiceImpl.java b/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetExamineServiceImpl.java index e4cc475..9031014 100644 --- a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetExamineServiceImpl.java +++ b/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, diff --git a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetMngServiceImpl.java b/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetMngServiceImpl.java index ad27486..33b9cd6 100644 --- a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/service/impl/TargetMngServiceImpl.java +++ b/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)); -} \ No newline at end of file + + + 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; + } + + + +} diff --git a/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/utils/BeanToMapUtil.java b/goal-manage/goal-manage-service/src/main/java/com/gkhy/safePlatform/targetDuty/utils/BeanToMapUtil.java new file mode 100644 index 0000000..35ac5d8 --- /dev/null +++ b/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; + } +} \ No newline at end of file -- Gitblit v1.9.2