From f2f8241dd52ef12ec109f6f4f0f13042055338ac Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期五, 14 二月 2025 14:55:56 +0800 Subject: [PATCH] 修改指派设备 修改设备结构树权限 优化查询 优化排序 --- lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java | 141 +++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 137 insertions(+), 4 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java index ddbf531..0c6c8b0 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.collections4.ListUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.dnc.entity.*; @@ -16,13 +17,15 @@ import org.jeecg.modules.dnc.response.ProcessInfoCode; import org.jeecg.modules.dnc.response.ProductInfoCode; import org.jeecg.modules.dnc.response.UcenterCode; -import org.jeecg.modules.dnc.service.IPartsInfoService; -import org.jeecg.modules.dnc.service.IPermissionStreamService; -import org.jeecg.modules.dnc.service.IWorkStepService; +import org.jeecg.modules.dnc.service.*; import org.jeecg.modules.dnc.utils.ValidateUtil; +import org.jeecg.modules.system.entity.MdcProduction; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.List; @@ -38,6 +41,15 @@ @Autowired private IPermissionStreamService permissionStreamService; + + @Autowired + private IWorkStepDepartmentService workStepDepartmentService; + + @Autowired + private IDocInfoService docInfoService; + + @Autowired + private IDocRelativeService iDocRelativeService; @Override public List<WorkStep> getByUserPerms(String userId) { @@ -105,7 +117,7 @@ permissionStream.setPartsId(workStep.getPartsId()); } permissionStream.setProcessId(workStep.getProcessId()); - permissionStream.setStepId(workStep.getStepId()); + permissionStream.setStepId(workStep.getId()); return permissionStreamService.save(permissionStream); } @@ -146,4 +158,125 @@ } + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean assignAddDepart(WorkStep workStep, Collection<MdcProduction> departmentList) { + if(workStep == null || departmentList == null || departmentList.isEmpty()) + ExceptionCast.cast(CommonCode.INVALID_PARAM); + List<WorkStepDepartment> workStepDepartmentList = new ArrayList<>(); + List<PermissionStream> permissionStreamList = new ArrayList<>(); + departmentList.forEach(item -> { + WorkStepDepartment en = workStepDepartmentService.getByStepIdAndDepartId(workStep.getId(), item.getId()); + if(en == null) { + en = new WorkStepDepartment(); + en.setDepartId(item.getId()); + en.setStepId(workStep.getId()); + workStepDepartmentList.add(en); + } + PermissionStream stream = permissionStreamService.getByStepIdAndDepartId(workStep.getProductId(), workStep.getComponentId(), workStep.getPartsId(),workStep.getProcessId(),workStep.getId(),item.getId()); + if(stream == null) { + stream = new PermissionStream(); + stream.setDepartId(item.getId()); + stream.setProductId(workStep.getProductId()); + stream.setComponentId(workStep.getComponentId()); + stream.setPartsId(workStep.getPartsId()); + stream.setProcessId(workStep.getProcessId()); + stream.setStepId(workStep.getId()); + + permissionStreamList.add(stream); + } + }); + if(!workStepDepartmentList.isEmpty()) { + boolean b = workStepDepartmentService.saveBatch(workStepDepartmentList); + if(!b) { + ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); + } + } + if(!permissionStreamList.isEmpty()) { + boolean b = permissionStreamService.saveBatch(permissionStreamList); + if(!b) { + ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); + } + } + return true; + } + + @Override + public List<WorkStep> getByProcessIds(String productId,List<String> processIds) { + if(!ValidateUtil.validateString(productId) || processIds == null || processIds.isEmpty()) + return null; + List<WorkStep> list = new ArrayList<>(); + if(processIds.size() > 1000){ + List<List<String>> processListArr = ListUtils.partition(processIds, 100); + for(List<String> processList : processListArr){ + List<WorkStep> workStepList = super.lambdaQuery().eq(WorkStep::getProductId, productId).in(WorkStep::getProcessId, processList).list(); + if(workStepList != null && !workStepList.isEmpty()){ + list.addAll(workStepList); + } + } + }else { + list = super.lambdaQuery().eq(WorkStep::getProductId, productId).in(WorkStep::getProcessId, processIds).list(); + } + if(list == null || list.isEmpty()) + return null; + return list; + } + + /** + * 鍒嗛厤閮ㄩ棬鏉冮檺 + * @param workStep + * @param departmentList + * @return + */ + @Override + public boolean assignRemoveDepart(WorkStep workStep, Collection<MdcProduction> departmentList){ + if(workStep == null || departmentList == null || departmentList.isEmpty()) + ExceptionCast.cast(CommonCode.INVALID_PARAM); + List<WorkStepDepartment> workStepDepartmentList = new ArrayList<>(); + List<PermissionStream> permissionStreamList = new ArrayList<>(); + departmentList.forEach(item -> { + WorkStepDepartment en = workStepDepartmentService.getByStepIdAndDepartId(workStep.getId(), item.getId()); + if(en != null) { + workStepDepartmentList.add(en); + } + PermissionStream stream = permissionStreamService.getByStepIdAndDepartId(workStep.getProductId(), workStep.getComponentId(), workStep.getPartsId() + ,workStep.getProcessId(),workStep.getId(), item.getId()); + if(stream != null) { + permissionStreamList.add(stream); + } + }); + if(!workStepDepartmentList.isEmpty()) { + boolean b = workStepDepartmentService.removeByCollection(workStepDepartmentList); + if(!b) { + ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); + } + } + if(!permissionStreamList.isEmpty()) { + boolean b = permissionStreamService.removeByCollection(permissionStreamList); + if(!b) { + ExceptionCast.cast(ProductInfoCode.PRODUCT_USER_PERM_ERROR); + } + } + return true; + } + + /** + * 鍒犻櫎宸ユ淇℃伅 閫昏緫鍒犻櫎 + * @param id + * @return + */ + public boolean deleteWorkStep(String id){ + if(!ValidateUtil.validateString(id)) + ExceptionCast.cast(CommonCode.INVALID_PARAM); + WorkStep en = super.getById(id); + if(en == null) + ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST); + //楠岃瘉鏄惁瀛樺湪鏂囨。 + List<DocRelative> docRelativeList=iDocRelativeService.list(new QueryWrapper<DocRelative>().eq("attribution_type","6").eq("attribution_id",id)); + if (!docRelativeList.isEmpty()){ + ExceptionCast.cast(ProcessInfoCode.WORKSTEP_HAS_DOC); + } + return super.removeById(id); + } + } -- Gitblit v1.9.3