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; } }