From fccfe7d50f42f5be4c4612d61b7ae852e2ef37cd Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期四, 17 四月 2025 15:26:09 +0800 Subject: [PATCH] 优化指派设备与审签设备的权限校验查询,新增导入电子样板触发审签流程,新增电子样板指派设备功能 --- lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ComponentHandler.java | 35 ++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/PermissionService.java | 88 +++++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/adapter/AssignFileStreamAdapter.java | 52 ++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/adapter/DispatchFileAdapter.java | 53 ++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/StreamTarget.java | 12 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/PermissionHandler.java | 8 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java | 5 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/PartsHandler.java | 35 ++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/PermissionProcessor.java | 56 ++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ProcessHandle.java | 39 +++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ProductHandler.java | 36 +++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ProcessSpecVersionHandle.java | 37 +++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/DispatchFileServiceImpl.java | 76 ----- lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java | 84 ------ lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/AssignFileStream.java | 14 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/WorkStepHandle.java | 40 +++ 18 files changed, 521 insertions(+), 153 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java index a1498cd..fdf2f26 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java @@ -146,7 +146,7 @@ if (sysParams ==null){ throw new JeecgBootException("鏈厤缃鍏C涓庣數瀛愬浘鐗堟槸鍚﹁Е鍙戝绛炬祦绋嬶紝璇疯仈绯荤鐞嗗憳"); }else { - if (saveBool&&sysParams.getSettingValue().equals("1")&&uploadRequest.getDocClassCode().equals("NC")){ + if (saveBool&&sysParams.getSettingValue().equals("1")){ //瑙﹀彂瀹$ DispatchFile dispatchFile = new DispatchFile(); dispatchFile.setDocId(docInfo.getDocId()); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java index a30dec5..cd089c4 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java @@ -490,7 +490,7 @@ queryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getTreeCode()),ProcessSpecVersion::getProcessSpecVersionCode, treeInfoRequest.getTreeName()); queryWrapper.orderByDesc(ProcessSpecVersion::getCreateTime); List<ProcessSpecVersion> list = super.list(queryWrapper); - if (list == null || list.isEmpty()){ + if (list == null || list.isEmpty() || StrUtil.isNotBlank(treeInfoRequest.getStructureType())){ return new ArrayList<>(); }else { String ids=list.stream().map(ProcessSpecVersion::getId).collect(Collectors.joining(",")); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java index ac328de..d289e58 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java @@ -85,6 +85,7 @@ @Autowired private IProductMixService productMixService; @Autowired + @Lazy private IDocInfoService docInfoService; @Override @@ -1038,9 +1039,11 @@ // 绠�鍖栨潯浠跺垽鏂� queryWrapper.like(StrUtil.isNotBlank(treeInfoRequest.getTreeCode()), ProductInfo::getProductNo, treeInfoRequest.getTreeCode()) .like(StrUtil.isNotBlank(treeInfoRequest.getTreeName()), ProductInfo::getProductName, treeInfoRequest.getTreeName()); - List<ProductInfo> productInfoList = super.list(queryWrapper); List<DocInfo> docInfos = new ArrayList<>(); + if (StrUtil.isNotBlank(treeInfoRequest.getStructureType())){ + productInfoList=new ArrayList<>(); + } if (CollectionUtil.isNotEmpty(productInfoList)) { // 浣跨敤ID鍒楄〃鑰岄潪鎷兼帴瀛楃涓� List<String> productIds = productInfoList.stream() diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/adapter/AssignFileStreamAdapter.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/adapter/AssignFileStreamAdapter.java new file mode 100644 index 0000000..7862c2e --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/adapter/AssignFileStreamAdapter.java @@ -0,0 +1,52 @@ +package org.jeecg.modules.dncFlow.adapter; + +import org.jeecg.modules.dncFlow.entity.AssignFileStream; +import org.jeecg.modules.dncFlow.service.StreamTarget; + +public class AssignFileStreamAdapter implements StreamTarget { + private final AssignFileStream stream; + + public AssignFileStreamAdapter(AssignFileStream stream) { + this.stream = stream; + } + + @Override + public void setProductId(String productId) { + stream.setProductId(productId); + } + + @Override + public void setComponentId(String componentId) { + stream.setComponentId(componentId); + } + + @Override + public void setPartsId(String partsId) { + stream.setPartsId(partsId); + } + + @Override + public void setProcessId(String processId) { + stream.setProcessId(processId); + } + + @Override + public void setPsvId(String psvId) { + stream.setPsvId(psvId); + } + + @Override + public void setStepId(String stepId) { + stream.setStepId(stepId); + } + + @Override + public void setDeviceTypeId(String deviceTypeId) { + stream.setDeviceTypeId(deviceTypeId); + } + + @Override + public String getAttributionId() { + return stream.getAttributionId(); + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/adapter/DispatchFileAdapter.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/adapter/DispatchFileAdapter.java new file mode 100644 index 0000000..11fc3cd --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/adapter/DispatchFileAdapter.java @@ -0,0 +1,53 @@ +package org.jeecg.modules.dncFlow.adapter; + +import org.jeecg.modules.dncFlow.entity.DispatchFile; +import org.jeecg.modules.dncFlow.service.StreamTarget; + +public class DispatchFileAdapter implements StreamTarget { + private final DispatchFile file; + + public DispatchFileAdapter(DispatchFile file) { + this.file = file; + } + + @Override + public void setProductId(String productId) { + file.setProductId(productId); + } + + @Override + public void setComponentId(String componentId) { + file.setComponentId(componentId); + } + + @Override + public void setPartsId(String partsId) { + file.setPartsId(partsId); + } + + @Override + public void setProcessId(String processId) { + file.setProcessId(processId); + } + + @Override + public void setPsvId(String psvId) { + file.setPsvId(psvId); + } + + @Override + public void setStepId(String stepId) { + file.setStepId(stepId); + } + + @Override + public void setDeviceTypeId(String deviceTypeId) { + file.setDeviceTypeId(deviceTypeId); + } + + @Override + public String getAttributionId() { + return file.getAttributionId(); + } + +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/AssignFileStream.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/AssignFileStream.java index 833ab90..07c5da1 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/AssignFileStream.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/entity/AssignFileStream.java @@ -55,6 +55,14 @@ @TableField(value = "status") @Dict(dicCode = "dnc_assign_stream_status") private Integer status; + + /**鎸囨淳璁惧涓撶敤-鎵�灞濱D*/ + @TableField(value = "attribution_id") + private String attributionId; + + /**鎸囨淳璁惧涓撶敤-鎵�灞瀟ype*/ + @TableField(value = "attribution_type") + private String attributionType; @JsonIgnore @TableField(value = "create_time", select = false, fill = FieldFill.INSERT) private Date createTime; @@ -71,10 +79,4 @@ @TableLogic @TableField(value = "delete_flag", select = false) private Integer deleteFlag = 0; - - /**鎸囨淳璁惧涓撶敤-鎵�灞濱D*/ - private transient String attributionId; - - /**鎸囨淳璁惧涓撶敤-鎵�灞瀟ype*/ - private transient String attributionType; } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ComponentHandler.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ComponentHandler.java new file mode 100644 index 0000000..8ac20bf --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ComponentHandler.java @@ -0,0 +1,35 @@ +package org.jeecg.modules.dncFlow.handler; + +import org.jeecg.modules.dnc.entity.ComponentInfo; +import org.jeecg.modules.dnc.service.IComponentInfoService; +import org.jeecg.modules.dncFlow.service.PermissionHandler; +import org.jeecg.modules.dncFlow.service.StreamTarget; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class ComponentHandler implements PermissionHandler<ComponentInfo> { + @Autowired + private IComponentInfoService componentInfoService; + + @Override + public ComponentInfo loadEntity(String id) { + return componentInfoService.getById(id); + } + + @Override + public String getBusinessId(ComponentInfo entity) { + return entity.getComponentId(); + } + + @Override + public String getTypeCode() { + return "2"; + } + + @Override + public void setRelations(ComponentInfo entity, StreamTarget target) { + target.setProductId(entity.getProductId()); + target.setComponentId(entity.getComponentId()); + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/PartsHandler.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/PartsHandler.java new file mode 100644 index 0000000..4faa76f --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/PartsHandler.java @@ -0,0 +1,35 @@ +package org.jeecg.modules.dncFlow.handler; +import org.jeecg.modules.dnc.entity.PartsInfo; +import org.jeecg.modules.dnc.service.IPartsInfoService; +import org.jeecg.modules.dncFlow.service.PermissionHandler; +import org.jeecg.modules.dncFlow.service.StreamTarget; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class PartsHandler implements PermissionHandler<PartsInfo> { + @Autowired + private IPartsInfoService partsInfoService; + + @Override + public PartsInfo loadEntity(String id) { + return partsInfoService.getById(id); + } + + @Override + public String getBusinessId(PartsInfo entity) { + return entity.getPartsId(); + } + + @Override + public String getTypeCode() { + return "3"; + } + + @Override + public void setRelations(PartsInfo entity, StreamTarget target) { + target.setProductId(entity.getProductId()); + target.setComponentId(entity.getComponentId()); + target.setPartsId(entity.getPartsId()); + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/PermissionProcessor.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/PermissionProcessor.java new file mode 100644 index 0000000..4ecbf3e --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/PermissionProcessor.java @@ -0,0 +1,56 @@ +package org.jeecg.modules.dncFlow.handler; + +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.dnc.entity.PermissionStreamNew; +import org.jeecg.modules.dnc.exception.ExceptionCast; +import org.jeecg.modules.dnc.response.CommonCode; +import org.jeecg.modules.dnc.service.IDeviceTypeService; +import org.jeecg.modules.dnc.service.IPermissionStreamNewService; +import org.jeecg.modules.dncFlow.service.PermissionHandler; +import org.jeecg.modules.dncFlow.service.StreamTarget; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Optional; + +@Component +public class PermissionProcessor { + @Autowired + private IDeviceTypeService deviceTypeService; + + @Autowired + private IPermissionStreamNewService permissionStreamNewService; + + public <T> PermissionStreamNew process( + String attributionId, + LoginUser user, + StreamTarget target, + PermissionHandler<T> handler + ) { + // 1. 鍔犺浇涓氬姟瀹炰綋 + T entity = handler.loadEntity(attributionId); + if (entity == null) { + ExceptionCast.cast(CommonCode.INVALID_PARAM); + } + + // 2. 璁剧疆鍏宠仈鍏崇郴 + handler.setRelations(entity, target); + + // 3. 璁剧疆璁惧绫诲瀷 + setupDeviceType(target); + + // 4. 鑾峰彇鏉冮檺娴� + return permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId( + handler.getBusinessId(entity), + user.getId(), + handler.getTypeCode() + ); + } + + private void setupDeviceType(StreamTarget target) { + Optional.ofNullable(deviceTypeService.getById(target.getAttributionId())) + .ifPresent(device -> + target.setDeviceTypeId(device.getId()) + ); + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ProcessHandle.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ProcessHandle.java new file mode 100644 index 0000000..59e53b2 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ProcessHandle.java @@ -0,0 +1,39 @@ +package org.jeecg.modules.dncFlow.handler; + +import org.jeecg.modules.dnc.entity.ProcessStream; +import org.jeecg.modules.dnc.service.IProcessStreamService; +import org.jeecg.modules.dncFlow.service.PermissionHandler; +import org.jeecg.modules.dncFlow.service.StreamTarget; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class ProcessHandle implements PermissionHandler<ProcessStream> { + + @Autowired + private IProcessStreamService ProcessStreamService; + + @Override + public ProcessStream loadEntity(String id) { + return ProcessStreamService.getById(id); + } + + @Override + public String getBusinessId(ProcessStream entity) { + return entity.getProcessId(); + } + + @Override + public String getTypeCode() { + return "5"; + } + + @Override + public void setRelations(ProcessStream entity, StreamTarget target) { + target.setProductId(entity.getProductId()); + target.setComponentId(entity.getComponentId()); + target.setPartsId(entity.getPartsId()); + target.setPsvId(entity.getPsvId()); + target.setProcessId(entity.getProcessId()); + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ProcessSpecVersionHandle.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ProcessSpecVersionHandle.java new file mode 100644 index 0000000..74895bc --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ProcessSpecVersionHandle.java @@ -0,0 +1,37 @@ +package org.jeecg.modules.dncFlow.handler; +import org.jeecg.modules.dnc.entity.ProcessSpecVersion; +import org.jeecg.modules.dnc.service.IProcessSpecVersionService; +import org.jeecg.modules.dncFlow.service.PermissionHandler; +import org.jeecg.modules.dncFlow.service.StreamTarget; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class ProcessSpecVersionHandle implements PermissionHandler<ProcessSpecVersion> { + + @Autowired + private IProcessSpecVersionService processSpecVersionService; + + @Override + public ProcessSpecVersion loadEntity(String id) { + return processSpecVersionService.getById(id); + } + + @Override + public String getBusinessId(ProcessSpecVersion entity) { + return entity.getId(); + } + + @Override + public String getTypeCode() { + return "4"; + } + + @Override + public void setRelations(ProcessSpecVersion entity, StreamTarget target) { + target.setProductId(entity.getProductId()); + target.setComponentId(entity.getComponentId()); + target.setPartsId(entity.getPartsId()); + target.setPsvId(entity.getId()); + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ProductHandler.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ProductHandler.java new file mode 100644 index 0000000..3bf263f --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/ProductHandler.java @@ -0,0 +1,36 @@ +package org.jeecg.modules.dncFlow.handler; + +import org.jeecg.modules.dnc.entity.ProductInfo; +import org.jeecg.modules.dnc.service.IProductInfoService; +import org.jeecg.modules.dncFlow.service.PermissionHandler; +import org.jeecg.modules.dncFlow.service.StreamTarget; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +// 浜у搧绛栫暐 +@Component +public class ProductHandler implements PermissionHandler<ProductInfo> { + @Autowired + private IProductInfoService productInfoService; + + @Override + public ProductInfo loadEntity(String id) { + return productInfoService.getById(id); + } + + @Override + public String getBusinessId(ProductInfo entity) { + return entity.getProductId(); + } + + @Override + public String getTypeCode() { + return "1"; + } + + @Override + public void setRelations(ProductInfo entity, StreamTarget target) { + target.setProductId(entity.getProductId()); + } +} + diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/WorkStepHandle.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/WorkStepHandle.java new file mode 100644 index 0000000..ef5772b --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/handler/WorkStepHandle.java @@ -0,0 +1,40 @@ +package org.jeecg.modules.dncFlow.handler; + +import org.jeecg.modules.dnc.entity.WorkStep; +import org.jeecg.modules.dnc.service.IWorkStepService; +import org.jeecg.modules.dncFlow.service.PermissionHandler; +import org.jeecg.modules.dncFlow.service.StreamTarget; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class WorkStepHandle implements PermissionHandler<WorkStep> { + + @Autowired + private IWorkStepService WorkStepService; + + @Override + public WorkStep loadEntity(String id) { + return WorkStepService.getById(id); + } + + @Override + public String getBusinessId(WorkStep entity) { + return entity.getId(); + } + + @Override + public String getTypeCode() { + return "6"; + } + + @Override + public void setRelations(WorkStep entity, StreamTarget target) { + target.setProductId(entity.getProductId()); + target.setComponentId(entity.getComponentId()); + target.setPartsId(entity.getPartsId()); + target.setPsvId(entity.getPsvId()); + target.setProcessId(entity.getProcessId()); + target.setStepId(entity.getId()); + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/PermissionHandler.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/PermissionHandler.java new file mode 100644 index 0000000..cb61cd1 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/PermissionHandler.java @@ -0,0 +1,8 @@ +package org.jeecg.modules.dncFlow.service; + +public interface PermissionHandler<T> { + T loadEntity(String id); + String getBusinessId(T entity); + String getTypeCode(); + void setRelations(T entity, StreamTarget target); +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/StreamTarget.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/StreamTarget.java new file mode 100644 index 0000000..89fa455 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/StreamTarget.java @@ -0,0 +1,12 @@ +package org.jeecg.modules.dncFlow.service; + +public interface StreamTarget { + void setProductId(String productId); + void setComponentId(String componentId); + void setPartsId(String partsId); + void setProcessId(String processId); + void setPsvId(String psvId); + void setStepId(String stepId); + void setDeviceTypeId(String deviceTypeId); + String getAttributionId(); +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java index 49e51e3..3bfd2bb 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java @@ -44,7 +44,6 @@ import org.jeecg.modules.flowable.service.IFlowTaskService; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.service.IMdcEquipmentService; -import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.service.IMdcProductionService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -75,10 +74,6 @@ @Autowired private IProcessStreamService processStreamService; @Autowired - private IWorkStepService workStepService; - @Autowired - private IPermissionStreamNewService permissionStreamNewService; - @Autowired private IDocClassificationService classificationService; @Autowired private IToEquipmentTaskService equipmentTaskService; @@ -105,9 +100,9 @@ @Autowired private IFlowTaskService flowTaskService; @Autowired - private IDeviceTypeService deviceTypeService; - @Autowired private IFlowMyBusinessService flowMyBusinessService; + @Autowired + private PermissionService permissionService; @Value("${securedoc.whether}") private String whether; @@ -332,16 +327,10 @@ if(!b) ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); if(up.getStatus() == 2) { - DocInfo docInfo; //鍚屾剰鎿嶄綔 - if (StrUtil.isNotEmpty(en.getStepId())){ - //宸ユ涓嬭澶囩被鎸囨淳 - docInfo = docInfoService.getByDocAttrAndDocId(en.getDocId(), 6, en.getDeviceTypeId()); - }else { - docInfo = docInfoService.getByDocAttrAndDocId(en.getDocId(), 5, en.getDeviceTypeId()); - } - if(docInfo == null || docInfo.getDocStatus() == 3) - ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR); + DocInfo docInfo = docInfoService.getByDocAttrAndDocId(en.getDocId(), Integer.valueOf(en.getAttributionType()), en.getAttributionId()); + if(docInfo == null ) + ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR); MdcEquipment mdcEquipment = iMdcEquipmentService.getById(en.getDeviceId()); if(mdcEquipment == null) ExceptionCast.cast(ActivitiCode.ACT_ASSIGN_DEVICE_NONE); @@ -593,69 +582,12 @@ } private PermissionStreamNew getPermissionStreams(AssignFileStream stream) { - LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - DeviceType deviceType = deviceTypeService.getById(stream.getAttributionId()); - String attributionId = deviceType != null ? deviceType.getAttributionId() : stream.getAttributionId(); - - PermissionStreamNew permissionStreams; - if (stream.getAttributionType().equals("5")) { - // 宸ュ簭 - permissionStreams = handleProcess(stream, attributionId, user); - } else { - // 宸ユ - permissionStreams = handleWorkStep(stream, attributionId, user); - } - if (permissionStreams == null) { + PermissionStreamNew permissionStreamNew = permissionService.getPermissionStreams(stream); + if (permissionStreamNew == null) { ExceptionCast.cast(ActivitiCode.ACT_NODE_DEPART_NONE); } - return permissionStreams; + return permissionStreamNew ; } - - private PermissionStreamNew handleProcess(AssignFileStream stream, String attributionId, LoginUser user) { - ProcessStream processStream = processStreamService.getById(attributionId); - if (processStream == null) { - ExceptionCast.cast(CommonCode.INVALID_PARAM); - } - stream.setProductId(processStream.getProductId()); - stream.setComponentId(processStream.getComponentId()); - stream.setPartsId(processStream.getPartsId()); - stream.setProcessId(processStream.getProcessId()); - if (deviceTypeService.getById(stream.getAttributionId()) != null) { - stream.setDeviceTypeId(deviceTypeService.getById(stream.getAttributionId()).getId()); - } - return permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(processStream.getProcessId(), user.getId(), "5"); - } - - private PermissionStreamNew handleWorkStep(AssignFileStream stream, String attributionId, LoginUser user) { - WorkStep workStep = workStepService.getById(attributionId); - if (workStep == null) { - ExceptionCast.cast(CommonCode.INVALID_PARAM); - } - stream.setProductId(workStep.getProductId()); - stream.setComponentId(workStep.getComponentId()); - stream.setPartsId(workStep.getPartsId()); - stream.setProcessId(workStep.getProcessId()); - stream.setStepId(workStep.getId()); - if (deviceTypeService.getById(stream.getAttributionId()) != null) { - stream.setDeviceTypeId(deviceTypeService.getById(stream.getAttributionId()).getId()); - } - return permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(workStep.getId(), user.getId(), "6"); - } - - //鑾峰彇閮ㄩ棬淇℃伅 - //todo 淇敼 - private List<String> getDepartIds(List<PermissionStream> permissionStreams, String userId) { - Map<String, MdcProduction> map = iMdcProductionService.getUserAssignedDepart(userId); - List<String> departIds = permissionStreams.stream() - .filter(item -> map.containsKey(item.getDepartId())) - .map(PermissionStream::getDepartId) - .collect(Collectors.toList()); - if (departIds.isEmpty()) { - ExceptionCast.cast(ActivitiCode.ACT_USER_NOT_PERM); - } - return departIds; - } - //灏佽鏁版嵁 private void saveBusinessObject(AssignFileStream stream, String userId) { diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/DispatchFileServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/DispatchFileServiceImpl.java index f52a1f8..f72e491 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/DispatchFileServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/DispatchFileServiceImpl.java @@ -12,14 +12,15 @@ import org.flowable.task.api.Task; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.vo.LoginUser; -import org.jeecg.modules.dnc.entity.*; +import org.jeecg.modules.dnc.entity.DocInfo; +import org.jeecg.modules.dnc.entity.PermissionStreamNew; import org.jeecg.modules.dnc.exception.ExceptionCast; import org.jeecg.modules.dnc.mapper.DocInfoMapper; import org.jeecg.modules.dnc.request.DocInfoQueryRequest; import org.jeecg.modules.dnc.response.ActivitiCode; import org.jeecg.modules.dnc.response.CommonCode; import org.jeecg.modules.dnc.response.UcenterCode; -import org.jeecg.modules.dnc.service.*; +import org.jeecg.modules.dnc.service.IDocInfoService; import org.jeecg.modules.dnc.utils.ValidateUtil; import org.jeecg.modules.dncFlow.entity.DispatchFile; import org.jeecg.modules.dncFlow.mapper.DispatchFileMapper; @@ -53,20 +54,12 @@ @Autowired @Lazy private IDocInfoService docInfoService; - @Autowired - private IProcessStreamService processStreamService; - @Autowired - private IWorkStepService workStepService; - @Autowired - private IPermissionStreamNewService permissionStreamNewService; @Resource private FlowCommonService flowCommonService; @Resource private IFlowDefinitionService flowDefinitionService; @Autowired private IFlowTaskService flowTaskService; - @Autowired - private IDeviceTypeService deviceTypeService; @Autowired private TaskService taskService; @Autowired @@ -75,6 +68,8 @@ private DocInfoMapper docInfoMapper; @Autowired private ISysUserRoleService sysUserRoleService; + @Autowired + private PermissionService permissionService; /** * 娴佺▼鍚姩,淇濆瓨瀵瑰簲鐨勬暟鎹� * @param dispatchFile @@ -424,67 +419,12 @@ return true; } - //鑾峰彇鏂囦欢淇℃伅 - private DocInfo getDocInfo(DispatchFile dispatchFile) { - DocInfo docInfo = docInfoService.getByDocAttrAndDocId(dispatchFile.getDocId(), - Integer.parseInt(dispatchFile.getAttributionType()), dispatchFile.getAttributionId()); - if (docInfo == null || docInfo.getDocStatus() == 3) { - ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR); - } - return docInfo; - } - - private PermissionStreamNew getPermissionStreams(DispatchFile dispatchFile) { - LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - DeviceType deviceType = deviceTypeService.getById(dispatchFile.getAttributionId()); - String attributionId = deviceType != null ? deviceType.getAttributionId() : dispatchFile.getAttributionId(); - - PermissionStreamNew permissionStreams; - if (dispatchFile.getAttributionType().equals("5")) { - // 宸ュ簭 - permissionStreams = handleProcess(dispatchFile, attributionId, user); - } else { - // 宸ユ - permissionStreams = handleWorkStep(dispatchFile, attributionId, user); - } - if (permissionStreams == null) { + PermissionStreamNew permissionStreamNew = permissionService.getPermissionStreams(dispatchFile); + if (permissionStreamNew == null) { ExceptionCast.cast(ActivitiCode.ACT_NODE_DEPART_NONE); } - return permissionStreams; - } - - private PermissionStreamNew handleProcess(DispatchFile dispatchFile, String attributionId, LoginUser user) { - ProcessStream processStream = processStreamService.getById(attributionId); - if (processStream == null) { - ExceptionCast.cast(CommonCode.INVALID_PARAM); - } - dispatchFile.setProductId(processStream.getProductId()); - dispatchFile.setComponentId(processStream.getComponentId()); - dispatchFile.setPartsId(processStream.getPartsId()); - dispatchFile.setPsvId(processStream.getPsvId()); - dispatchFile.setProcessId(processStream.getProcessId()); - if (deviceTypeService.getById(dispatchFile.getAttributionId()) != null) { - dispatchFile.setDeviceTypeId(deviceTypeService.getById(dispatchFile.getAttributionId()).getId()); - } - return permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(processStream.getProcessId(), user.getId(), "5"); - } - - private PermissionStreamNew handleWorkStep(DispatchFile dispatchFile, String attributionId, LoginUser user) { - WorkStep workStep = workStepService.getById(attributionId); - if (workStep == null) { - ExceptionCast.cast(CommonCode.INVALID_PARAM); - } - dispatchFile.setProductId(workStep.getProductId()); - dispatchFile.setComponentId(workStep.getComponentId()); - dispatchFile.setPartsId(workStep.getPartsId()); - dispatchFile.setPsvId(workStep.getPsvId()); - dispatchFile.setProcessId(workStep.getProcessId()); - dispatchFile.setStepId(workStep.getId()); - if (deviceTypeService.getById(dispatchFile.getAttributionId()) != null) { - dispatchFile.setDeviceTypeId(deviceTypeService.getById(dispatchFile.getAttributionId()).getId()); - } - return permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(workStep.getId(), user.getId(), "6"); + return permissionStreamNew; } @Override diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/PermissionService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/PermissionService.java new file mode 100644 index 0000000..1f4ef4d --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/PermissionService.java @@ -0,0 +1,88 @@ +package org.jeecg.modules.dncFlow.service.impl; + +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.dnc.entity.DeviceType; +import org.jeecg.modules.dnc.entity.PermissionStreamNew; +import org.jeecg.modules.dnc.exception.ExceptionCast; +import org.jeecg.modules.dnc.response.ActivitiCode; +import org.jeecg.modules.dnc.service.IDeviceTypeService; +import org.jeecg.modules.dncFlow.adapter.AssignFileStreamAdapter; +import org.jeecg.modules.dncFlow.adapter.DispatchFileAdapter; +import org.jeecg.modules.dncFlow.entity.AssignFileStream; +import org.jeecg.modules.dncFlow.entity.DispatchFile; +import org.jeecg.modules.dncFlow.handler.*; +import org.jeecg.modules.dncFlow.service.PermissionHandler; +import org.jeecg.modules.dncFlow.service.StreamTarget; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class PermissionService { + @Autowired + private PermissionProcessor processor; + + @Autowired + private ProductHandler productHandler; + + @Autowired + private ComponentHandler componentHandler; + + @Autowired + private PartsHandler partsHandler; + + @Autowired + private ProcessSpecVersionHandle processSpecVersionHandler; + + @Autowired + private ProcessHandle processHandler; + + @Autowired + private WorkStepHandle workStepHandler; + + @Autowired + private IDeviceTypeService deviceTypeService; + + public PermissionStreamNew getPermissionStreams(DispatchFile file) { + return processInternal(new DispatchFileAdapter(file), file.getAttributionType()); + } + + public PermissionStreamNew getPermissionStreams(AssignFileStream stream) { + return processInternal(new AssignFileStreamAdapter(stream), stream.getAttributionType()); + } + + private PermissionStreamNew processInternal(StreamTarget target, String attributionType) { + LoginUser user = getCurrentUser(); + String resolvedId = resolveAttributionId(target.getAttributionId()); + + PermissionHandler<?> handler = resolveHandler(attributionType); + return processor.process(resolvedId, user, target, handler); + } + + private String resolveAttributionId(String AttributionId) { + DeviceType deviceType = deviceTypeService.getById(AttributionId); + if (deviceType == null) { + return AttributionId; + }else { + return deviceType.getAttributionId(); + } + } + + private PermissionHandler<?> resolveHandler(String type) { + switch (type) { + case "1": return productHandler; + case "2": return componentHandler; + case "3": return partsHandler; + case "4": return processSpecVersionHandler; + case "5": return processHandler; + case "6": return workStepHandler; + default: + ExceptionCast.cast(ActivitiCode.ACT_NODE_DEPART_NONE); + return null; // 瀹為檯涓嶄細鎵ц + } + } + + private LoginUser getCurrentUser() { + return (LoginUser) SecurityUtils.getSubject().getPrincipal(); + } +} -- Gitblit v1.9.3