From bb696e8e702854b62b144b22e20e36981301e6cf Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期四, 17 四月 2025 09:46:24 +0800 Subject: [PATCH] 新增筛选电子样板接口、新增强制终止流程方法, --- lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java | 20 ++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java | 12 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPartsInfoService.java | 9 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/TreeInfoRequest.java | 65 +++++++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java | 7 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java | 87 ++++++++++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProductInfoService.java | 9 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DocInfo.java | 8 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java | 3 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IFlowTaskService.java | 8 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java | 53 +++++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java | 50 +++++++ lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/controller/AssignStreamFlowController.java | 1 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IComponentInfoService.java | 9 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java | 45 ++++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProductInfoController.java | 18 ++ 16 files changed, 397 insertions(+), 7 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProductInfoController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProductInfoController.java index 46c981d..179adb6 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProductInfoController.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProductInfoController.java @@ -8,7 +8,9 @@ import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.dnc.entity.DocInfo; import org.jeecg.modules.dnc.entity.ProductInfo; +import org.jeecg.modules.dnc.request.TreeInfoRequest; import org.jeecg.modules.dnc.response.CommonCode; import org.jeecg.modules.dnc.response.CommonGenericTree; import org.jeecg.modules.dnc.response.QueryListResponseResult; @@ -270,4 +272,20 @@ } return Result.error("鍒犻櫎澶辫触锛�"); } + + /** + * 閫氳繃闆朵欢鍙枫�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲鐢靛瓙鏍锋澘 + * @param treeInfoRequest + * @return + */ + @AutoLog(value = "闆朵欢淇℃伅琛�-閫氳繃闆朵欢鍙枫�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲鐢靛瓙鏍锋澘") + @ApiOperation(value = "闆朵欢淇℃伅琛�-閫氳繃闆朵欢鍙枫�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲鐢靛瓙鏍锋澘", notes = "闆朵欢淇℃伅琛�-閫氳繃闆朵欢鍙枫�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲鐢靛瓙鏍锋澘") + @GetMapping("/query") + public Result<?> queryPartsInfo(TreeInfoRequest treeInfoRequest) { + List<DocInfo> list = productInfoService.getByTreeOtherFileInfo(treeInfoRequest); + if (list == null) + list = Collections.emptyList(); + return Result.ok(list); + } + } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DocInfo.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DocInfo.java index ec33919..e12a456 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DocInfo.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DocInfo.java @@ -64,6 +64,7 @@ @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") private String pullUser; @TableField(exist = false) + @Dict(dicCode = "nc_doc_relative_attribution_type") private Integer attributionType; @TableField(exist = false) private String attributionId; @@ -74,4 +75,11 @@ @Dict(dicCode = "dnc_doc_sync_status") private Integer syncStatus; + //鎵�灞炶妭鐐瑰悕绉� + @TableField(exist = false) + private String nodeName; + //鎵�灞炶妭鐐逛唬鍙� + @TableField(exist = false) + private String nodeCode; + } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java index 462d983..fbe413d 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java @@ -15,6 +15,9 @@ private Integer attributionType; @ApiModelProperty(value = "缁戝畾绫诲瀷瀵瑰簲鐨刬d 1 浜у搧id 2 閮ㄤ欢id 3 闆朵欢id 4 璁惧id 5 宸ュ簭id", example = "234324234", required = true) private String attributionId; + /**鐩稿悓绫诲瀷,缁戝畾绫诲瀷瀵瑰簲鐨刬ds*/ + @ApiModelProperty(value = "缁戝畾绫诲瀷瀵瑰簲鐨刬ds 1 浜у搧ids 2 閮ㄤ欢ids 3 闆朵欢ids 4 璁惧ids 5 宸ュ簭ids") + private String attributionIds; @ApiModelProperty(value = "鏂囨。鍒嗙被 NC=NC鏂囨。 OTHER=鍏朵粬鏂囨。 SEND=璁惧鍙戦�佹枃妗� REC=璁惧鎺ュ彈鏂囨。", example = "NC", required = true) private String docClassCode; @ApiModelProperty(value = "NC鏂囦欢鍚嶇О") diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/TreeInfoRequest.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/TreeInfoRequest.java new file mode 100644 index 0000000..af2c999 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/TreeInfoRequest.java @@ -0,0 +1,65 @@ +package org.jeecg.modules.dnc.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@NoArgsConstructor +@ApiModel(value = "鏍戠粨鏋勬枃浠舵煡璇㈠弬鏁�", description = "鏍戠粨鏋勬枃浠舵煡璇㈠弬鏁�") +public class TreeInfoRequest { + + private List<String> productIds; + + private List<String> componentIds; + + private List<String> partsIds; + + private String treeName; + + private String structureType; + + private String treeCode; + + @ApiModelProperty(value = "鏂囨。id") + private String docId; + + @ApiModelProperty(value = "缁戝畾绫诲瀷 1 浜у搧 2 閮ㄤ欢 3 闆朵欢 4 璁惧 5 宸ュ簭", example = "1", required = true) + private Integer attributionType; + + @ApiModelProperty(value = "缁戝畾绫诲瀷瀵瑰簲鐨刬d 1 浜у搧id 2 閮ㄤ欢id 3 闆朵欢id 4 璁惧id 5 宸ュ簭id", example = "234324234", required = true) + private String attributionId; + + /**鐩稿悓绫诲瀷,缁戝畾绫诲瀷瀵瑰簲鐨刬ds*/ + @ApiModelProperty(value = "缁戝畾绫诲瀷瀵瑰簲鐨刬ds 1 浜у搧ids 2 閮ㄤ欢ids 3 闆朵欢ids 4 璁惧ids 5 宸ュ簭ids") + private String attributionIds; + + @ApiModelProperty(value = "鏂囨。鍒嗙被 NC=NC鏂囨。 OTHER=鍏朵粬鏂囨。 SEND=璁惧鍙戦�佹枃妗� REC=璁惧鎺ュ彈鏂囨。", example = "NC", required = true) + private String docClassCode; + + @ApiModelProperty(value = "NC鏂囦欢鍚嶇О") + private String docName; + + @ApiModelProperty(value = "涓婁紶鏃堕棿寮�濮�") + private String startTime; + + @ApiModelProperty(value = "涓婁紶鏃堕棿缁撴潫") + private String endTime; + + //鎺掑簭瀛楁 + @ApiModelProperty(value = "鎺掑簭瀛楁") + private String column; + @ApiModelProperty(value = "鎺掑簭") + private String order; + @ApiModelProperty(value = "鏂囨。鐘舵��") + private String docStatus; + @ApiModelProperty(value = "瀹$鐘舵��") + private String docDispatchStatus; + @ApiModelProperty(value = "鍑哄簱鐘舵��") + private String pullStatus; + @ApiModelProperty(value = "鍚屾鐘舵�� 1 鏈悓姝� 2 宸插悓姝�") + private Integer syncStatus; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IComponentInfoService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IComponentInfoService.java index 3d43e73..724e004 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IComponentInfoService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IComponentInfoService.java @@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.dnc.dto.ComponentExt; import org.jeecg.modules.dnc.entity.ComponentInfo; +import org.jeecg.modules.dnc.entity.DocInfo; import org.jeecg.modules.dnc.entity.PermissionStream; +import org.jeecg.modules.dnc.request.TreeInfoRequest; import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.entity.SysUser; @@ -142,6 +144,13 @@ * @return */ List<ComponentInfo> getByParentIdAndUserId(String parentId, String userId); + + /** + * 閫氳繃闆朵欢鍙枫�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲鐢靛瓙鏍锋澘 + * @param treeInfoRequest + * @return + */ + List<DocInfo> getByComponentInfo(TreeInfoRequest treeInfoRequest); } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java index e008f88..0fafcab 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java @@ -6,11 +6,9 @@ import org.jeecg.modules.dnc.entity.DocFile; import org.jeecg.modules.dnc.entity.DocInfo; import org.jeecg.modules.dnc.entity.ProcessStream; -import org.jeecg.modules.dnc.response.QueryListResponseResult; -import org.jeecg.modules.dnc.response.QueryPageResponseResult; -import org.jeecg.modules.dnc.response.ResponseResult; import org.jeecg.modules.dnc.request.DocInfoQueryRequest; import org.jeecg.modules.dnc.request.DocInfoUploadRequest; +import org.jeecg.modules.dnc.response.ResponseResult; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; @@ -217,6 +215,14 @@ List<DocInfo> findList(DocInfoQueryRequest docQuery); /** + * 閫氳繃涓�缁刟ttributionId,docClassCode,attributionType鏌ヨ鍙寚娲剧殑鏂囨。淇℃伅鍒楄〃 + * @param docQuery + * @return + */ + List<DocInfo> findListByDocQuery(DocInfoQueryRequest docQuery); + + + /** * 鑾峰彇涓�缁勫伐搴忎笅鐨勬枃妗d俊鎭垪琛� * @param streams * @return diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPartsInfoService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPartsInfoService.java index aaffda1..f227426 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPartsInfoService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPartsInfoService.java @@ -1,7 +1,9 @@ package org.jeecg.modules.dnc.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.dnc.entity.DocInfo; import org.jeecg.modules.dnc.entity.PartsInfo; +import org.jeecg.modules.dnc.request.TreeInfoRequest; import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.entity.SysUser; @@ -114,4 +116,11 @@ * @return */ PartsInfo getByCode(String partsCode); + + /** + * 閫氳繃闆朵欢鍙枫�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲鐢靛瓙鏍锋澘 + * @param treeInfoRequest + * @return + */ + List<DocInfo> getByPartsInfo(TreeInfoRequest treeInfoRequest); } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java index c3e296a..ff49f1f 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java @@ -2,7 +2,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.dnc.entity.DocInfo; import org.jeecg.modules.dnc.entity.ProcessSpecVersion; +import org.jeecg.modules.dnc.request.TreeInfoRequest; import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.entity.SysUser; @@ -110,9 +112,10 @@ Result<?> getProcessSpecVersionCount(String processSpecId); /** - * 鏌ヨ宸ヨ壓瑙勭▼鐗堟湰涓嬬殑宸ュ簭涓庡伐姝� - * @param processSpecVersionId + * 閫氳繃闆朵欢鍙枫�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲鐢靛瓙鏍锋澘 + * @param treeInfoRequest * @return */ + List<DocInfo> getByProcessSpecVersion(TreeInfoRequest treeInfoRequest); } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProductInfoService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProductInfoService.java index 9c059e7..c3be206 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProductInfoService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProductInfoService.java @@ -2,7 +2,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.dnc.entity.DocInfo; import org.jeecg.modules.dnc.entity.ProductInfo; +import org.jeecg.modules.dnc.request.TreeInfoRequest; import org.jeecg.modules.dnc.response.CommonGenericTree; import org.jeecg.modules.dnc.ucenter.UserDepartExt; import org.jeecg.modules.system.entity.MdcProduction; @@ -223,5 +225,12 @@ * @return */ Result<?> getTreeById(String id, Integer type); + + /** + * 閫氳繃浠e彿銆佸悕绉般�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲鐢靛瓙鏍锋澘 + * @param treeInfoRequest + * @return + */ + List<DocInfo> getByTreeOtherFileInfo(TreeInfoRequest treeInfoRequest); } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java index 2c31d2c..9b22567 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java @@ -1,5 +1,7 @@ package org.jeecg.modules.dnc.service.impl; +import cn.hutool.core.bean.BeanUtil; +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; @@ -11,6 +13,8 @@ import org.jeecg.modules.dnc.exception.ExceptionCast; import org.jeecg.modules.dnc.mapper.ComponentInfoMapper; 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.CommonCode; import org.jeecg.modules.dnc.response.ComponentInfoCode; import org.jeecg.modules.dnc.response.ProductInfoCode; @@ -25,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; @Service public class ComponentInfoSeServiceImpl extends ServiceImpl<ComponentInfoMapper, ComponentInfo> implements IComponentInfoService { @@ -40,6 +45,8 @@ @Lazy private IPartsInfoService partsInfoService; @Autowired + private IProcessSpecVersionService processSpecVersionService; + @Autowired private IProcessStreamService processStreamService; @Autowired private IProductMixService productMixService; @@ -47,7 +54,9 @@ private IDocRelativeService iDocRelativeService; @Autowired private IProductPermissionService productPermissionService; - + @Autowired + @Lazy + private IDocInfoService docInfoService; @Override @Transactional(rollbackFor = {Exception.class}) public boolean addComponentInfo(ComponentInfo componentInfo) { @@ -515,4 +524,46 @@ queryWrapper.orderByAsc(ComponentInfo::getCreateTime); return super.list(queryWrapper); } + + /** + * 閫氳繃闆朵欢鍙枫�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲鐢靛瓙鏍锋澘 + * @param treeInfoRequest + * @return + */ + @Override + public List<DocInfo> getByComponentInfo(TreeInfoRequest treeInfoRequest){ + LambdaQueryWrapper<ComponentInfo> queryWrapper = new LambdaQueryWrapper<>(); + if (treeInfoRequest.getProductIds() != null && !treeInfoRequest.getProductIds().isEmpty()) { + queryWrapper.in(ComponentInfo::getProductId, treeInfoRequest.getProductIds()); + } + if (treeInfoRequest.getAttributionType()==2){ + queryWrapper.eq(StrUtil.isNotEmpty(treeInfoRequest.getAttributionId()),ComponentInfo::getComponentId,treeInfoRequest.getAttributionId()); + } + + queryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getTreeCode()),ComponentInfo::getComponentCode, treeInfoRequest.getTreeCode()); + queryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getTreeName()),ComponentInfo::getComponentName, treeInfoRequest.getTreeName()); + queryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getStructureType()),ComponentInfo::getStructureType, treeInfoRequest.getStructureType()); + queryWrapper.orderByDesc(ComponentInfo::getCreateTime); + List<ComponentInfo> list = super.list(queryWrapper); + List<DocInfo> docInfos = new ArrayList<>(); + if (list != null && !list.isEmpty()) { + String ids=list.stream().map(ComponentInfo::getComponentId).collect(Collectors.joining(",")); + DocInfoQueryRequest docQuery = new DocInfoQueryRequest(); + BeanUtil.copyProperties(treeInfoRequest,docQuery); + docQuery.setAttributionIds(ids); + docQuery.setDocClassCode("OTHER"); + docQuery.setAttributionType(2); + docInfos=docInfoService.findListByDocQuery(docQuery); + } + if (treeInfoRequest.getAttributionType()==2){ + List<String> id =new ArrayList<>(); + id.add(treeInfoRequest.getAttributionId()); + treeInfoRequest.setComponentIds(id); + List<DocInfo> partsInfos = partsInfoService.getByPartsInfo(treeInfoRequest); + docInfos.addAll(partsInfos); + List<DocInfo> processSpecVersions = processSpecVersionService.getByProcessSpecVersion(treeInfoRequest); + docInfos.addAll(processSpecVersions); + } + return docInfos; + } } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java index 59fcce6..33580e8 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java @@ -1,5 +1,7 @@ package org.jeecg.modules.dnc.service.impl; +import cn.hutool.core.bean.BeanUtil; +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; @@ -12,6 +14,8 @@ import org.jeecg.modules.dnc.mapper.ComponentInfoMapper; import org.jeecg.modules.dnc.mapper.PartsInfoMapper; 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.CommonCode; import org.jeecg.modules.dnc.response.PartsInfoCode; import org.jeecg.modules.dnc.response.ProductInfoCode; @@ -21,10 +25,12 @@ import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.entity.SysUser; 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 public class PartsInfoServiceImpl extends ServiceImpl<PartsInfoMapper, PartsInfo> implements IPartsInfoService { @@ -46,6 +52,9 @@ private IProductPermissionService productPermissionService; @Autowired private IProductMixService productMixService; + @Autowired + @Lazy + private IDocInfoService docInfoService; @Override @Transactional(rollbackFor = {Exception.class}) public boolean addPartsInfo(PartsInfo partsInfo) { @@ -435,4 +444,45 @@ return null; } + /** + * 閫氳繃闆朵欢鍙枫�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲鐢靛瓙鏍锋澘 + * @param treeInfoRequest + * @return + */ + @Override + public List<DocInfo> getByPartsInfo(TreeInfoRequest treeInfoRequest){ + LambdaQueryWrapper<PartsInfo> queryWrapper = new LambdaQueryWrapper<>(); + if (treeInfoRequest.getProductIds() != null && !treeInfoRequest.getProductIds().isEmpty()) { + queryWrapper.in(PartsInfo::getProductId, treeInfoRequest.getProductIds()); + } + if (treeInfoRequest.getComponentIds() != null && !treeInfoRequest.getComponentIds().isEmpty()) { + queryWrapper.in(PartsInfo::getComponentId, treeInfoRequest.getComponentIds()); + } + if (treeInfoRequest.getAttributionType()==3){ + queryWrapper.eq(StrUtil.isNotEmpty(treeInfoRequest.getAttributionId()),PartsInfo::getPartsId,treeInfoRequest.getAttributionId()); + } + queryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getTreeCode()),PartsInfo::getPartsCode, treeInfoRequest.getTreeCode()); + queryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getTreeName()),PartsInfo::getPartsName, treeInfoRequest.getTreeName()); + queryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getStructureType()),PartsInfo::getStructureType, treeInfoRequest.getStructureType()); + queryWrapper.orderByDesc(PartsInfo::getCreateTime); + List<PartsInfo> list = super.list(queryWrapper); + List<DocInfo> docInfos = new ArrayList<>(); + if (list != null && !list.isEmpty()) { + String ids=list.stream().map(PartsInfo::getPartsId).collect(Collectors.joining(",")); + DocInfoQueryRequest docQuery = new DocInfoQueryRequest(); + BeanUtil.copyProperties(treeInfoRequest,docQuery); + docQuery.setAttributionIds(ids); + docQuery.setDocClassCode("OTHER"); + docQuery.setAttributionType(3); + docInfos=docInfoService.findListByDocQuery(docQuery); + } + if (treeInfoRequest.getAttributionType()==3){ + List<String> id =new ArrayList<>(); + id.add(treeInfoRequest.getAttributionIds()); + treeInfoRequest.setPartsIds(id); + List<DocInfo> processSpecVersions = processSpecVersionService.getByProcessSpecVersion(treeInfoRequest); + docInfos.addAll(processSpecVersions); + } + return docInfos; + } } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java index 008852d..a30dec5 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java @@ -1,5 +1,7 @@ package org.jeecg.modules.dnc.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -12,6 +14,8 @@ import org.jeecg.modules.dnc.mapper.PartsInfoMapper; import org.jeecg.modules.dnc.mapper.ProcessSpecVersionMapper; 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.utils.ValidateUtil; @@ -22,6 +26,7 @@ import org.springframework.stereotype.Service; import java.util.*; +import java.util.stream.Collectors; @Service public class ProcessSpecVersionServiceImpl extends ServiceImpl<ProcessSpecVersionMapper, ProcessSpecVersion> implements IProcessSpecVersionService{ @@ -46,6 +51,9 @@ private IWorkStepService workStepService; @Autowired private IProductPermissionService productPermissionService; + @Autowired + @Lazy + private IDocInfoService docInfoService; /** * 鏍规嵁鐢ㄦ埛id鑾峰彇鎺堟潈鐨勫伐鑹鸿绋嬬増鏈〃淇℃伅 * @param userId @@ -457,4 +465,41 @@ List<WorkStep> workStepList=workStepService.list(new LambdaQueryWrapper<WorkStep>().eq(WorkStep::getPsvId,processSpecId)); return null; } + + /** + * 閫氳繃闆朵欢鍙枫�佹潗璐ㄧ瓑鏌ヨ瀵瑰簲鐢靛瓙鏍锋澘 + * @param treeInfoRequest + * @return + */ + @Override + public List<DocInfo> getByProcessSpecVersion(TreeInfoRequest treeInfoRequest){ + LambdaQueryWrapper<ProcessSpecVersion> queryWrapper = new LambdaQueryWrapper<>(); + if (treeInfoRequest.getProductIds() != null && !treeInfoRequest.getProductIds().isEmpty()) { + queryWrapper.in(ProcessSpecVersion::getProductId, treeInfoRequest.getProductIds()); + } + if (treeInfoRequest.getComponentIds() != null && !treeInfoRequest.getComponentIds().isEmpty()) { + queryWrapper.in(ProcessSpecVersion::getComponentId, treeInfoRequest.getComponentIds()); + } + if (treeInfoRequest.getPartsIds() != null && !treeInfoRequest.getPartsIds().isEmpty()) { + queryWrapper.in(ProcessSpecVersion::getPartsId, treeInfoRequest.getPartsIds()); + } + if (treeInfoRequest.getAttributionType()==4){ + queryWrapper.eq(StrUtil.isNotEmpty(treeInfoRequest.getAttributionId()),ProcessSpecVersion::getId,treeInfoRequest.getAttributionId()); + } + queryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getTreeName()),ProcessSpecVersion::getProcessSpecVersionName, treeInfoRequest.getTreeName()); + queryWrapper.like(StrUtil.isNotEmpty(treeInfoRequest.getTreeCode()),ProcessSpecVersion::getProcessSpecVersionCode, treeInfoRequest.getTreeName()); + queryWrapper.orderByDesc(ProcessSpecVersion::getCreateTime); + List<ProcessSpecVersion> list = super.list(queryWrapper); + if (list == null || list.isEmpty()){ + return new ArrayList<>(); + }else { + String ids=list.stream().map(ProcessSpecVersion::getId).collect(Collectors.joining(",")); + DocInfoQueryRequest docQuery = new DocInfoQueryRequest(); + BeanUtil.copyProperties(treeInfoRequest,docQuery); + docQuery.setAttributionIds(ids); + docQuery.setDocClassCode("OTHER"); + docQuery.setAttributionType(4); + return docInfoService.findListByDocQuery(docQuery); + } + } } 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 ee700e9..ac328de 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,5 +1,7 @@ package org.jeecg.modules.dnc.service.impl; +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; @@ -13,6 +15,8 @@ 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; @@ -80,6 +84,8 @@ private IWorkStepPermissionService iWorkStepPermissionService; @Autowired private IProductMixService productMixService; + @Autowired + private IDocInfoService docInfoService; @Override @Transactional(rollbackFor = {Exception.class}) @@ -1016,6 +1022,87 @@ } /** + * 閫氳繃浠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 (CollectionUtil.isNotEmpty(productInfoList)) { + // 浣跨敤ID鍒楄〃鑰岄潪鎷兼帴瀛楃涓� + List<String> productIds = productInfoList.stream() + .map(ProductInfo::getProductId) + .collect(Collectors.toList()); + DocInfoQueryRequest docQuery = new DocInfoQueryRequest(); + BeanUtil.copyProperties(treeInfoRequest, docQuery); + docQuery.setAttributionIds(productIds.toString()); // 鍋囪setAttributionIds鎺ュ彈List<String> + docQuery.setDocClassCode("OTHER"); + docQuery.setAttributionType(1); + 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)); + return getByTreeOtherFileInfo(docInfos); + case 2: + return getByTreeOtherFileInfo(componentInfoService.getByComponentInfo(treeInfoRequest)); + case 3: + return getByTreeOtherFileInfo(partsInfoService.getByPartsInfo(treeInfoRequest)); + case 4: + return getByTreeOtherFileInfo(processSpecVersionService.getByProcessSpecVersion(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()); + break; + case 2: + ComponentInfo componentInfo=componentInfoService.getById(docInfo.getAttributionId()); + docInfo.setNodeName(componentInfo.getComponentName()); + docInfo.setNodeCode(componentInfo.getComponentCode()); + break; + case 3: + PartsInfo partsInfo=partsInfoService.getById(docInfo.getAttributionId()); + docInfo.setNodeCode(partsInfo.getPartsCode()); + docInfo.setNodeName(partsInfo.getPartsName()); + break; + case 4: + ProcessSpecVersion processSpecVersion=processSpecVersionService.getById(docInfo.getAttributionId()); + docInfo.setNodeName(processSpecVersion.getProcessSpecVersionName()); + docInfo.setNodeCode(processSpecVersion.getProcessSpecVersionCode()); + } + }); + } + return docInfos; + } + + /** * 楠岃瘉杈撳叆鍙傛暟 */ private void validateInputParameters(Integer nodeType, String paramId, Integer relativeFlag, String type, String[] paramIds) { diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/controller/AssignStreamFlowController.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/controller/AssignStreamFlowController.java index 4c35971..68278b0 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/controller/AssignStreamFlowController.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/controller/AssignStreamFlowController.java @@ -97,7 +97,6 @@ return flowTaskService.finishedList(pageNo, pageSize,flowMyBusinessDto); } - @ApiOperation(value = "鑾峰彇宸ヤ綔娴佸巻鍙蹭换鍔�", response = FlowTaskDto.class) @GetMapping(value = "/queryHisTaskList") public Result<?> queryHisTaskList(@RequestParam(name = "procInstId") String procInstId) { diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IFlowTaskService.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IFlowTaskService.java index 62cb661..bb5278e 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IFlowTaskService.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/IFlowTaskService.java @@ -46,6 +46,14 @@ Result findReturnTaskListByDataId(FlowTaskVo flowTaskVo); /** + * 缁撴潫娴佺▼ + * @param processInstanceId + * @param deleteReason + * @return + */ + Result<?> end(String processInstanceId, String deleteReason); + + /** * 鍒犻櫎浠诲姟 * * @param flowTaskVo 璇锋眰瀹炰綋鍙傛暟 diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java index 83645f3..c39da7c 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java @@ -668,6 +668,26 @@ flowTaskVo.setTaskId(business.getTaskId()); return findReturnTaskList(flowTaskVo); } + + /** + * 缁撴潫娴佺▼ + * @param processInstanceId 娴佺▼瀹炰緥 ID + * @param deleteReason 瀹氫箟鍒犻櫎鍘熷洜 + */ + public Result<?> end(String processInstanceId, String deleteReason) { + try { + // 寮哄埗缁撴潫娴佺▼瀹炰緥 + runtimeService.deleteProcessInstance(processInstanceId, deleteReason); + System.out.println("Process instance with ID " + processInstanceId + " has been forcefully ended."); + } catch (Exception e) { + System.err.println("Failed to force end process instance: " + e.getMessage()); + } + + // 鍏抽棴娴佺▼寮曟搸 + processEngine.close(); + return Result.OK("娴佺▼宸茬粨鏉�"); + } + /** * 鑾峰彇鎵�鏈夊彲鍥為��鐨勮妭鐐� * -- Gitblit v1.9.3