Merge branch 'test' of https://git.will-way.cn/zgty/zt-qms into test

This commit is contained in:
2026-03-12 14:42:27 +08:00
11 changed files with 233 additions and 50 deletions

View File

@@ -0,0 +1,8 @@
package com.zt.plat.module.qms.business.reportdoc.constant;
public class ReportDocConstant {
public static final String REPORT_DOCUMENT_BUSINESS_FILE_SOURCE_QMS = "qms.reportdoc";
public static final String REPORT_DOCUMENT_BUSINESS_FILE_SOURCE_IWORK = "iwork";
}

View File

@@ -6,8 +6,7 @@ import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayReportDat
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustRegistrationDO;
import com.zt.plat.module.qms.business.reportdoc.controller.vo.*;
import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentMainDO;
import com.zt.plat.module.system.api.iwork.dto.IWorkOperationRespDTO;
import com.zt.plat.module.system.api.iwork.dto.IWorkWorkflowCreateReqDTO;
import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentTypeDO;
import jakarta.validation.Valid;
import java.util.List;
@@ -31,7 +30,7 @@ public interface ReportDocumentMainService {
//移除数据
CommonResult<String> execRemoveData(ReportDocumentMainSaveReqVO reqVO);
void updateCommonField(ReportDocumentMainDO reportDocumentMainDO);
void updateCommonField(ReportDocumentMainDO reportDocumentMainDO, ReportDocumentTypeDO typeDO);
//保存报告
void doSave(@Valid ReportDocumentMainSaveReqVO updateReqVO);

View File

@@ -29,6 +29,7 @@ import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentTy
import com.zt.plat.module.qms.business.reportdoc.dal.mapper.ReportDocumentMainMapper;
import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentMainDO;
import com.zt.plat.module.qms.common.data.service.DataKeyCheckService;
import com.zt.plat.module.qms.core.code.SequenceUtil;
import com.zt.plat.module.qms.enums.QmsBpmConstant;
import com.zt.plat.module.qms.enums.QmsCommonConstant;
import jakarta.annotation.Resource;
@@ -70,6 +71,7 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService,
@Resource private BusinessSampleEntrustRegistrationService businessSampleEntrustRegistrationService;
@Resource private ReportDocumentAssistService reportDocumentAssistService;
@Resource private DataKeyCheckService dataKeyCheckService;
@Resource private SequenceUtil sequenceUtil;
/*
* 测试异步执行
@@ -190,14 +192,15 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService,
if(!insertList.isEmpty())
reportDocumentDataService.insertBatch(insertList);
ReportDocumentMainDO reportDocumentMainDO = reportDocumentMainMapper.selectById(id);
updateCommonField(reportDocumentMainDO);
ReportDocumentTypeDO typeDO = reportDocumentTypeService.getReportDocumentType(reportDocumentMainDO.getReportDocumentTypeId());
updateCommonField(reportDocumentMainDO, typeDO);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formData = reportDocumentMainDO.getFormData();
JSONObject formDataJson = new JSONObject();
if(!ObjectUtils.isEmpty(formData))
formDataJson = JSONObject.parseObject(formData);
ReportDocumentTypeDO typeDO = reportDocumentTypeService.getReportDocumentType(reportDocumentMainDO.getReportDocumentTypeId());
String customConfig = typeDO.getCustomConfig();
String defaultConclusion = "";
if(!ObjectUtils.isEmpty(customConfig)){
@@ -262,9 +265,15 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService,
}
@Override
public void updateCommonField(ReportDocumentMainDO reportDocumentMainDO) {
public void updateCommonField(ReportDocumentMainDO reportDocumentMainDO, ReportDocumentTypeDO typeDO) {
if(reportDocumentMainDO == null)
return;
String documentCode = reportDocumentMainDO.getDocumentCode();
if(ObjectUtils.isEmpty(documentCode)){
String codeRule = typeDO.getCodeRule();
documentCode = sequenceUtil.genCode(codeRule);
reportDocumentMainDO.setDocumentCode(documentCode);
}
if(reportDocumentMainDO.getCancelFlag() == null || reportDocumentMainDO.getCancelFlag().equals("-1"))
reportDocumentMainDO.setCancelFlag("0");
}
@@ -462,11 +471,15 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService,
String firstActivityFlag = "0";
if(!fieldExtensions.isEmpty()){
for(int i = 0; i < fieldExtensions.size(); i++){
JSONObject fieldExtension = fieldExtensions.getJSONObject(i);
if(fieldExtension.getString("fieldName").equalsIgnoreCase(QmsBpmConstant.BPM_LAST_ACTIVITY_FLAG)){
JSONObject extension = fieldExtensions.getJSONObject(i);
String fieldName = extension.getString("fieldName");
String stringValue = extension.getString("stringValue");
if(ObjectUtils.isEmpty(stringValue))
stringValue = "";
if(fieldName.equalsIgnoreCase(QmsBpmConstant.BPM_LAST_ACTIVITY_FLAG) && stringValue.equals("1")){
lastActivityFlag = "1";
}
if(fieldExtension.getString("fieldName").equalsIgnoreCase(QmsBpmConstant.BPM_FIRST_ACTIVITY_FLAG)){
if(fieldName.equalsIgnoreCase(QmsBpmConstant.BPM_FIRST_ACTIVITY_FLAG) && stringValue.equals("1")){
firstActivityFlag = "1";
}
}

View File

@@ -61,7 +61,8 @@ public class QmsPermissionAspect {
QmsPermission annotation = getAnnotationByJoinPoint(joinPoint);
if(annotation == null)
return;
QMSPermissionContextHolder.setContext(true, annotation.deptDataRoleCodes(), annotation.moduleDataRoleCodes(), annotation.deptIdColumn(), annotation.userIdColumn(), annotation.custom());
QMSPermissionContextHolder.setContext(true, annotation.deptDataRoleCodes(), annotation.moduleDataRoleCodes(),
annotation.deptIdColumn(), annotation.userIdColumn(), annotation.self(), annotation.custom());
}
private QmsPermission getAnnotationByJoinPoint(JoinPoint joinPoint) {

View File

@@ -21,6 +21,8 @@ public @interface QmsPermission {
String userIdColumn() default "CREATOR"; //人员id列
boolean self() default false; //是否可查看自己创建的数据
//todo 考虑支持模块自定义扩展。参数传入表达式,通过表达式计算权限
String custom() default "";

View File

@@ -11,6 +11,7 @@ public class QMSPermissionContextHolder {
private static final ThreadLocal<String> moduleDataRoleCodes = new TransmittableThreadLocal<>(); //模块数据权限
private static final ThreadLocal<String> deptIdColumn = new TransmittableThreadLocal<>(); //部门id列
private static final ThreadLocal<String> userIdColumn = new TransmittableThreadLocal<>(); //人员id列
private static final ThreadLocal<Boolean> self = new TransmittableThreadLocal<>();
private static final ThreadLocal<String> custom = new TransmittableThreadLocal<>(); //人员id列
public static void setEnable(Boolean ignore) {
@@ -21,12 +22,14 @@ public class QMSPermissionContextHolder {
return Boolean.TRUE.equals(enable.get());
}
public static void setContext(boolean enable, String deptDataRoleCode, String moduleDataRoleCode, String deptIdColumn, String userIdColumn, String custom){
public static void setContext(boolean enable, String deptDataRoleCode, String moduleDataRoleCode,
String deptIdColumn, String userIdColumn, Boolean self, String custom){
QMSPermissionContextHolder.setEnable(enable);
QMSPermissionContextHolder.deptDataRoleCodes.set(deptDataRoleCode);
QMSPermissionContextHolder.moduleDataRoleCodes.set(moduleDataRoleCode);
QMSPermissionContextHolder.deptIdColumn.set(deptIdColumn);
QMSPermissionContextHolder.userIdColumn.set(userIdColumn);
QMSPermissionContextHolder.self.set(self);
QMSPermissionContextHolder.custom.set(custom);
}
@@ -62,6 +65,15 @@ public class QMSPermissionContextHolder {
return userIdColumn.get();
}
// 新增 self 的 getter 和 setter
public static void setSelf(Boolean self) {
QMSPermissionContextHolder.self.set(self);
}
public static Boolean getSelf() {
return self.get();
}
public static void setCustom(String custom) {
QMSPermissionContextHolder.custom.set(custom);
}

View File

@@ -2,6 +2,7 @@ package com.zt.plat.module.qms.framework.rpc.config;
import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi;
import com.zt.plat.module.bpm.api.task.BpmTaskApi;
import com.zt.plat.module.infra.api.businessfile.BusinessFileApi;
import com.zt.plat.module.infra.api.file.FileApi;
import com.zt.plat.module.system.api.dept.DeptApi;
import com.zt.plat.module.system.api.iwork.IWorkIntegrationApi;
@@ -13,6 +14,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Configuration;
@Configuration(value = "qmsRpcConfiguration", proxyBeanMethods = false)
@EnableFeignClients(clients = {FileApi.class, SequenceApi.class, AdminUserApi.class, DeptApi.class, BpmProcessInstanceApi.class, BpmTaskApi.class, PermissionApi.class, IWorkIntegrationApi.class})
@EnableFeignClients(clients = {FileApi.class, BusinessFileApi.class, SequenceApi.class, AdminUserApi.class, DeptApi.class, BpmProcessInstanceApi.class, BpmTaskApi.class, PermissionApi.class, IWorkIntegrationApi.class})
public class RpcConfiguration {
}

View File

@@ -48,7 +48,7 @@ public interface MaterialBatchMapper extends BaseMapperX<MaterialBatchDO> {
.orderByDesc(MaterialBatchDO::getId));
}
// @QmsPermission(deptDataRoleCodes = "ytjyDeptAndSub", moduleDataRoleCodes = "qms_material_manager")
@QmsPermission(moduleDataRoleCodes = "ytjyAdmin", deptIdColumn = "ASN_DEPT_ID")
default PageResult<MaterialBatchRespVO> selectPageWithPdtInfo(MaterialBatchPageReqVO reqVO, List<Long> pdtIds) {
MPJLambdaWrapper<MaterialBatchDO> wrapper = new MPJLambdaWrapperX<MaterialBatchDO>()

Some files were not shown because too many files have changed in this diff Show More