shenyijian
2024-06-18 18d0f722b1c569c881a897c8f2f50f50d624fe11
湖北水库:施工:根据状态统计审批数量
10 files modified
139 ■■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProgressReportDO.java 4 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgReportUserDO.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/SgStepReportVO.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProgressReportController.java 11 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml 64 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgProgressReportService.java 2 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java 38 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java 5 ●●●● patch | view | raw | blame | history
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());