项目进度上报逻辑优化和待办添加区域条件筛选v0.8
| | |
| | | |
| | | @TableField(exist = false) |
| | | private List<SgTypeVO> sgGxDOS; |
| | | |
| | | @TableField(exist = false) |
| | | private List<PreAcceVO> preAcce; |
| | | |
| | | |
| | |
| | | @Builder |
| | | public class ProjectSearchDTO { |
| | | private String projectName; |
| | | private String adCode; |
| | | private String deviceName; |
| | | private String skName; |
| | | private String gxType; |
| | |
| | | </select> |
| | | <select id="queryStepByProject" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO"> |
| | | SELECT |
| | | b.id, |
| | | b.project_name, |
| | | b.gxId, |
| | | b.gx_name, |
| | | b.device_name, |
| | | b.device_type, |
| | | b.typeName, |
| | | b.dId, |
| | | b.gx_step_name, |
| | | b.gx_step_num, |
| | | b.stepId, |
| | | b.reportStatus, |
| | | b.deviceStatus, |
| | | b.projectStatus, |
| | | b.reportId, |
| | | b.lon_lat |
| | | FROM |
| | | ( |
| | | SELECT |
| | | pro.id, |
| | | pro.project_name, |
| | | gx.id as gxId, |
| | | gx.id AS gxId, |
| | | gx.gx_name, |
| | | d.device_name, |
| | | d.device_type, |
| | | dict."DICT_VALUE" as typeName, |
| | | d.id as dId, |
| | | dict."DICT_VALUE" AS typeName, |
| | | d.id AS dId, |
| | | step.gx_step_name, |
| | | step.gx_step_num, |
| | | step.id as stepId, |
| | | re.STATUS as reportStatus, |
| | | d.STATUS as deviceStatus, |
| | | pro.STATUS as projectStatus, |
| | | re.id as reportId, |
| | | pro.lon_lat |
| | | step.id AS stepId, |
| | | re.STATUS AS reportStatus, |
| | | d.STATUS AS deviceStatus, |
| | | pro.STATUS AS projectStatus, |
| | | re.id AS reportId, |
| | | pro.lon_lat, |
| | | dria."county_cd" AS countyCode, |
| | | att."guid" AS cityCode, |
| | | ad."ad_code" AS provinceCode |
| | | FROM |
| | | 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."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 |
| | | LEFT JOIN ywxt.sg_progress_report re ON re.gx_step_id = step.id |
| | | AND re.gx_device_id = d.id |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = pro.sk_id |
| | | LEFT JOIN YWXT."att_ad_base" att ON att."ad_code" = dria."city_cd" |
| | | LEFT JOIN YWXT."att_ad_base" ad ON att."p_ad_code" = ad."ad_code" |
| | | LEFT JOIN YWXT."att_ad_base" aad ON aad."ad_code" = ad."p_ad_code" |
| | | ) b |
| | | LEFT JOIN YWXT."att_ad_base" a ON ( |
| | | ( b.countyCode = a."guid" ) |
| | | OR ( b.cityCode = a."guid" ) |
| | | OR ( b.provinceCode = a."guid" )) |
| | | where a."p_ad_code" = #{dto.adCode} |
| | | <if test="dto.projectId != null and dto.projectId != ''"> |
| | | and pro.id = #{dto.projectId} |
| | | </if> |
| | |
| | | </if> |
| | | </select> |
| | | <select id="progressList" resultType="cn.gistack.sm.sg.VO.SgProjectInfoVO"> |
| | | SELECT |
| | | pro.id, |
| | | pro.project_name, |
| | | pro.lon_lat, |
| | | pro.status |
| | | select b.id, |
| | | b.project_name, |
| | | b.lon_lat, |
| | | b.status from |
| | | (SELECT |
| | | pro.id, |
| | | pro.project_name, |
| | | pro.lon_lat, |
| | | pro.status, |
| | | dria."county_cd" AS countyCode, |
| | | att."guid" AS cityCode, |
| | | ad."ad_code" AS provinceCode |
| | | FROM |
| | | ywxt.sg_project_info pro where 1=1 |
| | | <if test="dto.status != null"> |
| | | and pro.status = #{dto.status} |
| | | ywxt.sg_project_info pro |
| | | LEFT JOIN SJZT_DW."dim_res_info_a" dria ON dria."res_cd" = pro.sk_id |
| | | LEFT JOIN YWXT."att_ad_base" att ON att."ad_code" = dria."city_cd" |
| | | LEFT JOIN YWXT."att_ad_base" ad ON att."p_ad_code" = ad."ad_code" |
| | | LEFT JOIN YWXT."att_ad_base" aad ON aad."ad_code" = ad."p_ad_code")b |
| | | LEFT JOIN YWXT."att_ad_base" a ON ( |
| | | ( b.countyCode = a."guid" ) |
| | | OR ( b.cityCode = a."guid" ) |
| | | OR ( b.provinceCode = a."guid" )) |
| | | WHERE |
| | | a."p_ad_code" = #{dto.adCode} |
| | | <if test="dto.status != null"> |
| | | and b.status = #{dto.status} |
| | | </if> |
| | | <if test="dto.projectName != null and dto.projectName != ''"> |
| | | and pro.project_name like CONCAT(CONCAT('%',#{dto.projectName}),'%') |
| | | and b.project_name like CONCAT(CONCAT('%',#{dto.projectName}),'%') |
| | | </if> |
| | | </select> |
| | | <select id="getSgstatiss" resultType="cn.gistack.sm.sg.VO.SgStatisticsVO"> |
| | |
| | | import cn.gistack.sm.sg.DTO.ApprovalDTO; |
| | | import cn.gistack.sm.sg.DTO.ProjectSearchDTO; |
| | | import cn.gistack.sm.sg.VO.SgProgressReportVO; |
| | | import cn.gistack.sm.sg.VO.SgProjectInfoVO; |
| | | import cn.gistack.sm.sg.VO.SgReportVO; |
| | | import cn.gistack.sm.sg.VO.SgStepReportVO; |
| | | import cn.gistack.sm.sg.mapper.*; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.lang.Long; |
| | | import java.util.*; |
| | | import java.util.concurrent.ExecutorService; |
| | | import java.util.concurrent.Executors; |
| | |
| | | QueryWrapper<SgProgressReportDO> wrappers = new QueryWrapper<>(); |
| | | wrappers.eq("profram_id", sgProgressReportDO.getProframId()).ne("status", 4).eq("gx_step_name", "施工准备"); |
| | | List<SgProgressReportDO> sgProgressReportDOS1 = sgProgressReportMapper.selectList(wrappers); |
| | | |
| | | if(sgProgressReportDO.getGxDeviceId()==998){ |
| | | ProjectSearchDTO search = new ProjectSearchDTO(); |
| | | search.setProjectId(sgProgressReportDO.getProframId().toString()); |
| | | List<SgProjectInfoVO> sgProjectInfoVOS = sgProjectInfoMapper.queryStepByProject(search); |
| | | if(sgProjectInfoVOS != null){ |
| | | sgProjectInfoVOS.forEach(s ->{ |
| | | if(!s.getProjectStatus().equals(2)){ |
| | | throw new ServiceException("请完成所有设备工序审批!"); |
| | | } |
| | | }); |
| | | }else{ |
| | | throw new ServiceException("无设备审批数据!"); |
| | | } |
| | | |
| | | } |
| | | |
| | | if (sgProgressReportDOS1!= null && sgProgressReportDOS1.size() > 0) { |
| | | for (SgProgressReportDO sgProgressReportDO1 : sgProgressReportDOS1) { |
| | |
| | | } |
| | | |
| | | //加个项目及设备的状态判断 方便统计计算 |
| | | if (sgDeviceDO != null && sgDeviceDO.getStatus() == 0) { |
| | | sgDeviceDO.setStatus(1); |
| | | sgDeviceMapper.updateById(sgDeviceDO); |
| | | if(gxStepId != 25 && gxStepId != 26 ) { |
| | | if (sgDeviceDO != null && sgDeviceDO.getStatus() == 0) { |
| | | sgDeviceDO.setStatus(1); |
| | | sgDeviceMapper.updateById(sgDeviceDO); |
| | | } |
| | | } |
| | | SgProjectInfoDO sgProjectInfoDO = sgProjectInfoMapper.selectById(sgProgressReportDO.getProframId()); |
| | | if (sgProjectInfoDO != null && sgProjectInfoDO.getStatus() == 0) { |
| | |
| | | SgDeviceDO sgDeviceDO = sgDeviceMapper.selectById(sgProgressReportVO.getGxDeviceId()); |
| | | SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(sgProgressReportVO.getGxStepId()); |
| | | sgProgressReportVO.setStepRemark(sgGxStepDO.getRemark()); |
| | | sgProgressReportVO.setDeviceName(sgDeviceDO.getDeviceName()); |
| | | if(sgProgressReportVO.getGxDeviceId() !=999 && sgProgressReportVO.getGxDeviceId() !=998){ |
| | | sgProgressReportVO.setDeviceName(sgDeviceDO.getDeviceName()); |
| | | }else { |
| | | sgProgressReportVO.setDeviceName("");} |
| | | List<SgReportUserDO> list = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId, id).orderByAsc(SgReportUserDO::getId).list(); |
| | | List<Long> ids = list.stream().map(s -> s.getUserId()).collect(Collectors.toList()); |
| | | List<Map<String,Object>> users = sgProgressReportMapper.getUserByIds(ids); |
| | |
| | | } |
| | | |
| | | List<PreAcceVO> palist = new ArrayList<>(); |
| | | palist.add(handleQuery(12, 25, list.get(0).getId())); |
| | | palist.add(handleQuery(13, 26,list.get(0).getId())); |
| | | palist.add(handleQuery( 25, list.get(0).getId())); |
| | | palist.add(handleQuery(26,list.get(0).getId())); |
| | | sgProjectInfoDO.setPreAcce(palist); |
| | | BigDecimal allDeviceSize = BigDecimal.valueOf(allDevice.size()); |
| | | if (!allDeviceSize.equals(BigDecimal.ZERO)){ |
| | |
| | | } |
| | | |
| | | // 处理查询和添加到列表的方法 |
| | | private PreAcceVO handleQuery(int gxStepId, int stepIdForNull, Long programId) { |
| | | private PreAcceVO handleQuery( int stepIdForNull, Long programId) { |
| | | QueryWrapper<SgProgressReportDO> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("gx_step_id", gxStepId) |
| | | queryWrapper.eq("gx_step_id", stepIdForNull) |
| | | .eq("profram_id", programId); |
| | | SgProgressReportDO sgProgressReportDO = sgProgressReportMapper.selectOne(queryWrapper); |
| | | |