工作提交、审批后更新机组、项目状态

This commit is contained in:
cuizhibin 2025-05-12 16:36:08 +08:00
parent 6f88759f8f
commit 2f24dc0b25
3 changed files with 118 additions and 10 deletions

View File

@ -1,6 +1,7 @@
package com.dite.znpt.enums; package com.dite.znpt.enums;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import java.util.ArrayList; import java.util.ArrayList;
@ -12,19 +13,16 @@ import java.util.List;
* @Description: * @Description:
*/ */
@Getter @Getter
@AllArgsConstructor
public enum ProjectStatusEnum { public enum ProjectStatusEnum {
PENDING("PENDING","待施工"), PENDING("PENDING","待施工", 0),
IN_PROGRESS("IN_PROGRESS","施工中"), IN_PROGRESS("IN_PROGRESS","施工中", 1),
COMPLETED("COMPLETED","已完工"), COMPLETED("COMPLETED","已完工", 2),
AUDITED("AUDITED","已审核"), AUDITED("AUDITED","已审核", 3),
ACCEPTED("ACCEPTED","已验收"); ACCEPTED("ACCEPTED","已验收", 4);
private final String code; private final String code;
private final String desc; private final String desc;
private final int intValue;
ProjectStatusEnum(String code, String desc){
this.code = code;
this.desc = desc;
}
public static ProjectStatusEnum getByCode(String code){ public static ProjectStatusEnum getByCode(String code){
for (ProjectStatusEnum e : ProjectStatusEnum.values() ) { for (ProjectStatusEnum e : ProjectStatusEnum.values() ) {

View File

@ -99,5 +99,14 @@ public interface TurbineService extends IService<TurbineEntity> {
* @date 2025/04/11 23:17 * @date 2025/04/11 23:17
**/ **/
void deleteByProjectId(String projectId); void deleteByProjectId(String projectId);
/**
* 功能描述更新状态
*
* @param turbineId 机组id
* @author cuizhibin
* @date 2025/05/12 15:45
**/
void updateStatus(String turbineId);
} }

View File

@ -1,5 +1,6 @@
package com.dite.znpt.service.impl; package com.dite.znpt.service.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -8,19 +9,26 @@ import com.dite.znpt.converts.Converts;
import com.dite.znpt.domain.entity.ProjectEntity; import com.dite.znpt.domain.entity.ProjectEntity;
import com.dite.znpt.domain.entity.TurbineEntity; import com.dite.znpt.domain.entity.TurbineEntity;
import com.dite.znpt.domain.vo.*; import com.dite.znpt.domain.vo.*;
import com.dite.znpt.domain.vo.job.resp.TurbineStatusResp;
import com.dite.znpt.enums.Enums;
import com.dite.znpt.enums.ProjectStatusEnum;
import com.dite.znpt.exception.ServiceException; import com.dite.znpt.exception.ServiceException;
import com.dite.znpt.mapper.TurbineMapper; import com.dite.znpt.mapper.TurbineMapper;
import com.dite.znpt.service.PartService; import com.dite.znpt.service.PartService;
import com.dite.znpt.service.ProjectService; import com.dite.znpt.service.ProjectService;
import com.dite.znpt.service.TurbineService; import com.dite.znpt.service.TurbineService;
import com.dite.znpt.service.job.JobService;
import com.dite.znpt.util.PageUtil; import com.dite.znpt.util.PageUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -37,6 +45,8 @@ public class TurbineServiceImpl extends ServiceImpl<TurbineMapper, TurbineEntity
@Resource @Resource
private PartService partService; private PartService partService;
@Autowired
private JobService jobService;
/** /**
* 功能描述分页查询机组列表 * 功能描述分页查询机组列表
@ -175,4 +185,95 @@ public class TurbineServiceImpl extends ServiceImpl<TurbineMapper, TurbineEntity
partService.deleteByTurbineIds(turbineIds); partService.deleteByTurbineIds(turbineIds);
} }
/**
* 功能描述更新状态
*
* @param turbineId 机组id
* @author cuizhibin
* @date 2025/05/12 15:45
**/
@Override
public void updateStatus(String turbineId) {
if (StringUtils.isEmpty(turbineId)) {
return;
}
TurbineEntity turbine = getById(turbineId);
if (turbine == null) {
return;
}
if (turbine.getStatus() == ProjectStatusEnum.AUDITED.getIntValue()) {
return;
}
List<TurbineStatusResp> turbineStatusList = jobService.calCrewStatus(ListUtil.of(turbineId));
TurbineStatusResp turbineStatusVo = turbineStatusList.get(0);
List<String> status1 = ListUtil.of(Enums.ECrewWorkStatus.NON_EXISTS.getValue(), Enums.ECrewWorkStatus.NOT_START.getValue());
List<String> status2 = ListUtil.of(Enums.ECrewWorkStatus.NON_EXISTS.getValue(), Enums.ECrewWorkStatus.START_CONSTRUCTION.getValue());
List<String> status3 = ListUtil.of(Enums.ECrewWorkStatus.NON_EXISTS.getValue(), Enums.ECrewWorkStatus.SUBMITTED_REPORT.getValue());
List<String> status4 = ListUtil.of(Enums.ECrewWorkStatus.NON_EXISTS.getValue(), Enums.ECrewWorkStatus.APPROVAL.getValue());
if (status1.contains(turbineStatusVo.getInWorkStatus())
&& status1.contains(turbineStatusVo.getOutWorkStatus())
&& status1.contains(turbineStatusVo.getAntiThunderWorkStatus())
&& status1.contains(turbineStatusVo.getSummaryWorkStatus())) {
// 未施工
return;
}
if (status3.contains(turbineStatusVo.getInWorkStatus())
&& status3.contains(turbineStatusVo.getOutWorkStatus())
&& status3.contains(turbineStatusVo.getAntiThunderWorkStatus())
&& status3.contains(turbineStatusVo.getSummaryWorkStatus())) {
// 全部提交已完工
turbine.setStatus(ProjectStatusEnum.COMPLETED.getIntValue());
} else if (status4.contains(turbineStatusVo.getInWorkStatus())
&& status4.contains(turbineStatusVo.getOutWorkStatus())
&& status4.contains(turbineStatusVo.getAntiThunderWorkStatus())
&& status4.contains(turbineStatusVo.getSummaryWorkStatus())) {
// 全部审批已审批
turbine.setStatus(ProjectStatusEnum.AUDITED.getIntValue());
} else if (status2.contains(turbineStatusVo.getInWorkStatus())
|| status2.contains(turbineStatusVo.getOutWorkStatus())
|| status2.contains(turbineStatusVo.getAntiThunderWorkStatus())
|| status2.contains(turbineStatusVo.getSummaryWorkStatus())) {
// 有一个开始则开始
turbine.setStatus(ProjectStatusEnum.IN_PROGRESS.getIntValue());
}
this.updateById(turbine);
// 更新项目状态
updateProjectStatus(turbine.getProjectId());
}
/**
* 功能描述更新项目状态
*
* @param projectId 项目id
* @author cuizhibin
* @date 2025/05/12 16:35
**/
private void updateProjectStatus(String projectId) {
ProjectEntity project = projectService.getById(projectId);
Integer status = project.getStatus();
List<Integer> statusList = this.lambdaQuery().eq(TurbineEntity::getProjectId, projectId).list()
.stream().map(TurbineEntity::getStatus).toList();
// 有施工中则是施工中
if (statusList.contains(ProjectStatusEnum.IN_PROGRESS.getIntValue())) {
status = ProjectStatusEnum.IN_PROGRESS.getIntValue();
}
// 如果机组列表没有状态为 待施工施工中 的则项目 完工
if (!statusList.contains(ProjectStatusEnum.PENDING.getIntValue()) &&
!statusList.contains(ProjectStatusEnum.IN_PROGRESS.getIntValue())) {
status = ProjectStatusEnum.COMPLETED.getIntValue();
// 如果机组列表没有状态为 待施工施工中已完工 的则项目 已审核
if (!statusList.contains(ProjectStatusEnum.COMPLETED.getIntValue())) {
status = ProjectStatusEnum.AUDITED.getIntValue();
// 如果机组列表没有状态为 待施工施工中已完工已审核 的则项目 已验收
if (!statusList.contains(ProjectStatusEnum.AUDITED.getIntValue())) {
status = ProjectStatusEnum.ACCEPTED.getIntValue();
}
}
}
if (!Objects.equals(project.getStatus(), status)) {
project.setStatus(status);
projectService.updateById(project);
}
}
} }