shenyijian
2024-06-17 cc873cace93a40068d6bb6130b601b6c3e845b42
湖北水库:施工:APP待办列表、数量统计
10 files modified
1 files added
170 ■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProjectInfoDO.java 3 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DTO/ProjectSearchDTO.java 2 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java 2 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgTypeVO.java 18 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProgressReportController.java 22 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java 4 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml 26 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml 31 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgProgressReportService.java 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java 36 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java 19 ●●●● patch | view | raw | blame | history
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);