skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProjectInfoDO.java
@@ -1,5 +1,6 @@ package cn.gistack.sm.sg.DO; import cn.gistack.sm.sg.VO.SgTypeVO; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; @@ -169,7 +170,7 @@ @TableField(exist = false) private List<SgGxDO> sgGxDOS; private List<SgTypeVO> sgGxDOS; private Integer status; } skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DTO/ProjectSearchDTO.java
@@ -12,7 +12,9 @@ private String gxType; private String gxName; private String createUser; private Long userId; private String gxInfoId; private String gxStepNum; private String projectId; private Integer approvalStatus; } skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java
@@ -19,4 +19,6 @@ private String gxStepName; private Integer STATUS; private String gxStepNum; private String deviceType; private String typeName; } skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgTypeVO.java
New file @@ -0,0 +1,18 @@ package cn.gistack.sm.sg.VO; import cn.gistack.sm.sg.DO.SgDeviceDO; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; @Data @AllArgsConstructor @NoArgsConstructor @Builder public class SgTypeVO { private String typeName; private List<SgDeviceDO> deviceDOS; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProgressReportController.java
@@ -13,6 +13,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; /** * <p> * 施工进度上报表 前端控制器 @@ -72,4 +75,23 @@ sgProgressReportService.approval(approvalDTO); return R.success("审批成功"); } /** * APP审核列表 */ @GetMapping(value = "/list") public R queryList(ProjectSearchDTO searchDTO) { List<SgProgressReportVO> list = sgProgressReportService.queryList( searchDTO); return R.data(list); } /** * APP审核列表 */ @GetMapping(value = "/approval_count") public R countList(ProjectSearchDTO searchDTO) { Map<String,Long> map= sgProgressReportService.countList( searchDTO); return R.data(map); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java
@@ -22,4 +22,8 @@ List<SgProgressReportVO> queryPageList(IPage<SgProgressReportVO> page, @Param("dto") ProjectSearchDTO searchDTO); SgProgressReportVO queryById(@Param("id") String id); List<SgProgressReportVO> queryList(@Param("dto") ProjectSearchDTO searchDTO); Long countList(@Param("dto") ProjectSearchDTO searchDTO); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml
@@ -3,7 +3,7 @@ <mapper namespace="cn.gistack.sm.sg.mapper.SgProgressReportMapper"> <select id="queryPageList" resultType="cn.gistack.sm.sg.VO.SgProgressReportVO"> select report.* ,re.device_name,re.device_type from SG_PROGRESS_REPORT report 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 where 1=1 <if test="dto.projectName != null and dto.projectName != ''"> @@ -13,4 +13,28 @@ <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 <if test="dto.userId != null and dto.userId != ''"> and userR.user_id = #{dto.userId} </if> <if test="dto.approvalStatus != null and dto.approvalStatus != ''"> and userR.approval_status = #{dto.approvalStatus} </if> </select> <select id="countList" resultType="java.lang.Long"> select count(1) 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 <if test="dto.userId != null and dto.userId != ''"> and userR.user_id = #{dto.userId} </if> <if test="dto.approvalStatus != null and dto.approvalStatus != ''"> and userR.approval_status = #{dto.approvalStatus} </if> </select> </mapper> skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml
@@ -13,21 +13,24 @@ </select> <select id="queryStepByProject" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO"> SELECT pro.id, pro.project_name, gx.id as gxId, gx.gx_name, d.device_name, d.id as dId, step.gx_step_name, step.gx_step_num, re.STATUS pro.id, pro.project_name, gx.id as gxId, gx.gx_name, d.device_name, d.device_type, dict."DICT_VALUE" as typeName, d.id as dId, step.gx_step_name, step.gx_step_num, re.STATUS FROM ywxt.sg_project_info pro LEFT JOIN ywxt.sg_device d ON pro.id = d.program_id LEFT JOIN ywxt.sg_gx gx ON d.device_type = gx.gx_type LEFT JOIN ywxt.sg_gx_step step ON gx.id = step.gx_info_id LEFT JOIN ywxt.sg_progress_report re ON re.gx_step_id = step.id ywxt.sg_project_info pro LEFT JOIN ywxt.sg_device d ON pro.id = d.program_id left join YWXT."BLADE_DICT_BIZ" as dict on d.device_type=dict.DICT_KEY and dict.CODE='SG_DEVICE_TYPE' LEFT JOIN ywxt.sg_gx gx ON d.device_type = gx.gx_type LEFT JOIN ywxt.sg_gx_step step ON gx.id = step.gx_info_id LEFT JOIN ywxt.sg_progress_report re ON re.gx_step_id = step.id and re.gx_device_id = d.id where 1=1 <if test="dto.projectId != null and dto.projectId != ''"> and pro.id = #{dto.projectId} skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgProgressReportService.java
@@ -7,6 +7,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; import java.util.Map; /** * <p> * 施工进度上报表 服务类 @@ -26,4 +29,8 @@ void approval(ApprovalDTO approvalDTO); void updateReport(SgProgressReportDO sgProgressReportDO); List<SgProgressReportVO> queryList(ProjectSearchDTO searchDTO); Map<String, Long> countList(ProjectSearchDTO searchDTO); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
@@ -18,10 +18,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.stream.Collectors; @@ -72,10 +69,15 @@ Long gxStepId = sgProgressReportDO.getGxStepId(); List<SgGxStepDO> list = sgGxStepMapper.selectByGxInfoId(gxDeviceId); SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(gxStepId); LambdaQueryChainWrapper<SgProgressReportDO> wrapper = new LambdaQueryChainWrapper<>(sgProgressReportMapper) .eq(SgProgressReportDO::getGxStepId, gxStepId).eq(SgProgressReportDO::getGxDeviceId,gxDeviceId); if ( sgProgressReportMapper.selectOne(wrapper)!=null){ throw new ServiceException("此工序已存在审批!"); } for (SgGxStepDO gxStepDO : list) { if (Integer.parseInt(sgGxStepDO.getGxStepNum()) - Integer.parseInt(gxStepDO.getGxStepNum()) == 1) { LambdaQueryChainWrapper<SgProgressReportDO> wrapper = new LambdaQueryChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getGxStepId, gxStepDO.getId()); SgProgressReportDO one = sgProgressReportMapper.selectOne(wrapper); LambdaQueryChainWrapper<SgProgressReportDO> wrapper1 = new LambdaQueryChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getGxStepId, gxStepDO.getId()); SgProgressReportDO one = sgProgressReportMapper.selectOne(wrapper1); if (one != null && one.getStatus() != 3) { throw new ServiceException("请先完成" + gxStepDO.getGxStepName() + "的审批!"); } @@ -160,7 +162,7 @@ updateChainWrapper.set(SgProgressReportDO::getStatus,1).set(SgProgressReportDO::getAuditPerson,nextUser.getUserId()).update(); } }else { updateChainWrapper.set(SgProgressReportDO::getStatus,0); updateChainWrapper.set(SgProgressReportDO::getStatus,3); List<SgReportUserDO> sgReportUserDOS = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId, id).eq(SgReportUserDO::getIsHis,0) .orderByAsc(SgReportUserDO::getApprovalOrder).list() // .stream().distinct() @@ -239,6 +241,26 @@ public void updateReport(SgProgressReportDO sgProgressReportDO) { sgProgressReportMapper.updateById(sgProgressReportDO); } @Override public List<SgProgressReportVO> queryList(ProjectSearchDTO searchDTO) { Long userId = AuthUtil.getUserId(); searchDTO.setUserId(userId); List<SgProgressReportVO> list = sgProgressReportMapper.queryList(searchDTO); return list; } @Override public Map<String, Long> countList(ProjectSearchDTO searchDTO) { Long userId = AuthUtil.getUserId(); searchDTO.setUserId(userId); Long pending = sgProgressReportMapper.countList(searchDTO); Long over = sgProgressReportMapper.countList(searchDTO); Map<String, Long> map = new HashMap<>(); map.put("pending",pending); map.put("over",over); return map; } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java
@@ -6,6 +6,7 @@ import cn.gistack.sm.sg.DO.SgProjectInfoDO; import cn.gistack.sm.sg.DTO.ProjectSearchDTO; import cn.gistack.sm.sg.VO.SgProjectInfoVO; import cn.gistack.sm.sg.VO.SgTypeVO; import cn.gistack.sm.sg.mapper.SgProjectInfoMapper; import cn.gistack.sm.sg.service.SgProjectInfoService; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -50,16 +51,16 @@ continue; } SgProjectInfoDO sgProjectInfoDO = SgProjectInfoDO.builder().id(porId).projectName(value.get(0).getProjectName()).build(); List<SgGxDO> sgGxDOS = new ArrayList<>(); //工序分组 Map<Long, List<SgProjectInfoVO>> GxMap = value.stream().filter(s->s.getGxId()!=null).collect(Collectors.groupingBy(SgProjectInfoVO::getGxId)); for (Map.Entry<Long, List<SgProjectInfoVO>> gx : GxMap.entrySet()) { Long gxId = gx.getKey(); List<SgProjectInfoVO> gxList = gx.getValue(); List<SgTypeVO> sgGxDOS = new ArrayList<>(); //类型分组 Map<String, List<SgProjectInfoVO>> GxMap = value.stream().filter(s->s.getDeviceType()!=null).collect(Collectors.groupingBy(SgProjectInfoVO::getDeviceType)); for (Map.Entry<String, List<SgProjectInfoVO>> ty : GxMap.entrySet()) { String type = ty.getKey(); List<SgProjectInfoVO> gxList = ty.getValue(); if (CollectionUtils.isEmpty(gxList)){ continue; } SgGxDO gxDO = SgGxDO.builder().id(gxId).gxName(gxList.get(0).getGxName()).build(); SgTypeVO typeVO = SgTypeVO.builder().typeName(gxList.get(0).getTypeName()).build(); List<SgDeviceDO> deviceDOS = new ArrayList<>(); //设备分组 Map<Long, List<SgProjectInfoVO>> dMap = gxList.stream().collect(Collectors.groupingBy(SgProjectInfoVO::getDId)); @@ -72,8 +73,8 @@ sgDeviceDO.setStepDOList(deList.stream().map(s->SgGxStepDO.builder().gxStepName(s.getGxStepName()).approvalStatus(s.getSTATUS()).build()).collect(Collectors.toList())); deviceDOS.add(sgDeviceDO); } gxDO.setDeviceDOS(deviceDOS); sgGxDOS.add(gxDO); typeVO.setDeviceDOS(deviceDOS); sgGxDOS.add(typeVO); } sgProjectInfoDO.setSgGxDOS(sgGxDOS); result.add(sgProjectInfoDO);