skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProgressReportDO.java
@@ -81,9 +81,13 @@ private Long gxDeviceId; @TableField(exist = false) private String deviceName; @TableField(exist = false) private String deviceType; @TableField(exist = false) private String typeName; /** * 上报人 */ skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgReportUserDO.java
@@ -1,6 +1,7 @@ package cn.gistack.sm.sg.DO; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; @@ -62,4 +63,6 @@ * 审批顺序 */ private Integer isHis; @TableField(exist = false) private String userName; } skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DTO/ProjectSearchDTO.java
@@ -8,6 +8,7 @@ @Data public class ProjectSearchDTO { private String projectName; private String deviceName; private String skName; private String gxType; private String gxName; @@ -17,4 +18,5 @@ private String gxStepNum; private String projectId; private Integer approvalStatus; private Integer status; } skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgStepReportVO.java
@@ -1,6 +1,9 @@ package cn.gistack.sm.sg.VO; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; @Data public class SgStepReportVO { @@ -8,4 +11,6 @@ private String stepName; private Integer approvalStatus; private String stepNum; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date reportTime; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProgressReportController.java
@@ -86,7 +86,7 @@ } /** * APP审核列表 * 待办列表统计 */ @GetMapping(value = "/approval_count") public R countList(ProjectSearchDTO searchDTO) { @@ -94,4 +94,13 @@ return R.data(map); } /** * 审批状态统计 */ @GetMapping(value = "/status_count") public R statusCount(ProjectSearchDTO searchDTO) { Map<String,Long> map= sgProgressReportService.statusCount(searchDTO); return R.data(map); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java
@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; /** * <p> @@ -29,4 +30,8 @@ Long countList(@Param("dto") ProjectSearchDTO searchDTO); List<SgStepReportVO> selectByDeviceId(@Param("deviceId") Long gxDeviceId); List<SgProgressReportVO> statusCount(@Param("dto") ProjectSearchDTO searchDTO); List<Map<String, Object>> getUserByIds(@Param("ids") List<Long> ids); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml
@@ -3,21 +3,41 @@ <mapper namespace="cn.gistack.sm.sg.mapper.SgProgressReportMapper"> <select id="queryPageList" resultType="cn.gistack.sm.sg.VO.SgProgressReportVO"> select report.* ,de.device_name,de.device_type from SG_PROGRESS_REPORT report left join ywxt.sg_device de on report.gx_device_id = de.id SELECT report.*, de.device_name, de.device_type, dict."DICT_VALUE" as typeName FROM ywxt.SG_PROGRESS_REPORT report LEFT JOIN ywxt.sg_device de ON report.gx_device_id = de.id left join YWXT."BLADE_DICT_BIZ" as dict on de.device_type=dict.DICT_KEY and dict.CODE='SG_DEVICE_TYPE' where 1=1 <if test="dto.projectName != null and dto.projectName != ''"> and report.PROGRAM_NAME = #{dto.projectName} and report.PROGRAM_NAME like CONCAT(CONCAT('%',#{dto.projectName},'%')) </if> <if test="dto.deviceName != null and dto.deviceName != ''"> and de.device_name like CONCAT(CONCAT('%', #{dto.deviceName}), '%') </if> </select> <select id="queryById" resultType="cn.gistack.sm.sg.VO.SgProgressReportVO"> select * from SG_PROGRESS_REPORT report where id = #{id} </select> <select id="queryList" resultType="cn.gistack.sm.sg.VO.SgProgressReportVO"> select report.* ,de.device_name,de.device_type from ywxt.SG_PROGRESS_REPORT report left join ywxt.sg_device de on report.gx_device_id = de.id left join ywxt.sg_report_user userR on report.id = userR.report_id where 1=1 and userR.is_his = 0 and userR.approval_order != 0 SELECT report.*, de.device_name, de.device_type, dict."DICT_VALUE" as typeName FROM ywxt.SG_PROGRESS_REPORT report LEFT JOIN ywxt.sg_device de ON report.gx_device_id = de.id left join YWXT."BLADE_DICT_BIZ" as dict on de.device_type=dict.DICT_KEY and dict.CODE='SG_DEVICE_TYPE' LEFT JOIN ywxt.sg_report_user userR ON report.id = userR.report_id WHERE 1 = 1 AND userR.is_his = 0 AND userR.approval_order != 0 <if test="dto.userId != null and dto.userId != ''"> and userR.user_id = #{dto.userId} </if> @@ -42,7 +62,8 @@ step.id AS stepId, step.gx_step_name AS stepName, step.gx_step_num AS stepNum, re.STATUS AS approvalStatus re.STATUS AS approvalStatus, re.report_time FROM ywxt.sg_gx_step step LEFT JOIN ywxt.sg_gx gx ON step.gx_info_id = gx.id @@ -51,4 +72,31 @@ WHERE 1 =1 and de.id = #{deviceId} </select> <select id="statusCount" resultType="cn.gistack.sm.sg.VO.SgProgressReportVO"> SELECT report.*, de.device_name, de.device_type, dict."DICT_VALUE" as typeName FROM ywxt.SG_PROGRESS_REPORT report LEFT JOIN ywxt.sg_device de ON report.gx_device_id = de.id left join YWXT."BLADE_DICT_BIZ" as dict on de.device_type=dict.DICT_KEY and dict.CODE='SG_DEVICE_TYPE' where 1=1 <if test="dto.projectName != null and dto.projectName != ''"> and report.PROGRAM_NAME like CONCAT(CONCAT('%',#{dto.projectName},'%')) </if> <if test="dto.deviceName != null and dto.deviceName != ''"> and de.device_name like CONCAT(CONCAT('%', #{dto.deviceName}), '%') </if> </select> <select id="getUserByIds" resultType="java.util.Map"> select id ,real_name from ywxt.blade_user where 1 = 1 <if test="ids != null and ids.size>0"> AND id in <foreach collection="ids" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach> </if> </select> </mapper> skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgProgressReportService.java
@@ -33,4 +33,6 @@ List<SgProgressReportVO> queryList(ProjectSearchDTO searchDTO); Map<String, Long> countList(ProjectSearchDTO searchDTO); Map<String, Long> statusCount(ProjectSearchDTO searchDTO); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
@@ -9,6 +9,7 @@ import cn.gistack.sm.sg.service.SgProgressReportService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -66,6 +67,8 @@ @Override @Transactional public void add(SgProgressReportDO sgProgressReportDO) { Date now = DateUtil.now(); sgProgressReportDO.setReportTime(now); Long gxDeviceId = sgProgressReportDO.getGxDeviceId(); Long gxStepId = sgProgressReportDO.getGxStepId(); List<SgGxStepDO> list = sgGxStepMapper.selectByGxInfoId(gxDeviceId); @@ -78,7 +81,8 @@ } for (SgGxStepDO gxStepDO : list) { if (Integer.parseInt(sgGxStepDO.getGxStepNum()) - Integer.parseInt(gxStepDO.getGxStepNum()) == 1) { LambdaQueryChainWrapper<SgProgressReportDO> wrapper1 = new LambdaQueryChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getGxStepId, gxStepDO.getId()); QueryWrapper<SgProgressReportDO> wrapper1 = new QueryWrapper<>(); wrapper1.eq("gx_step_id", gxStepDO.getId()); SgProgressReportDO one = sgProgressReportMapper.selectOne(wrapper1); if (one != null && one.getStatus() != 3) { throw new ServiceException("请先完成" + gxStepDO.getGxStepName() + "的审批!"); @@ -94,9 +98,14 @@ List<SgGxConfigDO> sgGxConfigDOS = new LambdaQueryChainWrapper<>(sgGxConfigMapper) .eq(SgGxConfigDO::getGxDeviceType, deviceType).eq(SgGxConfigDO::getGxStepId, gxStepId).list(); List<String> roIds = sgGxConfigDOS.stream().map(SgGxConfigDO::getRoleId).collect(Collectors.toList()); if (CollectionUtils.isEmpty(roIds)){ throw new ServiceException("请完成工序角色配置!"); } List<SgProjectPersonConfigDO> personConfigDOS = new LambdaQueryChainWrapper<>(sgProjectPersonConfigMapper).eq(SgProjectPersonConfigDO::getProgramId,sgProgressReportDO.getProframId()).in(SgProjectPersonConfigDO::getRoldId, roIds).list(); if (CollectionUtils.isEmpty(personConfigDOS)){ throw new ServiceException("请完成项目审批人员配置!"); } Map<Long, Long> userMap = personConfigDOS.stream().collect(Collectors.toMap(SgProjectPersonConfigDO::getRoldId, SgProjectPersonConfigDO::getUserId)); Date now = DateUtil.now(); sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).userId(sgProgressReportDO.getReportUser()).approvalContent("提交审批").approvalStatus(0).approvalOrder(0).approvalTime(now).build()); for (SgGxConfigDO sgGxConfigDO : sgGxConfigDOS) { sgGxConfigDO.setUser(userMap.get(Long.parseLong(sgGxConfigDO.getRoleId()))); @@ -123,6 +132,15 @@ public SgProgressReportVO detail(String id) { SgProgressReportVO sgProgressReportVO = sgProgressReportMapper.queryById(id); List<SgReportUserDO> list = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId, id).orderByAsc(SgReportUserDO::getApprovalTime).list(); List<Long> ids = list.stream().map(s -> s.getUserId()).collect(Collectors.toList()); List<Map<String,Object>> users = sgProgressReportMapper.getUserByIds(ids); for (Map<String, Object> user : users) { for (SgReportUserDO sgReportUserDO : list) { if (user.get("ID").equals(sgReportUserDO.getUserId())){ sgReportUserDO.setUserName(user.get("REAL_NAME").toString()); } } } sgProgressReportVO.setSgReportUserDOS(list); List<SgStepReportVO> sgStepReportVOS = sgProgressReportMapper.selectByDeviceId(sgProgressReportVO.getGxDeviceId()); sgProgressReportVO.setSgStepReportVOS(sgStepReportVOS); @@ -267,6 +285,22 @@ map.put("over",over); return map; } @Override public Map<String, Long> statusCount(ProjectSearchDTO searchDTO) { List<SgProgressReportVO> list = sgProgressReportMapper.statusCount(searchDTO); Map<String, Long> map = new HashMap<>(); List<SgProgressReportVO> pending = list.stream().filter(s -> s.getStatus() == 0).collect(Collectors.toList()); List<SgProgressReportVO> progress = list.stream().filter(s -> s.getStatus() == 1).collect(Collectors.toList()); List<SgProgressReportVO> over = list.stream().filter(s -> s.getStatus() == 2).collect(Collectors.toList()); List<SgProgressReportVO> reject = list.stream().filter(s -> s.getStatus() == 3).collect(Collectors.toList()); map.put("all", (long) list.size()); map.put("pending", (long) pending.size()); map.put("progress", (long) progress.size()); map.put("over", (long) over.size()); map.put("reject", (long) reject.size()); return map; } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java
@@ -117,7 +117,10 @@ @Override public Map<String, Long> projectCount(ProjectSearchDTO searchDTO) { Map<String, Long> map = new HashMap<>(); List<SgProjectInfoDO> list = new LambdaQueryChainWrapper<>(sgProjectInfoMapper).list(); LambdaQueryChainWrapper<SgProjectInfoDO> wrapper = new LambdaQueryChainWrapper<>(sgProjectInfoMapper); wrapper.like(SgProjectInfoDO::getProjectName,searchDTO.getProjectName()); wrapper.eq(SgProjectInfoDO::getStatus,searchDTO.getStatus()); List<SgProjectInfoDO> list = wrapper.list(); List<SgProjectInfoDO> pending = list.stream().filter(s -> s.getStatus() == 0).collect(Collectors.toList()); List<SgProjectInfoDO> progress = list.stream().filter(s -> s.getStatus() == 1).collect(Collectors.toList()); List<SgProjectInfoDO> over = list.stream().filter(s -> s.getStatus() == 2).collect(Collectors.toList());