|
|
|
@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.github.yulichang.toolkit.JoinWrappers;
|
|
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
|
|
import org.dromara.common.core.constant.DmsConstants;
|
|
|
|
|
import org.dromara.common.core.exception.ServiceException;
|
|
|
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
|
|
@ -16,19 +18,15 @@ import org.dromara.dms.domain.bo.DmsBillsInspectInstanceScanBo;
|
|
|
|
|
import org.dromara.dms.domain.bo.DmsInspectInstanceDetailBo;
|
|
|
|
|
import org.dromara.dms.domain.vo.DmsBillsInspectInstanceVo;
|
|
|
|
|
import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo;
|
|
|
|
|
import org.dromara.dms.mapper.DmsBillsInspectInstanceMapper;
|
|
|
|
|
import org.dromara.dms.mapper.DmsInspectInstanceDetailMapper;
|
|
|
|
|
import org.dromara.dms.mapper.DmsInspectInstanceDetailProjectMapper;
|
|
|
|
|
import org.dromara.dms.mapper.DmsPlanInspectMapper;
|
|
|
|
|
import org.dromara.dms.mapper.*;
|
|
|
|
|
import org.dromara.dms.service.IDmsBillsInspectInstanceService;
|
|
|
|
|
import org.dromara.workflow.api.RemoteWorkflowService;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
|
|
|
|
import java.util.Collection;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 点巡检工单Service业务层处理
|
|
|
|
@ -36,6 +34,7 @@ import java.util.Map;
|
|
|
|
|
* @author zch
|
|
|
|
|
* @date 2025-03-31
|
|
|
|
|
*/
|
|
|
|
|
@Slf4j
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
|
@Service
|
|
|
|
|
public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInstanceService {
|
|
|
|
@ -50,6 +49,10 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta
|
|
|
|
|
|
|
|
|
|
private final DmsInspectInstanceDetailProjectMapper dmsInspectInstanceDetailPrjectMapper;
|
|
|
|
|
|
|
|
|
|
private final DmsRecordInspectMapper dmsRecordInspectMapper;
|
|
|
|
|
|
|
|
|
|
@DubboReference(timeout = 15000, retries = 1)
|
|
|
|
|
private final RemoteWorkflowService remoteWorkflowService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询点巡检工单
|
|
|
|
@ -198,66 +201,74 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta
|
|
|
|
|
* @return 结果
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// @Override
|
|
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
// public int updateDmsInspectInstanceDetail(DmsInspectInstanceDetailBo dmsInspectInstanceDetail) {
|
|
|
|
|
// // 根据instanceDetailId查询记录检查信息
|
|
|
|
|
// DmsRecordInspect dmsRecordInspect = dmsBillsInspectInstanceMapper.selectRecord(dmsInspectInstanceDetail.getInstanceDetailId());
|
|
|
|
|
//
|
|
|
|
|
// // 根据inspectInstanceId批量查询记录检查信息
|
|
|
|
|
// List<DmsRecordInspect> recordInspect = dmsBillsInspectInstanceMapper.selectRecordByInstainceId(dmsRecordInspect.getInspectInstanceId());
|
|
|
|
|
//// if (recordInspect!=null&&recordInspect.size()>0){
|
|
|
|
|
//// // 如果有未完成的检查记录,设置状态为2
|
|
|
|
|
//// dmsRecordInspect.setInspectStatus(2l);
|
|
|
|
|
//// }else {
|
|
|
|
|
//// // 如果所有检查记录都完成,设置状态为3
|
|
|
|
|
//// dmsRecordInspect.setInspectStatus(3l);
|
|
|
|
|
//// }
|
|
|
|
|
// // 直接将状态设置为3,表示完成
|
|
|
|
|
// dmsRecordInspect.setInspectStatus(3l);
|
|
|
|
|
// // 插入记录检查信息
|
|
|
|
|
// int i1 = dmsBillsInspectInstanceMapper.insertRecord(dmsRecordInspect);
|
|
|
|
|
// // 查询未完成的检查实例数量
|
|
|
|
|
// int count = dmsBillsInspectInstanceMapper.selectUnCompletedInstance(dmsRecordInspect.getInspectInstanceId());
|
|
|
|
|
//// int count1 = dmsBillsInspectInstanceMapper.selectAllInstance(dmsRecordInspect.getInspectInstanceId());
|
|
|
|
|
// // 创建新的检查实例对象
|
|
|
|
|
// DmsBillsInspectInstanceBo dmsBillsInspectInstance = new DmsBillsInspectInstanceBo();
|
|
|
|
|
// if (count==0||count==1){
|
|
|
|
|
// // 如果没有未完成的检查实例,设置状态为3
|
|
|
|
|
// dmsBillsInspectInstance.setInspectStatus("3");
|
|
|
|
|
// }else{
|
|
|
|
|
// // 如果有未完成的检查实例,设置状态为2
|
|
|
|
|
// dmsBillsInspectInstance.setInspectStatus("2");
|
|
|
|
|
// }
|
|
|
|
|
// // 设置检查实例ID
|
|
|
|
|
// dmsBillsInspectInstance.setInspectInstanceId(dmsInspectInstanceDetail.getInspectInstanceId());
|
|
|
|
|
// // 设置实际结束时间
|
|
|
|
|
// dmsBillsInspectInstance.setRealEndTime(new Date());
|
|
|
|
|
// // 更新检查实例信息
|
|
|
|
|
// dmsBillsInspectInstanceService.updateByBo(dmsBillsInspectInstance);
|
|
|
|
|
// // 获取当前登录用户的信息
|
|
|
|
|
// String userName = LoginHelper.getLoginUser()==null ? LoginHelper.getUsername() :LoginHelper.getLoginUser().getNickname();
|
|
|
|
|
// // 获取当前日期
|
|
|
|
|
// Date currentDate = new Date();
|
|
|
|
|
// // 设置更新时间和更新人
|
|
|
|
|
// dmsInspectInstanceDetail.setUpdateTime(currentDate);
|
|
|
|
|
// dmsInspectInstanceDetail.setUpdateBy(Long.valueOf(userName));
|
|
|
|
|
//
|
|
|
|
|
// // 处理检查实例详情的子项目
|
|
|
|
|
// DmsInspectInstanceDetail returnInspectInstanceDetail = handleDmsInspectInstanceDetailProject(dmsInspectInstanceDetail);
|
|
|
|
|
// if (returnInspectInstanceDetail != null) {
|
|
|
|
|
// // 更新检查状态和实例详情状态
|
|
|
|
|
// dmsInspectInstanceDetail.setInspectStatus(returnInspectInstanceDetail.getInspectStatus());
|
|
|
|
|
// dmsInspectInstanceDetail.setInstanceDetailStatus(returnInspectInstanceDetail.getInstanceDetailStatus());
|
|
|
|
|
// // 设置子项目列表
|
|
|
|
|
// dmsInspectInstanceDetail.setDmsInspectInstanceDetailProjectList(returnInspectInstanceDetail.getDmsInspectInstanceDetailProjectList());
|
|
|
|
|
// // 批量更新子项目信息
|
|
|
|
|
// batchUpdateDmsInspectInstanceDetailProject(dmsInspectInstanceDetail);
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// // 返回更新结果
|
|
|
|
|
// return dmsInspectInstanceDetailMapper.update(dmsInspectInstanceDetail);
|
|
|
|
|
// }
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public int updateDmsInspectInstanceDetail(DmsInspectInstanceDetailBo dmsInspectInstanceDetail) {
|
|
|
|
|
// 根据instanceDetailId查询记录检查信息
|
|
|
|
|
DmsRecordInspect dmsRecordInspect = dmsBillsInspectInstanceMapper.selectRecord(dmsInspectInstanceDetail.getInstanceDetailId());
|
|
|
|
|
// 根据inspectInstanceId批量查询记录检查信息
|
|
|
|
|
List<DmsRecordInspect> recordInspect = dmsBillsInspectInstanceMapper.selectRecordByInstainceId(dmsRecordInspect.getInspectInstanceId());
|
|
|
|
|
// 直接将状态设置为3,表示完成
|
|
|
|
|
dmsRecordInspect.setInspectStatus(String.valueOf(3L));
|
|
|
|
|
// 插入记录检查信息
|
|
|
|
|
int i1 = dmsRecordInspectMapper.insert(dmsRecordInspect);
|
|
|
|
|
// 查询未完成的检查实例数量
|
|
|
|
|
int count = dmsBillsInspectInstanceMapper.selectUnCompletedInstance(dmsRecordInspect.getInspectInstanceId());
|
|
|
|
|
// 创建新的检查实例对象
|
|
|
|
|
DmsBillsInspectInstanceBo dmsBillsInspectInstance = new DmsBillsInspectInstanceBo();
|
|
|
|
|
if (count==0||count==1){
|
|
|
|
|
// 如果没有未完成的检查实例,设置状态为3
|
|
|
|
|
dmsBillsInspectInstance.setInspectStatus("3");
|
|
|
|
|
}else{
|
|
|
|
|
// 如果有未完成的检查实例,设置状态为2
|
|
|
|
|
dmsBillsInspectInstance.setInspectStatus("2");
|
|
|
|
|
}
|
|
|
|
|
// 设置检查实例ID
|
|
|
|
|
dmsBillsInspectInstance.setInspectInstanceId(dmsInspectInstanceDetail.getInspectInstanceId());
|
|
|
|
|
// 设置实际结束时间
|
|
|
|
|
dmsBillsInspectInstance.setRealEndTime(new Date());
|
|
|
|
|
// 更新检查实例信息
|
|
|
|
|
this.updateByBo(dmsBillsInspectInstance);
|
|
|
|
|
|
|
|
|
|
// 处理检查实例详情的子项目
|
|
|
|
|
DmsInspectInstanceDetailBo returnInspectInstanceDetail = handleDmsInspectInstanceDetailProject(dmsInspectInstanceDetail);
|
|
|
|
|
if (returnInspectInstanceDetail != null) {
|
|
|
|
|
// 更新检查状态和实例详情状态
|
|
|
|
|
dmsInspectInstanceDetail.setInspectStatus(returnInspectInstanceDetail.getInspectStatus());
|
|
|
|
|
dmsInspectInstanceDetail.setInstanceDetailStatus(returnInspectInstanceDetail.getInstanceDetailStatus());
|
|
|
|
|
// 设置子项目列表
|
|
|
|
|
dmsInspectInstanceDetail.setDmsInspectInstanceDetailProjectList(returnInspectInstanceDetail.getDmsInspectInstanceDetailProjectList());
|
|
|
|
|
// 批量更新子项目信息
|
|
|
|
|
batchUpdateDmsInspectInstanceDetailProject(dmsInspectInstanceDetail);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 转换为实体对象进行更新
|
|
|
|
|
DmsInspectInstanceDetail updateEntity = MapstructUtils.convert(dmsInspectInstanceDetail, DmsInspectInstanceDetail.class);
|
|
|
|
|
// 返回更新结果
|
|
|
|
|
return dmsInspectInstanceDetailMapper.updateById(updateEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 批量更新点巡检工单明细项目信息
|
|
|
|
|
*
|
|
|
|
|
* @param dmsInspectInstanceDetail 包含项目列表的点巡检工单明细
|
|
|
|
|
*/
|
|
|
|
|
private void batchUpdateDmsInspectInstanceDetailProject(DmsInspectInstanceDetailBo dmsInspectInstanceDetail) {
|
|
|
|
|
// 【获取项目列表】获取需要更新的项目列表
|
|
|
|
|
List<DmsInspectInstanceDetailProject> projectList = dmsInspectInstanceDetail.getDmsInspectInstanceDetailProjectList();
|
|
|
|
|
|
|
|
|
|
// 【项目列表校验】如果项目列表不为空且不为空列表,进行批量更新
|
|
|
|
|
if (StringUtils.isNotNull(projectList) && !projectList.isEmpty()) {
|
|
|
|
|
// 【遍历更新项目】逐个更新每个巡检项目的状态
|
|
|
|
|
for (DmsInspectInstanceDetailProject project : projectList) {
|
|
|
|
|
// 【项目状态更新】只更新有ID的项目(已存在的项目)
|
|
|
|
|
if (project.getInstanceDetailProjectId() != null) {
|
|
|
|
|
// 使用Mapper直接更新项目状态信息
|
|
|
|
|
dmsInspectInstanceDetailPrjectMapper.updateById(project);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -300,7 +311,7 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public DmsInspectInstanceDetailVo scanInspectInstanceDetail(DmsBillsInspectInstanceScanBo dmsBillsInspectInstanceScan) {
|
|
|
|
|
// 根据检查实例ID和设备编码查询检查实例详细信息
|
|
|
|
|
// 根据检查实例ID和设备编码查询检查工单详细信息
|
|
|
|
|
DmsInspectInstanceDetailVo dmsInspectInstanceDetail = dmsInspectInstanceDetailMapper.selectDmsInspectInstanceDetailByUI(dmsBillsInspectInstanceScan.getInspectInstanceId(),
|
|
|
|
|
dmsBillsInspectInstanceScan.getDeviceCode());
|
|
|
|
|
// 如果查询结果为空,抛出异常提示无此设备的检查工单
|
|
|
|
@ -317,14 +328,14 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta
|
|
|
|
|
Long projectId = dmsInspectInstanceDetailPrjectMapper.selectProjectByStandardId(dmsInspectInstanceDetail.getInspectStandard());
|
|
|
|
|
// 设置检查项目ID
|
|
|
|
|
queryInspectInstanceDetailProject.setInspectProjectId(projectId);
|
|
|
|
|
// 设置检查实例详情ID
|
|
|
|
|
// 设置检查工单明细ID
|
|
|
|
|
queryInspectInstanceDetailProject.setInstanceDetailId(dmsInspectInstanceDetail.getInstanceDetailId());
|
|
|
|
|
// 查询检查实例详细项目列表
|
|
|
|
|
// 查询检查工单详细项目列表
|
|
|
|
|
List<DmsInspectInstanceDetailProject> dmsInspectInstanceDetailProjects = dmsInspectInstanceDetailPrjectMapper.selectDmsInspectInstanceDetailProjectJoinList(queryInspectInstanceDetailProject);
|
|
|
|
|
// 将查询结果设置到检查实例详情对象中
|
|
|
|
|
// 将查询结果设置到检查工单详情对象中
|
|
|
|
|
dmsInspectInstanceDetail.setDmsInspectInstanceDetailProjectList(dmsInspectInstanceDetailProjects);
|
|
|
|
|
|
|
|
|
|
// 更新检查实例的开始时间
|
|
|
|
|
// 更新检查工单的开始时间
|
|
|
|
|
DmsBillsInspectInstanceBo dmsBillsInspectInstance = new DmsBillsInspectInstanceBo();
|
|
|
|
|
// 设置检查实例ID
|
|
|
|
|
dmsBillsInspectInstance.setInspectInstanceId(dmsBillsInspectInstanceScan.getInspectInstanceId());
|
|
|
|
@ -342,4 +353,89 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 更新点巡检工单明细项目信息
|
|
|
|
|
*
|
|
|
|
|
* @param dmsInspectInstanceDetail 点巡检工单明细
|
|
|
|
|
* @return 处理后的点巡检工单明细,包含更新后的状态信息
|
|
|
|
|
*/
|
|
|
|
|
private DmsInspectInstanceDetailBo handleDmsInspectInstanceDetailProject(DmsInspectInstanceDetailBo dmsInspectInstanceDetail) {
|
|
|
|
|
// 【初始化状态】默认设置为完成状态和通过状态
|
|
|
|
|
String instanceDetailStatus = DmsConstants.DMS_INSPECT_INSTANCE_DETAIL_STATUS_FINISH;
|
|
|
|
|
String inspectStatus = DmsConstants.DMS_INSPECT_INSTANCE_DETAIL_INSPECT_STATUS_PASS; // 质检结果检验状态
|
|
|
|
|
|
|
|
|
|
// 【获取项目列表】获取点巡检工单明细项目列表
|
|
|
|
|
List<DmsInspectInstanceDetailProject> inspectInstanceDetailProjectList = dmsInspectInstanceDetail.getDmsInspectInstanceDetailProjectList();
|
|
|
|
|
|
|
|
|
|
// 【项目列表校验】如果项目列表不为空,进行处理
|
|
|
|
|
if (StringUtils.isNotNull(inspectInstanceDetailProjectList)) {
|
|
|
|
|
// 【创建返回对象】创建返回的检查实例详情对象
|
|
|
|
|
DmsInspectInstanceDetailBo returnInspectInstanceDetail = new DmsInspectInstanceDetailBo();
|
|
|
|
|
List<DmsInspectInstanceDetailProject> toUpdatedList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
// 【遍历处理项目】逐个处理每个巡检项目
|
|
|
|
|
for (DmsInspectInstanceDetailProject inspectInstanceDetailProject : inspectInstanceDetailProjectList) {
|
|
|
|
|
String inspectProjectProperty = inspectInstanceDetailProject.getInspectProjectProperty();
|
|
|
|
|
|
|
|
|
|
// 【定性检查处理】如果是定性检查项目
|
|
|
|
|
if (inspectProjectProperty.equals(DmsConstants.DMS_INSPECT_INSTANCE_PROJECT_PROPERTY_QUALITATIVE)) {
|
|
|
|
|
String inspectProjectStatus = inspectInstanceDetailProject.getInspectProjectStatus();
|
|
|
|
|
if (inspectProjectStatus != null) {
|
|
|
|
|
// 【定性结果判断】如果检查结果为异常,设置整体状态为异常
|
|
|
|
|
if (inspectProjectStatus.equals(DmsConstants.DMS_INSPECT_INSTANCE_DETAIL_PROJECT_STATUS_FAIL)) {
|
|
|
|
|
inspectStatus = DmsConstants.DMS_INSPECT_INSTANCE_DETAIL_INSPECT_STATUS_FAIL;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 【定性未完成】如果检查状态为空,设置为巡检中状态
|
|
|
|
|
instanceDetailStatus = DmsConstants.DMS_INSPECT_INSTANCE_DETAIL_STATUS_INSPECTING;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 【定量检查处理】如果是定量检查项目
|
|
|
|
|
BigDecimal inspectProjectResult = inspectInstanceDetailProject.getInspectProjectResult();
|
|
|
|
|
if (inspectProjectResult != null) {
|
|
|
|
|
// 【获取标准值和限制值】
|
|
|
|
|
BigDecimal standardValue = inspectInstanceDetailProject.getDefValue();
|
|
|
|
|
BigDecimal upperDiff = inspectInstanceDetailProject.getUpLimit();
|
|
|
|
|
BigDecimal downDiff = inspectInstanceDetailProject.getLowLimit();
|
|
|
|
|
|
|
|
|
|
// 【限制值处理】如果没设置上差值,则标准值为上差值
|
|
|
|
|
if (upperDiff == null) {
|
|
|
|
|
upperDiff = standardValue;
|
|
|
|
|
}
|
|
|
|
|
// 【限制值处理】如果没设置下差值,则标准值为下差值
|
|
|
|
|
if (downDiff == null) {
|
|
|
|
|
downDiff = standardValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 【范围判断】直接使用BigDecimal进行精确比较
|
|
|
|
|
if (inspectProjectResult.compareTo(downDiff) >= 0 && inspectProjectResult.compareTo(upperDiff) <= 0) {
|
|
|
|
|
// 【定量通过】在合格范围内,设置为通过
|
|
|
|
|
inspectInstanceDetailProject.setInspectProjectStatus(DmsConstants.DMS_INSPECT_INSTANCE_DETAIL_PROJECT_STATUS_PASS);
|
|
|
|
|
} else {
|
|
|
|
|
// 【定量异常】超出合格范围,设置为异常
|
|
|
|
|
inspectInstanceDetailProject.setInspectProjectStatus(DmsConstants.DMS_INSPECT_INSTANCE_DETAIL_PROJECT_STATUS_FAIL);
|
|
|
|
|
inspectStatus = DmsConstants.DMS_INSPECT_INSTANCE_DETAIL_INSPECT_STATUS_FAIL;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 【定量未完成】如果检查结果为空,设置为巡检中状态
|
|
|
|
|
instanceDetailStatus = DmsConstants.DMS_INSPECT_INSTANCE_DETAIL_STATUS_INSPECTING;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 【添加到更新列表】将处理后的项目添加到待更新列表
|
|
|
|
|
toUpdatedList.add(inspectInstanceDetailProject);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 【设置返回结果】设置处理后的状态和项目列表
|
|
|
|
|
returnInspectInstanceDetail.setInspectStatus(inspectStatus);
|
|
|
|
|
returnInspectInstanceDetail.setInstanceDetailStatus(instanceDetailStatus);
|
|
|
|
|
returnInspectInstanceDetail.setDmsInspectInstanceDetailProjectList(toUpdatedList);
|
|
|
|
|
|
|
|
|
|
return returnInspectInstanceDetail;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 【无项目列表】如果项目列表为空,返回null
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|