feat:qms阶段性提交

This commit is contained in:
FCL
2026-01-13 11:21:28 +08:00
parent ccfa341429
commit 34277c921a
10 changed files with 326 additions and 274 deletions

View File

@@ -88,6 +88,11 @@ public interface BusinessAssayTaskDetailMapper extends BaseMapperX<BusinessAssay
.eqIfPresent(BusinessAssayTaskDetailDO::getBusinessAssayTaskId, businessAssayTaskId)); .eqIfPresent(BusinessAssayTaskDetailDO::getBusinessAssayTaskId, businessAssayTaskId));
} }
default Long selectCountByBusinessAssayTaskId(Long businessAssayTaskId) {
return selectCount(new LambdaQueryWrapperX<BusinessAssayTaskDetailDO>()
.eqIfPresent(BusinessAssayTaskDetailDO::getBusinessAssayTaskId, businessAssayTaskId));
}
/** /**
* 物理批量删除删除 * 物理批量删除删除
* @param idList * @param idList

View File

@@ -75,12 +75,19 @@ public interface BusinessSubParentSampleAssessmentProjectMapper extends BaseMapp
.eq(BusinessSubParentSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId)); .eq(BusinessSubParentSampleAssessmentProjectDO::getConfigAssayMethodId, configAssayMethodId));
} }
default List<BusinessSubParentSampleAssessmentProjectDO> selectByBusinessSubParentSampleAssessmentIdAndDictionaryProjectIds(Long businessSubParentSampleAssessmentId, List<Long> recheckDictionaryProjectIdList) { default List<BusinessSubParentSampleAssessmentProjectDO> selectByBusinessSubParentSampleAssessmentIdAndDictionaryProjectIds(Long businessSubParentSampleAssessmentId, List<Long> recheckDictionaryProjectIdList) {
return selectList(new LambdaQueryWrapper<BusinessSubParentSampleAssessmentProjectDO>() return selectList(new LambdaQueryWrapper<BusinessSubParentSampleAssessmentProjectDO>()
.eq(BusinessSubParentSampleAssessmentProjectDO::getBusinessSubParentSampleAssessmentId, businessSubParentSampleAssessmentId) .eq(BusinessSubParentSampleAssessmentProjectDO::getBusinessSubParentSampleAssessmentId, businessSubParentSampleAssessmentId)
.in(BusinessSubParentSampleAssessmentProjectDO::getDictionaryProjectId, recheckDictionaryProjectIdList)); .in(BusinessSubParentSampleAssessmentProjectDO::getDictionaryProjectId, recheckDictionaryProjectIdList));
} }
default List<BusinessSubParentSampleAssessmentProjectDO> selectByBusinessSubParentSampleAssessmentId(Long businessSubParentSampleAssessmentId) {
return selectList(new LambdaQueryWrapper<BusinessSubParentSampleAssessmentProjectDO>()
.eq(BusinessSubParentSampleAssessmentProjectDO::getBusinessSubParentSampleAssessmentId, businessSubParentSampleAssessmentId));
}
List<NoReportSubParentSampleAssessmentRespVO> selectNoReportSubParentSampleAssessment(@Param("reqVO") BusinessSubParentSampleAssessmentGroupReqVO reqVO); List<NoReportSubParentSampleAssessmentRespVO> selectNoReportSubParentSampleAssessment(@Param("reqVO") BusinessSubParentSampleAssessmentGroupReqVO reqVO);
List<RecheckSubSampleParentMethodRespVO> getRecheckAssayMethodList(@Param("baseSampleId") Long baseSampleId, @Param("businessSubParentSampleId") Long businessSubParentSampleId, @Param("configAssayMethodId") Long configAssayMethodId, @Param("assayDepartmentId") Long assayDepartmentId); List<RecheckSubSampleParentMethodRespVO> getRecheckAssayMethodList(@Param("baseSampleId") Long baseSampleId, @Param("businessSubParentSampleId") Long businessSubParentSampleId, @Param("configAssayMethodId") Long configAssayMethodId, @Param("assayDepartmentId") Long assayDepartmentId);

View File

@@ -759,8 +759,8 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic
} }
//如果为自动上报 //如果为自动上报, 并且上报状态为待上报的
if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleMethodDO.getResultTreatmentWay())) { if (QmsCommonConstant.AUTOMATIC.equals(configSubSampleMethodDO.getResultTreatmentWay()) && QmsCommonConstant.ASMT_PENDING_REPORT.equals(businessSubSampleAssessmentDO.getReportedStatus())) {
automaticBusinessSubSampleIdList.add(businessSubSampleId); automaticBusinessSubSampleIdList.add(businessSubSampleId);
} }

View File

@@ -1366,10 +1366,22 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService {
businessAssayTaskDataDO.setExternalInfomation(JSON.toJSONString(businessAssayTaskDataExternalInfomation)); businessAssayTaskDataDO.setExternalInfomation(JSON.toJSONString(businessAssayTaskDataExternalInfomation));
} }
//任务id
Long businessAssayTaskId = businessAssayTaskDetailList.stream().map(m -> m.getBusinessAssayTaskId()).distinct().findFirst().orElse(null);
//查询任务下的明细
Long taskCount = businessAssayTaskDetailMapper.selectCountByBusinessAssayTaskId(businessAssayTaskId);
if (businessAssayTaskDetailList.size() == taskCount.intValue()) {//如果回退所有样品,则作废任务
BusinessAssayTaskDO businessAssayTaskDO = businessAssayTaskMapper.selectById(businessAssayTaskId);
businessAssayTaskDO.setTaskAssignStatus(QmsCommonConstant.VOID);
businessAssayTaskMapper.updateById(businessAssayTaskDO);
}
//明细处理
if (CollUtil.isNotEmpty(businessAssayTaskDetailList)) { if (CollUtil.isNotEmpty(businessAssayTaskDetailList)) {
businessAssayTaskDetailMapper.updateBatch(businessAssayTaskDetailList); businessAssayTaskDetailMapper.updateBatch(businessAssayTaskDetailList);
} }
//任务明细处理
if (CollUtil.isNotEmpty(businessAssayTaskDataDOList)) { if (CollUtil.isNotEmpty(businessAssayTaskDataDOList)) {
businessAssayTaskDataMapper.updateBatch(businessAssayTaskDataDOList); businessAssayTaskDataMapper.updateBatch(businessAssayTaskDataDOList);
} }

View File

@@ -199,7 +199,9 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
noReportSubParentSampleAssessmentMap.put(businessSubParentSampleAssessmentProjectDO.getSimpleName(), assessmentValue); noReportSubParentSampleAssessmentMap.put(businessSubParentSampleAssessmentProjectDO.getSimpleName(), assessmentValue);
businessSubParentSampleAssessmentProjectIds.append(businessSubParentSampleAssessmentProjectDO.getId()).append(","); businessSubParentSampleAssessmentProjectIds.append(businessSubParentSampleAssessmentProjectDO.getId()).append(",");
} }
if (businessSubParentSampleAssessmentProjectIds.length() > 0) {
businessSubParentSampleAssessmentProjectIds.delete(businessSubParentSampleAssessmentProjectIds.length() -1, businessSubParentSampleAssessmentProjectIds.length()); businessSubParentSampleAssessmentProjectIds.delete(businessSubParentSampleAssessmentProjectIds.length() -1, businessSubParentSampleAssessmentProjectIds.length());
}
noReportSubParentSampleAssessmentMap.put("businessSubParentSampleAssessmentProjectIds", businessSubParentSampleAssessmentProjectIds.toString()); noReportSubParentSampleAssessmentMap.put("businessSubParentSampleAssessmentProjectIds", businessSubParentSampleAssessmentProjectIds.toString());
noReportSubParentSampleAssessmentMap.put("businessSubParentSampleAssessmentId", noReportSubParentSampleAssessmentRespVO.getBusinessSubParentSampleAssessmentId()); noReportSubParentSampleAssessmentMap.put("businessSubParentSampleAssessmentId", noReportSubParentSampleAssessmentRespVO.getBusinessSubParentSampleAssessmentId());
dataList.add(noReportSubParentSampleAssessmentMap); dataList.add(noReportSubParentSampleAssessmentMap);
@@ -341,15 +343,15 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
BusinessSubParentSampleAssessmentDO olBusinessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectById(reqVO.getBusinessSubParentSampleAssessmentId()); BusinessSubParentSampleAssessmentDO olBusinessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectById(reqVO.getBusinessSubParentSampleAssessmentId());
//查询分样主样判定 //查询分样主样判定
BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodId(reqVO.getBusinessSubParentSampleId(), reqVO.getConfigAssayMethodId()); //BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodId(reqVO.getBusinessSubParentSampleId(), reqVO.getConfigAssayMethodId());
if (businessSubParentSampleAssessmentDO == null) { if (olBusinessSubParentSampleAssessmentDO == null) {
throw new ServiceException(1_032_050_000, "结果报送数据未找到"); throw new ServiceException(1_032_050_000, "结果报送数据未找到");
} }
//复检的检测项目 //复检的检测项目
List<RecheckSubSampleParentMethodRespVO> recheckProjectList = reqVO.getRecheckProjectList(); List<RecheckSubSampleParentMethodRespVO> recheckProjectList = reqVO.getRecheckProjectList();
List<Long> recheckDictionaryProjectIdList = recheckProjectList.stream().map(m -> m.getDictionaryProjectId()).collect(Collectors.toList()); List<Long> recheckDictionaryProjectIdList = recheckProjectList.stream().map(m -> m.getDictionaryProjectId()).collect(Collectors.toList());
List<BusinessSubParentSampleAssessmentProjectDO> businessSubParentSampleAssessmentProjectDOList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleAssessmentIdAndDictionaryProjectIds(businessSubParentSampleAssessmentDO.getId(), recheckDictionaryProjectIdList); List<BusinessSubParentSampleAssessmentProjectDO> businessSubParentSampleAssessmentProjectDOList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleAssessmentIdAndDictionaryProjectIds(olBusinessSubParentSampleAssessmentDO.getId(), recheckDictionaryProjectIdList);
for (BusinessSubParentSampleAssessmentProjectDO businessSubParentSampleAssessmentProjectDO : businessSubParentSampleAssessmentProjectDOList) { for (BusinessSubParentSampleAssessmentProjectDO businessSubParentSampleAssessmentProjectDO : businessSubParentSampleAssessmentProjectDOList) {
businessSubParentSampleAssessmentProjectDO.setIsReported(QmsCommonConstant.NO); businessSubParentSampleAssessmentProjectDO.setIsReported(QmsCommonConstant.NO);
businessSubParentSampleAssessmentProjectDO.setAssessmentStatus(QmsCommonConstant.VOID); businessSubParentSampleAssessmentProjectDO.setAssessmentStatus(QmsCommonConstant.VOID);
@@ -410,7 +412,8 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
newBusinessSubSampleParentRetestDOList.add(businessSubSampleParentRetestDO ); newBusinessSubSampleParentRetestDOList.add(businessSubSampleParentRetestDO );
} }
BusinessSubSampleAssessmentDO newBusinessSubSampleAssessmentDO = newSubSampleAssessmentDOList.stream().filter(f -> f.getBusinessSubParentSampleAssessmentId().equals(businessSubParentSampleAssessmentDO.getId())).findFirst().orElse(null); Long newBusinessSubParentSampleAssessmentId = newBusinessSubParentSampleAssessmentDO.getId();
BusinessSubSampleAssessmentDO newBusinessSubSampleAssessmentDO = newSubSampleAssessmentDOList.stream().filter(f -> f.getBusinessSubParentSampleAssessmentId().equals(newBusinessSubParentSampleAssessmentId)).findFirst().orElse(null);
if (newBusinessSubSampleAssessmentDO == null) { if (newBusinessSubSampleAssessmentDO == null) {
newBusinessSubSampleAssessmentDO = new BusinessSubSampleAssessmentDO(); newBusinessSubSampleAssessmentDO = new BusinessSubSampleAssessmentDO();
newBusinessSubSampleAssessmentDO.setId(IdWorker.getId()); newBusinessSubSampleAssessmentDO.setId(IdWorker.getId());
@@ -493,6 +496,11 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe
} }
} }
List<BusinessSubParentSampleAssessmentProjectDO> allBusinessSubParentSampleAssessmentProjectList = businessSubParentSampleAssessmentProjectMapper.selectByBusinessSubParentSampleAssessmentId(olBusinessSubParentSampleAssessmentDO.getId());
if (allBusinessSubParentSampleAssessmentProjectList.size() == businessSubParentSampleAssessmentProjectDOList.size()) {//如果复测项目都全部完成,则删除旧的结果报送
businessSubParentSampleAssessmentMapper.deleteById(olBusinessSubParentSampleAssessmentDO.getId());
}
if (CollUtil.isNotEmpty(businessSubParentSampleAssessmentProjectDOList)) { if (CollUtil.isNotEmpty(businessSubParentSampleAssessmentProjectDOList)) {
businessSubParentSampleAssessmentProjectMapper.updateBatch(businessSubParentSampleAssessmentProjectDOList); businessSubParentSampleAssessmentProjectMapper.updateBatch(businessSubParentSampleAssessmentProjectDOList);
} }

View File

@@ -1,42 +1,42 @@
package com.zt.plat.module.qms.framework.mybatis; //package com.zt.plat.module.qms.framework.mybatis;
//
//
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; //import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor; //import com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; //import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
import com.zt.plat.module.qms.framework.datapermission.QMSMultiDataPermissionHandler; //import com.zt.plat.module.qms.framework.datapermission.QMSMultiDataPermissionHandler;
import jakarta.annotation.PostConstruct; //import jakarta.annotation.PostConstruct;
import org.aspectj.lang.annotation.After; //import org.aspectj.lang.annotation.After;
import org.springframework.beans.factory.SmartInitializingSingleton; //import org.springframework.beans.factory.SmartInitializingSingleton;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
//
import java.util.List; //import java.util.List;
//
//@Configuration //@Configuration
public class QMSDataPermissionConfig implements SmartInitializingSingleton { //public class QMSDataPermissionConfig implements SmartInitializingSingleton {
@Autowired // @Autowired
private MybatisPlusInterceptor mybatisPlusInterceptor; // private MybatisPlusInterceptor mybatisPlusInterceptor;
//
@Autowired // @Autowired
private QMSMultiDataPermissionHandler qmsMultiDataPermissionHandler; // private QMSMultiDataPermissionHandler qmsMultiDataPermissionHandler;
//
@Override // @Override
public void afterSingletonsInstantiated() { // public void afterSingletonsInstantiated() {
List<InnerInterceptor> interceptors = mybatisPlusInterceptor.getInterceptors(); // List<InnerInterceptor> interceptors = mybatisPlusInterceptor.getInterceptors();
// 避免重复注册 // // 避免重复注册
boolean exists = interceptors.stream() // boolean exists = interceptors.stream()
.filter(i -> i instanceof DataPermissionInterceptor) // .filter(i -> i instanceof DataPermissionInterceptor)
.map(i -> (DataPermissionInterceptor) i) // .map(i -> (DataPermissionInterceptor) i)
.anyMatch(i -> i.getDataPermissionHandler() == qmsMultiDataPermissionHandler); // .anyMatch(i -> i.getDataPermissionHandler() == qmsMultiDataPermissionHandler);
if (!exists) { // if (!exists) {
mybatisPlusInterceptor.addInnerInterceptor(new DataPermissionInterceptor(qmsMultiDataPermissionHandler)); // mybatisPlusInterceptor.addInnerInterceptor(new DataPermissionInterceptor(qmsMultiDataPermissionHandler));
} // }
} // }
//
// @PostConstruct //// @PostConstruct
// public void addDataPermissionInterceptor() { //// public void addDataPermissionInterceptor() {
////
//// }
// //
//} //}
}

View File

@@ -1,5 +1,7 @@
package com.zt.plat.module.qms.resource.clientManage.controller.admin; package com.zt.plat.module.qms.resource.clientManage.controller.admin;
import com.zt.plat.module.infra.api.file.FileApi;
import com.zt.plat.module.infra.api.file.dto.FileRespDTO;
import com.zt.plat.module.qms.resource.clientManage.controller.vo.VersionManagementPageReqVO; import com.zt.plat.module.qms.resource.clientManage.controller.vo.VersionManagementPageReqVO;
import com.zt.plat.module.qms.resource.clientManage.controller.vo.VersionManagementRespVO; import com.zt.plat.module.qms.resource.clientManage.controller.vo.VersionManagementRespVO;
import com.zt.plat.module.qms.resource.clientManage.controller.vo.VersionManagementSaveReqVO; import com.zt.plat.module.qms.resource.clientManage.controller.vo.VersionManagementSaveReqVO;
@@ -55,6 +57,9 @@ public class VersionManagementController extends AbstractFileUploadController im
@Resource @Resource
private VersionManagementService systemVersionManagementService; private VersionManagementService systemVersionManagementService;
@Resource
private FileApi fileApi;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建客户端版本管理") @Operation(summary = "创建客户端版本管理")
@PreAuthorize("@ss.hasPermission('qms:version-management:create')") @PreAuthorize("@ss.hasPermission('qms:version-management:create')")
@@ -138,6 +143,14 @@ public class VersionManagementController extends AbstractFileUploadController im
String log = ""; String log = "";
if (pageResult.getList().size() != 0) { if (pageResult.getList().size() != 0) {
VersionManagementDO versionManagementDO = pageResult.getList().get(0); VersionManagementDO versionManagementDO = pageResult.getList().get(0);
//处理文件下载url
Long fileId = Long.parseLong(versionManagementDO.getDownloadId());
CommonResult<FileRespDTO> fileRet = fileApi.getFileInfo(fileId);
FileRespDTO file = fileRet.getData();
if(fileRet.isSuccess() && file != null) {
versionManagementDO.setDownloadUrl(file.getUrl());
}
version = versionManagementDO.getCurrentVersion(); version = versionManagementDO.getCurrentVersion();
minVersion = versionManagementDO.getMinimumVersion(); minVersion = versionManagementDO.getMinimumVersion();
url = versionManagementDO.getDownloadUrl(); url = versionManagementDO.getDownloadUrl();
@@ -165,6 +178,13 @@ public class VersionManagementController extends AbstractFileUploadController im
return CommonResult.error(400, "没有可更新版本"); return CommonResult.error(400, "没有可更新版本");
} }
VersionManagementDO versionManagementDO = pageResult.getList().get(0); VersionManagementDO versionManagementDO = pageResult.getList().get(0);
//处理文件下载url
Long fileId = Long.parseLong(versionManagementDO.getDownloadId());
CommonResult<FileRespDTO> fileRet = fileApi.getFileInfo(fileId);
FileRespDTO file = fileRet.getData();
if(fileRet.isSuccess() && file != null) {
versionManagementDO.setDownloadUrl(file.getUrl());
}
return success(BeanUtils.toBean(versionManagementDO, VersionManagementRespVO.class)); return success(BeanUtils.toBean(versionManagementDO, VersionManagementRespVO.class));
} }

View File

@@ -21,7 +21,7 @@ import java.util.Map;
@Mapper @Mapper
public interface DeviceInfomationMapper extends BaseMapperX<DeviceInfomationDO> { public interface DeviceInfomationMapper extends BaseMapperX<DeviceInfomationDO> {
@QmsPermission(deptDataRoleCodes = "") @QmsPermission(deptDataRoleCodes = "ytjyDeptAndSub", moduleDataRoleCodes = "qms_device_manager")
default PageResult<DeviceInfomationDO> selectPage(DeviceInfomationPageReqVO reqVO) { default PageResult<DeviceInfomationDO> selectPage(DeviceInfomationPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<DeviceInfomationDO>() return selectPage(reqVO, new LambdaQueryWrapperX<DeviceInfomationDO>()
.eqIfPresent(DeviceInfomationDO::getProductId, reqVO.getProductId()) .eqIfPresent(DeviceInfomationDO::getProductId, reqVO.getProductId())

View File

@@ -40,6 +40,7 @@
AND tcam.ASY_DEPT_ID = tbssag.ASY_DEPT_ID AND tcam.ASY_DEPT_ID = tbssag.ASY_DEPT_ID
WHERE WHERE
tbssa.DELETED = 0 tbssa.DELETED = 0
AND tbspsa.DELETED = 0
AND tbssa.RPOD_STS = 'reported' AND tbssa.RPOD_STS = 'reported'
AND tbspsa.IS_RPOD = 0 AND tbspsa.IS_RPOD = 0
<if test="reqVO.configAssayMethodName != null and reqVO.configAssayMethodName != ''"> <if test="reqVO.configAssayMethodName != null and reqVO.configAssayMethodName != ''">