项目、机组修改

This commit is contained in:
cuizhibin 2025-04-30 17:29:42 +08:00
parent b9900214cd
commit 061ed776f1
17 changed files with 396 additions and 170 deletions

View File

@ -0,0 +1,34 @@
package com.dite.znpt.domain.dto;
import com.dite.znpt.annotations.MatchType;
import com.dite.znpt.annotations.QueryCondition;
import com.dite.znpt.domain.entity.DefectEntity;
import com.dite.znpt.domain.entity.OutWorkDefectEntity;
import com.dite.znpt.domain.entity.job.DefectDTO;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
public class OutWorkDefectDTO extends OutWorkDefectEntity {
@ApiModelProperty(value = "部件编号", example = "GG1", notes = "部件编号")
@QueryCondition(func = MatchType.like)
private String code;
@ApiModelProperty("图片地址")
@QueryCondition(func = MatchType.like)
@JsonIgnore
private String urls;
@ApiModelProperty("是否有缺陷1有0无")
@QueryCondition(func = MatchType.equal)
private Integer status;
@ApiModelProperty("缺陷列表")
private List<DefectDTO> defectList;
}

View File

@ -78,12 +78,12 @@ public class DefectEntity extends AuditableEntity implements Serializable {
@ExcelProperty("弦向")
@ApiModelProperty("弦向")
@TableField("chordwise")
private Integer chordwise;
private String chordwise;
@ExcelProperty("轴向")
@ApiModelProperty("轴向")
@TableField("axial")
private Integer axial;
private String axial;
@ExcelProperty("标注信息")
@ApiModelProperty("标注信息")
@ -100,5 +100,15 @@ public class DefectEntity extends AuditableEntity implements Serializable {
@TableField("repair_idea")
private String repairIdea;
@ExcelProperty("距离叶根/叶尖")
@ApiModelProperty("距离叶根/叶尖")
@TableField("with_leaf")
private String withLeaf;
@ExcelProperty("距离叶根/叶尖xx米")
@ApiModelProperty("距离叶根/叶尖xx米")
@TableField("with_leaf_distance")
private String withLeafDistance;
}

View File

@ -0,0 +1,46 @@
package com.dite.znpt.domain.entity;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.*;
import com.dite.znpt.domain.AuditableEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.alibaba.excel.annotation.ExcelProperty;
/**
* @author huise23
* @date 2025/04/30 15:54
* @Description: 外部工作-缺陷关联表实体类
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("gaea_out_work_defect")
@ApiModel(value="OutWorkDefectEntity对象", description="外部工作-缺陷关联表")
public class OutWorkDefectEntity extends AuditableEntity implements Serializable {
private static final long serialVersionUID = 869306338404475124L;
@ExcelProperty("id")
@ApiModelProperty("id")
@TableId(value = "id", type = IdType.ASSIGN_ID)
private String id;
@ExcelProperty("外部工作id")
@ApiModelProperty("外部工作id")
@TableField("out_work_id")
private String outWorkId;
@ExcelProperty("缺陷id")
@ApiModelProperty("缺陷id")
@TableField("defect_ids")
private String defectIds;
@ExcelProperty("岗位类型")
@ApiModelProperty("岗位类型")
@TableField("job_code")
private String jobCode;
}

View File

@ -139,9 +139,5 @@ public class ProjectEntity extends AuditableEntity implements Serializable {
@ApiModelProperty("项目工作岗位 可能有多项json对象保存")
@TableField("job")
private String job;
@ApiModelProperty(value = "项目安全风险点", example = "1", notes = "项目安全风险点 可能有多项,逗号分隔")
@TableField("safety_risk_point")
private String safetyRiskPoint;
}

View File

@ -0,0 +1,58 @@
package com.dite.znpt.domain.entity.job;
import com.dite.znpt.annotations.MatchType;
import com.dite.znpt.annotations.QueryCondition;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@Deprecated
public class DefectDTO {
@ApiModelProperty(value = "缺陷详情", example = "缺陷详情", notes = "缺陷详情")
@QueryCondition(func = MatchType.like)
private String content;
@ApiModelProperty(value = "缺陷图片", example = "123.png", notes = "缺陷图片")
@QueryCondition(func = MatchType.like)
@JsonIgnore
private String flawUrl;
@ApiModelProperty(value = "封面图片", example = "123.png", notes = "封面图片")
@QueryCondition(func = MatchType.like)
private String coverUrl;
@ApiModelProperty(value = "缺陷类型编码", example = "A123", notes = "缺陷类型编码")
@QueryCondition(func = MatchType.like)
private String defectTypeCode;
@ApiModelProperty(value = "缺陷位置1", example = "GG1", notes = "缺陷位置1")
@QueryCondition(func = MatchType.like)
private String defectLocation1;
@ApiModelProperty(value = "缺陷位置1尺寸", example = "1.5", notes = "缺陷位置1尺寸")
@QueryCondition(func = MatchType.like)
private String defectLocation1Size;
@ApiModelProperty(value = "缺陷位置2", example = "GG1", notes = "缺陷位置2")
@QueryCondition(func = MatchType.like)
private String defectLocation2;
@ApiModelProperty(value = "缺陷尺寸", example = "10", notes = "缺陷尺寸")
@QueryCondition(func = MatchType.like)
private String defectSize;
@ApiModelProperty(value = "缺陷尺寸2", example = "10", notes = "缺陷尺寸2")
@QueryCondition(func = MatchType.like)
private String defectSize2;
@ApiModelProperty(value = "缺陷等级编码", example = "aa", notes = "缺陷等级编码")
@QueryCondition(func = MatchType.equal)
private String criticalityLevelCode;
@ApiModelProperty(value = "缺陷图片,多个逗号隔开", example = "[https://123.png]", notes = "缺陷图片,多个逗号隔开")
private List<String> flawUrlList;
}

View File

@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.dite.znpt.annotations.MatchType;
import com.dite.znpt.annotations.QueryCondition;
import com.dite.znpt.domain.AuditableEntity;
import com.dite.znpt.domain.entity.PartEntity;
import com.dite.znpt.domain.dto.OutWorkDefectDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -110,7 +110,7 @@ public class JobOutWork extends AuditableEntity implements Serializable {
@ApiModelProperty(value = "飞手部件列表", example = "[]", notes = "部件列表")
@TableField(exist = false)
private List<PartEntity> droneFlyerPartsList;
private List<OutWorkDefectDTO> droneFlyerPartsList;
@ApiModelProperty(value = "飞助工作描述", example = "工作描述工作描述", notes = "飞助工作描述")
private String flyAidJobDesc;
@ -144,7 +144,7 @@ public class JobOutWork extends AuditableEntity implements Serializable {
@ApiModelProperty(value = "飞助部件列表", example = "[]", notes = "部件列表")
@TableField(exist = false)
private List<PartEntity> flyAidPartsList;
private List<OutWorkDefectDTO> flyAidPartsList;
@ApiModelProperty(value = "登高工作描述", example = "工作描述工作描述", notes = "登高工作描述")
private String ascendingJobDesc;
@ -182,7 +182,7 @@ public class JobOutWork extends AuditableEntity implements Serializable {
@ApiModelProperty(value = "登高部件列表", example = "[]", notes = "部件列表")
@TableField(exist = false)
private List<PartEntity> ascendingPartsList;
private List<OutWorkDefectDTO> ascendingPartsList;
@ApiModelProperty(value = "状态", example = "0草稿 1已提交 2组长提交 3项目经理审批通过", notes = "状态")
@QueryCondition(func = MatchType.equal)

View File

@ -0,0 +1,13 @@
package com.dite.znpt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dite.znpt.domain.entity.OutWorkDefectEntity;
/**
* @author huise23
* @date 2025/04/30 15:54
* @Description: 外部工作-缺陷关联表数据库访问层
*/
public interface OutWorkDefectMapper extends BaseMapper<OutWorkDefectEntity> {
}

View File

@ -0,0 +1,13 @@
package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.OutWorkDefectEntity;
/**
* @author huise23
* @date 2025/04/30 15:54
* @Description: 外部工作-缺陷关联表服务接口
*/
public interface OutWorkDefectService extends IService<OutWorkDefectEntity> {
}

View File

@ -0,0 +1,18 @@
package com.dite.znpt.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.domain.entity.OutWorkDefectEntity;
import com.dite.znpt.mapper.OutWorkDefectMapper;
import com.dite.znpt.service.OutWorkDefectService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* @author huise23
* @date 2025/04/30 15:54
* @Description: 外部工作-缺陷关联表服务实现类
*/
@Service
@RequiredArgsConstructor
public class OutWorkDefectServiceImpl extends ServiceImpl<OutWorkDefectMapper, OutWorkDefectEntity> implements OutWorkDefectService {
}

View File

@ -2,7 +2,6 @@ package com.dite.znpt.service.job;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.job.JobOutWork;
import com.dite.znpt.domain.entity.job.JobOutWork;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.domain.vo.job.req.JobOutWorkReq;
@ -38,5 +37,5 @@ public interface JobOutWorkService extends IService<JobOutWork> {
**/
public void reject(JobInfoReq request);
List<JobOutWork> listByJobId(JobOutWorkReq dto);
JobOutWork getByJobId(JobOutWorkReq dto);
}

View File

@ -45,7 +45,7 @@ public class JobAntiThunderWorkServiceImpl extends ServiceImpl<JobAntiThunderWor
entity.preSave();
saveOrUpdate(entity);
JobInfo jobInfo = jobService.getById(entity.getJobId());
turbineService.updateStatusNew(jobInfo.getCrewId());
turbineService.updateStatus(jobInfo.getCrewId());
// 施工人员提交后更新该工作类型状态及提交时间
if (entity.getStatus().equals(Enums.EWorkStatus.SUBMITTED.getValue())) {
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
@ -127,7 +127,7 @@ public class JobAntiThunderWorkServiceImpl extends ServiceImpl<JobAntiThunderWor
jobInfo.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
}
updateBatchById(workList);
turbineService.updateStatusNew(jobInfo.getCrewId());
turbineService.updateStatus(jobInfo.getCrewId());
jobService.updateById(jobInfo);
}
@ -159,7 +159,7 @@ public class JobAntiThunderWorkServiceImpl extends ServiceImpl<JobAntiThunderWor
jobInfo.setStatus(Enums.EWorkStatus.DRAFT.getValue());
}
updateBatchById(workList);
turbineService.updateStatusNew(jobInfo.getCrewId());
turbineService.updateStatus(jobInfo.getCrewId());
jobService.updateById(jobInfo);
}

View File

@ -64,7 +64,7 @@ public class JobInWorkServiceImpl extends ServiceImpl<JobInWorkMapper, JobInWork
jobInWorkPartsService.lambdaUpdate().eq(JobInWorkParts::getJobId, entity.getJobId()).remove();
}
JobInfo jobInfo = jobService.getById(entity.getJobId());
turbineService.updateStatusNew(jobInfo.getCrewId());
turbineService.updateStatus(jobInfo.getCrewId());
// 施工人员提交后更新该工作类型状态及提交时间
if (entity.getStatus().equals(Enums.EWorkStatus.SUBMITTED.getValue())) {
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
@ -150,7 +150,7 @@ public class JobInWorkServiceImpl extends ServiceImpl<JobInWorkMapper, JobInWork
jobInfo.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
}
updateBatchById(workList);
turbineService.updateStatusNew(jobInfo.getCrewId());
turbineService.updateStatus(jobInfo.getCrewId());
jobService.updateById(jobInfo);
}
@ -182,7 +182,7 @@ public class JobInWorkServiceImpl extends ServiceImpl<JobInWorkMapper, JobInWork
jobInfo.setStatus(Enums.EWorkStatus.DRAFT.getValue());
}
updateBatchById(workList);
turbineService.updateStatusNew(jobInfo.getCrewId());
turbineService.updateStatus(jobInfo.getCrewId());
jobService.updateById(jobInfo);
}

View File

@ -1,33 +1,35 @@
package com.dite.znpt.service.job.impl;
import java.time.LocalDateTime;
import java.util.ArrayList;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.context.UserContext;
import com.dite.znpt.domain.QueryWrapperBuilder;
import com.dite.znpt.domain.entity.job.JobInWork;
import com.dite.znpt.domain.entity.job.JobOutWork;
import com.dite.znpt.domain.dto.OutWorkDefectDTO;
import com.dite.znpt.domain.entity.DefectEntity;
import com.dite.znpt.domain.entity.OutWorkDefectEntity;
import com.dite.znpt.domain.entity.ProjectEntity;
import com.dite.znpt.domain.entity.job.JobInfo;
import com.dite.znpt.domain.entity.job.JobOutWork;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.domain.vo.job.req.JobOutWorkReq;
import com.dite.znpt.enums.Enums;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.JobInWorkMapper;
import com.dite.znpt.mapper.JobOutWorkMapper;
import com.dite.znpt.service.PartService;
import com.dite.znpt.service.TurbineService;
import com.dite.znpt.service.job.JobInWorkService;
import com.dite.znpt.service.*;
import com.dite.znpt.service.job.JobOutWorkService;
import com.dite.znpt.service.job.JobService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
@ -39,7 +41,18 @@ public class JobOutWorkServiceImpl extends ServiceImpl<JobOutWorkMapper, JobOut
private PartService partService;
@Autowired
private JobService jobService;
@Autowired
private ProjectService projectService;
@Autowired
private OutWorkDefectService outWorkDefectService;
@Autowired
private DefectService defectService;
/**
* 旧版系统是直接使用在部件表中使用工作id关联新版外部工作使用部件编码关联若无则写入第一个部件内部工作暂时沿用gaea_job_in_work_parts表使用叶片编码关联若无写入第一个叶片
* @param entity
* @return
*/
@Override
public JobOutWork saveInfo(JobOutWork entity) {
if (StrUtil.isNotBlank(entity.getId())) {
@ -49,73 +62,115 @@ public class JobOutWorkServiceImpl extends ServiceImpl<JobOutWorkMapper, JobOut
}
}
saveOrUpdate(entity);
List<OutWorkDefectEntity> linkList = outWorkDefectService.lambdaQuery().eq(OutWorkDefectEntity::getOutWorkId, entity.getId()).list();
if (CollUtil.isNotEmpty(linkList)) {
defectService.lambdaUpdate().in(DefectEntity::getDefectId, linkList.stream().map(OutWorkDefectEntity::getDefectIds)
.flatMap(s -> StrUtil.split(s, ",").stream()).collect(Collectors.toList())).remove();
}
// 飞手部件列表
if (CollUtil.isNotEmpty(entity.getDroneFlyerPartsList())) {
List<String> idList = entity.getDroneFlyerPartsList().stream().map(Parts::getId).filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList());
if (CollUtil.isEmpty(idList)) {
// partService.lambdaUpdate().
partService.delByReportIdAndJobCode(entity.getId(), Enums.EOutWorkType.DRONE_FLYER.getValue());
} else {
partService.delByReportIdAndIdNotInAndJobCode(entity.getId(), idList, Enums.EOutWorkType.DRONE_FLYER.getValue());
}
JobInfo job = jobService.findByIdAndS(entity.getJobId(), Enums.S.Yes.getValue());
entity.getDroneFlyerPartsList().forEach(item -> {
item.setProjectId(job.getProjectId());
item.setCrewId(job.getCrewId());
item.setReportId(entity.getId());
item.setJobCode(Enums.EOutWorkType.DRONE_FLYER.getValue());
});
partService.save(entity.getDroneFlyerPartsList());
} else {
partService.delByReportIdAndJobCode(entity.getId(), Enums.EOutWorkType.DRONE_FLYER.getValue());
saveDefect(entity.getDroneFlyerPartsList(), entity.getId(), Enums.EOutWorkType.DRONE_FLYER);
}
// 飞助部件列表
if (CollUtil.isNotEmpty(entity.getFlyAidPartsList())) {
List<String> idList = entity.getFlyAidPartsList().stream().map(Parts::getId).filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList());
if (CollUtil.isEmpty(idList)) {
partService.delByReportIdAndJobCode(entity.getId(), Enums.EOutWorkType.FLYAID.getValue());
} else {
partService.delByReportIdAndIdNotInAndJobCode(entity.getId(), idList, Enums.EOutWorkType.FLYAID.getValue());
}
Job job = jobService.findByIdAndS(entity.getJobId(), Enums.S.Yes.getValue());
entity.getFlyAidPartsList().forEach(item -> {
item.setProjectId(job.getProjectId());
item.setCrewId(job.getCrewId());
item.setReportId(entity.getId());
item.setJobCode(Enums.EOutWorkType.FLYAID.getValue());
});
partService.save(entity.getFlyAidPartsList());
} else {
partService.delByReportIdAndJobCode(entity.getId(), Enums.EOutWorkType.FLYAID.getValue());
saveDefect(entity.getFlyAidPartsList(), entity.getId(), Enums.EOutWorkType.FLYAID);
}
// 登高部件列表
if (CollUtil.isNotEmpty(entity.getAscendingPartsList())) {
List<String> idList = entity.getAscendingPartsList().stream().map(Parts::getId).filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList());
if (CollUtil.isEmpty(idList)) {
partService.delByReportIdAndJobCode(entity.getId(), Enums.EOutWorkType.ASCEND_HEIGHT.getValue());
} else {
partService.delByReportIdAndIdNotInAndJobCode(entity.getId(), idList, Enums.EOutWorkType.ASCEND_HEIGHT.getValue());
}
Job job = jobService.findByIdAndS(entity.getJobId(), Enums.S.Yes.getValue());
entity.getAscendingPartsList().forEach(item -> {
item.setProjectId(job.getProjectId());
item.setCrewId(job.getCrewId());
item.setReportId(entity.getId());
item.setJobCode(Enums.EOutWorkType.ASCEND_HEIGHT.getValue());
});
partService.save(entity.getAscendingPartsList());
} else {
partService.delByReportIdAndJobCode(entity.getId(), Enums.EOutWorkType.ASCEND_HEIGHT.getValue());
saveDefect(entity.getAscendingPartsList(), entity.getId(), Enums.EOutWorkType.ASCEND_HEIGHT);
}
Job job = jobService.findByIdAndS(entity.getJobId(), 1);
crewService.updateStatusNew(job.getCrewId());
JobInfo jobInfo = jobService.getById(entity.getJobId());
turbineService.updateStatus(jobInfo.getCrewId());
// 施工人员提交后更新该工作类型状态及提交时间
if (entity.getStatus().equals(Enums.EWorkStatus.SUBMITTED.getValue())) {
job.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
job.setSubmitTime(new Date());
jobService.save(job);
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
jobInfo.setSubmitTime(new Date());
jobService.updateById(jobInfo);
}
return entity;
}
/**
* 功能描述保存缺陷
*
* @param defectDTOList 实体
* @param outWorkId outWorkId
* @param workType 无人机飞行
* @author cuizhibin
* @date 2025/04/30 16:37
**/
private void saveDefect(List<OutWorkDefectDTO> defectDTOList, String outWorkId, Enums.EOutWorkType workType) {
List<DefectEntity> defectList = new ArrayList<>();
List<OutWorkDefectEntity> list = defectDTOList.stream().filter(defectDTO -> CollUtil.isNotEmpty(defectDTO.getDefectList())).map(item -> {
List<String> defectIds = new ArrayList<>();
item.getDefectList().forEach(defectDTO -> {
DefectEntity defect = new DefectEntity();
defect.setDefectId(IdUtil.simpleUUID());
defect.setDescription(defectDTO.getContent());
defect.setDefectType(defectDTO.getDefectTypeCode());
defect.setDefectLevel(defectDTO.getCriticalityLevelCode());
defect.setDefectPosition(defectDTO.getDefectLocation2());
defect.setAxial(defectDTO.getDefectSize());
defect.setChordwise(defectDTO.getDefectSize2());
// todo 若部件不存在还需要创建部件或查询第一个部件此处只有叶片的
defectList.add(defect);
defectIds.add(defect.getDefectId());
});
OutWorkDefectEntity workDefect = BeanUtil.copyProperties(item, OutWorkDefectEntity.class);
workDefect.setOutWorkId(outWorkId);
workDefect.setJobCode(workType.getValue());
workDefect.setDefectIds(StrUtil.join(",", defectIds));
return workDefect;
}).collect(Collectors.toList());
if (CollUtil.isNotEmpty(defectList)) {
outWorkDefectService.saveBatch(list);
defectService.saveBatch(defectList);
}
}
@Override
public JobOutWork getByJobId(JobOutWorkReq dto) {
List<JobOutWork> list = lambdaQuery().eq(JobOutWork::getJobId, dto.getJobId()).list();
if (CollUtil.isEmpty(list)) {
return new JobOutWork();
} else {
JobOutWork work = list.get(0);
getDefectList(work);
return work;
}
}
/**
* 功能描述查询缺陷
*
* @author cuizhibin
* @date 2025/04/30 16:37
**/
private void getDefectList(JobOutWork outWork) {
List<OutWorkDefectEntity> linkList = outWorkDefectService.lambdaQuery().eq(OutWorkDefectEntity::getOutWorkId, outWork.getId()).list();
Map<String, DefectEntity> defectMap = defectService.listByIds(linkList.stream().flatMap(outWorkDefect -> StrUtil.split(outWorkDefect.getDefectIds(), ",").stream())
.collect(Collectors.toList()))
.stream().collect(Collectors.toMap(DefectEntity::getDefectId, Function.identity()));
outWork.setAscendingPartsList(new ArrayList<>());
outWork.setFlyAidPartsList(new ArrayList<>());
outWork.setAscendingPartsList(new ArrayList<>());
for (OutWorkDefectEntity workDefect : linkList) {
OutWorkDefectDTO dto = BeanUtil.copyProperties(workDefect, OutWorkDefectDTO.class);
dto.setCode("");
dto.setUrls("");
dto.setStatus(0);
dto.setDefectList(new ArrayList<>());
if (workDefect.getJobCode().equals(Enums.EOutWorkType.DRONE_FLYER.getValue())) {
} else if (workDefect.getJobCode().equals(Enums.EOutWorkType.FLYAID.getValue())) {
} else if (workDefect.getJobCode().equals(Enums.EOutWorkType.ASCEND_HEIGHT.getValue())) {
}
}
return outWork;
}
/**
@ -133,38 +188,19 @@ public class JobOutWorkServiceImpl extends ServiceImpl<JobOutWorkMapper, JobOut
if (!Enums.ERoleCode.Builder.getName().equals(UserContext.getRoleCode())) {
statusList = ListUtil.of("2", "3");
}
List<String> jobIds = jobList.stream().map(Job::getId).collect(Collectors.toList());
Map<String, Job> jobId2Job = jobList.stream().collect(Collectors.toMap(Job::getId, i -> i));
List<JobOutWork> list = this.repository.findByJobIdInAndStatusIn(jobIds, statusList);
list.forEach(work -> {
Job job = jobId2Job.get(work.getJobId());
List<String> jobIds = jobList.stream().map(JobInfo::getId).collect(Collectors.toList());
Map<String, JobInfo> jobId2Job = jobList.stream().collect(Collectors.toMap(JobInfo::getId, i -> i));
List<JobOutWork> workList = lambdaQuery().in(JobOutWork::getStatus, statusList).in(JobOutWork::getJobId, jobList.stream().map(JobInfo::getId).collect(Collectors.toList())).list();
workList.forEach(work -> {
JobInfo job = jobId2Job.get(work.getJobId());
work.setConstructionPersonnel(job.getConstructionPersonnel());
work.setJobCode(job.getJobCode());
work.setDroneFlyerPartsList(partService.getByReportIdAndJobCode(IdVo.builder().id(work.getId()).build(), Enums.EOutWorkType.DRONE_FLYER.getValue()));
work.setFlyAidPartsList(partService.getByReportIdAndJobCode(IdVo.builder().id(work.getId()).build(), Enums.EOutWorkType.FLYAID.getValue()));
work.setAscendingPartsList(partService.getByReportIdAndJobCode(IdVo.builder().id(work.getId()).build(), Enums.EOutWorkType.ASCEND_HEIGHT.getValue()));
});
return list;
return workList;
}
return new ArrayList<>();
}
/**
* @param vo
* @return {@link Page}<{@link JobOutWork}>
*/
@Override
public Page<JobOutWork> list(JobOutWorkReq vo) {
Page<JobOutWork> page = super.page(vo);
page.getContent().forEach(work -> {
work.setDroneFlyerPartsList(partService.getByReportIdAndJobCode(IdVo.builder().id(work.getId()).build(), Enums.EOutWorkType.DRONE_FLYER.getValue()));
work.setFlyAidPartsList(partService.getByReportIdAndJobCode(IdVo.builder().id(work.getId()).build(), Enums.EOutWorkType.FLYAID.getValue()));
work.setAscendingPartsList(partService.getByReportIdAndJobCode(IdVo.builder().id(work.getId()).build(), Enums.EOutWorkType.ASCEND_HEIGHT.getValue()));
});
return page;
}
/**
* 功能描述组长提交/项目经理审批
*
@ -179,9 +215,9 @@ public class JobOutWorkServiceImpl extends ServiceImpl<JobOutWorkMapper, JobOut
throw new ServiceException("未找到数据");
}
// 这里只会有一条数据
Job job = jobList.get(0);
Project project = projectRepository.findById(job.getProjectId()).get();
List<JobOutWork> workList = this.repository.findByJobIdIn(jobList.stream().map(Job::getId).collect(Collectors.toList()));
JobInfo jobInfo = jobList.get(0);
ProjectEntity project = projectService.getById(jobInfo.getProjectId());
List<JobOutWork> workList = lambdaQuery().in(JobOutWork::getJobId, jobList.stream().map(JobInfo::getId).collect(Collectors.toList())).list();
// 如果是项目经理
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
if (StrUtil.isNotBlank(project.getAuditorId())) {
@ -197,20 +233,20 @@ public class JobOutWorkServiceImpl extends ServiceImpl<JobOutWorkMapper, JobOut
}
}
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue()));
job.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue());
jobInfo.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue());
} else if (Enums.ERoleCode.SafetyOfficer.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setSafetyOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal()));
job.setSafetyOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal());
jobInfo.setSafetyOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal());
} else if (Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal()));
job.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal());
} else if (project.getConstructionTeamLeaderId().equals(this.getCurrentUserId())) {
jobInfo.setQualityOfficerStatus(Enums.EAuthStatus.APPROVAL.getVal());
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue()));
job.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
jobInfo.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
}
this.repository.saveAll(workList);
crewService.updateStatusNew(job.getCrewId());
jobService.save(job);
saveOrUpdateBatch(workList);
turbineService.updateStatus(jobInfo.getCrewId());
jobService.save(jobInfo);
}
/**
@ -227,26 +263,22 @@ public class JobOutWorkServiceImpl extends ServiceImpl<JobOutWorkMapper, JobOut
throw new ServiceException("未找到数据");
}
// 这里只会有一条数据
Job job = jobList.get(0);
Project project = projectRepository.findById(job.getProjectId()).get();
List<JobOutWork> workList = this.repository.findByJobIdIn(jobList.stream().map(Job::getId).collect(Collectors.toList()));
JobInfo jobInfo = jobList.get(0);
ProjectEntity project = projectService.getById(jobInfo.getProjectId());
List<JobOutWork> workList = lambdaQuery().in(JobOutWork::getJobId, jobList.stream().map(JobInfo::getId).collect(Collectors.toList())).list();
// 如果是项目经理
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.SUBMITTED.getValue()));
job.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
} else if (Enums.ERoleCode.SafetyOfficer.getName().equals(UserContext.getRoleCode())
|| Enums.ERoleCode.QualityOfficer.getName().equals(UserContext.getRoleCode())
|| project.getConstructionTeamLeaderId().equals(this.getCurrentUserId())) {
|| project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.DRAFT.getValue()));
job.setStatus(Enums.EWorkStatus.DRAFT.getValue());
jobInfo.setStatus(Enums.EWorkStatus.DRAFT.getValue());
}
this.repository.saveAll(workList);
crewService.updateStatusNew(job.getCrewId());
jobService.save(job);
saveOrUpdateBatch(workList);
turbineService.updateStatus(jobInfo.getCrewId());
jobService.save(jobInfo);
}
@Override
public List<JobOutWork> listByJobId(JobOutWorkReq dto) {
return lambdaQuery().eq(JobOutWork::getJobId, dto.getJobId()).list();
}
}

View File

@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.context.UserContext;
import com.dite.znpt.domain.QueryWrapperBuilder;
import com.dite.znpt.domain.entity.ProjectEntity;
import com.dite.znpt.domain.entity.job.*;
import com.dite.znpt.domain.entity.job.JobSummaryWork;
import com.dite.znpt.domain.entity.job.JobSummaryWork;
@ -13,6 +14,8 @@ import com.dite.znpt.domain.vo.job.req.JobSummaryWorkReq;
import com.dite.znpt.enums.Enums;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.JobSummaryWorkMapper;
import com.dite.znpt.service.ProjectService;
import com.dite.znpt.service.TurbineService;
import com.dite.znpt.service.job.JobService;
import com.dite.znpt.service.job.JobSummaryWorkService;
import org.springframework.beans.factory.annotation.Autowired;
@ -26,9 +29,11 @@ import java.util.stream.Collectors;
@Transactional(rollbackFor = Exception.class)
public class JobSummaryWorkServiceImpl extends ServiceImpl<JobSummaryWorkMapper, JobSummaryWork> implements JobSummaryWorkService {
@Autowired
private CrewService crewService;
private TurbineService turbineService;
@Autowired
private JobService jobService;
@Autowired
private ProjectService projectService;
@Override
public JobSummaryWork saveInfo(JobSummaryWork entity) {
@ -39,15 +44,15 @@ public class JobSummaryWorkServiceImpl extends ServiceImpl<JobSummaryWorkMapper,
}
}
saveOrUpdate(entity);
Job job = jobRepository.findByIdAndS(entity.getJobId(), 1);
crewService.updateStatusNew(job.getCrewId());
JobInfo jobInfo = jobService.getById(entity.getJobId());
turbineService.updateStatus(jobInfo.getCrewId());
// 施工人员提交后更新该工作类型状态及提交时间
if (entity.getStatus().equals(Enums.EWorkStatus.SUBMITTED.getValue())) {
job.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
job.setSubmitTime(new Date());
jobRepository.save(job);
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
jobInfo.setSubmitTime(new Date());
jobService.updateById(jobInfo);
}
return work;
return entity;
}
/**
@ -65,15 +70,15 @@ public class JobSummaryWorkServiceImpl extends ServiceImpl<JobSummaryWorkMapper,
if (!Enums.ERoleCode.Builder.getName().equals(UserContext.getRoleCode())) {
statusList = ListUtil.of("2", "3");
}
List<String> jobIds = jobList.stream().map(Job::getId).collect(Collectors.toList());
Map<String, Job> jobId2Job = jobList.stream().collect(Collectors.toMap(Job::getId, i -> i));
List<JobSummaryWork> list = this.repository.findByJobIdInAndStatusIn(jobIds, statusList);
list.forEach(work -> {
Job job = jobId2Job.get(work.getJobId());
List<String> jobIds = jobList.stream().map(JobInfo::getId).collect(Collectors.toList());
Map<String, JobInfo> jobId2Job = jobList.stream().collect(Collectors.toMap(JobInfo::getId, i -> i));
List<JobSummaryWork> workList = lambdaQuery().in(JobSummaryWork::getStatus, statusList).in(JobSummaryWork::getJobId, jobIds).list();
workList.forEach(work -> {
JobInfo job = jobId2Job.get(work.getJobId());
work.setConstructionPersonnel(job.getConstructionPersonnel());
work.setJobCode(job.getJobCode());
});
return list;
return workList;
}
return new ArrayList<>();
}
@ -92,20 +97,20 @@ public class JobSummaryWorkServiceImpl extends ServiceImpl<JobSummaryWorkMapper,
throw new ServiceException("未找到数据");
}
// 这里只会有一条数据
Job job = jobList.get(0);
Project project = projectRepository.findById(job.getProjectId()).get();
List<JobSummaryWork> workList = this.repository.findByJobIdIn(jobList.stream().map(Job::getId).collect(Collectors.toList()));
JobInfo jobInfo = jobList.get(0);
ProjectEntity project = projectService.getById(jobInfo.getProjectId());
List<JobSummaryWork> workList = lambdaQuery().in(JobSummaryWork::getJobId, jobList.stream().map(JobInfo::getId).collect(Collectors.toList())).list();
// 如果是项目经理
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue()));
job.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue());
} else if (project.getConstructionTeamLeaderId().equals(this.getCurrentUserId())) {
jobInfo.setStatus(Enums.EWorkStatus.MANAGER_APPROVAL.getValue());
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue()));
job.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
jobInfo.setStatus(Enums.EWorkStatus.LEADER_SUBMITTED.getValue());
}
this.repository.saveAll(workList);
crewService.updateStatusNew(job.getCrewId());
jobRepository.save(job);
saveOrUpdateBatch(workList);
turbineService.updateStatus(jobInfo.getCrewId());
jobService.save(jobInfo);
}
/**
@ -122,20 +127,20 @@ public class JobSummaryWorkServiceImpl extends ServiceImpl<JobSummaryWorkMapper,
throw new ServiceException("未找到数据");
}
// 这里只会有一条数据
Job job = jobList.get(0);
Project project = projectRepository.findById(job.getProjectId()).get();
List<JobSummaryWork> workList = this.repository.findByJobIdIn(jobList.stream().map(Job::getId).collect(Collectors.toList()));
JobInfo jobInfo = jobList.get(0);
ProjectEntity project = projectService.getById(jobInfo.getProjectId());
List<JobSummaryWork> workList = lambdaQuery().in(JobSummaryWork::getJobId, jobList.stream().map(JobInfo::getId).collect(Collectors.toList())).list();
// 如果是项目经理
if (Enums.ERoleCode.ProjectManager.getName().equals(UserContext.getRoleCode())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.SUBMITTED.getValue()));
job.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
} else if (project.getConstructionTeamLeaderId().equals(this.getCurrentUserId())) {
jobInfo.setStatus(Enums.EWorkStatus.SUBMITTED.getValue());
} else if (project.getConstructionTeamLeaderId().equals(UserContext.getUserInfo().getPersonId())) {
workList.forEach(item -> item.setStatus(Enums.EWorkStatus.DRAFT.getValue()));
job.setStatus(Enums.EWorkStatus.DRAFT.getValue());
jobInfo.setStatus(Enums.EWorkStatus.DRAFT.getValue());
}
this.repository.saveAll(workList);
crewService.updateStatusNew(job.getCrewId());
jobRepository.save(job);
saveOrUpdateBatch(workList);
turbineService.updateStatus(jobInfo.getCrewId());
jobService.save(jobInfo);
}
@Override

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dite.znpt.mapper.OutWorkDefectMapper">
<sql id="Base_Column_List">
a.id, a.out_work_id, a.defect_id, a.out_work_type
</sql>
</mapper>

View File

@ -87,7 +87,7 @@ public class ZlmServiceImpl implements ZlmService, ApplicationRunner {
serverCache.putLoad(item);
}
@Scheduled(cron = "*/10 * * * * ?")
// @Scheduled(cron = "*/10 * * * * ?")
public void heartbeat1() {
log.debug("开始心跳检查...");
ServerItem item = serverCache.getLoad();

View File

@ -2,17 +2,14 @@ package com.dite.znpt.web.controller;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.TableData;
import com.dite.znpt.domain.entity.job.JobInWork;
import com.dite.znpt.domain.entity.job.JobOutWork;
import com.dite.znpt.domain.vo.job.req.JobInfoReq;
import com.dite.znpt.domain.vo.job.req.JobOutWorkReq;
import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.service.job.JobInWorkService;
import com.dite.znpt.service.job.JobOutWorkService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@ -35,11 +32,7 @@ public class JobOutWorkController {
@ApiOperation(value = "根据jobId查询岗位内容未查到返回空对象")
@ResponseBody
public Result<JobOutWork> getJob(@Valid @RequestBody JobOutWorkReq dto) throws ServiceException {
List<JobOutWork> list = this.service.listByJobId(dto);
if (list.isEmpty()) {
return Result.ok(new JobOutWork());
}
return Result.ok(list.get(0));
return Result.ok(this.service.getByJobId(dto));
}
@PostMapping(value = "save")