From 2fb6c67b2c0c72195eef6fe5f7904d739b46e2c0 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期三, 25 六月 2025 11:57:28 +0800 Subject: [PATCH] Merge branch 'mdc_hyjs_master' --- lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java | 2054 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 1,020 insertions(+), 1,034 deletions(-) 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 ca7177f..930f19e 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 @@ -1,39 +1,39 @@ package org.jeecg.modules.dnc.service.impl; -import com.alibaba.fastjson.JSONObject; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.dnc.constant.DocAttributionTypeEnum; import org.jeecg.modules.dnc.dto.ComponentExt; - +import org.jeecg.modules.dnc.entity.*; import org.jeecg.modules.dnc.exception.ExceptionCast; import org.jeecg.modules.dnc.mapper.ProductInfoMapper; - +import org.jeecg.modules.dnc.request.DocInfoQueryRequest; +import org.jeecg.modules.dnc.request.TreeInfoRequest; +import org.jeecg.modules.dnc.response.*; import org.jeecg.modules.dnc.service.*; import org.jeecg.modules.dnc.service.support.ProductTreeWrapper; -import org.jeecg.modules.dnc.ucenter.Department; import org.jeecg.modules.dnc.ucenter.UserDepartExt; import org.jeecg.modules.dnc.utils.ValidateUtil; - -import org.jeecg.modules.dnc.entity.*; +import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.IMdcProductionService; import org.jeecg.modules.system.service.ISysUserService; - -import org.jeecg.modules.dnc.response.ComponentInfoCode; -import org.jeecg.modules.dnc.response.PartsInfoCode; -import org.jeecg.modules.dnc.response.ProductInfoCode; -import org.jeecg.modules.dnc.response.UcenterCode; -import org.jeecg.modules.dnc.response.CommonCode; -import org.jeecg.modules.dnc.response.CommonGenericTree; -import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; @Service @Slf4j @@ -45,11 +45,13 @@ @Lazy private IPartsInfoService partsInfoService; @Autowired + private IProcessSpecVersionService processSpecVersionService; + @Autowired private IProductPermissionService productPermissionService; @Autowired private IProductDepartmentService productDepartmentService; @Autowired - private IPermissionStreamService permissionStreamService; + private IPermissionStreamNewService permissionStreamNewService; @Autowired private IComponentDepartmentService componentDepartmentService; @Autowired @@ -59,7 +61,9 @@ @Autowired private IPartsPermissionService partsPermissionService; @Autowired - private IDepartmentService departmentService; + private IProcessSpecVersionPermissionService processSpecVersionPermissionService; + @Autowired + private IProcessSpecVersionDepartmentService processSpecVersionDepartmentService; @Autowired private ISysUserService userService; @Autowired @@ -68,97 +72,120 @@ @Autowired private IWorkStepService workStepService; @Autowired + private IWorkStepDepartmentService workStepDepartmentService; + @Autowired + private IProcessionDepartmentService processionDepartmentService; + @Autowired + private IMdcProductionService mdcProductionService; + @Autowired + private IDocRelativeService iDocRelativeService; + @Autowired + private IProcessStreamPermissionService iProcessStreamPermissionService; + @Autowired + private IWorkStepPermissionService iWorkStepPermissionService; + @Autowired + private IProductMixService productMixService; + @Autowired + @Lazy private IDocInfoService docInfoService; @Autowired - private INcLogInfoService iNcLogInfoService; + private IDeviceTypeService deviceTypeService; + @Autowired + private IDeviceManagementService deviceManagementService; @Override @Transactional(rollbackFor = {Exception.class}) public boolean addProductInfo(ProductInfo productInfo) { - if(productInfo == null) + if (productInfo == null) ExceptionCast.cast(CommonCode.INVALID_PARAM); - if(!ValidateUtil.validateString(productInfo.getProductName())) + if (!ValidateUtil.validateString(productInfo.getProductName())) ExceptionCast.cast(ProductInfoCode.PRODUCT_NAME_NONE); - if(!ValidateUtil.validateString(productInfo.getProductNo())) { + if (!ValidateUtil.validateString(productInfo.getProductNo())) { ExceptionCast.cast(ProductInfoCode.PRODUCT_NO_NONE); } ProductInfo en = getByProductNo(productInfo.getProductNo()); - if(en != null) + if (en != null) ExceptionCast.cast(ProductInfoCode.PRODUCT_IS_EXIST); LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); - if(!ValidateUtil.validateString(userId)) + if (!ValidateUtil.validateString(userId)) ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST); productInfo.setProductStatus(1); - //娣诲姞鏃ュ織 - NcLogInfo ncLogInfo = new NcLogInfo(); - //妯″潡 - ncLogInfo.setModuleInfo("浜у搧缁撴瀯鏍�"); - //绫诲瀷 - ncLogInfo.setOperateType(2); - //鏃ュ織鍐呭 - ncLogInfo.setLogContent("浜у搧鍚嶇О锛�"+productInfo.getProductName()+"锛屼骇鍝佺紪鍙凤細"+productInfo.getProductNo()); - iNcLogInfoService.saveLogNcInfos(ncLogInfo); boolean b = super.save(productInfo); - if(!b) { + if (!b) { ExceptionCast.cast(ProductInfoCode.PRODUCT_SAVE_ERROR); } - ProductPermission permission = new ProductPermission(); - permission.setProductId(productInfo.getProductId()); - permission.setUserId(userId); - b = productPermissionService.save(permission); - if(!b) { + b = productPermissionService.add(productInfo.getProductId(), userId,"1"); + if (!b) { ExceptionCast.cast(ProductInfoCode.PRODUCT_SAVE_ERROR); } - PermissionStream stream = new PermissionStream(); - stream.setProductId(productInfo.getProductId()); + //娣诲姞缁撴瀯鏍� + ProductMix productMix = new ProductMix(Long.parseLong(productInfo.getProductId()),0L, + productInfo.getProductName(),productInfo.getProductNo(),1,new Date()); + productMixService.save(productMix); + //娣诲姞鐢ㄦ埛閮ㄩ棬 + if(StrUtil.isNotBlank(user.getProductionIds())){ + String[] split = user.getProductionIds().split(","); + String[] departIds = split; + for (String departId : departIds) { + ProductDepartment productDepartment = new ProductDepartment(); + productDepartment.setProductId(productInfo.getProductId()); + productDepartment.setDepartId(departId); + productDepartmentService.save(productDepartment); + PermissionStreamNew stream = new PermissionStreamNew(); + stream.setBusinessId(productInfo.getProductId()); + stream.setDepartId(departId); + stream.setBusinessType(DocAttributionTypeEnum.PRODUCT.getCode().toString()); + permissionStreamNewService.save(stream); + } + } + //娣诲姞鐢ㄦ埛鏉冮檺 + PermissionStreamNew stream = new PermissionStreamNew(); + stream.setBusinessId(productInfo.getProductId()); stream.setUserId(userId); - return permissionStreamService.save(stream); + stream.setBusinessType(DocAttributionTypeEnum.PRODUCT.getCode().toString()); + return permissionStreamNewService.addPermissionStreamNew(stream); } @Override @Transactional(rollbackFor = {Exception.class}) - public boolean editProductInfo(String id ,ProductInfo productInfo) { - if(!ValidateUtil.validateString(id) || productInfo == null) + public boolean editProductInfo(String id, ProductInfo productInfo) { + if (!ValidateUtil.validateString(id) || productInfo == null) ExceptionCast.cast(CommonCode.INVALID_PARAM); LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); - if(!ValidateUtil.validateString(userId)) + if (!ValidateUtil.validateString(userId)) ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST); ProductInfo en = super.getById(id); - if(en == null) + if (en == null) ExceptionCast.cast(ProductInfoCode.PRODUCT_NOT_EXIST); productInfo.setProductId(id); productInfo.setProductStatus(null); - //娣诲姞鏃ュ織 - NcLogInfo ncLogInfo = new NcLogInfo(); - //妯″潡 - ncLogInfo.setModuleInfo("浜у搧缁撴瀯鏍�"); - //绫诲瀷 - ncLogInfo.setOperateType(3); - //鏃ュ織鍐呭 - ncLogInfo.setLogContent("浜у搧鍚嶇О锛�"+productInfo.getProductName()); - ncLogInfo.setRemark(JSONObject.toJSONString(en)); - iNcLogInfoService.saveLogNcInfos(ncLogInfo); boolean b = super.updateById(productInfo); - if(!b) + //鍚屾淇敼缁撴瀯鏍� + ProductMix productMix = productMixService.getById(Long.parseLong(id)); + productMix.setTreeName(productInfo.getProductName()); + productMix.setTreeCode(productInfo.getProductNo()); + productMixService.updateById(productMix); + if (!b) return false; ProductPermission permission = productPermissionService.getByProductIdAndUserId(id, userId); - if(permission == null) { + if (permission == null) { permission = new ProductPermission(); permission.setProductId(id); permission.setUserId(userId); b = productPermissionService.save(permission); - if(!b) { + if (!b) { return false; } } - PermissionStream stream = permissionStreamService.getByProductIdAndUserId(id, userId); - if(stream == null) { - stream = new PermissionStream(); - stream.setProductId(id); + PermissionStreamNew stream = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(id, userId, DocAttributionTypeEnum.PRODUCT.getCode().toString()); + if (stream == null) { + stream = new PermissionStreamNew(); + stream.setBusinessId(productInfo.getProductId()); stream.setUserId(userId); - return permissionStreamService.save(stream); + stream.setBusinessType(DocAttributionTypeEnum.PRODUCT.getCode().toString()); + return permissionStreamNewService.save(stream); } return b; } @@ -167,41 +194,45 @@ public List<CommonGenericTree> loadProductTree(String userId) { //浜у搧 List<ProductInfo> productInfoList = getByUserPerms(userId); - if(productInfoList == null || productInfoList.isEmpty()) + if (productInfoList == null || productInfoList.isEmpty()) return Collections.emptyList(); //閮ㄤ欢 List<ComponentExt> componentInfoList = componentInfoService.getByUserPermsAs(userId); - if(componentInfoList == null) + if (componentInfoList == null) componentInfoList = Collections.emptyList(); //闆朵欢 List<PartsInfo> partsInfos = partsInfoService.getByUserPerms(userId); - if(partsInfos == null) + if (partsInfos == null) partsInfos = Collections.emptyList(); + //宸ヨ壓瑙勭▼鐗堟湰 + List<ProcessSpecVersion> processSpecVersions = processSpecVersionService.getByUserPerms(userId); + if (processSpecVersions == null) + processSpecVersions = Collections.emptyList(); //宸ュ簭 - List<ProcessStream> processStreams=processStreamService.getByuserPerms(userId); - if(processStreams==null) + List<ProcessStream> processStreams = processStreamService.getByuserPerms(userId); + if (processStreams == null) processStreams = Collections.emptyList(); //宸ユ - List<WorkStep> workStepList=workStepService.getByUserPerms(userId); - if(workStepList==null) + List<WorkStep> workStepList = workStepService.getByUserPerms(userId); + if (workStepList == null) workStepList = Collections.emptyList(); - return ProductTreeWrapper.loadTree(productInfoList, componentInfoList, partsInfos,processStreams,workStepList); + return ProductTreeWrapper.loadTree(productInfoList, componentInfoList, partsInfos, processSpecVersions,processStreams, workStepList); } @Override public List<ProductInfo> getByUserPerms(String userId) { - if(!ValidateUtil.validateString(userId)) + if (!ValidateUtil.validateString(userId)) return Collections.emptyList(); return super.getBaseMapper().getByUserPerms(userId); } @Override public List<ProductInfo> getByUserPerms(String userId, String queryParam) { - if(!ValidateUtil.validateString(userId)) + if (!ValidateUtil.validateString(userId)) return Collections.emptyList(); //鍘婚櫎鏉冮檺 TODO LambdaQueryWrapper<ProductInfo> queryWrapper = Wrappers.lambdaQuery(); - if(ValidateUtil.validateString(queryParam)) { + if (ValidateUtil.validateString(queryParam)) { queryWrapper.and(wrapper -> wrapper.like(ProductInfo::getProductNo, queryParam) .or() .like(ProductInfo::getProductName, queryParam)); @@ -212,1004 +243,355 @@ @Override @Transactional(rollbackFor = {Exception.class}) public boolean deleteProductInfo(String id) { - if(!ValidateUtil.validateString(id)) + if (!ValidateUtil.validateString(id)) ExceptionCast.cast(CommonCode.INVALID_PARAM); ProductInfo productInfo = super.getById(id); - if(productInfo == null) + if (productInfo == null) ExceptionCast.cast(ProductInfoCode.PRODUCT_NOT_EXIST); //楠岃瘉浜у搧涓嬫槸鍚︽湁閮ㄤ欢 List<ComponentInfo> componentInfoList = componentInfoService.getByProductId(productInfo.getProductId()); - if(componentInfoList != null && !componentInfoList.isEmpty()) { + if (componentInfoList != null && !componentInfoList.isEmpty()) { ExceptionCast.cast(ProductInfoCode.PRODUCT_COMPONENT_EXIST); } //楠岃瘉浜у搧涓嬫槸鍚︽湁闆朵欢 List<PartsInfo> partsInfoList = partsInfoService.getByProductId(productInfo.getProductId()); - if(partsInfoList != null && !partsInfoList.isEmpty()) { + if (partsInfoList != null && !partsInfoList.isEmpty()) { ExceptionCast.cast(ProductInfoCode.PRODUCT_PARTS_EXIST); } List<ProcessStream> processStreams = processStreamService.findByProductId(id); - if(processStreams != null && !processStreams.isEmpty()) + if (processStreams != null && !processStreams.isEmpty()) ExceptionCast.cast(ProductInfoCode.PRODUCT_PROCESS_EXIST); boolean b = productPermissionService.deleteByProductId(id); - if(!b) + //楠岃瘉鏄惁瀛樺湪鏂囨。 + List<DocRelative> docRelativeList = iDocRelativeService.list(new QueryWrapper<DocRelative>().eq("attribution_type", DocAttributionTypeEnum.PRODUCT.getCode() ).eq("attribution_id", id)); + if (!docRelativeList.isEmpty()) { + ExceptionCast.cast(ProductInfoCode.PRODUCT_DOC_EXIST); + } + if (!b) ExceptionCast.cast(CommonCode.FAIL); b = productDepartmentService.deleteByProductId(id); - if(!b) + if (!b) ExceptionCast.cast(CommonCode.FAIL); - b = permissionStreamService.deleteUserPermsByProductId(id); - if(!b) + b = permissionStreamNewService.deletePermissionStreamNewByBusinessId(id, DocAttributionTypeEnum.PRODUCT.getCode().toString(),"0"); + if (!b) ExceptionCast.cast(CommonCode.FAIL); - b = permissionStreamService.deleteDepartPermsByProductId(id); - if(!b) + b = permissionStreamNewService.deletePermissionStreamNewByBusinessId(id, DocAttributionTypeEnum.PRODUCT.getCode().toString(),"1"); + if (!b) ExceptionCast.cast(CommonCode.FAIL); - b = docInfoService.deleteByProductId(id); - if(!b) + b = productMixService.removeById(id); + if (!b) ExceptionCast.cast(CommonCode.FAIL); - //娣诲姞鏃ュ織 - NcLogInfo ncLogInfo = new NcLogInfo(); - //妯″潡 - ncLogInfo.setModuleInfo("浜у搧缁撴瀯鏍�"); - //绫诲瀷 - ncLogInfo.setOperateType(4); - //鏃ュ織鍐呭 - ncLogInfo.setLogContent("浜у搧鍚嶇О锛�"+productInfo.getProductName()); - iNcLogInfoService.saveLogNcInfos(ncLogInfo); return super.removeById(id); } @Override public boolean checkProductPerm(Integer nodeType, String paramId) { - if(!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId)) + if (!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId)) ExceptionCast.cast(CommonCode.INVALID_PARAM); LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); - if(!ValidateUtil.validateString(userId)) + if (!ValidateUtil.validateString(userId)) ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST); - if(nodeType == 1) { + if (nodeType.equals(DocAttributionTypeEnum.PRODUCT.getCode())) { ProductInfo productInfo = super.getById(paramId); - if(productInfo == null) + if (productInfo == null) ExceptionCast.cast(ProductInfoCode.PRODUCT_NOT_EXIST); - PermissionStream permission = permissionStreamService.getByProductIdAndUserId(paramId, userId); - if(permission == null) - return false; - return true; - }else if(nodeType == 2) { + PermissionStreamNew permission = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(paramId, userId,"1"); + return permission != null; + } else if (nodeType.equals(DocAttributionTypeEnum.COMPONENT.getCode())) { ComponentInfo componentInfo = componentInfoService.getById(paramId); - if(componentInfo == null) + if (componentInfo == null) ExceptionCast.cast(ComponentInfoCode.COMPONENT_NOT_EXIST); - PermissionStream permission = permissionStreamService.getByComponentIdAndUserId(componentInfo.getProductId(), paramId, userId); - if(permission == null) - return false; - return true; - }else if(nodeType == 3) { + PermissionStreamNew permission = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(componentInfo.getComponentId(), userId,"2"); + return permission != null; + } else if (nodeType.equals(DocAttributionTypeEnum.PARTS.getCode())) { PartsInfo partsInfo = partsInfoService.getById(paramId); - if(partsInfo == null) + if (partsInfo == null) ExceptionCast.cast(PartsInfoCode.PARTS_NOT_EXIST); - PermissionStream permission = permissionStreamService.getByPartsIdAndUserId(partsInfo.getProductId(), partsInfo.getComponentId(), paramId, userId); - if(permission == null) - return false; - return true; + PermissionStreamNew permission = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(partsInfo.getPartsId(), userId, "3"); + return permission != null; + } else if (nodeType.equals(DocAttributionTypeEnum.OPERATION.getCode())) { + ProcessSpecVersion processSpecVersion = processSpecVersionService.getById(paramId); + if (processSpecVersion == null) + ExceptionCast.cast(PartsInfoCode.PROCESSSPECVERSION_NOT_EXIST); + PermissionStreamNew permission = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(processSpecVersion.getId(),userId,"4"); + return permission != null; + } else if (nodeType.equals(DocAttributionTypeEnum.PROCESS.getCode())) { + ProcessStream processStream = processStreamService.getById(paramId); + if (processStream == null) + ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST); + PermissionStreamNew permission = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(processStream.getProcessId(), userId,"5"); + return permission != null; + } else if (nodeType.equals(DocAttributionTypeEnum.WORKSITE.getCode())) { + WorkStep workStep = workStepService.getById(paramId); + if (workStep == null) + ExceptionCast.cast(ProcessInfoCode.WORKSTEP_NOT_EXIST); + PermissionStreamNew permission = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(workStep.getId(), userId,"6"); + return permission != null; } return false; } @Override public List<UserDepartExt> getUserPermsList(Integer nodeType, String paramId) { - if(!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId)) + if (!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId)) return null; - if(nodeType == 1) { + if (nodeType.equals(DocAttributionTypeEnum.PRODUCT.getCode())) { return productPermissionService.getUserPermsByProductId(paramId); - }else if(nodeType == 2) { + } else if (nodeType.equals(DocAttributionTypeEnum.COMPONENT.getCode())) { return componentPermissionService.getUserPermsByComponentId(paramId); - }else if(nodeType == 3) { + } else if (nodeType.equals(DocAttributionTypeEnum.PARTS.getCode())) { return partsPermissionService.getUserPermsByProductId(paramId); - }else { + } else if (nodeType.equals(DocAttributionTypeEnum.OPERATION.getCode())) { + return processSpecVersionPermissionService.getUserPermsByProductId(paramId); + } else if (nodeType.equals(DocAttributionTypeEnum.PROCESS.getCode())) { + return iProcessStreamPermissionService.getUserPermsByProductId(paramId); + } else if (nodeType.equals(DocAttributionTypeEnum.WORKSITE.getCode())) { + return iWorkStepPermissionService.getUserPermsByProductId(paramId); + } else { return null; } } @Override public List<SysUser> getUserNonPermsList(Integer nodeType, String paramId) { - if(!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId)) + if (!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId)) return null; - if(nodeType == 1) { + if (nodeType.equals(DocAttributionTypeEnum.PRODUCT.getCode())) { return productPermissionService.getUserNonPermsByProductId(paramId); - }else if(nodeType == 2) { + } else if (nodeType.equals(DocAttributionTypeEnum.COMPONENT.getCode())){ return componentPermissionService.getUserNonPermsByComponentId(paramId); - }else if(nodeType == 3) { + } else if (nodeType.equals(DocAttributionTypeEnum.PARTS.getCode())) { return partsPermissionService.getUserNonPermsByProductId(paramId); - }else { + } else if (nodeType.equals(DocAttributionTypeEnum.OPERATION.getCode())) { + return processSpecVersionPermissionService.getUserNonPermsByProductId(paramId); + } else if (nodeType.equals(DocAttributionTypeEnum.PROCESS.getCode())) { + return iProcessStreamPermissionService.getUserNonPermsByProductId(paramId); + } else if (nodeType.equals(DocAttributionTypeEnum.WORKSITE.getCode())) { + return iWorkStepPermissionService.getUserNonPermsByProductId(paramId); + } else { return null; } } @Override - public List<Department> getDepartPermsList(Integer nodeType, String paramId) { - if(!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId)) + public List<MdcProduction> getDepartPermsList(Integer nodeType, String paramId) { + if (!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId)) return null; - if(nodeType == 1) { + if (nodeType.equals(DocAttributionTypeEnum.PRODUCT.getCode())) { return productDepartmentService.getDepartPermsByProductId(paramId); - }else if(nodeType == 2) { + } else if (nodeType.equals(DocAttributionTypeEnum.COMPONENT.getCode())){ return componentDepartmentService.getDepartPermsByComponentId(paramId); - }else if(nodeType == 3) { + } else if (nodeType.equals(DocAttributionTypeEnum.PARTS.getCode())) { return partsDepartmentService.getDepartPermsByPartsId(paramId); - }else { + } else if (nodeType.equals(DocAttributionTypeEnum.OPERATION.getCode())) { + return processSpecVersionDepartmentService.getDepartPermsByPsvId(paramId); + } else if (nodeType.equals(DocAttributionTypeEnum.PROCESS.getCode())) { + return processionDepartmentService.getDepartPermsByProcessId(paramId); + } else if (nodeType.equals(DocAttributionTypeEnum.WORKSITE.getCode())) { + return workStepDepartmentService.getDepartPermsByStepId(paramId); + } + else { return null; } } @Override - public List<Department> getDepartNonPermsList(Integer nodeType, String paramId) { - if(!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId)) + public List<MdcProduction> getDepartNonPermsList(Integer nodeType, String paramId) { + if (!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId)) return null; - if(nodeType == 1) { + if (nodeType.equals(DocAttributionTypeEnum.PRODUCT.getCode())) { return productDepartmentService.getDepartNonPermsByProductId(paramId); - }else if(nodeType == 2) { + } else if (nodeType.equals(DocAttributionTypeEnum.COMPONENT.getCode())){ return componentDepartmentService.getDepartNonPermsByComponentId(paramId); - }else if(nodeType == 3) { + } else if (nodeType.equals(DocAttributionTypeEnum.PARTS.getCode())) { return partsDepartmentService.getDepartNonPermsByProductId(paramId); - }else { + } else if (nodeType.equals(DocAttributionTypeEnum.OPERATION.getCode())) { + return processionDepartmentService.getDepartNonPermsByProcessId(paramId); + } else if (nodeType.equals(DocAttributionTypeEnum.PROCESS.getCode())) { + return processionDepartmentService.getDepartNonPermsByProcessId(paramId); + } else if (nodeType.equals(DocAttributionTypeEnum.WORKSITE.getCode())) { + return workStepDepartmentService.getDepartNonPermsByStepId(paramId); + } else { return null; } } /** - * 1銆佸惊鐜彃鍏ヤ紭鍖� - * 2銆佹煡璇紭鍖� - * 3銆佸皝瑁呬紭鍖� TODO - * @param nodeType 1 浜у搧 2 閮ㄤ欢 3 闆朵欢 - * @param paramId 浜у搧鏍戣妭鐐筰d + * @param nodeType 1 浜у搧 2 閮ㄤ欢 3 闆朵欢 + * @param paramId 浜у搧鏍戣妭鐐筰d * @param relativeFlag 1 鏄� 2 鍚� - * @param userIds 娣诲姞鐢ㄦ埛ids + * @param userIds 娣诲姞鐢ㄦ埛ids + * todo浼樺寲缁撴瀯锛岄噰鐢╩ix琛ㄨ繘琛岀埗瀛愰�掑綊鏌ヨ锛屽垎绫昏繘琛屾潈闄愬垎閰嶏紙鍗曡〃鏌ヨ锛� * @return */ @Override @Transactional(rollbackFor = {Exception.class}) - public boolean assignAddUser(Integer nodeType, String paramId, Integer relativeFlag, String[] userIds) { - //鍙傛暟鏍¢獙 - if(!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId) || - !ValidateUtil.validateInteger(relativeFlag)) - ExceptionCast.cast(CommonCode.INVALID_PARAM); - if(userIds == null || userIds.length < 1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_NONE); + public boolean assignAddUserAll(Integer nodeType, String paramId, Integer relativeFlag, String[] userIds) { + // 鍙傛暟鏍¢獙 + validateInputParameters(nodeType, paramId, relativeFlag, "1", userIds); List<String> ids = new ArrayList<>(userIds.length); Collections.addAll(ids, userIds); Collection<SysUser> userList = userService.listByIds(ids); - if(userList == null || userList.isEmpty() || userList.size() != userIds.length) - ExceptionCast.cast(CommonCode.INVALID_PARAM); - //鑺傜偣绫诲瀷鍒ゅ畾 - if(nodeType == 3) { - //澶勭悊闆朵欢 - PartsInfo partsInfo = partsInfoService.getById(paramId); - if(partsInfo == null) - ExceptionCast.cast(PartsInfoCode.PARTS_NOT_EXIST); - boolean b = checkProductPerm(3, partsInfo.getPartsId()); - if(!b) { - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - } - return partsInfoService.assignAddUser(partsInfo, userList); - }else if(nodeType == 1) { - //澶勭悊浜у搧 - ProductInfo productInfo = super.getById(paramId); - if(productInfo == null) - ExceptionCast.cast(ProductInfoCode.PRODUCT_NOT_EXIST); - boolean b1 = checkProductPerm(1, productInfo.getProductId()); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - b1 = this.assignAddUser(productInfo, userList); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - if(relativeFlag == 1) { + validateSysUserList(userList, ids); + switch (nodeType) { + case 1: + return handleProductInfo(paramId, relativeFlag, null,userList); + case 2: + return handleComponentInfo(paramId, relativeFlag, null,userList); + case 3: + return handlePartsInfo(paramId, relativeFlag, null,userList); + case 4: + return handleProcessSpecVersion(paramId, relativeFlag, null,userList); + case 5: + return handleProcessStream(paramId, relativeFlag, null,userList); + case 6: + return handleWorkStep(paramId, null,userList); - List<ComponentInfo> componentInfoList = componentInfoService.getByProductId(productInfo.getProductId()); - if(componentInfoList == null || componentInfoList.isEmpty()){ - //娌℃湁鍙坊鍔犵殑闆堕儴浠舵潈闄� - return true; - } - - //鏈�缁堜繚瀛樻潈闄愭暟鎹垵濮嬪寲 - List<ComponentPermission> componentPermissionList = new ArrayList<>(); - List<PartsPermission> partsPermissionList = new ArrayList<>(); - List<PermissionStream> permissionStreamList = new ArrayList<>(); - //澶勭悊瀛愰儴浠� - List<String> componentIds = new ArrayList<>(); - PermissionStream s; - - Map<String, ComponentPermission> componentPermissionMap = new HashMap<>(); - Map<String, ComponentInfo> componentInfoMap = new HashMap<>(); - - //鍒濆鍖栧叏浣撴暟鎹� - String key; - ComponentPermission cp; - ComponentInfo cpInfo; - for(ComponentInfo c : componentInfoList){ - componentIds.add(c.getComponentId()); - componentInfoMap.put(c.getComponentId(), c); - for(SysUser u : userList){ - key = c.getComponentId() + "," + u.getId(); - cp = new ComponentPermission(c.getComponentId(), u.getId()); - componentPermissionMap.put(key, cp); - } - } - //鏌ヨ宸插瓨鍦ㄧ殑鏉冮檺鏁版嵁 - List<ComponentPermission> existList = componentPermissionService.getByComponentIdsAndUserIds(componentIds, ids); - if(existList != null && !existList.isEmpty()){ - //韪㈠嚭鏉冮檺鏁版嵁 - for(ComponentPermission permission : existList){ - key = permission.getComponentId() + "," + permission.getUserId(); - if(componentPermissionMap.containsKey(key)){ - componentPermissionMap.remove(key); - } - } - } - for(Map.Entry<String, ComponentPermission> entry : componentPermissionMap.entrySet()){ - cp = entry.getValue(); - componentPermissionList.add(cp); - cpInfo = componentInfoMap.get(cp.getComponentId()); - s = new PermissionStream(); - s.setProductId(cpInfo.getProductId()); - s.setComponentId(cpInfo.getComponentId()); - s.setUserId(cp.getUserId()); - permissionStreamList.add(s); - } - - //澶勭悊瀛愰浂浠� - List<PartsInfo> partsInfoList = partsInfoService.getByComponentIdList(productInfo.getProductId(), componentIds); - if(partsInfoList != null && !partsInfoList.isEmpty()) { - Map<String, PartsPermission> partsPermissionHashMap = new HashMap<>(); - Map<String, PartsInfo> partsInfoMap = new HashMap<>(); - List<String> partsIds = new ArrayList<>(); - PartsPermission pp; - PartsInfo ptInfo; - for(PartsInfo p : partsInfoList){ - partsIds.add(p.getPartsId()); - partsInfoMap.put(p.getPartsId(), p); - for(SysUser u : userList){ - key = p.getPartsId() + "," + u.getId(); - pp = new PartsPermission(p.getPartsId(), u.getId()); - partsPermissionHashMap.put(key, pp); - } - } - - //鏌ヨ宸插瓨鍦ㄧ殑鏉冮檺鏁版嵁 - List<PartsPermission> existPartsList = partsPermissionService.getByPartsIdsAndUserIds(partsIds, ids); - if(existPartsList != null && !existPartsList.isEmpty()){ - //韪㈠嚭鏉冮檺鏁版嵁 - for(PartsPermission permission : existPartsList){ - key = permission.getPartsId() + "," + permission.getUserId(); - if(partsPermissionHashMap.containsKey(key)){ - partsPermissionHashMap.remove(key); - } - } - } - - for(Map.Entry<String, PartsPermission> entry : partsPermissionHashMap.entrySet()){ - pp = entry.getValue(); - partsPermissionList.add(pp); - ptInfo = partsInfoMap.get(pp.getPartsId()); - s = new PermissionStream(); - s.setProductId(ptInfo.getProductId()); - s.setComponentId(ptInfo.getComponentId()); - s.setPartsId(ptInfo.getPartsId()); - s.setUserId(pp.getUserId()); - permissionStreamList.add(s); - } - } - - if(!componentPermissionList.isEmpty()){ - componentPermissionService.saveBatch(componentPermissionList); - } - if(!partsPermissionList.isEmpty()){ - partsPermissionService.saveBatch(partsPermissionList); - } - if(!permissionStreamList.isEmpty()){ - permissionStreamService.saveBatch(permissionStreamList); - } - } - return true; - }else if(nodeType == 2) { - //澶勭悊閮ㄤ欢 - ComponentInfo componentInfo = componentInfoService.getById(paramId); - if(componentInfo == null) - ExceptionCast.cast(ComponentInfoCode.COMPONENT_NOT_EXIST); - boolean b1 = checkProductPerm(2, componentInfo.getComponentId()); - if(!b1){ - //娌℃湁褰撳墠閮ㄤ欢鐨勬潈闄� - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - } - b1 = componentInfoService.assignAddUser(componentInfo, userList); - if(!b1){ - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - } - if(relativeFlag == 1) { - //鏈�缁堜繚瀛樻潈闄愭暟鎹垵濮嬪寲 - List<ComponentPermission> componentPermissionList = new ArrayList<>(); - List<PartsPermission> partsPermissionList = new ArrayList<>(); - List<PermissionStream> permissionStreamList = new ArrayList<>(); - - List<String> componentIds = new ArrayList<>(); - PermissionStream s; - String key; - //澶勭悊瀛愰儴浠� - List<ComponentInfo> childrenList = componentInfoService.getByParentId(componentInfo.getComponentId()); - if(childrenList != null && !childrenList.isEmpty()) { - Map<String, ComponentPermission> componentPermissionMap = new HashMap<>(); - Map<String, ComponentInfo> componentInfoMap = new HashMap<>(); - - //鍒濆鍖栧叏浣撴暟鎹� - ComponentPermission cp; - ComponentInfo cpInfo; - for(ComponentInfo c : childrenList){ - componentIds.add(c.getComponentId()); - componentInfoMap.put(c.getComponentId(), c); - for(SysUser u : userList){ - key = c.getComponentId() + "," + u.getId(); - cp = new ComponentPermission(c.getComponentId(), u.getId()); - componentPermissionMap.put(key, cp); - } - } - //鏌ヨ宸插瓨鍦ㄧ殑鏉冮檺鏁版嵁 - List<ComponentPermission> existList = componentPermissionService.getByComponentIdsAndUserIds(componentIds, ids); - if(existList != null && !existList.isEmpty()){ - //韪㈠嚭鏉冮檺鏁版嵁 - for(ComponentPermission permission : existList){ - key = permission.getComponentId() + "," + permission.getUserId(); - if(componentPermissionMap.containsKey(key)){ - componentPermissionMap.remove(key); - } - } - } - for(Map.Entry<String, ComponentPermission> entry : componentPermissionMap.entrySet()){ - cp = entry.getValue(); - componentPermissionList.add(cp); - cpInfo = componentInfoMap.get(cp.getComponentId()); - s = new PermissionStream(); - s.setProductId(cpInfo.getProductId()); - s.setComponentId(cpInfo.getComponentId()); - s.setUserId(cp.getUserId()); - permissionStreamList.add(s); - } - } - //澶勭悊闆朵欢 - componentIds.add(componentInfo.getComponentId()); - List<PartsInfo> partsInfoList = partsInfoService.getByComponentIdList(componentInfo.getProductId(), componentIds); - if(partsInfoList != null && !partsInfoList.isEmpty()) { - Map<String, PartsPermission> partsPermissionHashMap = new HashMap<>(); - Map<String, PartsInfo> partsInfoMap = new HashMap<>(); - List<String> partsIds = new ArrayList<>(); - PartsPermission pp; - PartsInfo ptInfo; - for(PartsInfo p : partsInfoList){ - partsIds.add(p.getPartsId()); - partsInfoMap.put(p.getPartsId(), p); - for(SysUser u : userList){ - key = p.getPartsId() + "," + u.getId(); - pp = new PartsPermission(p.getPartsId(), u.getId()); - partsPermissionHashMap.put(key, pp); - } - } - - //鏌ヨ宸插瓨鍦ㄧ殑鏉冮檺鏁版嵁 - List<PartsPermission> existPartsList = partsPermissionService.getByPartsIdsAndUserIds(partsIds, ids); - if(existPartsList != null && !existPartsList.isEmpty()){ - //韪㈠嚭鏉冮檺鏁版嵁 - for(PartsPermission permission : existPartsList){ - key = permission.getPartsId() + "," + permission.getUserId(); - if(partsPermissionHashMap.containsKey(key)){ - partsPermissionHashMap.remove(key); - } - } - } - - for(Map.Entry<String, PartsPermission> entry : partsPermissionHashMap.entrySet()){ - pp = entry.getValue(); - partsPermissionList.add(pp); - ptInfo = partsInfoMap.get(pp.getPartsId()); - s = new PermissionStream(); - s.setProductId(ptInfo.getProductId()); - s.setComponentId(ptInfo.getComponentId()); - s.setPartsId(ptInfo.getPartsId()); - s.setUserId(pp.getUserId()); - permissionStreamList.add(s); - } - } - if(!componentPermissionList.isEmpty()){ - componentPermissionService.saveBatch(componentPermissionList); - } - if(!partsPermissionList.isEmpty()){ - partsPermissionService.saveBatch(partsPermissionList); - } - if(!permissionStreamList.isEmpty()){ - permissionStreamService.saveBatch(permissionStreamList); - } - } - return true; + default: + return false; } - return false; } /** - * 寰呬紭鍖� TODO - * @param nodeType 1 浜у搧 2 閮ㄤ欢 3 闆朵欢 - * @param paramId 浜у搧鏍戣妭鐐筰d - * @param relativeFlag 1 鏄� 2 鍚� - * @param userIds 绉婚櫎鐢ㄦ埛ids - * @return - */ - @Override - @Transactional(rollbackFor = {Exception.class}) - public boolean assignRemoveUser(Integer nodeType, String paramId, Integer relativeFlag, String[] userIds) { - if(!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId) || - !ValidateUtil.validateInteger(relativeFlag)) - ExceptionCast.cast(CommonCode.INVALID_PARAM); - if(userIds == null || userIds.length < 1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_NONE); - List<String> ids = new ArrayList<>(userIds.length); - Collections.addAll(ids, userIds); - Collection<SysUser> userList = userService.listByIds(ids); - if(userList == null || userList.isEmpty() || userList.size() != userIds.length) - ExceptionCast.cast(CommonCode.INVALID_PARAM); - if(nodeType == 3) { - //澶勭悊闆朵欢 - PartsInfo partsInfo = partsInfoService.getById(paramId); - if(partsInfo == null) - ExceptionCast.cast(PartsInfoCode.PARTS_NOT_EXIST); - boolean b = checkProductPerm(3, partsInfo.getPartsId()); - if(!b) { - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - } - return partsInfoService.assignRemoveUser(partsInfo, userList); - }else if(nodeType == 1) { - //澶勭悊浜у搧 - ProductInfo productInfo = super.getById(paramId); - if(productInfo == null) - ExceptionCast.cast(ProductInfoCode.PRODUCT_NOT_EXIST); - boolean b1 = checkProductPerm(1, productInfo.getProductId()); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - b1 = this.assignRemoveUser(productInfo, userList); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - if(relativeFlag == 1) { - //澶勭悊浜у搧 涓嬬殑閮ㄤ欢 - List<String> componentIds = new ArrayList<>(); - //鎬昏闇�瑕佸垹闄ょ殑鏁版嵁淇℃伅 - List<ComponentPermission> componentPermissionList = new ArrayList<>(); - List<PartsPermission> partsPermissionList = new ArrayList<>(); - List<PermissionStream> permissionStreamList = new ArrayList<>(); - List<ComponentInfo> componentInfoList = componentInfoService.getByProductId(productInfo.getProductId()); - if(componentInfoList != null && !componentInfoList.isEmpty()) { - for(ComponentInfo componentInfo : componentInfoList){ - componentIds.add(componentInfo.getComponentId()); - } - componentPermissionList = componentPermissionService.getByComponentIdsAndUserIds(componentIds, ids); - List<PermissionStream> existPermissionList = permissionStreamService.getByComponentIdsAndUserIds(componentIds, ids); - if(existPermissionList != null && !existPermissionList.isEmpty()){ - permissionStreamList.addAll(existPermissionList); - } - } - - //澶勭悊浜у搧 涓嬬殑闆朵欢 - List<PartsInfo> partsInfoList = partsInfoService.getByComponentIdList(productInfo.getProductId(), componentIds); - List<String> partsIds = new ArrayList<>(); - if(partsInfoList != null && !partsInfoList.isEmpty()) { - for(PartsInfo partsInfo : partsInfoList){ - partsIds.add(partsInfo.getPartsId()); - } - partsPermissionList = partsPermissionService.getByPartsIdsAndUserIds(partsIds, ids); - List<PermissionStream> existPermissionList = permissionStreamService.getByPartsIdsAndUserIds(partsIds, ids); - if(existPermissionList != null && !existPermissionList.isEmpty()){ - permissionStreamList.addAll(existPermissionList); - } - } - - if(componentPermissionList != null && !componentPermissionList.isEmpty()){ - componentPermissionService.removeByCollection(componentPermissionList); - } - if(partsPermissionList != null && !partsPermissionList.isEmpty()){ - partsPermissionService.removeByCollection(partsPermissionList); - } - if(permissionStreamList != null && !permissionStreamList.isEmpty()){ - permissionStreamService.removeByCollection(permissionStreamList); - } - } - return true; - }else if(nodeType == 2) { - ComponentInfo componentInfo = componentInfoService.getById(paramId); - if(componentInfo == null) - ExceptionCast.cast(ComponentInfoCode.COMPONENT_NOT_EXIST); - boolean b1 = checkProductPerm(2, componentInfo.getComponentId()); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - b1 = componentInfoService.assignRemoveUser(componentInfo, userList); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - if(relativeFlag == 1) { - List<String> componentIdList = new ArrayList<>(); - //鏈�缁堥渶瑕佸垹闄ょ殑鏁版嵁 - List<ComponentPermission> componentPermissionList = new ArrayList<>(); - List<PartsPermission> partsPermissionList = new ArrayList<>(); - List<PermissionStream> permissionStreamList = new ArrayList<>(); - List<ComponentInfo> childrenList = componentInfoService.getByParentId(componentInfo.getComponentId()); - if(childrenList != null && !childrenList.isEmpty()) { - for(ComponentInfo component : childrenList){ - componentIdList.add(component.getComponentId()); - } - componentPermissionList = componentPermissionService.getByComponentIdsAndUserIds(componentIdList, ids); - List<PermissionStream> existPermissionList = permissionStreamService.getByComponentIdsAndUserIds(componentIdList, ids); - if(existPermissionList != null && !existPermissionList.isEmpty()){ - permissionStreamList.addAll(existPermissionList); - } - } - - componentIdList.add(componentInfo.getComponentId()); - List<PartsInfo> partsInfoList = partsInfoService.getByComponentIdList(componentInfo.getProductId(), componentIdList); - List<String> partsIds = new ArrayList<>(); - if(partsInfoList != null && !partsInfoList.isEmpty()) { - for(PartsInfo partsInfo : partsInfoList){ - partsIds.add(partsInfo.getPartsId()); - } - partsPermissionList = partsPermissionService.getByPartsIdsAndUserIds(partsIds, ids); - List<PermissionStream> existPermissionList = permissionStreamService.getByPartsIdsAndUserIds(partsIds, ids); - if(existPermissionList != null && !existPermissionList.isEmpty()){ - permissionStreamList.addAll(existPermissionList); - } - } - if(componentPermissionList != null && !componentPermissionList.isEmpty()){ - componentPermissionService.removeByCollection(componentPermissionList); - } - if(partsPermissionList != null && !partsPermissionList.isEmpty()){ - partsPermissionService.removeByCollection(partsPermissionList); - } - if(permissionStreamList != null && !permissionStreamList.isEmpty()){ - permissionStreamService.removeByCollection(permissionStreamList); - } - } - return true; - } - return false; - } - - /** - * 寰呬紭鍖� TODO - * @param nodeType 1 浜у搧 2 閮ㄤ欢 3 闆朵欢 - * @param paramId 浜у搧鏍戣妭鐐筰d - * @param relativeFlag 1 鏄� 2 鍚� + * @param nodeType 1 浜у搧 2 閮ㄤ欢 3 闆朵欢 5 宸ュ簭 6 宸ユ + * @param paramId 浜у搧鏍戣妭鐐筰d + * @param relativeFlag 1 鏄� 2 鍚� * @param departmentIds 娣诲姞閮ㄩ棬ids + * todo浼樺寲缁撴瀯锛岄噰鐢╩ix琛ㄨ繘琛岀埗瀛愰�掑綊鏌ヨ锛屽垎绫昏繘琛屾潈闄愬垎閰嶏紙鍗曡〃鏌ヨ锛� * @return */ @Override @Transactional(rollbackFor = {Exception.class}) - public boolean assignAddDepartment(Integer nodeType, String paramId, Integer relativeFlag, String[] departmentIds) { - if(!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId) || - !ValidateUtil.validateInteger(relativeFlag)) - ExceptionCast.cast(CommonCode.INVALID_PARAM); - if(departmentIds == null || departmentIds.length < 1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_NONE); + public boolean assignAddDepartmentAll(Integer nodeType, String paramId, Integer relativeFlag, String[] departmentIds) { + validateInputParameters(nodeType, paramId, relativeFlag, "2", departmentIds); List<String> ids = new ArrayList<>(departmentIds.length); Collections.addAll(ids, departmentIds); - Collection<Department> departList = departmentService.listByIds(ids); - if(departList == null || departList.isEmpty() || departList.size() != departmentIds.length) - ExceptionCast.cast(CommonCode.INVALID_PARAM); - if(nodeType == 3) { - //澶勭悊闆朵欢 - PartsInfo partsInfo = partsInfoService.getById(paramId); - if(partsInfo == null) - ExceptionCast.cast(PartsInfoCode.PARTS_NOT_EXIST); - boolean b = checkProductPerm(3, partsInfo.getPartsId()); - if(!b) { - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - } - return partsInfoService.assignAddDepart(partsInfo, departList); - }else if(nodeType == 1) { - //澶勭悊浜у搧 - ProductInfo productInfo = super.getById(paramId); - if(productInfo == null) - ExceptionCast.cast(ProductInfoCode.PRODUCT_NOT_EXIST); - boolean b1 = checkProductPerm(1, productInfo.getProductId()); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - b1 = this.assignAddDepartment(productInfo, departList); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - if(relativeFlag == 1) { - //澶勭悊浜у搧 涓嬬殑閮ㄤ欢 - List<ComponentInfo> componentInfoList = componentInfoService.getByProductId(productInfo.getProductId()); - //鏈�缁堜繚瀛樻潈闄愭暟鎹垵濮嬪寲 - List<ComponentDepartment> componentPermissionList = new ArrayList<>(); - List<PartsDepartment> partsPermissionList = new ArrayList<>(); - List<PermissionStream> permissionStreamList = new ArrayList<>(); - //澶勭悊瀛愰儴浠� - List<String> componentIds = new ArrayList<>(); - PermissionStream s; + List<String> deps=mdcProductionService.findAllProductionIds(ids); + Collection<MdcProduction> mdcProductionList = mdcProductionService.listByIds(deps); + validateMdcProductionList(mdcProductionList, deps); + switch (nodeType) { + case 1: + return handleProductInfo(paramId, relativeFlag, mdcProductionList,null); + case 2: + return handleComponentInfo(paramId, relativeFlag, mdcProductionList,null); + case 3: + return handlePartsInfo(paramId, relativeFlag, mdcProductionList,null); + case 4: + return handleProcessSpecVersion(paramId, relativeFlag, mdcProductionList,null); + case 5: + return handleProcessStream(paramId, relativeFlag, mdcProductionList,null); + case 6: + return handleWorkStep(paramId, mdcProductionList,null); - Map<String, ComponentDepartment> componentPermissionMap = new HashMap<>(); - Map<String, ComponentInfo> componentInfoMap = new HashMap<>(); - - //鍒濆鍖栧叏浣撴暟鎹� - String key; - ComponentDepartment cp; - ComponentInfo cpInfo; - for(ComponentInfo c : componentInfoList){ - componentIds.add(c.getComponentId()); - componentInfoMap.put(c.getComponentId(), c); - for(Department u : departList){ - key = c.getComponentId() + "," + u.getDepartId(); - cp = new ComponentDepartment(c.getComponentId(), u.getDepartId()); - componentPermissionMap.put(key, cp); - } - } - //鏌ヨ宸插瓨鍦ㄧ殑鏉冮檺鏁版嵁 - List<ComponentDepartment> existList = componentDepartmentService.getByComponentIdsAndDepartIds(componentIds, ids); - if(existList != null && !existList.isEmpty()){ - //韪㈠嚭鏉冮檺鏁版嵁 - for(ComponentDepartment permission : existList){ - key = permission.getComponentId() + "," + permission.getDepartId(); - if(componentPermissionMap.containsKey(key)){ - componentPermissionMap.remove(key); - } - } - } - for(Map.Entry<String, ComponentDepartment> entry : componentPermissionMap.entrySet()){ - cp = entry.getValue(); - componentPermissionList.add(cp); - cpInfo = componentInfoMap.get(cp.getComponentId()); - s = new PermissionStream(); - s.setProductId(cpInfo.getProductId()); - s.setComponentId(cpInfo.getComponentId()); - s.setDepartId(cp.getDepartId()); - permissionStreamList.add(s); - } - - //澶勭悊瀛愰浂浠� - List<PartsInfo> partsInfoList = partsInfoService.getByComponentIdList(productInfo.getProductId(), componentIds); - if(partsInfoList != null && !partsInfoList.isEmpty()) { - Map<String, PartsDepartment> partsPermissionHashMap = new HashMap<>(); - Map<String, PartsInfo> partsInfoMap = new HashMap<>(); - List<String> partsIds = new ArrayList<>(); - PartsDepartment pp; - PartsInfo ptInfo; - for(PartsInfo p : partsInfoList){ - partsIds.add(p.getPartsId()); - partsInfoMap.put(p.getPartsId(), p); - for(Department u : departList){ - key = p.getPartsId() + "," + u.getDepartId(); - pp = new PartsDepartment(p.getPartsId(), u.getDepartId()); - partsPermissionHashMap.put(key, pp); - } - } - - //鏌ヨ宸插瓨鍦ㄧ殑鏉冮檺鏁版嵁 - List<PartsDepartment> existPartsList = partsDepartmentService.getByPartsIdsAndDepartIds(partsIds, ids); - if(existPartsList != null && !existPartsList.isEmpty()){ - //韪㈠嚭鏉冮檺鏁版嵁 - for(PartsDepartment permission : existPartsList){ - key = permission.getPartsId() + "," + permission.getDepartId(); - if(partsPermissionHashMap.containsKey(key)){ - partsPermissionHashMap.remove(key); - } - } - } - - for(Map.Entry<String, PartsDepartment> entry : partsPermissionHashMap.entrySet()){ - pp = entry.getValue(); - partsPermissionList.add(pp); - ptInfo = partsInfoMap.get(pp.getPartsId()); - s = new PermissionStream(); - s.setProductId(ptInfo.getProductId()); - s.setComponentId(ptInfo.getComponentId()); - s.setPartsId(ptInfo.getPartsId()); - s.setDepartId(pp.getDepartId()); - permissionStreamList.add(s); - } - } - - if(!componentPermissionList.isEmpty()){ - componentDepartmentService.saveBatch(componentPermissionList); - } - if(!partsPermissionList.isEmpty()){ - partsDepartmentService.saveBatch(partsPermissionList); - } - if(!permissionStreamList.isEmpty()){ - permissionStreamService.saveBatch(permissionStreamList); - } - } - return true; - }else if(nodeType == 2) { - ComponentInfo componentInfo = componentInfoService.getById(paramId); - if(componentInfo == null) - ExceptionCast.cast(ComponentInfoCode.COMPONENT_NOT_EXIST); - boolean b1 = checkProductPerm(2, componentInfo.getComponentId()); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - b1 = componentInfoService.assignAddDepart(componentInfo, departList); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - if(relativeFlag == 1) { - List<String> componentIdList = new ArrayList<>(); - List<ComponentInfo> childrenList = componentInfoService.getByParentId(componentInfo.getComponentId()); - - //鏈�缁堜繚瀛樻潈闄愭暟鎹垵濮嬪寲 - List<ComponentDepartment> componentPermissionList = new ArrayList<>(); - List<PartsDepartment> partsPermissionList = new ArrayList<>(); - List<PermissionStream> permissionStreamList = new ArrayList<>(); - //澶勭悊瀛愰儴浠� - PermissionStream s; - - Map<String, ComponentDepartment> componentPermissionMap = new HashMap<>(); - Map<String, ComponentInfo> componentInfoMap = new HashMap<>(); - - //鍒濆鍖栧叏浣撴暟鎹� - String key; - ComponentDepartment cp; - ComponentInfo cpInfo; - for(ComponentInfo c : childrenList){ - componentIdList.add(c.getComponentId()); - componentInfoMap.put(c.getComponentId(), c); - for(Department u : departList){ - key = c.getComponentId() + "," + u.getDepartId(); - cp = new ComponentDepartment(c.getComponentId(), u.getDepartId()); - componentPermissionMap.put(key, cp); - } - } - //鏌ヨ宸插瓨鍦ㄧ殑鏉冮檺鏁版嵁 - List<ComponentDepartment> existList = componentDepartmentService.getByComponentIdsAndDepartIds(componentIdList, ids); - if(existList != null && !existList.isEmpty()){ - //韪㈠嚭鏉冮檺鏁版嵁 - for(ComponentDepartment permission : existList){ - key = permission.getComponentId() + "," + permission.getDepartId(); - if(componentPermissionMap.containsKey(key)){ - componentPermissionMap.remove(key); - } - } - } - for(Map.Entry<String, ComponentDepartment> entry : componentPermissionMap.entrySet()){ - cp = entry.getValue(); - componentPermissionList.add(cp); - cpInfo = componentInfoMap.get(cp.getComponentId()); - s = new PermissionStream(); - s.setProductId(cpInfo.getProductId()); - s.setComponentId(cpInfo.getComponentId()); - s.setDepartId(cp.getDepartId()); - permissionStreamList.add(s); - } - - //澶勭悊瀛愰浂浠� - componentIdList.add(componentInfo.getComponentId()); - List<PartsInfo> partsInfoList = partsInfoService.getByComponentIdList(componentInfo.getProductId(), componentIdList); - if(partsInfoList != null && !partsInfoList.isEmpty()) { - Map<String, PartsDepartment> partsPermissionHashMap = new HashMap<>(); - Map<String, PartsInfo> partsInfoMap = new HashMap<>(); - List<String> partsIds = new ArrayList<>(); - PartsDepartment pp; - PartsInfo ptInfo; - for(PartsInfo p : partsInfoList){ - partsIds.add(p.getPartsId()); - partsInfoMap.put(p.getPartsId(), p); - for(Department u : departList){ - key = p.getPartsId() + "," + u.getDepartId(); - pp = new PartsDepartment(p.getPartsId(), u.getDepartId()); - partsPermissionHashMap.put(key, pp); - } - } - - //鏌ヨ宸插瓨鍦ㄧ殑鏉冮檺鏁版嵁 - List<PartsDepartment> existPartsList = partsDepartmentService.getByPartsIdsAndDepartIds(partsIds, ids); - if(existPartsList != null && !existPartsList.isEmpty()){ - //韪㈠嚭鏉冮檺鏁版嵁 - for(PartsDepartment permission : existPartsList){ - key = permission.getPartsId() + "," + permission.getDepartId(); - if(partsPermissionHashMap.containsKey(key)){ - partsPermissionHashMap.remove(key); - } - } - } - - for(Map.Entry<String, PartsDepartment> entry : partsPermissionHashMap.entrySet()){ - pp = entry.getValue(); - partsPermissionList.add(pp); - ptInfo = partsInfoMap.get(pp.getPartsId()); - s = new PermissionStream(); - s.setProductId(ptInfo.getProductId()); - s.setComponentId(ptInfo.getComponentId()); - s.setPartsId(ptInfo.getPartsId()); - s.setDepartId(pp.getDepartId()); - permissionStreamList.add(s); - } - } - - if(!componentPermissionList.isEmpty()){ - componentDepartmentService.saveBatch(componentPermissionList); - } - if(!partsPermissionList.isEmpty()){ - partsDepartmentService.saveBatch(partsPermissionList); - } - if(!permissionStreamList.isEmpty()){ - permissionStreamService.saveBatch(permissionStreamList); - } - } - return true; + default: + return false; } - return false; } /** - * 寰呬紭鍖� TODO - * @param nodeType 1 浜у搧 2 閮ㄤ欢 3 闆朵欢 - * @param paramId 浜у搧鏍戣妭鐐筰d + * @param nodeType 1 浜у搧 2 閮ㄤ欢 3 闆朵欢 + * @param paramId 浜у搧鏍戣妭鐐筰d * @param relativeFlag 1 鏄� 2 鍚� - * @param departmentIds 绉婚櫎閮ㄩ棬ids + * @param userIds 绉婚櫎鐢ㄦ埛ids + * todo浼樺寲缁撴瀯锛岄噰鐢╩ix琛ㄨ繘琛岀埗瀛愰�掑綊鏌ヨ锛屽垎绫昏繘琛屾潈闄愬垎閰嶏紙鍗曡〃鏌ヨ锛� * @return */ @Override @Transactional(rollbackFor = {Exception.class}) - public boolean assignRemoveDepartment(Integer nodeType, String paramId, Integer relativeFlag, String[] departmentIds) { - if(!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId) || - !ValidateUtil.validateInteger(relativeFlag)) - ExceptionCast.cast(CommonCode.INVALID_PARAM); - if(departmentIds == null || departmentIds.length < 1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_NONE); + public boolean assignRemoveUserAll(Integer nodeType, String paramId, Integer relativeFlag, String[] userIds) { + validateInputParameters(nodeType, paramId, relativeFlag, "1", userIds); + List<String> userIdsList = Arrays.asList(userIds); + Collection<SysUser> userList = userService.listByIds(userIdsList); + validateSysUserList(userList, userIdsList); + switch (nodeType) { + case 1: + return handleProductInfoRemoval(paramId, relativeFlag, userList,null); + case 2: + return handleComponentInfoRemoval(paramId, relativeFlag, userList,null); + case 3: + return handlePartsInfoRemoval(paramId, relativeFlag, userList,null); + case 4: + return handleProcessSpecVersionRemoval(paramId, relativeFlag, userList,null); + case 5: + return handleProcessStreamRemoval(paramId, relativeFlag, userList,null); + case 6: + return handleWorkStepRemoval(paramId, userList,null); + default: + return false; + } + } + + + /** + * + * @param nodeType 1 浜у搧 2 閮ㄤ欢 3 闆朵欢 5 宸ュ簭 6 宸ユ + * @param paramId 浜у搧鏍戣妭鐐筰d + * @param relativeFlag 1 鏄� 2 鍚� + * @param departmentIds 绉婚櫎閮ㄩ棬ids + * todo浼樺寲缁撴瀯锛岄噰鐢╩ix琛ㄨ繘琛岀埗瀛愰�掑綊鏌ヨ锛屽垎绫昏繘琛屾潈闄愬垎閰嶏紙鍗曡〃鏌ヨ锛� + * @return + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean assignRemoveDepartmentAll(Integer nodeType, String paramId, Integer relativeFlag, String[] departmentIds) { + validateInputParameters(nodeType, paramId, relativeFlag, "2", departmentIds); List<String> ids = new ArrayList<>(departmentIds.length); Collections.addAll(ids, departmentIds); - Collection<Department> departList = departmentService.listByIds(ids); - if(departList == null || departList.isEmpty() || departList.size() != departmentIds.length) - ExceptionCast.cast(CommonCode.INVALID_PARAM); - if(nodeType == 3) { - //澶勭悊闆朵欢 - PartsInfo partsInfo = partsInfoService.getById(paramId); - if(partsInfo == null) - ExceptionCast.cast(PartsInfoCode.PARTS_NOT_EXIST); - boolean b = checkProductPerm(3, partsInfo.getPartsId()); - if(!b) { - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - } - return partsInfoService.assignRemoveDepart(partsInfo, departList); - }else if(nodeType == 1) { - //澶勭悊浜у搧 - ProductInfo productInfo = super.getById(paramId); - if(productInfo == null) - ExceptionCast.cast(ProductInfoCode.PRODUCT_NOT_EXIST); - boolean b1 = checkProductPerm(1, productInfo.getProductId()); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - b1 = this.assignRemoveDepartment(productInfo, departList); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - if(relativeFlag == 1) { - //澶勭悊浜у搧 涓嬬殑閮ㄤ欢 - List<String> componentIds = new ArrayList<>(); - //鎬昏闇�瑕佸垹闄ょ殑鏁版嵁淇℃伅 - List<ComponentDepartment> componentPermissionList = new ArrayList<>(); - List<PartsDepartment> partsPermissionList = new ArrayList<>(); - List<PermissionStream> permissionStreamList = new ArrayList<>(); - List<ComponentInfo> componentInfoList = componentInfoService.getByProductId(productInfo.getProductId()); - if(componentInfoList != null && !componentInfoList.isEmpty()) { - for(ComponentInfo componentInfo : componentInfoList){ - componentIds.add(componentInfo.getComponentId()); - } - componentPermissionList = componentDepartmentService.getByComponentIdsAndDepartIds(componentIds, ids); - List<PermissionStream> existPermissionList = permissionStreamService.getByComponentIdsAndDepartIds(componentIds, ids); - if(existPermissionList != null && !existPermissionList.isEmpty()){ - permissionStreamList.addAll(existPermissionList); - } - } - - //澶勭悊浜у搧 涓嬬殑闆朵欢 - List<PartsInfo> partsInfoList = partsInfoService.getByComponentIdList(productInfo.getProductId(), componentIds); - List<String> partsIds = new ArrayList<>(); - if(partsInfoList != null && !partsInfoList.isEmpty()) { - for(PartsInfo partsInfo : partsInfoList){ - partsIds.add(partsInfo.getPartsId()); - } - partsPermissionList = partsDepartmentService.getByPartsIdsAndDepartIds(partsIds, ids); - List<PermissionStream> existPermissionList = permissionStreamService.getByPartsIdsAndDepartIds(partsIds, ids); - if(existPermissionList != null && !existPermissionList.isEmpty()){ - permissionStreamList.addAll(existPermissionList); - } - } - - if(componentPermissionList != null && !componentPermissionList.isEmpty()){ - componentDepartmentService.removeByCollection(componentPermissionList); - } - if(partsPermissionList != null && !partsPermissionList.isEmpty()){ - partsDepartmentService.removeByCollection(partsPermissionList); - } - if(permissionStreamList != null && !permissionStreamList.isEmpty()){ - permissionStreamService.removeByCollection(permissionStreamList); - } - } - return true; - }else if(nodeType == 2) { - ComponentInfo componentInfo = componentInfoService.getById(paramId); - if(componentInfo == null) - ExceptionCast.cast(ComponentInfoCode.COMPONENT_NOT_EXIST); - boolean b1 = checkProductPerm(2, componentInfo.getComponentId()); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - b1 = componentInfoService.assignRemoveDepart(componentInfo, departList); - if(!b1) - ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); - if(relativeFlag == 1) { - List<String> componentIdList = new ArrayList<>(); - //鎬昏闇�瑕佸垹闄ょ殑鏁版嵁淇℃伅 - List<ComponentDepartment> componentPermissionList = new ArrayList<>(); - List<PartsDepartment> partsPermissionList = new ArrayList<>(); - List<PermissionStream> permissionStreamList = new ArrayList<>(); - - List<ComponentInfo> childrenList = componentInfoService.getByParentId(componentInfo.getComponentId()); - if(childrenList != null && !childrenList.isEmpty()) { - for(ComponentInfo cpn : childrenList){ - componentIdList.add(cpn.getComponentId()); - } - componentPermissionList = componentDepartmentService.getByComponentIdsAndDepartIds(componentIdList, ids); - List<PermissionStream> existPermissionList = permissionStreamService.getByComponentIdsAndDepartIds(componentIdList, ids); - if(existPermissionList != null && !existPermissionList.isEmpty()){ - permissionStreamList.addAll(existPermissionList); - } - } - - //澶勭悊浜у搧 涓嬬殑闆朵欢 - componentIdList.add(componentInfo.getComponentId()); - List<PartsInfo> partsInfoList = partsInfoService.getByComponentIdList(componentInfo.getProductId(), componentIdList); - List<String> partsIds = new ArrayList<>(); - if(partsInfoList != null && !partsInfoList.isEmpty()) { - for(PartsInfo partsInfo : partsInfoList){ - partsIds.add(partsInfo.getPartsId()); - } - partsPermissionList = partsDepartmentService.getByPartsIdsAndDepartIds(partsIds, ids); - List<PermissionStream> existPermissionList = permissionStreamService.getByPartsIdsAndDepartIds(partsIds, ids); - if(existPermissionList != null && !existPermissionList.isEmpty()){ - permissionStreamList.addAll(existPermissionList); - } - } - - if(componentPermissionList != null && !componentPermissionList.isEmpty()){ - componentDepartmentService.removeByCollection(componentPermissionList); - } - if(partsPermissionList != null && !partsPermissionList.isEmpty()){ - partsDepartmentService.removeByCollection(partsPermissionList); - } - if(permissionStreamList != null && !permissionStreamList.isEmpty()){ - permissionStreamService.removeByCollection(permissionStreamList); - } - } - return true; + List<String> deps=mdcProductionService.findAllProductionIds(ids); + Collection<MdcProduction> mdcProductionList = mdcProductionService.listByIds(deps); + validateMdcProductionList(mdcProductionList, deps); + switch (nodeType) { + case 1: + return handleProductInfoRemoval(paramId, relativeFlag,null, mdcProductionList); + case 2: + return handleComponentInfoRemoval(paramId, relativeFlag, null,mdcProductionList); + case 3: + return handlePartsInfoRemoval(paramId, relativeFlag,null, mdcProductionList); + case 4: + return handleProcessSpecVersionRemoval(paramId, relativeFlag, null,mdcProductionList); + case 5: + return handleProcessStreamRemoval(paramId, relativeFlag, null,mdcProductionList); + case 6: + return handleWorkStepRemoval(paramId,null,mdcProductionList); + default: + return false; } - return false; } @Override @Transactional(rollbackFor = {Exception.class}) public boolean assignAddUser(ProductInfo productInfo, Collection<SysUser> userList) { - if(productInfo == null || userList == null || userList.isEmpty()) + if (productInfo == null || userList == null || userList.isEmpty()) ExceptionCast.cast(CommonCode.INVALID_PARAM); List<ProductPermission> permissionList = new ArrayList<>(); - List<PermissionStream> permissionStreamList = new ArrayList<>(); + List<PermissionStreamNew> permissionStreamList = new ArrayList<>(); userList.forEach(item -> { ProductPermission en = productPermissionService.getByProductIdAndUserId(productInfo.getProductId(), item.getId()); - if(en == null) { + if (en == null) { en = new ProductPermission(); en.setUserId(item.getId()); en.setProductId(productInfo.getProductId()); permissionList.add(en); } - PermissionStream stream = permissionStreamService.getByProductIdAndUserId(productInfo.getProductId(), item.getId()); - if(stream == null) { - stream = new PermissionStream(); + PermissionStreamNew stream = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(productInfo.getProductId(), item.getId(),"1"); + if (stream == null) { + stream = new PermissionStreamNew(); stream.setUserId(item.getId()); - stream.setProductId(productInfo.getProductId()); + stream.setBusinessId(productInfo.getProductId()); + stream.setBusinessType(DocAttributionTypeEnum.PRODUCT.getCode().toString()); permissionStreamList.add(stream); } }); - if(!permissionList.isEmpty()) { + if (!permissionList.isEmpty()) { boolean b = productPermissionService.saveBatch(permissionList); - if(!b) { + if (!b) { ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); } } - if(!permissionStreamList.isEmpty()) { - boolean b = permissionStreamService.saveBatch(permissionStreamList); - if(!b) { + if (!permissionStreamList.isEmpty()) { + boolean b =permissionStreamNewService.saveBatch(permissionStreamList); + if (!b) { ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); } } @@ -1219,33 +601,33 @@ @Override @Transactional(rollbackFor = {Exception.class}) public boolean assignRemoveUser(ProductInfo productInfo, Collection<SysUser> userList) { - if(productInfo == null || userList == null || userList.isEmpty()) + if (productInfo == null || userList == null || userList.isEmpty()) ExceptionCast.cast(CommonCode.INVALID_PARAM); List<ProductPermission> permissionList = new ArrayList<>(); - List<PermissionStream> permissionStreamList = new ArrayList<>(); + List<PermissionStreamNew> permissionStreamList = new ArrayList<>(); userList.forEach(item -> { ProductPermission en = productPermissionService.getByProductIdAndUserId(productInfo.getProductId(), item.getId()); - if(en != null) { + if (en != null) { permissionList.add(en); } - PermissionStream stream = permissionStreamService.getByProductIdAndUserId(productInfo.getProductId(), item.getId()); - if(stream != null) { + PermissionStreamNew stream = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndUserId(productInfo.getProductId(), item.getId(),"1"); + if (stream != null) { permissionStreamList.add(stream); } }); //绉婚櫎鐢ㄦ埛鏉冮檺娓呯┖鏍¢獙 List<ProductPermission> existList = productPermissionService.getByProductId(productInfo.getProductId()); - if(existList.size() <= permissionList.size()) + if (existList.size() <= permissionList.size()) ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_NONE); - if(!permissionList.isEmpty()) { + if (!permissionList.isEmpty()) { boolean b = productPermissionService.removeByCollection(permissionList); - if(!b) { + if (!b) { ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); } } - if(!permissionStreamList.isEmpty()) { - boolean b = permissionStreamService.removeByCollection(permissionStreamList); - if(!b) { + if (!permissionStreamList.isEmpty()) { + boolean b = permissionStreamNewService.deletePermissionStreamNewByList(permissionStreamList); + if (!b) { ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); } } @@ -1254,36 +636,37 @@ @Override @Transactional(rollbackFor = {Exception.class}) - public boolean assignAddDepartment(ProductInfo productInfo, Collection<Department> departmentList) { - if(productInfo == null || departmentList == null || departmentList.isEmpty()) + public boolean assignAddDepartment(ProductInfo productInfo, Collection<MdcProduction> departmentList) { + if (productInfo == null || departmentList == null || departmentList.isEmpty()) ExceptionCast.cast(CommonCode.INVALID_PARAM); List<ProductDepartment> productDepartmentList = new ArrayList<>(); - List<PermissionStream> permissionStreamList = new ArrayList<>(); + List<PermissionStreamNew> permissionStreamList = new ArrayList<>(); departmentList.forEach(item -> { - ProductDepartment en = productDepartmentService.getByProductIdAndDepartId(productInfo.getProductId(), item.getDepartId()); - if(en == null) { + ProductDepartment en = productDepartmentService.getByProductIdAndDepartId(productInfo.getProductId(), item.getId()); + if (en == null) { en = new ProductDepartment(); - en.setDepartId(item.getDepartId()); + en.setDepartId(item.getId()); en.setProductId(productInfo.getProductId()); productDepartmentList.add(en); } - PermissionStream stream = permissionStreamService.getByProductIdAndDepartId(productInfo.getProductId(), item.getDepartId()); - if(stream == null) { - stream = new PermissionStream(); - stream.setDepartId(item.getDepartId()); - stream.setProductId(productInfo.getProductId()); + PermissionStreamNew stream = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndDepartId(productInfo.getProductId(), item.getId(),"1"); + if (stream == null) { + stream = new PermissionStreamNew(); + stream.setDepartId(item.getId()); + stream.setBusinessId(productInfo.getProductId()); + stream.setBusinessType(DocAttributionTypeEnum.PRODUCT.getCode().toString()); permissionStreamList.add(stream); } }); - if(!productDepartmentList.isEmpty()) { + if (!productDepartmentList.isEmpty()) { boolean b = productDepartmentService.saveBatch(productDepartmentList); - if(!b) { + if (!b) { ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); } } - if(!permissionStreamList.isEmpty()) { - boolean b = permissionStreamService.saveBatch(permissionStreamList); - if(!b) { + if (!permissionStreamList.isEmpty()) { + boolean b = permissionStreamNewService.saveBatch(permissionStreamList); + if (!b) { ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); } } @@ -1292,30 +675,30 @@ @Override @Transactional(rollbackFor = {Exception.class}) - public boolean assignRemoveDepartment(ProductInfo productInfo, Collection<Department> departmentList) { - if(productInfo == null || departmentList == null || departmentList.isEmpty()) + public boolean assignRemoveDepartment(ProductInfo productInfo, Collection<MdcProduction> departmentList) { + if (productInfo == null || departmentList == null || departmentList.isEmpty()) ExceptionCast.cast(CommonCode.INVALID_PARAM); List<ProductDepartment> productDepartmentList = new ArrayList<>(); - List<PermissionStream> permissionStreamList = new ArrayList<>(); + List<PermissionStreamNew> permissionStreamList = new ArrayList<>(); departmentList.forEach(item -> { - ProductDepartment en = productDepartmentService.getByProductIdAndDepartId(productInfo.getProductId(), item.getDepartId()); - if(en != null) { + ProductDepartment en = productDepartmentService.getByProductIdAndDepartId(productInfo.getProductId(), item.getId()); + if (en != null) { productDepartmentList.add(en); } - PermissionStream stream = permissionStreamService.getByProductIdAndDepartId(productInfo.getProductId(), item.getDepartId()); - if(stream != null) { + PermissionStreamNew stream = permissionStreamNewService.loadPermissionStreamNewByBusinessIdAndDepartId(productInfo.getProductId(), item.getId(),"1"); + if (stream != null) { permissionStreamList.add(stream); } }); - if(!productDepartmentList.isEmpty()) { + if (!productDepartmentList.isEmpty()) { boolean b = productDepartmentService.removeByCollection(productDepartmentList); - if(!b) { + if (!b) { ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); } } - if(!permissionStreamList.isEmpty()) { - boolean b = permissionStreamService.removeByCollection(permissionStreamList); - if(!b) { + if (!permissionStreamList.isEmpty()) { + boolean b = permissionStreamNewService.deletePermissionStreamNewByList(permissionStreamList); + if (!b) { ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); } } @@ -1325,37 +708,43 @@ @Override public List<String> getDepartIdsByParams(Integer nodeType, String paramId) { List<String> departIds = new ArrayList<>(); - if(nodeType == 2) { - ComponentInfo en = componentInfoService.getById(paramId); - if(en == null) + //5-宸ュ簭 + if (Objects.equals(nodeType, DocAttributionTypeEnum.PROCESS.getCode())) { + ProcessStream processStream = processStreamService.getById(paramId); + if (processStream == null) return null; - List<PermissionStream> permissionStreamList = permissionStreamService.getByComponentId(en.getProductId(), en.getComponentId()); - if(permissionStreamList == null || permissionStreamList.isEmpty()) + List<PermissionStreamNew> permissionStreamList = permissionStreamNewService.loadProductMixByBusinessId(processStream.getProcessId(),"5"); + if (permissionStreamList == null || permissionStreamList.isEmpty()) return null; permissionStreamList.forEach(item -> { departIds.add(item.getDepartId()); }); - }else if(nodeType == 3) { - PartsInfo en = partsInfoService.getById(paramId); - if(en == null) + //6-宸ユ + } else if (Objects.equals(nodeType, DocAttributionTypeEnum.WORKSITE.getCode())) { + WorkStep workStep = workStepService.getById(paramId); + if (workStep == null) return null; - List<PermissionStream> permissionStreamList = permissionStreamService.getByPartsId(en.getProductId(), en.getComponentId(), en.getPartsId()); - if(permissionStreamList == null || permissionStreamList.isEmpty()) + List<PermissionStreamNew> permissionStreamList = permissionStreamNewService.loadProductMixByBusinessId(workStep.getId(),"6"); + if (permissionStreamList == null || permissionStreamList.isEmpty()) return null; permissionStreamList.forEach(item -> { departIds.add(item.getDepartId()); }); - }else { + } else { return null; } + //鍘婚噸 + Set<String> set = new HashSet<>(departIds); + departIds.clear(); + departIds.addAll(set); return departIds; } @Override public ProductInfo getByProductNo(String productNo) { - if(ValidateUtil.validateString(productNo)) { + if (ValidateUtil.validateString(productNo)) { List<ProductInfo> list = super.lambdaQuery().eq(ProductInfo::getProductNo, productNo).list(); - if(list == null || list.isEmpty()) + if (list == null || list.isEmpty()) return null; return list.get(0); } @@ -1365,7 +754,7 @@ @Override public List<CommonGenericTree> loadBaseTree(String userId) { List<ProductInfo> productInfoList = getByUserPerms(userId); - if(productInfoList == null || productInfoList.isEmpty()) + if (productInfoList == null || productInfoList.isEmpty()) return Collections.emptyList(); // List<ComponentExt> componentInfoList = componentInfoService.getByUserPermsAs(userId); // if(componentInfoList == null) @@ -1375,62 +764,62 @@ @Override public List<CommonGenericTree> loadTree(String userId, Integer nodeType, String paramId) { - if(nodeType == 1) { + if (Objects.equals(nodeType, DocAttributionTypeEnum.PRODUCT.getCode())) { List<ComponentInfo> componentInfoList = componentInfoService.getByProductIdAndUserId(paramId, userId); - if(componentInfoList == null || componentInfoList.isEmpty()) + if (componentInfoList == null || componentInfoList.isEmpty()) return Collections.emptyList(); List<CommonGenericTree> list = new ArrayList<>(); CommonGenericTree<ComponentInfo> node; - for(ComponentInfo c : componentInfoList) { + for (ComponentInfo c : componentInfoList) { node = new CommonGenericTree(); node.setId(c.getComponentId()); // node.setLabel("[" + c.getComponentCode()+ "]" + c.getComponentName()); node.setLabel(c.getComponentName()); node.setParentId(c.getProductId()); node.setIconClass(""); - node.setType(2); + node.setType(DocAttributionTypeEnum.COMPONENT.getCode()); node.setRField(c.getProductId()); node.setEntity(c); list.add(node); } return list; - }else if(nodeType == 2) { + } else if (Objects.equals(nodeType, DocAttributionTypeEnum.COMPONENT.getCode())) { List<ComponentInfo> componentInfoList = componentInfoService.getByParentIdAndUserId(paramId, userId); List<CommonGenericTree> list = new ArrayList<>(); CommonGenericTree<ComponentInfo> componentNode; - if(componentInfoList != null && !componentInfoList.isEmpty()) { - for(ComponentInfo c : componentInfoList) { + if (componentInfoList != null && !componentInfoList.isEmpty()) { + for (ComponentInfo c : componentInfoList) { componentNode = new CommonGenericTree(); componentNode.setId(c.getComponentId()); // componentNode.setLabel("[" + c.getComponentCode()+ "]" + c.getComponentName()); componentNode.setLabel(c.getComponentName()); componentNode.setParentId(c.getParentId()); componentNode.setIconClass(""); - componentNode.setType(2); + componentNode.setType(DocAttributionTypeEnum.COMPONENT.getCode()); componentNode.setRField(c.getProductId()); componentNode.setEntity(c); list.add(componentNode); } } List<PartsInfo> partsInfos = partsInfoService.getByUserPerms(userId, paramId, null); - if(partsInfos == null || partsInfos.isEmpty()) + if (partsInfos == null || partsInfos.isEmpty()) return list; CommonGenericTree<PartsInfo> partNode; - for(PartsInfo part : partsInfos) { + for (PartsInfo part : partsInfos) { partNode = new CommonGenericTree(); partNode.setId(part.getPartsId()); // partNode.setLabel("[" + part.getPartsCode()+ "]" + part.getPartsName()); partNode.setLabel(part.getPartsName()); partNode.setParentId(part.getComponentId()); partNode.setIconClass(""); - partNode.setType(3); + partNode.setType(DocAttributionTypeEnum.PARTS.getCode()); partNode.setRField(part.getComponentId()); partNode.setEntity(part); partNode.setLeaf(true); list.add(partNode); } return list; - }else { + } else { return Collections.emptyList(); } } @@ -1440,8 +829,9 @@ List<ProductInfo> productInfos = this.getByUserPerms(userId, queryParam); List<ComponentInfo> componentInfos = componentInfoService.getByUserPerms(userId, queryParam); List<PartsInfo> partsInfos = partsInfoService.getByUserPerms(userId, null, queryParam); - List<ProcessStream> processStreams=processStreamService.getByuserPerms(userId, queryParam); - List<WorkStep> workSteps=workStepService.getByUserPerms(userId, queryParam); + List<ProcessSpecVersion> processSpecVersions = processSpecVersionService.getByUserPerms(userId, queryParam); + List<ProcessStream> processStreams = processStreamService.getByuserPerms(userId, queryParam); + List<WorkStep> workSteps = workStepService.getByUserPerms(userId, queryParam); List<ComponentInfo> componentInfoList = new ArrayList<>(); List<ProductInfo> productInfoList = new ArrayList<>(); @@ -1451,32 +841,32 @@ ProductInfo product; ComponentInfo component; - if(productInfos != null && !productInfos.isEmpty()){ - for(ProductInfo p : productInfos){ + if (productInfos != null && !productInfos.isEmpty()) { + for (ProductInfo p : productInfos) { productInfoList.add(p); productInfoMap.put(p.getProductId(), p); } } - if(componentInfos != null && !componentInfos.isEmpty()){ - for(ComponentInfo c : componentInfos){ + if (componentInfos != null && !componentInfos.isEmpty()) { + for (ComponentInfo c : componentInfos) { componentInfoList.add(c); componentInfoMap.put(c.getComponentId(), c); } } - for(PartsInfo p : partsInfos) { - if(!productInfoMap.containsKey(p.getProductId())) { - product = super.getById(p.getProductId()); - if(product != null) { + for (PartsInfo p : partsInfos) { + if (!productInfoMap.containsKey(p.getProductId())) { + product = super.getById(p.getProductId()); + if (product != null) { productInfoMap.put(product.getProductId(), product); productInfoList.add(product); } } - if(!componentInfoMap.containsKey(p.getComponentId())) { + if (!componentInfoMap.containsKey(p.getComponentId())) { component = componentInfoService.getById(p.getComponentId()); - if(component != null) { + if (component != null) { componentInfoMap.put(component.getComponentId(), component); componentInfoList.add(component); } @@ -1486,16 +876,16 @@ for (ProcessStream processStream : processStreams) { if (!productInfoMap.containsKey(processStream.getProductId())) { - product = super.getById(processStream.getProductId()); - if(product != null) { + product = super.getById(processStream.getProductId()); + if (product != null) { productInfoMap.put(product.getProductId(), product); productInfoList.add(product); } } - if(!componentInfoMap.containsKey(processStream.getComponentId())) { + if (!componentInfoMap.containsKey(processStream.getComponentId())) { component = componentInfoService.getById(processStream.getComponentId()); - if(component != null) { + if (component != null) { componentInfoMap.put(component.getComponentId(), component); componentInfoList.add(component); } @@ -1503,18 +893,18 @@ } } - for (WorkStep workStep :workSteps){ + for (WorkStep workStep : workSteps) { if (!productInfoMap.containsKey(workStep.getProductId())) { - product = super.getById(workStep.getProductId()); - if(product != null) { + product = super.getById(workStep.getProductId()); + if (product != null) { productInfoMap.put(product.getProductId(), product); productInfoList.add(product); } } - if(!componentInfoMap.containsKey(workStep.getComponentId())) { + if (!componentInfoMap.containsKey(workStep.getComponentId())) { component = componentInfoService.getById(workStep.getComponentId()); - if(component != null) { + if (component != null) { componentInfoMap.put(component.getComponentId(), component); componentInfoList.add(component); } @@ -1527,30 +917,30 @@ long start = System.currentTimeMillis(); log.info("寮�濮嬪惊鐜墽琛屾椂闂�={}", start); String pid; - for(ComponentInfo c : componentInfoList){ + for (ComponentInfo c : componentInfoList) { int rankLevel = c.getRankLevel(); component = c; - if(!productInfoMap.containsKey(c.getProductId())) { - product = super.getById(c.getProductId()); - if(product != null) { + if (!productInfoMap.containsKey(c.getProductId())) { + product = super.getById(c.getProductId()); + if (product != null) { productInfoMap.put(product.getProductId(), product); productInfoList.add(product); } } - while((rankLevel - 1) > 0) { + while ((rankLevel - 1) > 0) { pid = component.getParentId(); - if(componentInfoMap.containsKey(pid)) { + if (componentInfoMap.containsKey(pid)) { component = componentInfoMap.get(pid); rankLevel = component.getRankLevel(); continue; } component = componentInfoService.getById(pid); - if(component != null) { + if (component != null) { log.info("addList娣诲姞浜嗘柊鐨勯儴浠秈d={}", component.getComponentId()); componentInfoMap.put(component.getComponentId(), component); addList.add(component); rankLevel = component.getRankLevel(); - }else { + } else { log.info("鏌ヨ涓嶅埌閮ㄤ欢id={}", pid); break; } @@ -1560,13 +950,609 @@ long end = System.currentTimeMillis(); log.info("寰幆鎵ц鎬昏�楁椂={}", (end - start)); - if(!addList.isEmpty()){ + if (!addList.isEmpty()) { componentInfoList.addAll(addList); } //杞崲鏁版嵁 List<ComponentExt> componentExtList = ComponentExt.convertToExtList(componentInfoList); - return ProductTreeWrapper.loadTree(productInfoList, componentExtList, partsInfos,processStreams,workSteps); + return ProductTreeWrapper.loadTree(productInfoList, componentExtList, partsInfos,processSpecVersions, processStreams, workSteps); + } + + @Override + public boolean deleteProductTree(String id, Integer type) { + switch (type) { + //浜у搧 + case 1: + return deleteProductInfo(id); + //閮ㄩ棬 + case 2: + return componentInfoService.deleteComponentInfo(id); + //闆朵欢 + case 3: + return partsInfoService.deletePartsInfo(id); + //宸ヨ壓瑙勭▼鐗堟湰 + case 4: + return processSpecVersionService.deleteProcessSpecVersion(id); + //宸ュ簭 + case 5: + return processStreamService.deleteProcessStream(id); + //宸ユ + case 6: + return workStepService.deleteWorkStep(id); + default: + } + return false; + } + + @Override + public Result<?> getTreeById(String id, Integer type){ + if (StrUtil.isNotEmpty(id)||type!=null){ + switch (type){ + case 1: + //浜у搧 + QueryWrapper<ProductInfo> productInfoQueryWrapper = new QueryWrapper<>(); + productInfoQueryWrapper.eq("product_id",id); + List<ProductInfo> productInfos = this.list(productInfoQueryWrapper); + return Result.OK(productInfos); + case 2: + //缁勪欢 + QueryWrapper<ComponentInfo> componentInfoQueryWrapper = new QueryWrapper<>(); + componentInfoQueryWrapper.eq("component_id",id); + List<ComponentInfo> componentInfos = componentInfoService.list(componentInfoQueryWrapper); + return Result.OK(componentInfos); + case 3: + //闆朵欢 + QueryWrapper<PartsInfo> partsInfoQueryWrapper = new QueryWrapper<>(); + partsInfoQueryWrapper.eq("parts_id",id); + List<PartsInfo> partsInfos = partsInfoService.list(partsInfoQueryWrapper); + return Result.OK(partsInfos); + case 4: + //宸ヨ壓瑙勫垝鐗堟湰 + QueryWrapper<ProcessSpecVersion> processSpecVersionQueryWrapper = new QueryWrapper<>(); + processSpecVersionQueryWrapper.eq("id",id); + List<ProcessSpecVersion> processSpecVersions = processSpecVersionService.list(processSpecVersionQueryWrapper); + return Result.OK(processSpecVersions); + case 5: + //宸ュ簭 + QueryWrapper<ProcessStream> processStreamQueryWrapper = new QueryWrapper<>(); + processStreamQueryWrapper.eq("process_id",id); + List<ProcessStream> processStreams = processStreamService.list(processStreamQueryWrapper); + return Result.OK(processStreams); + case 6: + //宸ユ + QueryWrapper<WorkStep> workStepQueryWrapper = new QueryWrapper<>(); + workStepQueryWrapper.eq("id",id); + List<WorkStep> workSteps = workStepService.list(workStepQueryWrapper); + return Result.OK(workSteps); + } + } + return Result.error("鍙傛暟閿欒"); + } + + /** + * 閫氳繃浠e彿銆佸悕绉般�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲鐢靛瓙鏍锋澘 + * @param treeInfoRequest + * @return + */ + @Override + public List<DocInfo> getByTreeOtherFileInfo(TreeInfoRequest treeInfoRequest){ + switch (treeInfoRequest.getAttributionType()){ + case 1: + LambdaQueryWrapper<ProductInfo> queryWrapper = new LambdaQueryWrapper<>(); + // 鏄庣‘鏉′欢锛氫粎褰揳ttributionType涓�1涓攁ttributionId闈炵┖鏃舵坊鍔犳潯浠� + if (treeInfoRequest.getAttributionType() == 1 && StrUtil.isNotBlank(treeInfoRequest.getAttributionId())) { + queryWrapper.eq(ProductInfo::getProductId, treeInfoRequest.getAttributionId()); + } + 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)) { + String ids=productInfoList.stream().map(ProductInfo::getProductId).collect(Collectors.joining(",")); + DocInfoQueryRequest docQuery = new DocInfoQueryRequest(); + BeanUtil.copyProperties(treeInfoRequest, docQuery); + docQuery.setAttributionIds(ids); + docQuery.setDocClassCode("OTHER"); + docQuery.setAttributionType(DocAttributionTypeEnum.PRODUCT.getCode()); + docInfos = docInfoService.findListByDocQuery(docQuery); + } + // 鍒涘缓鏂拌姹傚璞¢伩鍏嶆薄鏌撳師鍙傛暟 + TreeInfoRequest componentRequest = new TreeInfoRequest(); + BeanUtil.copyProperties(treeInfoRequest, componentRequest); + componentRequest.setProductIds(Collections.singletonList(treeInfoRequest.getAttributionId())); + // 鍚堝苟鏌ヨ缁撴灉 + docInfos.addAll(componentInfoService.getByComponentInfo(componentRequest)); + docInfos.addAll(partsInfoService.getByPartsInfo(componentRequest)); + docInfos.addAll(processSpecVersionService.getByProcessSpecVersion(componentRequest)); + docInfos.addAll(processStreamService.getByProcessStreamOtherFile(componentRequest)); + docInfos.addAll(workStepService.getByWorkStepOtherFile(componentRequest)); + return getByTreeOtherFileInfo(docInfos); + case 2: + return getByTreeOtherFileInfo(componentInfoService.getByComponentInfo(treeInfoRequest)); + case 3: + return getByTreeOtherFileInfo(partsInfoService.getByPartsInfo(treeInfoRequest)); + case 4: + return getByTreeOtherFileInfo(processSpecVersionService.getByProcessSpecVersion(treeInfoRequest)); + case 5: + return getByTreeOtherFileInfo(processStreamService.getByProcessStreamOtherFile(treeInfoRequest)); + case 6: + return getByTreeOtherFileInfo(workStepService.getByWorkStepOtherFile(treeInfoRequest)); + } + return new ArrayList<>(); + } + + /** + * 閫氳繃浠e彿銆佸悕绉般�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲NC鏂囦欢 + * @param treeInfoRequest + * @return + */ + @Override + public List<DocInfo> getByTreeNcFileInfo(TreeInfoRequest treeInfoRequest){ + //浜у搧銆侀儴浠躲�侀浂浠躲�佸伐鑹鸿绋嬬増鏈兘娌℃湁瀵瑰簲鐨凬C鏂囦欢锛岀洿鎺ユ煡璇㈠瓙缁撴瀯 + switch (treeInfoRequest.getAttributionType()){ + case 1: + LambdaQueryWrapper<ProductInfo> queryWrapper = new LambdaQueryWrapper<>(); + // 鏄庣‘鏉′欢锛氫粎褰揳ttributionType涓�1涓攁ttributionId闈炵┖鏃舵坊鍔犳潯浠� + if (StrUtil.isNotBlank(treeInfoRequest.getAttributionId())) { + queryWrapper.eq(ProductInfo::getProductId, treeInfoRequest.getAttributionId()); + } + // 绠�鍖栨潯浠跺垽鏂� + 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); + if (CollectionUtil.isNotEmpty(productInfoList)) { + treeInfoRequest.setProductIds(productInfoList.stream().map(ProductInfo::getProductId).collect(Collectors.toList())); + } + return getByTreeNcFileInfo(processStreamService.getByProcessStreamNCFile(treeInfoRequest)); + case 2: + LambdaQueryWrapper<ComponentInfo> componentInfoLambdaQueryWrapper = new LambdaQueryWrapper<>(); + // 鏄庣‘鏉′欢锛氫粎褰揳ttributionType涓�1涓攁ttributionId闈炵┖鏃舵坊鍔犳潯浠� + if (StrUtil.isNotBlank(treeInfoRequest.getAttributionId())) { + componentInfoLambdaQueryWrapper.eq(ComponentInfo::getComponentId, treeInfoRequest.getAttributionId()); + } + componentInfoLambdaQueryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getTreeCode()),ComponentInfo::getComponentCode, treeInfoRequest.getTreeCode()); + componentInfoLambdaQueryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getTreeName()),ComponentInfo::getComponentName, treeInfoRequest.getTreeName()); + componentInfoLambdaQueryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getStructureType()),ComponentInfo::getStructureType, treeInfoRequest.getStructureType()); + componentInfoLambdaQueryWrapper.orderByDesc(ComponentInfo::getCreateTime); + List<ComponentInfo> componentInfoList = componentInfoService.list(componentInfoLambdaQueryWrapper); + if (CollectionUtil.isNotEmpty(componentInfoList)) { + treeInfoRequest.setComponentIds(componentInfoList.stream().map(ComponentInfo::getComponentId).collect(Collectors.toList())); + } + return getByTreeNcFileInfo(processStreamService.getByProcessStreamNCFile(treeInfoRequest)); + case 3: + LambdaQueryWrapper<PartsInfo> partsInfoLambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (treeInfoRequest.getProductIds() != null && !treeInfoRequest.getProductIds().isEmpty()) { + partsInfoLambdaQueryWrapper.in(PartsInfo::getProductId, treeInfoRequest.getProductIds()); + } + if (treeInfoRequest.getComponentIds() != null && !treeInfoRequest.getComponentIds().isEmpty()) { + partsInfoLambdaQueryWrapper.in(PartsInfo::getComponentId, treeInfoRequest.getComponentIds()); + } + if (Objects.equals(treeInfoRequest.getAttributionType(), DocAttributionTypeEnum.PARTS.getCode())){ + partsInfoLambdaQueryWrapper.eq(StrUtil.isNotEmpty(treeInfoRequest.getAttributionId()),PartsInfo::getPartsId,treeInfoRequest.getAttributionId()); + } + partsInfoLambdaQueryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getTreeCode()),PartsInfo::getPartsCode, treeInfoRequest.getTreeCode()); + partsInfoLambdaQueryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getTreeName()),PartsInfo::getPartsName, treeInfoRequest.getTreeName()); + partsInfoLambdaQueryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getStructureType()),PartsInfo::getStructureType, treeInfoRequest.getStructureType()); + partsInfoLambdaQueryWrapper.orderByDesc(PartsInfo::getCreateTime); + List<PartsInfo> list = partsInfoService.list(partsInfoLambdaQueryWrapper); + if (CollectionUtil.isNotEmpty(list)) { + treeInfoRequest.setPartsIds(list.stream().map(PartsInfo::getPartsId).collect(Collectors.toList())); + } + return getByTreeNcFileInfo(processStreamService.getByProcessStreamNCFile(treeInfoRequest)); + case 4: + LambdaQueryWrapper<ProcessSpecVersion> processSpecVersionLambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (treeInfoRequest.getProductIds() != null && !treeInfoRequest.getProductIds().isEmpty()) { + processSpecVersionLambdaQueryWrapper.in(ProcessSpecVersion::getProductId, treeInfoRequest.getProductIds()); + } + if (treeInfoRequest.getComponentIds() != null && !treeInfoRequest.getComponentIds().isEmpty()) { + processSpecVersionLambdaQueryWrapper.in(ProcessSpecVersion::getComponentId, treeInfoRequest.getComponentIds()); + } + if (treeInfoRequest.getPartsIds() != null && !treeInfoRequest.getPartsIds().isEmpty()) { + processSpecVersionLambdaQueryWrapper.in(ProcessSpecVersion::getPartsId, treeInfoRequest.getPartsIds()); + } + if (Objects.equals(treeInfoRequest.getAttributionType(), DocAttributionTypeEnum.OPERATION.getCode())){ + processSpecVersionLambdaQueryWrapper.eq(StrUtil.isNotEmpty(treeInfoRequest.getAttributionId()),ProcessSpecVersion::getId,treeInfoRequest.getAttributionId()); + } + processSpecVersionLambdaQueryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getTreeName()),ProcessSpecVersion::getProcessSpecVersionName, treeInfoRequest.getTreeName()); + processSpecVersionLambdaQueryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getTreeCode()),ProcessSpecVersion::getProcessSpecVersionCode, treeInfoRequest.getTreeName()); + processSpecVersionLambdaQueryWrapper.orderByDesc(ProcessSpecVersion::getCreateTime); + List<ProcessSpecVersion> processSpecVersions = processSpecVersionService.list(processSpecVersionLambdaQueryWrapper); + if (CollectionUtil.isNotEmpty(processSpecVersions)) { + treeInfoRequest.setPsvIds(processSpecVersions.stream().map(ProcessSpecVersion::getId).collect(Collectors.toList())); + } + return getByTreeNcFileInfo(processStreamService.getByProcessStreamNCFile(treeInfoRequest)); + case 5: + return getByTreeNcFileInfo(processStreamService.getByProcessStreamNCFile(treeInfoRequest)); + case 6: + return getByTreeNcFileInfo(workStepService.getByWorkStepNCFile(treeInfoRequest)); + } + return new ArrayList<>(); + } + + private List<DocInfo> getByTreeOtherFileInfo(List<DocInfo> docInfos){ + //瀵规墍灞瀒d杩涜缈昏瘧 + if (docInfos != null && !docInfos.isEmpty()) { + docInfos.forEach(docInfo -> { + switch (docInfo.getAttributionType()){ + case 1: + ProductInfo productInfo=this.getById(docInfo.getAttributionId()); + docInfo.setNodeName(productInfo.getProductName()); + docInfo.setNodeCode(productInfo.getProductNo()); + docInfo.setNodeId(productInfo.getProductId()); + break; + case 2: + ComponentInfo componentInfo=componentInfoService.getById(docInfo.getAttributionId()); + docInfo.setNodeName(componentInfo.getComponentName()); + docInfo.setNodeCode(componentInfo.getComponentCode()); + docInfo.setNodeId(componentInfo.getComponentId()); + break; + case 3: + PartsInfo partsInfo=partsInfoService.getById(docInfo.getAttributionId()); + docInfo.setNodeCode(partsInfo.getPartsCode()); + docInfo.setNodeName(partsInfo.getPartsName()); + docInfo.setNodeId(partsInfo.getPartsId()); + break; + case 4: + ProcessSpecVersion processSpecVersion=processSpecVersionService.getById(docInfo.getAttributionId()); + docInfo.setNodeName(processSpecVersion.getProcessSpecVersionName()); + docInfo.setNodeCode(processSpecVersion.getProcessSpecVersionCode()); + docInfo.setNodeId(processSpecVersion.getId()); + break; + case 5: + ProcessStream processStream=processStreamService.getById(docInfo.getAttributionId()); + docInfo.setNodeName(processStream.getProcessName()); + docInfo.setNodeCode(processStream.getProcessCode()); + docInfo.setNodeId(processStream.getProcessId()); + break; + case 6: + WorkStep workStep=workStepService.getById(docInfo.getAttributionId()); + docInfo.setNodeName(workStep.getStepName()); + docInfo.setNodeCode(workStep.getStepName()); + docInfo.setNodeId(workStep.getId()); + break; + } + }); + } + return docInfos; + } + + private List<DocInfo> getByTreeNcFileInfo(List<DocInfo> docInfos){ + //瀵规墍灞瀒d杩涜缈昏瘧 + if (docInfos != null && !docInfos.isEmpty()) { + docInfos.forEach(docInfo -> { + //NC鏂囦欢瀛樺湪璁惧绫讳笅 + DeviceType deviceType=deviceTypeService.getById(docInfo.getAttributionId()); + DeviceManagement deviceManagement= deviceManagementService.getById(deviceType.getDeviceManagementId()); + docInfo.setDeviceName(deviceManagement.getDeviceManagementName()); + docInfo.setDeviceCode(deviceManagement.getDeviceManagementCode()); + if (deviceType.getAttributionType().equals(DocAttributionTypeEnum.PROCESS.getCode())){ + //宸ュ簭涓嬬殑璁惧绫� + ProcessStream processStream=processStreamService.getById(deviceType.getAttributionId()); + docInfo.setNodeName(processStream.getProcessName()); + docInfo.setNodeCode(processStream.getProcessCode()); + docInfo.setNodeId(processStream.getProcessId()); + }else { + //宸ユ涓嬬殑璁惧绫� + WorkStep workStep=workStepService.getById(deviceType.getAttributionId()); + docInfo.setNodeName(workStep.getStepName()); + docInfo.setNodeCode(workStep.getStepName()); + docInfo.setNodeId(workStep.getId()); + } + }); + } + return docInfos; + } + + /** + * 楠岃瘉杈撳叆鍙傛暟 + */ + private void validateInputParameters(Integer nodeType, String paramId, Integer relativeFlag, String type, String[] paramIds) { + if (!ValidateUtil.validateInteger(nodeType) || !ValidateUtil.validateString(paramId) || + !ValidateUtil.validateInteger(relativeFlag)) { + ExceptionCast.cast(CommonCode.INVALID_PARAM); + } + if (paramIds == null || paramIds.length < 1) { + if (("1").equals(type)) { + ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_NONE); + } else { + ExceptionCast.cast(ProductInfoCode.PRODUCT_DEPART_PERM_NONE); + } + } + } + + /** + * 楠岃瘉 SysUser 鍒楄〃 + */ + private void validateSysUserList(Collection<SysUser> sysUserList, List<String> userIds) { + if (sysUserList == null || sysUserList.isEmpty() || sysUserList.size() != userIds.size()) { + ExceptionCast.cast(CommonCode.INVALID_PARAM); + } + } + + /** + * 楠岃瘉 MdcProduction 鍒楄〃 + */ + private void validateMdcProductionList(Collection<MdcProduction> mdcProductionList, List<String> departmentIds) { + if (mdcProductionList == null || mdcProductionList.isEmpty() || mdcProductionList.size() != departmentIds.size()) { + ExceptionCast.cast(CommonCode.INVALID_PARAM); + } + } + + /** + * 娣诲姞鏉冮檺 + */ + private boolean handleProductInfo(String paramId, Integer relativeFlag, Collection<MdcProduction> mdcProductionList,Collection<SysUser> userList) { + return handlePermission(paramId, 1, relativeFlag, mdcProductionList, userList, true); + } + + private boolean handleComponentInfo(String paramId, Integer relativeFlag, Collection<MdcProduction> mdcProductionList,Collection<SysUser> userList) { + return handlePermission(paramId, 2, relativeFlag, mdcProductionList, userList, true); + } + + private boolean handlePartsInfo(String paramId, Integer relativeFlag, Collection<MdcProduction> mdcProductionList,Collection<SysUser> userList) { + return handlePermission(paramId, 3, relativeFlag, mdcProductionList, userList, true); + } + + private boolean handleProcessSpecVersion(String paramId, Integer relativeFlag, Collection<MdcProduction> mdcProductionList,Collection<SysUser> userList) { + return handlePermission(paramId, 4, relativeFlag, mdcProductionList, userList, true); + } + + private boolean handleProcessStream(String paramId, Integer relativeFlag, Collection<MdcProduction> mdcProductionList,Collection<SysUser> userList) { + return handlePermission(paramId, 5, relativeFlag, mdcProductionList, userList, true); + } + + private boolean handleWorkStep(String paramId, Collection<MdcProduction> mdcProductionList,Collection<SysUser> userList) { + return handlePermission(paramId, 6, null, mdcProductionList, userList, true); + } + + + /** + * 绉婚櫎鏉冮檺 + */ + private boolean handleProductInfoRemoval(String paramId, Integer relativeFlag, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) { + return handlePermission(paramId, 1, relativeFlag, mdcProductionList, userList, false); + } + + private boolean handleComponentInfoRemoval(String paramId, Integer relativeFlag, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) { + return handlePermission(paramId, 2, relativeFlag, mdcProductionList, userList, false); + } + + private boolean handlePartsInfoRemoval(String paramId, Integer relativeFlag, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) { + return handlePermission(paramId, 3, relativeFlag, mdcProductionList, userList, false); + } + + private boolean handleProcessSpecVersionRemoval(String paramId, Integer relativeFlag, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) { + return handlePermission(paramId, 4, relativeFlag, mdcProductionList, userList, false); + } + + private boolean handleProcessStreamRemoval(String paramId, Integer relativeFlag, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) { + return handlePermission(paramId, 5, relativeFlag, mdcProductionList, userList, false); + } + + private boolean handleWorkStepRemoval(String paramId, Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList) { + return handlePermission(paramId, 6, null, mdcProductionList, userList, false); + } + + /** + * 閫氱敤鏉冮檺澶勭悊鏂规硶 + */ + private boolean handlePermission(String paramId, int type, Integer relativeFlag, + Collection<MdcProduction> mdcProductionList, + Collection<SysUser> userList, boolean isAddOperation) { + + // 鑾峰彇瀹炰綋鍜岃繘琛屽瓨鍦ㄦ�ф鏌� + Object entity = getEntityById(type, paramId); + if (entity == null) { + throwExceptionForType(type); + } + + // 鏉冮檺妫�鏌� + String entityId = getEntityId(entity, type); + if (!checkProductPerm(type, entityId)) { + ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); + } + + // 鑾峰彇瀛愯妭鐐瑰垪琛� + List<ProductMix> productMixList = productMixService.getChildrenList(entityId); + boolean result; + + // 鎵ц鐢ㄦ埛/閮ㄩ棬鐨勬潈闄愭搷浣� + if (userList != null) { + result = executeUserPermissionOperation(entity, type, userList, isAddOperation); + handleChildrenPermission(productMixList, relativeFlag, userList, null, isAddOperation); + } else { + result = executeDepartmentPermissionOperation(entity, type, mdcProductionList, isAddOperation); + handleChildrenPermission(productMixList, relativeFlag, null, mdcProductionList, isAddOperation); + } + + if (!result) { + ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); + } + + return true; + } + + /** + * 澶勭悊瀛愯妭鐐规潈闄� + */ + private void handleChildrenPermission(List<ProductMix> productMixList, Integer relativeFlag, + Collection<SysUser> userList, Collection<MdcProduction> mdcProductionList, + boolean isAddOperation) { + if (relativeFlag != 1) return; + + productMixList.forEach(productMix -> { + int childType = productMix.getTreeType(); + executeChildPermissionOperation(String.valueOf(productMix.getId()), childType, userList, mdcProductionList, isAddOperation); + }); + } + + /** + * 鏍规嵁绫诲瀷鎵ц瀛愯妭鐐规潈闄愭搷浣� + */ + private void executeChildPermissionOperation(String id, int type, + Collection<SysUser> userList, + Collection<MdcProduction> mdcProductionList, + boolean isAddOperation) { + switch (type) { + case 2: // 缁勪欢 + ComponentInfo componentInfo = componentInfoService.getById(id); + if (userList != null) { + componentInfoService.assignPermission(componentInfo, userList, isAddOperation); + } else { + componentInfoService.assignDepartPermission(componentInfo, mdcProductionList, isAddOperation); + } + break; + case 3: // 闆朵欢 + PartsInfo partsInfo = partsInfoService.getById(id); + if (userList != null) { + partsInfoService.assignPermission(partsInfo, userList, isAddOperation); + } else { + partsInfoService.assignDepartPermission(partsInfo, mdcProductionList, isAddOperation); + } + break; + case 4: // 宸ヨ壓瑙勮寖 + ProcessSpecVersion processSpecVersion = processSpecVersionService.getById(id); + if (userList != null) { + processSpecVersionService.assignPermission(processSpecVersion, userList, isAddOperation); + } else { + processSpecVersionService.assignDepartPermission(processSpecVersion, mdcProductionList, isAddOperation); + } + break; + case 5: // 宸ュ簭 + ProcessStream processStream = processStreamService.getById(id); + if (userList != null) { + processStreamService.assignPermission(processStream, userList, isAddOperation); + } else { + processStreamService.assignDepartPermission(processStream, mdcProductionList, isAddOperation); + } + break; + case 6: // 宸ユ + WorkStep workStep = workStepService.getById(id); + if (userList != null) { + workStepService.assignPermission(workStep, userList, isAddOperation); + } else { + workStepService.assignDepartPermission(workStep, mdcProductionList, isAddOperation); + } + break; + } + } + + /** + * 鏍规嵁绫诲瀷鑾峰彇瀹炰綋 + */ + private Object getEntityById(int type, String paramId) { + switch (type) { + case 1: return super.getById(paramId); // 浜у搧 + case 2: return componentInfoService.getById(paramId); // 缁勪欢 + case 3: return partsInfoService.getById(paramId); // 闆朵欢 + case 4: return processSpecVersionService.getById(paramId); // 宸ヨ壓瑙勮寖 + case 5: return processStreamService.getById(paramId); // 宸ュ簭 + case 6: return workStepService.getById(paramId); // 宸ユ + default: return null; + } + } + + /** + * 鏍规嵁绫诲瀷鎶涘嚭寮傚父 + */ + private void throwExceptionForType(int type) { + switch (type) { + case 1: ExceptionCast.cast(ProductInfoCode.PRODUCT_NOT_EXIST); + case 2: ExceptionCast.cast(ComponentInfoCode.COMPONENT_NOT_EXIST); + case 3: ExceptionCast.cast(PartsInfoCode.PARTS_NOT_EXIST); + case 4: ExceptionCast.cast(PartsInfoCode.PROCESSSPECVERSION_NOT_EXIST); + case 5: ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST); + case 6: ExceptionCast.cast(ProcessInfoCode.WORKSTEP_NOT_EXIST); + } + } + + /** + * 鑾峰彇瀹炰綋ID + */ + private String getEntityId(Object entity, int type) { + switch (type) { + case 1: return ((ProductInfo) entity).getProductId(); + case 2: return ((ComponentInfo) entity).getComponentId(); + case 3: return ((PartsInfo) entity).getPartsId(); + case 4: return ((ProcessSpecVersion) entity).getId(); + case 5: return ((ProcessStream) entity).getProcessId(); + case 6: return ((WorkStep) entity).getId(); + default: return null; + } + } + + /** + * 鎵ц鐢ㄦ埛鏉冮檺鎿嶄綔 + */ + private boolean executeUserPermissionOperation(Object entity, int type, + Collection<SysUser> userList, + boolean isAddOperation) { + switch (type) { + case 1: + return isAddOperation ? + assignAddUser((ProductInfo) entity, userList) : + assignRemoveUser((ProductInfo) entity, userList); + case 2: + return isAddOperation ? + componentInfoService.assignAddUser((ComponentInfo) entity, userList) : + componentInfoService.assignRemoveUser((ComponentInfo) entity, userList); + case 3: + return isAddOperation ? + partsInfoService.assignAddUser((PartsInfo) entity, userList) : + partsInfoService.assignRemoveUser((PartsInfo) entity, userList); + case 4: + return isAddOperation ? + processSpecVersionService.assignAddUser((ProcessSpecVersion) entity, userList) : + processSpecVersionService.assignRemoveUser((ProcessSpecVersion) entity, userList); + case 5: + return isAddOperation ? + processStreamService.assignAddUser((ProcessStream) entity, userList) : + processStreamService.assignRemoveUser((ProcessStream) entity, userList); + case 6: + return isAddOperation ? + workStepService.assignAddUser((WorkStep) entity, userList) : + workStepService.assignRemoveUser((WorkStep) entity, userList); + default: return false; + } + } + + /** + * 鎵ц閮ㄩ棬鏉冮檺鎿嶄綔 + */ + private boolean executeDepartmentPermissionOperation(Object entity, int type, + Collection<MdcProduction> mdcProductionList, + boolean isAddOperation) { + switch (type) { + case 1: + return isAddOperation ? + assignAddDepartment((ProductInfo) entity, mdcProductionList) : + assignRemoveDepartment((ProductInfo) entity, mdcProductionList); + case 2: + return isAddOperation ? + componentInfoService.assignAddDepart((ComponentInfo) entity, mdcProductionList) : + componentInfoService.assignRemoveDepart((ComponentInfo) entity, mdcProductionList); + case 3: + return isAddOperation ? + partsInfoService.assignAddDepart((PartsInfo) entity, mdcProductionList) : + partsInfoService.assignRemoveDepart((PartsInfo) entity, mdcProductionList); + case 4: + return isAddOperation ? + processSpecVersionService.assignAddDepart((ProcessSpecVersion) entity, mdcProductionList) : + processSpecVersionService.assignRemoveDepart((ProcessSpecVersion) entity, mdcProductionList); + case 5: + return isAddOperation ? + processStreamService.assignAddDepart((ProcessStream) entity, mdcProductionList) : + processStreamService.assignRemoveDepart((ProcessStream) entity, mdcProductionList); + case 6: + return isAddOperation ? + workStepService.assignAddDepart((WorkStep) entity, mdcProductionList) : + workStepService.assignRemoveDepart((WorkStep) entity, mdcProductionList); + default: return false; + } } } -- Gitblit v1.9.3