Merge remote-tracking branch 'origin/test' into test

This commit is contained in:
FCL
2025-11-21 16:15:15 +08:00
23 changed files with 221 additions and 33 deletions

View File

@@ -122,6 +122,9 @@ public interface QmsCommonConstant {
/** 分析收样 **/
String FLOW_NODE_ANALYSIS_RECEIVE = "flw_analysis_receive";
/** 分析 **/
String FLOW_NODE_ANALYSIS = "flw_analysis";
/** 分析送样 **/
String FLOW_NODE_ANALYSIS_SEND = "flw_analysis_send";

View File

@@ -146,9 +146,9 @@ public class SampleFlowController {
flowNodeList.add(fx);
bzs.setNextFlowNodeList(new ArrayList<>() {{
add(BeanUtils.toBean(fx,SampleFlowNode.class).setCondition("样品当前分析班组结果超差,需要发起复检"));
add(BeanUtils.toBean(bzr,SampleFlowNode.class).setCondition("当前部门数据已全部判断上报"));
add(BeanUtils.toBean(ypgk,SampleFlowNode.class).setCondition("当前样品所有分析任务已全部上报完"));
// add(BeanUtils.toBean(fx,SampleFlowNode.class).setCondition("样品当前分析班组结果超差,需要发起复检"));
add(BeanUtils.toBean(bzr,SampleFlowNode.class).setCondition("subSampleSelfReportedOthersPending"));//当前部门数据已全部判断上报
add(BeanUtils.toBean(ypgk,SampleFlowNode.class).setCondition("subSampleAlldeptAnalyzed"));//当前样品所有分析任务已全部上报完
}});
flowNodeList.add(bzs);

View File

@@ -35,8 +35,8 @@ public class SampleResultReportingController {
//获取未上报的方法
@GetMapping("/getUnReportMethodGroupList")
public CommonResult<?> getUnReportMethodGroupList() {
List<BusinessSubParentSampleAssessmentGroupRespVO> list = sampleResultReportingService.getUnReportMethodGroupList();
public CommonResult<?> getUnReportMethodGroupList(BusinessSubParentSampleAssessmentGroupReqVO reqVO) {
List<BusinessSubParentSampleAssessmentGroupRespVO> list = sampleResultReportingService.getUnReportMethodGroupList(reqVO);
return success(list);
}

View File

@@ -107,6 +107,9 @@ public class BusinessAssayTaskPageReqVO extends PageParam {
@Schema(description = "备注")
private String remark;
@Schema(description = "不等于当前分析人")
private String neAssayOperator;
@Schema(description = "部门id")
private Long deptId;
}

View File

@@ -64,4 +64,5 @@ public class BusinessHandoverRecordSubPageReqVO extends PageParam {
@Schema(description = "备注")
private String remark;
private Long deptId;
}

View File

@@ -60,4 +60,6 @@ public class BusinessSampleHandoverPageReqVO extends PageParam {
@Schema(description = "备注")
private String remark;
private Long deptId;
}

View File

@@ -0,0 +1,20 @@
package com.zt.plat.module.qms.business.bus.controller.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class BusinessSubParentSampleAssessmentGroupReqVO {
@Schema(description = "分析方法id")
private Long configAssayMethodId;
@Schema(description = "分析方法名称")
private String configAssayMethodName;
@Schema(description = "分析部门ID")
private Long assayDepartmentId;
@Schema(description = "分析部门名称")
private String assayDepartmentName;
}

View File

@@ -1,13 +1,22 @@
package com.zt.plat.module.qms.business.bus.controller.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class BusinessSubParentSampleAssessmentGroupRespVO {
@Schema(description = "分析方法id")
private Long configAssayMethodId;
@Schema(description = "分析方法名称")
private String configAssayMethodName;
@Schema(description = "分析部门ID")
private Long assayDepartmentId;
@Schema(description = "分析部门名称")
private String assayDepartmentName;
private Integer sampleCount;
}

View File

@@ -3,6 +3,8 @@ package com.zt.plat.module.qms.business.bus.controller.vo;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import cn.hutool.core.collection.CollUtil;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -32,6 +34,9 @@ public class BusinessSubSampleExtendRespVO extends BusinessSubSampleRespVO {
List<String> collect = this.businessSubSampleAnalysisGroupList.stream().filter(f -> f.getSampleStatus().equals("待收样")).map(m -> m.getAssayDepartmentName()).collect(Collectors.toList());
_sampleDestination = CollUtil.join(collect, ",");
}
if (StringUtils.isBlank(_sampleDestination)) {//所有分析班组已完成,去向显示为库名
_sampleDestination = this.getWarehouseName();
}
return _sampleDestination;
}

View File

@@ -15,6 +15,7 @@ import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayTaskDataPa
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayTaskDataReqVO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleAnalysisGroupDO;
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.config.dal.dataobject.ConfigAssayMethodDO;
import com.zt.plat.module.qms.enums.QmsCommonConstant;
@@ -154,7 +155,7 @@ public interface BusinessAssayTaskDataMapper extends BaseMapperX<BusinessAssayTa
if (ObjectUtil.isNotEmpty(reqVO.getConfigAssayMethodId())) {
mpjLambdaWrapper.eq(BusinessAssayTaskDataDO::getConfigAssayMethodId, reqVO.getConfigAssayMethodId());
}
mpjLambdaWrapper.ne(BusinessSubSampleAnalysisGroupDO::getSampleStatus, "收样");
mpjLambdaWrapper.ne(BusinessSubSampleAnalysisGroupDO::getSampleStatus, "收样");
mpjLambdaWrapper.orderByAsc(BusinessAssayTaskDataDO::getBusinessSubSampleId).orderByAsc(BusinessAssayTaskDataDO::getReportTime);
return selectJoinList(BusinessAssayTaskDataExtendRespVO.class, mpjLambdaWrapper);
@@ -242,6 +243,16 @@ public interface BusinessAssayTaskDataMapper extends BaseMapperX<BusinessAssayTa
.eq(BusinessAssayTaskDataDO::getConfigAssayMethodId, configAssayMethodId));
}
/**
* 根据分样主样id列表查询分析任务
* @param businessSubParentSampleIds
* @return
*/
default List<BusinessAssayTaskDataDO> selectByBusinessSubParentSampleIds(List<Long> businessSubParentSampleIds) {
return selectList(new LambdaQueryWrapperX<BusinessAssayTaskDataDO>()
.in(BusinessAssayTaskDataDO::getBusinessSubParentSampleId, businessSubParentSampleIds));
}
/**
* 根据分样查询分析任务
* @param businessSubParentSampleId 分样样id

View File

@@ -60,6 +60,7 @@ public interface BusinessAssayTaskMapper extends BaseMapperX<BusinessAssayTaskDO
.eqIfPresent(BusinessAssayTaskDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode())
.betweenIfPresent(BusinessAssayTaskDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(BusinessAssayTaskDO::getRemark, reqVO.getRemark())
.neIfPresent(BusinessAssayTaskDO::getAssayOperator, reqVO.getNeAssayOperator())
.eqIfPresent(BusinessAssayTaskDO::getDeptId, reqVO.getDeptId())
.orderByDesc(BusinessAssayTaskDO::getId));
}
@@ -101,6 +102,7 @@ public interface BusinessAssayTaskMapper extends BaseMapperX<BusinessAssayTaskDO
.betweenIfPresent(BusinessAssayTaskDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(BusinessAssayTaskDO::getRemark, reqVO.getRemark())
.eqIfPresent(BusinessAssayTaskDO::getDeptId, reqVO.getDeptId())
.neIfPresent(BusinessAssayTaskDO::getAssayOperator, reqVO.getNeAssayOperator())
.orderByDesc(BusinessAssayTaskDO::getId));
}

View File

@@ -47,6 +47,7 @@ public interface BusinessHandoverRecordSubMapper extends BaseMapperX<BusinessHan
.eqIfPresent(BusinessHandoverRecordSubDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode())
.betweenIfPresent(BusinessHandoverRecordSubDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(BusinessHandoverRecordSubDO::getRemark, reqVO.getRemark())
.eqIfPresent(BusinessHandoverRecordSubDO::getDeptId, reqVO.getDeptId())
.orderByDesc(BusinessHandoverRecordSubDO::getCreateTime));
}

View File

@@ -33,6 +33,7 @@ public interface BusinessSampleHandoverMapper extends BaseMapperX<BusinessSample
.eqIfPresent(BusinessSampleHandoverDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode())
.betweenIfPresent(BusinessSampleHandoverDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(BusinessSampleHandoverDO::getRemark, reqVO.getRemark())
.eqIfPresent(BusinessSampleHandoverDO::getDeptId, reqVO.getDeptId())
.orderByDesc(BusinessSampleHandoverDO::getId));
}

View File

@@ -23,7 +23,7 @@ import org.apache.ibatis.annotations.Param;
@Mapper
public interface BusinessSubParentSampleAssessmentMapper extends BaseMapperX<BusinessSubParentSampleAssessmentDO> {
List<BusinessSubParentSampleAssessmentGroupRespVO> selectUnReportMethodGroupList();
List<BusinessSubParentSampleAssessmentGroupRespVO> selectUnReportMethodGroupList(@Param("reqVO") BusinessSubParentSampleAssessmentGroupReqVO reqVO);
default PageResult<BusinessSubParentSampleAssessmentDO> selectPage(BusinessSubParentSampleAssessmentPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<BusinessSubParentSampleAssessmentDO>()

View File

@@ -36,6 +36,21 @@ public interface BusinessSubSampleAnalysisGroupMapper extends BaseMapperX<Busine
.orderByDesc(BusinessSubSampleAnalysisGroupDO::getId));
}
default List<BusinessSubSampleAnalysisGroupDO> selectByBusinessSubParentSampleId(Long businessSubParentSampleId) {
return selectList(new LambdaQueryWrapperX<BusinessSubSampleAnalysisGroupDO>()
.eq(BusinessSubSampleAnalysisGroupDO::getBusinessSubParentSampleId, businessSubParentSampleId));
}
default List<BusinessSubSampleAnalysisGroupDO> selectByBusinessSubParentSampleIds(List<Long> businessSubParentSampleIds) {
return selectList(new LambdaQueryWrapperX<BusinessSubSampleAnalysisGroupDO>()
.in(BusinessSubSampleAnalysisGroupDO::getBusinessSubParentSampleId, businessSubParentSampleIds));
}
default List<BusinessSubSampleAnalysisGroupDO> selectByBusinessSubSampleId(Long businessSubSampleId) {
return selectList(new LambdaQueryWrapperX<BusinessSubSampleAnalysisGroupDO>()
.eq(BusinessSubSampleAnalysisGroupDO::getBusinessSubSampleId, businessSubSampleId));
}
default List<BusinessSubSampleAnalysisGroupDO> selectByBusinessSubSampleIds(List<Long> businessSubSampleIds) {
return selectList(new LambdaQueryWrapperX<BusinessSubSampleAnalysisGroupDO>()
.in(BusinessSubSampleAnalysisGroupDO::getBusinessSubSampleId, businessSubSampleIds));

View File

@@ -90,12 +90,15 @@ public interface BusinessSubSampleMapper extends BaseMapperX<BusinessSubSampleDO
.rightJoin(BusinessSubSampleAnalysisGroupDO.class, BusinessSubSampleAnalysisGroupDO::getBusinessSubSampleId, BusinessSubSampleDO::getId)
.leftJoin(ConfigSubSampleDO.class, ConfigSubSampleDO::getId, BusinessSubSampleDO::getConfigSubSampleId)
.leftJoin(DictionaryBusinessDO.class, DictionaryBusinessDO::getId, BusinessSubSampleDO::getDictionaryBusinessId)
.leftJoin(ConfigWarehouseLocationDO.class, ConfigWarehouseLocationDO::getCode, ConfigSubSampleDO::getConfigWarehouseLocationCode)
.selectAll(BusinessSubSampleDO.class)
.selectAs(DictionaryBusinessDO::getName, BusinessSubSampleExtendRespVO::getDictionaryBusinessName)
.selectAs(ConfigSubSampleDO::getIsPrint, BusinessSubSampleExtendRespVO::getIsPrint)
.selectAs(ConfigSubSampleDO::getPrintTemplate, BusinessSubSampleExtendRespVO::getPrintTemplate)
.selectAs(BusinessSubSampleAnalysisGroupDO::getAssayDepartmentId, BusinessSubSampleExtendRespVO::getAssayDepartmentId)
.selectAs(BusinessSubSampleAnalysisGroupDO::getAssayDepartmentName, BusinessSubSampleExtendRespVO::getAssayDepartmentName)
.selectAs(ConfigWarehouseLocationDO::getCode, BusinessSubSampleExtendRespVO::getWarehouseLocationCode)
.selectAs(ConfigWarehouseLocationDO::getName, BusinessSubSampleExtendRespVO::getWarehouseName)
.eqIfPresent(BusinessSubSampleDO::getBusinessBaseSampleId, reqVO.getBusinessBaseSampleId())
.eqIfPresent(BusinessSubSampleDO::getBusinessSubParentSampleId, reqVO.getBusinessSubParentSampleId())
.eqIfPresent(BusinessSubSampleDO::getConfigSubSampleId, reqVO.getConfigSubSampleId())

View File

@@ -31,6 +31,7 @@ import com.zt.plat.module.qms.core.sampleflow.SampleFlowDefinition;
import com.zt.plat.module.qms.core.sampleflow.SampleFlowNode;
import com.zt.plat.module.qms.enums.QmsCommonConstant;
import cn.hutool.core.collection.CollUtil;
import jakarta.annotation.Resource;
@LiteflowComponent(id = "sampleSubProcessUpdateCmp", name = "子样流程节点更新")
@@ -66,6 +67,9 @@ public class SampleSubProcessUpdateCmp extends NodeComponent {
List<BusinessAssayTaskDataDO> businessAssayTaskDataList = sampleFlowContext.getBusinessAssayTaskDataList();
//查询历史交接记录
List<BusinessHandoverRecordSubDO> businessHandoverRecordSubDOList = businessHandoverRecordSubMapper.selectByBusinessSubSampleIds(sampleIdList);
//查询子样分析班组
List<BusinessSubSampleAnalysisGroupDO> businessSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubSampleIds(sampleIdList);
for (BusinessSubSampleDO businessSubSample : busSubCsampleList) {
ConfigSampleFlowDO configSampleFlow = configSampleFlowService.getConfigSampleFlow(businessSubSample.getConfigSampleFlowId());
String configSampleFlowContent = configSampleFlow.getContent();
@@ -90,6 +94,14 @@ public class SampleSubProcessUpdateCmp extends NodeComponent {
Boolean hasSubSimpleCodeRule = configSubSample != null && StringUtils.isNotBlank(configSubSample.getSimpleCodeRule());
Boolean hasSubSampleEncrypt = businessHandoverRecordSubDOList.stream().anyMatch(m -> QmsCommonConstant.FlOW_NODE_SAMPLE_ENCRYPT.equals(m.getSampleFlowNodeKey()));
if (CollUtil.isNotEmpty(businessSubSampleAnalysisGroupDOList)) {
List<BusinessSubSampleAnalysisGroupDO> curSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupDOList.stream().filter(f -> f.getBusinessSubSampleId().equals(businessSubSample.getId())).collect(Collectors.toList());
Boolean hasAllDeptAnalyzed = curSubSampleAnalysisGroupDOList.stream().allMatch(m -> "已完成".equals(m.getSampleStatus()));
Boolean hasCurDeptAnalyzed = curSubSampleAnalysisGroupDOList.stream().filter(f -> f.getAssayDepartmentId().equals(loginUser.getVisitDeptId())).allMatch(m -> "已完成".equals(m.getSampleStatus()));
context.put("hasAllDeptAnalyzed", hasAllDeptAnalyzed);
context.put("hasCurDeptAnalyzed", hasCurDeptAnalyzed);
}
context.put("hasSubSimpleCodeRule", hasSubSimpleCodeRule);
context.put("hasSubSampleEncrypt", hasSubSampleEncrypt);
try {
@@ -106,7 +118,7 @@ public class SampleSubProcessUpdateCmp extends NodeComponent {
}
}
businessSubSample.setNextSampleFlowNode(nextFlowNode.getNextFlowNodeName());
businessSubSample.setSampleFlowNodeKey(nextFlowNode.getNodeKey());
businessSubSample.setSampleFlowNodeTime(currentDateTime);
@@ -120,13 +132,13 @@ public class SampleSubProcessUpdateCmp extends NodeComponent {
//如果是班组收样,需要更新分析班组表
if (QmsCommonConstant.FLOW_NODE_TEAM_RECEIVE.equals(currentSampleFlowKey)) {
List<BusinessSubSampleAnalysisGroupDO> businessSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubSampleIdsAndAssayDepartmentId(sampleIdList, loginUser.getVisitDeptId());
for (BusinessSubSampleAnalysisGroupDO businessSubSampleAnalysisGroupDO : businessSubSampleAnalysisGroupDOList) {
List<BusinessSubSampleAnalysisGroupDO> curDeptSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupDOList.stream().filter(f -> f.getAssayDepartmentId().equals(loginUser.getVisitDeptId())).collect(Collectors.toList());
for (BusinessSubSampleAnalysisGroupDO businessSubSampleAnalysisGroupDO : curDeptSubSampleAnalysisGroupDOList) {
businessSubSampleAnalysisGroupDO.setSampleReceiveTime(currentDateTime);
businessSubSampleAnalysisGroupDO.setSampleReceiver(loginRealname);
businessSubSampleAnalysisGroupDO.setSampleStatus("已收样");
}
sampleFlowContext.setBusinessSubSampleAnalysisGroupList(businessSubSampleAnalysisGroupDOList);
sampleFlowContext.setBusinessSubSampleAnalysisGroupList(curDeptSubSampleAnalysisGroupDOList);
}
}

View File

@@ -30,6 +30,7 @@ import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import com.zt.plat.framework.common.exception.ServiceException;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleDO;
@@ -191,7 +192,16 @@ public class BusinessSubSampleServiceImpl implements BusinessSubSampleService {
@Override
public BusinessSubSampleExtendRespVO getBySampleCodeAndFlowKey(@Valid BusinessSubSampleReqVO reqVO) {
return businessSubSampleMapper.getBySampleCodeAndFlowKey(reqVO);
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
BusinessSubSampleExtendRespVO subSample = businessSubSampleMapper.getBySampleCodeAndFlowKey(reqVO);
if (QmsCommonConstant.FLOW_NODE_TEAM_RECEIVE.equals(reqVO.getSampleFlowNodeKey())) {
List<BusinessSubSampleAnalysisGroupDO> businessSubSampleAnalysisGroupList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubSampleId(subSample.getId());
BusinessSubSampleAnalysisGroupDO receiveSample = businessSubSampleAnalysisGroupList.stream().filter(f -> "已收样".equals(f.getSampleStatus()) && !f.getAssayDepartmentId().equals(loginUser.getVisitDeptId())).findFirst().orElse(null);
if (receiveSample != null) {
throw new ServiceException(1_032_100_000, "当前样品在" + receiveSample.getAssayDepartmentName() + ",不允许收样!");
}
}
return subSample;
}
//样品归库

View File

@@ -4,6 +4,7 @@ import java.util.List;
import com.alibaba.fastjson2.JSONObject;
import com.zt.plat.module.qms.business.bus.controller.vo.BatchResultDataReportingReqVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupReqVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupRespVO;
import com.zt.plat.module.qms.business.bus.controller.vo.ModifySampleResultReportingReqVO;
import com.zt.plat.module.qms.business.bus.controller.vo.RecheckSubSampleParentCreateReqVO;
@@ -11,7 +12,7 @@ import com.zt.plat.module.qms.business.bus.controller.vo.RecheckSubSampleParentM
public interface SampleResultReportingService {
List<BusinessSubParentSampleAssessmentGroupRespVO> getUnReportMethodGroupList();
List<BusinessSubParentSampleAssessmentGroupRespVO> getUnReportMethodGroupList(BusinessSubParentSampleAssessmentGroupReqVO reqVO);
JSONObject getSampleResultReportingList(Long configAssayMethodId);

View File

@@ -18,9 +18,11 @@ 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.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
import com.zt.plat.module.qms.business.bus.controller.vo.BatchResultDataReportingReqVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentExtendRespVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupReqVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupRespVO;
import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubSampleAssessmentExtendRespVO;
import com.zt.plat.module.qms.business.bus.controller.vo.ModifySampleResultReportingReqVO;
@@ -36,6 +38,7 @@ import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataD
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessBaseSampleDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubParentSampleAssessmentDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubParentSampleDO;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleAnalysisGroupDO;
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.BusinessSubSampleParentRecheckDO;
@@ -46,9 +49,12 @@ import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDataMappe
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessBaseSampleMapper;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubParentSampleAssessmentMapper;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubParentSampleMapper;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleAnalysisGroupMapper;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleAssessmentMapper;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleMapper;
import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleParentRecheckMapper;
import com.zt.plat.module.qms.business.bus.liteflow.param.SampleFlowInfo;
import com.zt.plat.module.qms.business.bus.liteflow.param.SampleFlowParam;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigAssayMethodProjectExtendRespVO;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigAssayMethodRespVO;
import com.zt.plat.module.qms.business.config.controller.vo.ConfigProjectExtendRespVO;
@@ -97,8 +103,8 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
@Override
public List<BusinessSubParentSampleAssessmentGroupRespVO> getUnReportMethodGroupList() {
List<BusinessSubParentSampleAssessmentGroupRespVO> list = businessSubParentSampleAssessmentMapper.selectUnReportMethodGroupList();
public List<BusinessSubParentSampleAssessmentGroupRespVO> getUnReportMethodGroupList(BusinessSubParentSampleAssessmentGroupReqVO reqVO) {
List<BusinessSubParentSampleAssessmentGroupRespVO> list = businessSubParentSampleAssessmentMapper.selectUnReportMethodGroupList(reqVO);
return list;
}
@@ -401,6 +407,12 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
@Resource
private BusinessBaseSampleMapper businessBaseSampleMapper;
@Resource
private BusinessSubSampleAnalysisGroupMapper businessSubSampleAnalysisGroupMapper;
@Resource
private SampleFlowService sampleFlowService;
@Override
@Transactional(rollbackFor = Exception.class)
public void batchResultDataReporting(BatchResultDataReportingReqVO reqVO) {
@@ -408,6 +420,10 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
//当前登录用户昵称
String nickName = SecurityFrameworkUtils.getLoginUserNickname();
List<BusinessSubSampleDO> updateBusinessSubSampleDOList = new ArrayList<>();
List<BusinessSubSampleAnalysisGroupDO> updateBusinessSubSampleAnalysisGroupDOList = new ArrayList<>();
List<BusinessAssayReportDataDO> saveBusinessAssayReportDataDOList = new ArrayList<>();
List<BusinessAssayReportDataDO> updateBusinessAssayReportDataDOList = new ArrayList<>();
@@ -415,6 +431,7 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
List<BusinessSubParentSampleDO> businessSubParentSampleDOList = businessSubParentSampleMapper.selectByIds(reqVO.getBusinessSubParentSampleIds());
//循环分样主样数据
for (BusinessSubParentSampleDO businessSubParentSampleDO : businessSubParentSampleDOList) {
BusinessBaseSampleDO businessBaseSampleDO = businessBaseSampleMapper.selectById(businessSubParentSampleDO.getBusinessBaseSampleId());
@@ -435,7 +452,7 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
//根据检测方法查询字段配置
List<ConfigProjectExtendRespVO> configProjectList = configProjectMapper.selectByConfigAssayMethodId(reqVO.getConfigAssayMethodId());
//处理报表数据
for (ConfigSampleReportExtendRespVO configSampleReport : configSampleReportList) {
BusinessAssayReportDataDO businessAssayReportDataDO = businessAssayReportDataDOList.stream().filter(f -> f.getConfigReportTypeId().equals(configSampleReport.getConfigReportTypeId()) && f.getConfigSampleReportId().equals(configSampleReport.getId())).findFirst().orElse(null);
if (businessAssayReportDataDO == null) {
@@ -506,6 +523,35 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
}
}
//处理子样分析任务数据
List<BusinessAssayTaskDataDO> businessAssayTaskDataDOList = businessAssayTaskDataMapper.selectByBusinessSubParentSampleIds(reqVO.getBusinessSubParentSampleIds());
List<Long> businessSubSampleIdList = businessAssayTaskDataDOList.stream().map(m -> m.getBusinessSubSampleId()).distinct().collect(Collectors.toList());
List<BusinessSubSampleDO> businessSubSampleDOList = businessSubSampleMapper.selectByIds(businessSubSampleIdList);
List<BusinessSubSampleAnalysisGroupDO> businessSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubParentSampleIds(reqVO.getBusinessSubParentSampleIds());
//根据子样id进行分组
Map<Long, List<BusinessAssayTaskDataDO>> businessAssayTaskDataDOMap = businessAssayTaskDataDOList.stream().collect(Collectors.groupingBy(BusinessAssayTaskDataDO::getBusinessSubSampleId));
for (Map.Entry<Long, List<BusinessAssayTaskDataDO>> businessAssayTaskDataDOEntry : businessAssayTaskDataDOMap.entrySet()) {
Long businessSubSampleId = businessAssayTaskDataDOEntry.getKey();
//子样下的分析任务
List<BusinessAssayTaskDataDO> valList = businessAssayTaskDataDOEntry.getValue();
//查询子样
BusinessSubSampleDO businessSubSampleDO = businessSubSampleDOList.stream().filter(f -> businessSubSampleId.equals(f.getId())).findFirst().orElse(null);
//查询子样下的分析班组
List<BusinessSubSampleAnalysisGroupDO> subSampleAnalysisGroupList = businessSubSampleAnalysisGroupDOList.stream().filter(f -> f.getBusinessSubSampleId().equals(businessSubSampleId)).collect(Collectors.toList());
for (BusinessSubSampleAnalysisGroupDO subSampleAnalysisGroupDO : subSampleAnalysisGroupList) {
long count = valList.stream().filter(f -> f.getIsReported().equals(QmsCommonConstant.NO) && f.getAssayDepartmentId().equals(subSampleAnalysisGroupDO.getAssayDepartmentId())).count();
if (count > 0) {//如果还存在未上报的数据,则继续
continue;
}
subSampleAnalysisGroupDO.setSampleStatus("已完成");//当前班组分析已完成
updateBusinessSubSampleAnalysisGroupDOList.add(subSampleAnalysisGroupDO);
updateBusinessSubSampleDOList.add(businessSubSampleDO);
}
}
if (saveBusinessAssayReportDataDOList.size() > 0) {
businessAssayReportDataMapper.insertBatch(saveBusinessAssayReportDataDOList);
}
@@ -513,6 +559,11 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
businessAssayReportDataMapper.updateBatch(updateBusinessAssayReportDataDOList);
}
//更新分析班组
if (updateBusinessSubSampleAnalysisGroupDOList.size()> 0) {
businessSubSampleAnalysisGroupMapper.updateBatch(updateBusinessSubSampleAnalysisGroupDOList);
}
List<Long> businessSubParentSampleAssessmentIdList = businessSubParentSampleAssessmentExtendList.stream().map(m -> m.getId()).collect(Collectors.toList());
businessSubParentSampleAssessmentMapper.update(new LambdaUpdateWrapper<BusinessSubParentSampleAssessmentDO>()
@@ -520,6 +571,15 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
.set(BusinessSubParentSampleAssessmentDO::getReporter, nickName)
.set(BusinessSubParentSampleAssessmentDO::getReportTime, LocalDateTime.now())
.in(BusinessSubParentSampleAssessmentDO::getId, businessSubParentSampleAssessmentIdList));
if (updateBusinessSubSampleDOList.size() > 0) {
SampleFlowParam sampleFlowParam = new SampleFlowParam();
sampleFlowParam.setCurrentSampleFlowKey(QmsCommonConstant.FLOW_NODE_ANALYSIS);
sampleFlowParam.setSampleSourceType(2);
sampleFlowParam.setSampleFlowInfoList(BeanUtils.toBean(updateBusinessSubSampleDOList, SampleFlowInfo.class));
sampleFlowService.sampleFlow(sampleFlowParam);
}
}
@Override

View File

@@ -78,7 +78,7 @@ import gridreport.jni.Report;
@RequestMapping("/qms/config-report-template")
@Validated
@Slf4j
public class ConfigReportTemplateController implements BusinessControllerMarker {
public class ConfigReportTemplateController {
public static final String WR_PREFIX = "_WR_";

View File

@@ -29,7 +29,7 @@
<if test="reqVO.sampleFlowNodeKey != null and reqVO.sampleFlowNodeKey != ''">
AND tbatd.SMP_FLW_NDE_KY = #{reqVO.sampleFlowNodeKey}
</if>
<if test="reqVO.sampleFlowNodeTime[0] != null and reqVO.sampleFlowNodeTime[0] != null">
<if test="reqVO.sampleFlowNodeTime[0] != null and reqVO.sampleFlowNodeTime[1] != null">
AND tbatd.SMP_FLW_NDE_TM #{reqVO.sampleFlowNodeTime[0]} and #{reqVO.sampleFlowNodeTime[1]}
</if>
GROUP BY
@@ -39,20 +39,40 @@
<select id="selectUnAuditTaskGroupList" resultType="com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayTaskDataGroupRespVO">
SELECT
tbatd.CFG_ASY_MTHD_ID AS configAssayMethodId,
tbatd.ASY_TP AS assayType,
t.CFG_ASY_MTHD_ID AS configAssayMethodId,
t.ASY_TP AS assayType,
tcam.NAME AS configAssayMethodName,
COUNT(tbatd.ID) AS sampleTaskCount
COUNT(t.BSN_SB_SMP_ID) AS sampleTaskCount
FROM
T_BSN_ASY_TSK_DAT tbatd
(
SELECT
tbssa.TENANT_ID ,
tbssa.BSN_SB_PRN_SMP_ID ,
tbssa.BSN_SB_SMP_ID ,
tbssa.CFG_ASY_MTHD_ID,
tbssa.ASY_TP
FROM
T_BSN_SB_SMP_ASMT tbssa
WHERE
tbssa.DELETED = 0
AND tbssa.IS_RPOD = 0
GROUP BY
tbssa.TENANT_ID ,
tbssa.BSN_SB_PRN_SMP_ID ,
tbssa.BSN_SB_SMP_ID ,
tbssa.CFG_ASY_MTHD_ID,
tbssa.ASY_TP
) t
LEFT JOIN T_CFG_ASY_MTHD tcam ON
tbatd.CFG_ASY_MTHD_ID = tcam.ID
WHERE
tbatd.SMP_FLW_NDE_KY = 'flw_analysis'
AND tbatd.DELETED = 0
t.CFG_ASY_MTHD_ID = tcam.ID
AND t.TENANT_ID = tcam.TENANT_ID
WHERE tcam.DELETED = 0
<if test="reqVO.assayDepartmentId != null and reqVO.assayDepartmentId != ''">
AND tcam.ASY_DEPT_ID = #{reqVO.assayDepartmentId}
</if>
GROUP BY
tbatd.CFG_ASY_MTHD_ID,
tbatd.ASY_TP,
t.CFG_ASY_MTHD_ID,
t.ASY_TP,
tcam.NAME
</select>
@@ -83,10 +103,9 @@
<if test="reqVO.sampleFlowNodeKey != null and reqVO.sampleFlowNodeKey != ''">
AND tbatd.SMP_FLW_NDE_KY = #{reqVO.sampleFlowNodeKey}
</if>
<if test="reqVO.sampleFlowNodeTime[0] != null and reqVO.sampleFlowNodeTime[0] != null">
<if test="reqVO.sampleFlowNodeTime[0] != null and reqVO.sampleFlowNodeTime[1] != null">
AND tbatd.SMP_FLW_NDE_TM #{reqVO.sampleFlowNodeTime[0]} and #{reqVO.sampleFlowNodeTime[1]}
</if>
AND tbatd.SMP_FLW_NDE_KY = 'flw_analysis'
GROUP BY tbss.ID ,
tbss.SMP_NAME ,
tbss.SMP_CD ,

View File

@@ -13,6 +13,8 @@
SELECT
tbspsa.CFG_ASY_MTHD_ID AS configAssayMethodId,
tcam.NAME AS configAssayMethodName,
tcam.ASY_DEPT_ID AS assayDepartmentId,
tcam.ASY_DEPT_NAME AS assayDepartmentName,
COUNT(DISTINCT tbspsa.BSN_SB_PRN_SMP_ID) AS sampleCount
FROM
T_BSN_SB_PRN_SMP_ASMT tbspsa
@@ -21,9 +23,17 @@
WHERE
tbspsa.DELETED = 0
AND tbspsa.IS_RPOD = 0
<if test="reqVO.configAssayMethodName != null and reqVO.configAssayMethodName != ''">
AND tcam.NAME like '%' || #{reqVO.assayDepartmentId} || '%'
</if>
<if test="reqVO.assayDepartmentId != null and reqVO.assayDepartmentId != ''">
AND tcam.ASY_DEPT_ID = #{reqVO.assayDepartmentId}
</if>
GROUP BY
tbspsa.CFG_ASY_MTHD_ID,
tcam.NAME
tcam.NAME,
tcam.ASY_DEPT_ID ,
tcam.ASY_DEPT_NAME
</select>
<select id="selectNoReportSubParentSampleAssessment" resultType="com.zt.plat.module.qms.business.bus.controller.vo.NoReportSubParentSampleAssessmentRespVO" >