发起复检委托

This commit is contained in:
2025-10-16 10:29:53 +08:00
parent ad667e6fb4
commit 4df7931523
4 changed files with 119 additions and 2 deletions

View File

@@ -69,4 +69,14 @@ public interface BusinessAssayParameterDataMapper extends BaseMapperX<BusinessAs
.orderByDesc(BusinessAssayParameterDataDO::getId));
}
default List<BusinessAssayParameterDataDO> selectByBusinessAssayProjectDataId(Long businessAssayProjectDataId) {
return selectList(new LambdaQueryWrapperX<BusinessAssayParameterDataDO>()
.eq(BusinessAssayParameterDataDO::getBusinessAssayProjectDataId, businessAssayProjectDataId));
}
default List<BusinessAssayParameterDataDO> selectByBusinessAssayProjectDataIds(List<Long> businessAssayProjectDataIds) {
return selectList(new LambdaQueryWrapperX<BusinessAssayParameterDataDO>()
.in(BusinessAssayParameterDataDO::getBusinessAssayProjectDataId, businessAssayProjectDataIds));
}
}

View File

@@ -85,6 +85,16 @@ public interface BusinessAssayProjectDataMapper extends BaseMapperX<BusinessAssa
.eq(BusinessAssayProjectDataDO::getBusinessAssayTaskDataId, businessAssayTaskDataId));
}
default List<BusinessAssayProjectDataExtendRespVO> selectByBusinessAssayTaskDataIds(List<Long> businessAssayTaskDataIds) {
return selectJoinList(BusinessAssayProjectDataExtendRespVO.class, new MPJLambdaWrapperX<BusinessAssayProjectDataDO>()
.leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessAssayProjectDataDO::getDictionaryProjectId)
.selectAll(BusinessAssayProjectDataDO.class)
.selectAs(DictionaryProjectDO::getKey, BusinessAssayProjectDataExtendRespVO::getDictionaryProjectKey)
.selectAs(DictionaryProjectDO::getSimpleName, BusinessAssayProjectDataExtendRespVO::getSimpleName)
.selectAs(DictionaryProjectDO::getShowName, BusinessAssayProjectDataExtendRespVO::getShowName)
.in(BusinessAssayProjectDataDO::getBusinessAssayTaskDataId, businessAssayTaskDataIds));
}
default List<BusinessAssayProjectDataExtendRespVO> selectAnalysisBy(BusinessAssayProjectDataReqVO reqVO) {
return selectJoinList(BusinessAssayProjectDataExtendRespVO.class, new MPJLambdaWrapperX<BusinessAssayProjectDataDO>()
.leftJoin(BusinessAssayTaskDataDO.class, BusinessAssayTaskDataDO::getId, BusinessAssayProjectDataDO::getBusinessAssayTaskDataId)

View File

@@ -189,4 +189,25 @@ public interface BusinessAssayTaskDataMapper extends BaseMapperX<BusinessAssayTa
return selectList(queryWrapper);
}
/**
* 查询最大分析次数的检测任务数据
* @param businessSubSampleId 子样id
* @param configAssayMethodId 分析方法
* @return
*/
default List<BusinessAssayTaskDataDO> selectMaxAnalysisCountByBusinessSubSampleIdAndConfigAssayMethodId(Long businessSubSampleId, Long configAssayMethodId) {
BusinessAssayTaskDataDO maxAnalysisCount = selectOne(new LambdaQueryWrapperX<BusinessAssayTaskDataDO>()
.eq(BusinessAssayTaskDataDO::getBusinessSubSampleId, businessSubSampleId)
.eq(BusinessAssayTaskDataDO::getConfigAssayMethodId, configAssayMethodId)
.orderByDesc(BusinessAssayTaskDataDO::getAnalysisCount)
.last("LIMIT 1"));
return selectList(new LambdaQueryWrapperX<BusinessAssayTaskDataDO>()
.eq(BusinessAssayTaskDataDO::getBusinessSubSampleId, businessSubSampleId)
.eq(BusinessAssayTaskDataDO::getConfigAssayMethodId, configAssayMethodId)
.eq(BusinessAssayTaskDataDO::getAnalysisCount, maxAnalysisCount.getAnalysisCount()));
}
}

View File

@@ -6,7 +6,6 @@ import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -19,11 +18,13 @@ import org.springframework.transaction.annotation.Transactional;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.ql.util.express.ExpressRunner;
import com.zt.plat.framework.common.exception.ServiceException;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.qms.business.bus.controller.vo.*;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayParameterDataDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayProjectDataDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayReportDataDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDO;
@@ -32,6 +33,7 @@ import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessBaseSampleDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleAssessmentDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessTeamAssessmentDO;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayParameterDataMapper;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayProjectDataMapper;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayReportDataMapper;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDataMapper;
@@ -576,6 +578,9 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
@Resource
private BusinessSubSampleMapper businessSubSampleMapper;
@Resource
private BusinessAssayParameterDataMapper businessAssayParameterDataMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public void createReAnalysis(Long businessSubSampleId, Long configAssayMethodId) {
@@ -584,10 +589,81 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
//子样配置数据
ConfigSubSampleDO configSubSampleDO = configSubSampleMapper.selectById(businessSubSampleDO.getConfigSubSampleId());
if (StringUtils.isBlank(configSubSampleDO.getRecheckFlowNodeKey())) {
throw new ServiceException(500, "未配置复检流程,不能发起复检委托!");
}
List<BusinessAssayTaskDataDO> newBusinessAssayTaskDataDOList = new ArrayList<>();
List<BusinessAssayProjectDataDO> newBusinessAssayProjectDataDOList = new ArrayList<>();
List<BusinessAssayParameterDataDO> newBusinessAssayParameterDataDOList = new ArrayList<>();
BusinessAssayTaskDataDO newBusinessAssayTaskDataDO = null;
List<BusinessAssayTaskDataDO> businessAssayTaskDataDOList = businessAssayTaskDataMapper.selectMaxAnalysisCountByBusinessSubSampleIdAndConfigAssayMethodId(businessSubSampleId, configAssayMethodId);
List<Long> businessAssayTaskDataDOIdList = businessAssayTaskDataDOList.stream().map(m -> m.getId()).collect(Collectors.toList());
List<BusinessAssayProjectDataExtendRespVO> businessAssayProjectDataDOList = businessAssayProjectDataMapper.selectByBusinessAssayTaskDataIds(businessAssayTaskDataDOIdList);
List<Long> businessAssayProjectDataDOIdList = businessAssayProjectDataDOList.stream().map(m -> m.getId()).collect(Collectors.toList());
List<BusinessAssayParameterDataDO> businessAssayParameterDataDOList = businessAssayParameterDataMapper.selectByBusinessAssayProjectDataIds(businessAssayProjectDataDOIdList);
for (BusinessAssayTaskDataDO businessAssayTaskDataDO : businessAssayTaskDataDOList) {
// 子样检测任务
newBusinessAssayTaskDataDO = new BusinessAssayTaskDataDO();
newBusinessAssayTaskDataDO.setId(IdWorker.getId());
newBusinessAssayTaskDataDO.setBusinessBaseSampleId(businessAssayTaskDataDO.getBusinessBaseSampleId());
newBusinessAssayTaskDataDO.setBusinessSubParentSampleId(businessAssayTaskDataDO.getBusinessSubParentSampleId());
newBusinessAssayTaskDataDO.setBusinessSubSampleId(businessAssayTaskDataDO.getBusinessSubSampleId());
newBusinessAssayTaskDataDO.setConfigAssayMethodId(businessAssayTaskDataDO.getConfigAssayMethodId());
newBusinessAssayTaskDataDO.setAssayType(businessAssayTaskDataDO.getAssayType());
newBusinessAssayTaskDataDO.setTaskType(businessAssayTaskDataDO.getTaskType());
newBusinessAssayTaskDataDO.setConfigSampleFlowId(businessAssayTaskDataDO.getConfigSampleFlowId());
newBusinessAssayTaskDataDO.setSampleFlowNodeKey(configSubSampleDO.getRecheckFlowNodeKey());
newBusinessAssayTaskDataDO.setSampleFlowNodeTime(LocalDateTime.now());
newBusinessAssayTaskDataDO.setAssayDepartmentId(businessAssayTaskDataDO.getAssayDepartmentId());
newBusinessAssayTaskDataDO.setAssayDepartmentName(businessAssayTaskDataDO.getAssayDepartmentName());
newBusinessAssayTaskDataDO.setAnalysisCount(businessAssayTaskDataDO.getAnalysisCount() + 1);
newBusinessAssayTaskDataDO.setAssayProject(businessAssayTaskDataDO.getAssayProject());
List<BusinessAssayProjectDataExtendRespVO> businessAssayProjectDataList = businessAssayProjectDataDOList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(businessAssayTaskDataDO.getId())).collect(Collectors.toList());
for (BusinessAssayProjectDataExtendRespVO businessAssayProjectData : businessAssayProjectDataList) {
//检测项目
BusinessAssayProjectDataDO businessAssayProjectDataDO = new BusinessAssayProjectDataDO();
businessAssayProjectDataDO.setId(IdWorker.getId());
businessAssayProjectDataDO.setBusinessAssayTaskDataId(newBusinessAssayTaskDataDO.getId());
businessAssayProjectDataDO.setConfigAssayMethodProjectId(businessAssayProjectData.getConfigAssayMethodProjectId());
businessAssayProjectDataDO.setDictionaryProjectId(businessAssayProjectData.getDictionaryProjectId());
businessAssayProjectDataDO.setDataType(businessAssayProjectData.getDataType());
businessAssayProjectDataDO.setDecimalPosition(businessAssayProjectData.getDecimalPosition());
businessAssayProjectDataDO.setIsEnabled(businessAssayProjectData.getIsEnabled());
businessAssayProjectDataDO.setIsNotAssessment(0);
newBusinessAssayProjectDataDOList.add(businessAssayProjectDataDO);
List<BusinessAssayParameterDataDO> businessAssayParameterDataList = businessAssayParameterDataDOList.stream().filter(f -> f.getBusinessAssayProjectDataId().equals(businessAssayProjectData.getId())).collect(Collectors.toList());
for (BusinessAssayParameterDataDO businessAssayParameterData : businessAssayParameterDataList) {
BusinessAssayParameterDataDO businessAssayParameterDataDO = new BusinessAssayParameterDataDO();
businessAssayParameterDataDO.setId(IdWorker.getId());
businessAssayParameterDataDO.setBusinessAssayProjectDataId(businessAssayProjectDataDO.getId());
businessAssayParameterDataDO.setConfigAssayMethodProjectParameterId(businessAssayParameterData.getConfigAssayMethodProjectParameterId());
businessAssayParameterDataDO.setDictionaryParameterId(businessAssayParameterData.getDictionaryParameterId());
businessAssayParameterDataDO.setDataType(businessAssayParameterData.getDataType());
businessAssayParameterDataDO.setDecimalPosition(businessAssayParameterData.getDecimalPosition());
newBusinessAssayParameterDataDOList.add(businessAssayParameterDataDO);
}
}
newBusinessAssayTaskDataDOList.add(newBusinessAssayTaskDataDO);
}
if (newBusinessAssayTaskDataDOList.size() > 0) {
businessAssayTaskDataMapper.insertBatch(newBusinessAssayTaskDataDOList);
}
if (newBusinessAssayProjectDataDOList.size() > 0) {
businessAssayProjectDataMapper.insertBatch(newBusinessAssayProjectDataDOList);
}
if (newBusinessAssayParameterDataDOList.size() > 0) {
businessAssayParameterDataMapper.insertBatch(newBusinessAssayParameterDataDOList);
}
//businessAssayTaskDataMapper.select
}