shenyijian
2024-06-17 e1cdb7930d2eb4baccff2809a420a1f0f544c934
湖北水库:施工:项目整体进度
15 files modified
1 files added
206 ■■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgDeviceDO.java 14 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgGxDO.java 15 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgGxStepDO.java 10 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProgressReportDO.java 12 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProjectInfoDO.java 12 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DTO/ProjectSearchDTO.java 1 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java 22 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProgressReportController.java 8 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProjectInfoController.java 12 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml 4 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java 3 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml 25 ●●●●● 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/SgProjectInfoService.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java 56 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgDeviceDO.java
@@ -5,15 +5,14 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.*;
import org.springblade.core.mp.base.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
 * <p>
@@ -25,6 +24,9 @@
 */
@Data
@TableName("SG_DEVICE")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SgDeviceDO implements Serializable {
    private static final long serialVersionUID = 1L;
@@ -82,7 +84,11 @@
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 工序步骤
     */
    @TableField(exist = false)
    private List<SgGxStepDO> stepDOList;
    /**
     * 修改时间
     */
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgGxDO.java
@@ -1,11 +1,10 @@
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.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.*;
import lombok.experimental.Accessors;
import org.springblade.core.tool.utils.DateUtil;
@@ -25,6 +24,9 @@
@TableName(value ="SG_GX" ,autoResultMap = true)
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SgGxDO   {
    @TableId(type = IdType.AUTO)
    private Long id;
@@ -51,6 +53,13 @@
    private String gxType;
    /**
     * 关联设备
     */
    @TableField(exist = false)
    private List<SgDeviceDO> deviceDOS;
    public void setCreateUpdateTime(){
        Date now = DateUtil.now();
        if (this.getId()== null) {
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgGxStepDO.java
@@ -1,10 +1,10 @@
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.Getter;
import lombok.Setter;
import lombok.*;
import org.springblade.core.mp.base.BaseEntity;
import java.io.Serializable;
@@ -21,6 +21,9 @@
@Getter
@Setter
@TableName("SG_GX_STEP")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SgGxStepDO implements Serializable {
    private static final long serialVersionUID = 1L;
@@ -47,4 +50,7 @@
     * 介绍
     */
    private String remark;
    @TableField(exist = false)
    private Integer approvalStatus;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProgressReportDO.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.Getter;
@@ -9,6 +10,7 @@
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
 * <p>
@@ -77,6 +79,10 @@
     * 施工设备ID
     */
    private Long gxDeviceId;
    @TableField(exist = false)
    private String deviceName;
    @TableField(exist = false)
    private String deviceType;
    /**
     * 上报人
@@ -102,4 +108,10 @@
     * 审核人
     */
    private String auditPerson;
    /**
     * 关联设备
     */
    @TableField(exist = false)
    private List<SgGxDO> sgGxDOS;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DO/SgProjectInfoDO.java
@@ -1,10 +1,11 @@
package cn.gistack.sm.sg.DO;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.*;
import java.io.Serializable;
import java.util.List;
/**
 * <p>
@@ -17,6 +18,9 @@
@Getter
@Setter
@TableName("SG_PROJECT_INFO")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SgProjectInfoDO implements Serializable {
    private static final long serialVersionUID = 1L;
@@ -163,5 +167,9 @@
     */
    private String skName;
    @TableField(exist = false)
    private List<SgGxDO> sgGxDOS;
    private Integer status;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/DTO/ProjectSearchDTO.java
@@ -14,4 +14,5 @@
    private String createUser;
    private String gxInfoId;
    private String gxStepNum;
    private String projectId;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sg/VO/SgProjectInfoVO.java
New file
@@ -0,0 +1,22 @@
package cn.gistack.sm.sg.VO;
import cn.gistack.sm.sg.DO.SgDeviceDO;
import cn.gistack.sm.sg.DO.SgGxDO;
import cn.gistack.sm.sg.DO.SgGxStepDO;
import cn.gistack.sm.sg.DO.SgProjectInfoDO;
import lombok.Data;
import java.util.List;
@Data
public class SgProjectInfoVO extends SgProjectInfoDO {
    private Long id;
    private String projectName;
    private Long gxId;
    private String gxName;
    private String deviceName;
    private Long dId;
    private String gxStepName;
    private Integer STATUS;
    private String gxStepNum;
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProgressReportController.java
@@ -45,6 +45,14 @@
        return R.success("添加成功");
    }
    /**
     * 修改上报
     */
    @PostMapping(value = "/update")
    public R update(@RequestBody SgProgressReportDO sgProgressReportDO) {
        sgProgressReportService.updateReport(sgProgressReportDO);
        return R.success("添加成功");
    }
    /**
     * 新增上报
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/controller/SgProjectInfoController.java
@@ -2,6 +2,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.service.SgProjectInfoService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.boot.ctrl.BladeController;
@@ -12,6 +13,8 @@
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
 * <p>
@@ -34,4 +37,13 @@
        IPage<SgProjectInfoDO> page = sgProjectInfoService.queryPageList(Condition.getPage(query), searchDTO);
        return R.data(page);
    }
    /**
     * 查询项目进度情况
     */
    @GetMapping(value = "/project_step")
    public R queryStepByProject(ProjectSearchDTO searchDTO) {
        List<SgProjectInfoDO> list= sgProjectInfoService.queryStepByProject(searchDTO);
        return R.data(list);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProgressReportMapper.xml
@@ -3,7 +3,9 @@
<mapper namespace="cn.gistack.sm.sg.mapper.SgProgressReportMapper">
    <select id="queryPageList" resultType="cn.gistack.sm.sg.VO.SgProgressReportVO">
        select * from  SG_PROGRESS_REPORT report where 1=1
        select report.* ,re.device_name,re.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 != ''">
            and report.PROGRAM_NAME = #{dto.projectName}
        </if>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.java
@@ -3,6 +3,7 @@
import cn.gistack.sm.sg.DO.SgGxStepDO;
import cn.gistack.sm.sg.DO.SgProjectInfoDO;
import cn.gistack.sm.sg.DTO.ProjectSearchDTO;
import cn.gistack.sm.sg.VO.SgProjectInfoVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
@@ -20,4 +21,6 @@
public interface SgProjectInfoMapper extends BaseMapper<SgProjectInfoDO> {
    List<SgProjectInfoDO> queryPageList(IPage<SgProjectInfoDO> page, @Param("dto") ProjectSearchDTO dto);
    List<SgProjectInfoVO> queryStepByProject(@Param("dto") ProjectSearchDTO searchDTO);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/mapper/SgProjectInfoMapper.xml
@@ -11,4 +11,29 @@
            and info.sk_name = #{dto.skName}
        </if>
    </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
        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
        where 1=1
        <if test="dto.projectId != null and dto.projectId != ''">
            and pro.id = #{dto.projectId}
        </if>
        <if test="dto.projectName != null and dto.projectName != ''">
            and pro.project_name like CONCAT(CONCAT('%', #{dto.projectName}), '%')
        </if>
    </select>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgProgressReportService.java
@@ -24,4 +24,6 @@
    SgProgressReportVO detail(String id);
    void approval(ApprovalDTO approvalDTO);
    void updateReport(SgProgressReportDO sgProgressReportDO);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/SgProjectInfoService.java
@@ -2,8 +2,11 @@
import cn.gistack.sm.sg.DO.SgProjectInfoDO;
import cn.gistack.sm.sg.DTO.ProjectSearchDTO;
import cn.gistack.sm.sg.VO.SgProjectInfoVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * <p>
@@ -16,4 +19,6 @@
public interface SgProjectInfoService extends IService<SgProjectInfoDO> {
    IPage<SgProjectInfoDO> queryPageList(IPage<SgProjectInfoDO> page, ProjectSearchDTO searchDTO);
    List<SgProjectInfoDO> queryStepByProject(ProjectSearchDTO searchDTO);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProgressReportServiceImpl.java
@@ -234,6 +234,11 @@
    }
    @Override
    public void updateReport(SgProgressReportDO sgProgressReportDO) {
        sgProgressReportMapper.updateById(sgProgressReportDO);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgProjectInfoServiceImpl.java
@@ -1,14 +1,23 @@
package cn.gistack.sm.sg.service.impl;
import cn.gistack.sm.sg.DO.SgDeviceDO;
import cn.gistack.sm.sg.DO.SgGxDO;
import cn.gistack.sm.sg.DO.SgGxStepDO;
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.mapper.SgProjectInfoMapper;
import cn.gistack.sm.sg.service.SgProjectInfoService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
@@ -20,10 +29,55 @@
 */
@Service
public class SgProjectInfoServiceImpl extends ServiceImpl<SgProjectInfoMapper, SgProjectInfoDO> implements SgProjectInfoService {
    @Autowired
    private SgProjectInfoMapper sgProjectInfoMapper;
    @Override
    public IPage<SgProjectInfoDO> queryPageList(IPage<SgProjectInfoDO> page, ProjectSearchDTO searchDTO) {
        List<SgProjectInfoDO> sgProjectInfoDOS = baseMapper.queryPageList(page,searchDTO);
        return page.setRecords(sgProjectInfoDOS);
    }
    @Override
    public List<SgProjectInfoDO> queryStepByProject(ProjectSearchDTO searchDTO) {
        List<SgProjectInfoVO> list = sgProjectInfoMapper.queryStepByProject( searchDTO);
        //项目分组
        Map<Long, List<SgProjectInfoVO>> projectMap = list.stream().collect(Collectors.groupingBy(SgProjectInfoVO::getId));
        List<SgProjectInfoDO> result = new ArrayList<>();
        for (Map.Entry<Long, List<SgProjectInfoVO>> entry : projectMap.entrySet()) {
            Long porId = entry.getKey();
            List<SgProjectInfoVO> value = entry.getValue();
            if (CollectionUtils.isEmpty(value)){
                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();
                if (CollectionUtils.isEmpty(gxList)){
                    continue;
                }
                SgGxDO gxDO = SgGxDO.builder().id(gxId).gxName(gxList.get(0).getGxName()).build();
                List<SgDeviceDO> deviceDOS = new ArrayList<>();
                //设备分组
                Map<Long, List<SgProjectInfoVO>> dMap = gxList.stream().collect(Collectors.groupingBy(SgProjectInfoVO::getDId));
                for (Map.Entry<Long, List<SgProjectInfoVO>> device : dMap.entrySet()) {
                    Long dId = device.getKey();
                    List<SgProjectInfoVO> deList = device.getValue();
                    SgDeviceDO sgDeviceDO = new SgDeviceDO();
                    sgDeviceDO.setId(dId);
                    sgDeviceDO.setDeviceName(deList.get(0).getDeviceName());
                    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);
            }
            sgProjectInfoDO.setSgGxDOS(sgGxDOS);
            result.add(sgProjectInfoDO);
        }
        return result;
    }
}