From cc44920da3d40b8248b67560026e891afdd1a6ab Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期四, 08 五月 2025 17:57:14 +0800 Subject: [PATCH] 1.查询可以被引用的部件接口开发完成 2.借用部件(可批量) 开发完成 3.修改原有新增、修改部件接口 完成 4.修改原有删除文档与导入文档接口 完成 5.修改工作流问题 --- lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java | 6 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java | 4 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/base/service/impl/WarehouseLocationServiceImpl.java | 4 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/PermissionStreamNewMapper.java | 17 ++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml | 78 +++++++++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPermissionStreamNewService.java | 11 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ComponentInfoController.java | 18 ++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceTypeServiceImpl.java | 1 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamNewServiceImpl.java | 14 ++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ComponentInfoCode.java | 17 +- lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java | 122 +++++++++++++++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ComponentInfoMapper.xml | 23 --- lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DocInfoController.java | 13 - lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IComponentInfoService.java | 18 ++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java | 37 ++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ComponentInfo.java | 3 16 files changed, 335 insertions(+), 51 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ComponentInfoController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ComponentInfoController.java index e759688..6bc4abe 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ComponentInfoController.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ComponentInfoController.java @@ -1,8 +1,10 @@ package org.jeecg.modules.dnc.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.modules.dnc.entity.ComponentInfo; import org.jeecg.modules.dnc.entity.PermissionStream; @@ -64,4 +66,20 @@ } return new ResponseResult(CommonCode.FAIL); } + + @AutoLog(value = "鏌ヨ鍙互琚紩鐢ㄧ殑閮ㄤ欢") + @ApiOperation(value = "鏌ヨ鍙互琚紩鐢ㄧ殑閮ㄤ欢", notes = "鏌ヨ鍙互琚紩鐢ㄧ殑閮ㄤ欢") + @GetMapping("/getByComponentId") + public Result<?> getByComponentId(ComponentInfo componentInfo, Integer pageNo, Integer pageSize) { + IPage<ComponentInfo> iPage = componentInfoService.getByComponentId(componentInfo, pageNo, pageSize); + return Result.OK(iPage); + } + + + @AutoLog(value = "鍊熺敤閮ㄤ欢(鍙壒閲�)") + @ApiOperation(value = "鍊熺敤閮ㄤ欢(鍙壒閲�)", notes = "鍊熺敤閮ㄤ欢(鍙壒閲�)") + @PostMapping("/borrow") + public Result<?> borrowComponent(@RequestParam("oldId") String oldId, @RequestParam("newIds") String newIds) { + return componentInfoService.borrowComponent(oldId,newIds); + } } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DocInfoController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DocInfoController.java index 1374027..4594a87 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DocInfoController.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DocInfoController.java @@ -1,6 +1,5 @@ package org.jeecg.modules.dnc.controller; -import cn.hutool.core.util.StrUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -56,9 +55,9 @@ @AutoLog(value = "鏂囨。琛�-鍒犻櫎鏂囨。淇℃伅") @ApiOperation(value = "鏂囨。琛�-鍒犻櫎鏂囨。淇℃伅", notes = "鏂囨。琛�-鍒犻櫎鏂囨。淇℃伅") - @DeleteMapping("/delete") - public ResponseResult deleteDocInfo(@RequestParam("id") String id) { - boolean b = docInfoService.deleteDocInfo(id); + @DeleteMapping("/delete/{id}/{attrType}/{attrId}") + public ResponseResult deleteDocInfo(@PathVariable("id") String id, @PathVariable("attrType") String attrType, @PathVariable("attrId") String attrId) { + boolean b = docInfoService.deleteDocInfo(id,attrType,attrId); if(!b) return new ResponseResult(CommonCode.FAIL); return new ResponseResult(CommonCode.SUCCESS); @@ -182,9 +181,9 @@ @AutoLog(value = "鏂囦欢琛�-鎵归噺鍒犻櫎鏂囨。鎺ュ彛") @ApiOperation(value = "鏂囦欢琛�-鎵归噺鍒犻櫎鏂囨。鎺ュ彛", notes = "鏂囦欢琛�-鎵归噺鍒犻櫎鏂囨。鎺ュ彛") - @PostMapping("/batch/remove") - public ResponseResult batchRemoveDocInfo(@RequestBody String[] docIds) { - boolean b = docInfoService.batchRemoveDocInfo(docIds); + @PostMapping("/batch/remove/{docIds}/{attrType}/{attrId}") + public ResponseResult batchRemoveDocInfo(@PathVariable("docIds") String[] docIds, @PathVariable("attrType") String attrType, @PathVariable("attrId") String attrId) { + boolean b = docInfoService.batchRemoveDocInfo(docIds,attrType,attrId); if(!b) return new ResponseResult(CommonCode.FAIL); return new ResponseResult(CommonCode.SUCCESS); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ComponentInfo.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ComponentInfo.java index 59a52ab..0719e35 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ComponentInfo.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ComponentInfo.java @@ -70,6 +70,9 @@ @TableLogic @TableField(value = "delete_flag", select = false) private Integer deleteFlag = 0; + //琚�熺敤id + @TableField(value = "borrow_id") + private String borrowId; //鍒涘缓浜� private transient String createName; diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/PermissionStreamNewMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/PermissionStreamNewMapper.java index 4d52b15..6033522 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/PermissionStreamNewMapper.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/PermissionStreamNewMapper.java @@ -1,5 +1,6 @@ package org.jeecg.modules.dnc.mapper; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.dnc.entity.PermissionStreamNew; @@ -17,6 +18,22 @@ List<ProductMix> loadProductMix(@Param("userId") String userId,@Param("productIdList")List<String> productIdList); /** + * 鏍规嵁鐢ㄦ埛id銆侀儴闂ㄥ垪琛ㄣ�乮d銆佷笟鍔$被鍨嬭幏鍙栧搴旂粨鏋勬爲鏉冮檺 + * @param userId + * @param productIdList + * @param businessId + * @param businessType + * @return + */ + @InterceptorIgnore( + tenantLine = "true", // 蹇界暐澶氱鎴锋潯浠� + blockAttack = "true", // 缁曡繃鍏ㄨ〃鎿嶄綔妫�鏌� + illegalSql = "true" // 绂佺敤 SQL 娉ㄥ叆妫�鏌� + ) + List<ProductMix> loadProductMixByBusinessId(@Param("userId") String userId,@Param("productIdList")List<String> productIdList, + @Param("businessId")String businessId,@Param("businessType")String businessType); + + /** * 绠$悊鍛樿幏鍙栨墍鏈夋潈闄� * @return */ diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ComponentInfoMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ComponentInfoMapper.xml index d31a3cb..b09355a 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ComponentInfoMapper.xml +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ComponentInfoMapper.xml @@ -158,27 +158,4 @@ on comp.component_id=s.component_id where delete_flag = 0 and parent_id=#{parentId} </select> - - - <select id="findById" parameterType="Map" resultMap="componentExtPermsMapAs"> - select comp.component_id - , comp.parent_id - , comp.product_id - , comp.component_name - , comp.materiel_code - , comp.materiel_desp - , comp.component_model - , comp.component_scale - , comp.component_weight - , comp.rank_level - , comp.assemble_type - , comp.produce_type - , comp.process_type - , comp.structure_type - , comp.component_code - , comp.component_status - , comp.description - from nc_component_info comp - where comp.component_id=#{id} and comp.delete_flag=0 - </select> </mapper> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml index e7552dc..76f6228 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml @@ -44,4 +44,82 @@ WHERE nps_user.business_id IS NOT NULL order by mix.tree_type, mix.create_time asc </select> + <select id="loadProductMixByBusinessId" resultType="org.jeecg.modules.dnc.entity.ProductMix"> + WITH CTE_Hierarchy AS ( + SELECT + CAST(id AS VARCHAR(36)) AS id, + CAST(parent_id AS VARCHAR(36)) AS parent_id, + 1 AS LEVEL, + CAST('#' + id + '#' AS VARCHAR(MAX)) AS visit_path + FROM + nc_product_mix + WHERE + id = #{businessId} + AND tree_type = #{businessType} + UNION ALL + -- 鍚戜笂閫掑綊鐖惰妭鐐癸紙甯﹀惊鐜娴嬶級 + SELECT + CAST(p.id AS VARCHAR(36)), + CAST(p.parent_id AS VARCHAR(36)), + h.level + 1, + CAST(h.visit_path + '#' + p.id + '#' AS VARCHAR(MAX)) + FROM + nc_product_mix p + INNER JOIN CTE_Hierarchy h ON CAST(p.id AS VARCHAR(36)) = h.parent_id + WHERE + p.tree_type = #{businessType} + AND h.visit_path NOT LIKE '%#' + p.id + '#%' + AND h.level < 1000 + UNION ALL + -- 鍚戜笅閫掑綊瀛愯妭鐐癸紙甯﹀惊鐜娴嬶級 + SELECT + CAST(c.id AS VARCHAR(36)), + CAST(c.parent_id AS VARCHAR(36)), + h.level + 1, + CAST(h.visit_path + '#' + c.id + '#' AS VARCHAR(MAX)) + FROM + nc_product_mix c + INNER JOIN CTE_Hierarchy h ON CAST(c.parent_id AS VARCHAR(36)) = h.id + WHERE + c.tree_type = #{businessType} + AND h.visit_path NOT LIKE '%#' + c.id + '#%' + AND h.level < 1000 + ), + ExclusionCTE AS ( + SELECT DISTINCT id + FROM CTE_Hierarchy + WHERE LEVEL BETWEEN 1 AND 1000 + ) + SELECT DISTINCT + mix.id, + mix.tree_code 'code', + mix.tree_name 'name', + mix.parent_id, + mix.tree_type AS 'type', + mix.extend, + mix.create_time + FROM + nc_product_mix mix + LEFT JOIN nc_permission_stream_new nps_depart ON mix.id = nps_depart.business_id + AND nps_depart.delete_flag = '0' + <if test="productIdList != null and productIdList.size() > 0"> + AND nps_depart.depart_id IN + <foreach collection="productIdList" item="productId" index="index" open="(" close=")" separator=","> + #{productId} + </foreach> + </if> + AND nps_depart.user_id IS NULL + LEFT JOIN nc_permission_stream_new nps_user ON mix.id = nps_user.business_id + AND nps_user.user_id = #{userId} + AND nps_user.delete_flag = '0' + WHERE + nps_depart.business_id IS NOT NULL + AND nps_user.business_id IS NOT NULL + AND mix.tree_type = #{businessType} + AND NOT EXISTS (SELECT 1 FROM ExclusionCTE e WHERE e.id = mix.id) + ORDER BY + mix.tree_type, + mix.create_time ASC + OPTION (MAXRECURSION 0); + </select> </mapper> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ComponentInfoCode.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ComponentInfoCode.java index 330404b..af3e7f3 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ComponentInfoCode.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ComponentInfoCode.java @@ -16,13 +16,14 @@ COMPONENT_CHILD_EXIST(false, 25108, "閮ㄤ欢瀛樺湪瀛愰儴浠讹紒"), COMPONENT_PARTS_EXIST(false, 25109, "閮ㄤ欢鏈夊叧鑱旂殑闆朵欢淇℃伅锛�"), COMPONENT_PROCESS_EXIST(false, 25110, "閮ㄤ欢鏈夊叧鑱旂殑宸ュ簭淇℃伅锛�"), - COMPONENT_DOC_EXIST(false, 25116, "閮ㄤ欢鏈夊叧鑱旂殑鏂囨。淇℃伅锛�"), - COMPONENT_CODE_NONE(false, 25111, "璇疯緭鍏ラ儴浠朵唬鍙凤紒"), - COMPONENT_IS_EXIST(false, 25112, "閮ㄤ欢宸插瓨鍦紒"), - COMPONENT_PN_NOT_VALID(false, 25113, "PN鐮佷笉鍚堟硶锛�"), - COMPONENT_PN_NOT_EXIST(false, 25114, "涓嶅瓨鍦ㄨPN鐮佸搴旂殑閮ㄤ欢鎴栭浂浠讹紒"), - COMPONENT_PN_NOT_ONLY(false, 25115, "PN鐮佷笉鍞竴锛�"), - COMPONENT_USER_NONE(false,25016,"閮ㄤ欢鏃犳硶娓呯┖鐢ㄦ埛鏉冮檺锛岃鑷冲皯淇濈暀涓�浣嶅彲鎿嶄綔鐢ㄦ埛锛�"); + COMPONENT_DOC_EXIST(false, 251111, "閮ㄤ欢鏈夊叧鑱旂殑鏂囨。淇℃伅锛�"), + COMPONENT_CODE_NONE(false, 25112, "璇疯緭鍏ラ儴浠朵唬鍙凤紒"), + COMPONENT_IS_EXIST(false, 25113, "閮ㄤ欢宸插瓨鍦紒"), + COMPONENT_BORROW_EXIST(false, 25114, "閮ㄤ欢宸茶鍊熺敤锛岃鍏堝垹闄ゅ�熺敤鍐嶅垹闄わ紒"), + COMPONENT_PN_NOT_VALID(false, 25115, "PN鐮佷笉鍚堟硶锛�"), + COMPONENT_PN_NOT_EXIST(false, 25116, "涓嶅瓨鍦ㄨPN鐮佸搴旂殑閮ㄤ欢鎴栭浂浠讹紒"), + COMPONENT_PN_NOT_ONLY(false, 25117, "PN鐮佷笉鍞竴锛�"), + COMPONENT_USER_NONE(false,25018,"閮ㄤ欢鏃犳硶娓呯┖鐢ㄦ埛鏉冮檺锛岃鑷冲皯淇濈暀涓�浣嶅彲鎿嶄綔鐢ㄦ埛锛�"); //鎿嶄綔浠g爜 @ApiModelProperty(value = "鎿嶄綔鏄惁鎴愬姛", example = "true", required = true) @@ -34,7 +35,7 @@ //鎻愮ず淇℃伅 @ApiModelProperty(value = "鎿嶄綔鎻愮ず", example = "鎿嶄綔杩囦簬棰戠箒锛�", required = true) String message; - private ComponentInfoCode(boolean success, int code, String message){ + ComponentInfoCode(boolean success, int code, String message){ this.success = success; this.code = code; this.message = message; 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 724e004..0e00884 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 @@ -1,6 +1,8 @@ package org.jeecg.modules.dnc.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.common.api.vo.Result; import org.jeecg.modules.dnc.dto.ComponentExt; import org.jeecg.modules.dnc.entity.ComponentInfo; import org.jeecg.modules.dnc.entity.DocInfo; @@ -151,6 +153,22 @@ * @return */ List<DocInfo> getByComponentInfo(TreeInfoRequest treeInfoRequest); + + /** + * 鏌ヨ鍙互琚紩鐢ㄧ殑閮ㄤ欢 + * @param componentInfo + * @param pageNo + * @param pageSize + * @return + */ + IPage<ComponentInfo> getByComponentId(ComponentInfo componentInfo, Integer pageNo, Integer pageSize); + + /** + * 鍊熺敤閮ㄤ欢(鍙壒閲�) - 鍘熸湁閮ㄤ欢id锛屾柊閮ㄤ欢ids + * @param oldId,newIds + * @return + */ + Result<?> borrowComponent(String oldId, String newIds); } 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 0fafcab..6696d49 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 @@ -39,7 +39,7 @@ * @param id * @return */ - boolean deleteDocInfo(String id); + boolean deleteDocInfo(String id,String attrType,String attrId); /** * 鐩戞帶鏂囦欢瀵煎叆 * @param pathFile @@ -234,7 +234,7 @@ * @param docIds * @return */ - boolean batchRemoveDocInfo(String[] docIds); + boolean batchRemoveDocInfo(String[] docIds,String attrType,String attrId); /** * 鏂囨。涓嬭浇 diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPermissionStreamNewService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPermissionStreamNewService.java index 71b1f1f..4d6e3f9 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPermissionStreamNewService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPermissionStreamNewService.java @@ -15,6 +15,17 @@ */ List<ProductMix> loadProductMix(String userId,List<String> productIdList); + /** + * 鏍规嵁鐢ㄦ埛id銆侀儴闂ㄥ垪琛ㄣ�乮d銆佷笟鍔$被鍨嬭幏鍙栧搴旂粨鏋勬爲鏉冮檺 + * @param userId + * @param productIdList + * @param businessId + * @param businessType + * @return + */ + List<ProductMix> loadProductMixByBusinessIdAndBusinessType(String userId,List<String> productIdList, + String businessId,String businessType); + /** * 绠$悊鍛樿幏鍙栨墍鏈夋潈闄� 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 9b22567..986a593 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 @@ -4,9 +4,12 @@ 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.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.dnc.dto.ComponentExt; import org.jeecg.modules.dnc.entity.*; @@ -57,6 +60,8 @@ @Autowired @Lazy private IDocInfoService docInfoService; + @Autowired + private IDocRelativeService docRelativeService; @Override @Transactional(rollbackFor = {Exception.class}) public boolean addComponentInfo(ComponentInfo componentInfo) { @@ -69,7 +74,7 @@ if(!ValidateUtil.validateString(componentInfo.getComponentCode())) ExceptionCast.cast(ComponentInfoCode.COMPONENT_CODE_NONE); ComponentInfo en = getByCode(componentInfo.getComponentCode()); - if(en != null) + if(en != null&&componentInfo.getBorrowId()==null) ExceptionCast.cast(ComponentInfoCode.COMPONENT_IS_EXIST); LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); @@ -137,6 +142,20 @@ ,componentInfo.getComponentName(),componentInfo.getComponentCode(),2,new Date()); } productMixService.save(productMix); + if (StrUtil.isNotEmpty(componentInfo.getBorrowId())){ + //鍊熺敤閮ㄤ欢,鍚屾娣诲姞鏂囦欢 + List<DocRelative> docRelativeList=docRelativeService. + list(new QueryWrapper<DocRelative>().eq("attribution_type","2").eq("attribution_id",componentInfo.getBorrowId())); + if (!docRelativeList.isEmpty()){ + docRelativeList.forEach(item -> { + DocRelative docRelative = new DocRelative(); + BeanUtil.copyProperties(item,docRelative); + docRelative.setId(null); + docRelative.setAttributionId(componentInfo.getComponentId()); + docRelativeService.save(docRelative); + }); + } + } //娣诲姞鏉冮檺 PermissionStreamNew stream = new PermissionStreamNew(); stream.setUserId(userId); @@ -189,7 +208,11 @@ stream.setBusinessType("2"); return permissionStreamNewService.save(stream); } - return b; + List<ComponentInfo> list = super.lambdaQuery().eq(ComponentInfo::getBorrowId,id).list(); + if (list != null && !list.isEmpty()) { + list.forEach(item -> editComponentInfo(item.getComponentId(),componentInfo)); + } + return true; } @Override @@ -267,14 +290,20 @@ if(childrenList != null && !childrenList.isEmpty()) { ExceptionCast.cast(ComponentInfoCode.COMPONENT_CHILD_EXIST); } - //楠岃瘉浜у搧涓嬫槸鍚︽湁闆朵欢 + //楠岃瘉閮ㄤ欢涓嬫槸鍚︽湁闆朵欢 List<PartsInfo> partsInfoList = partsInfoService.getByComponentId(componentInfo.getProductId(), componentInfo.getComponentId()); if(partsInfoList != null && !partsInfoList.isEmpty()) { ExceptionCast.cast(ComponentInfoCode.COMPONENT_PARTS_EXIST); } + //楠岃瘉閮ㄤ欢涓嬫槸鍚︽湁宸ュ簭淇℃伅 List<ProcessStream> processStreamList = processStreamService.findByComponentId(id); if(processStreamList != null && !processStreamList.isEmpty()) { ExceptionCast.cast(ComponentInfoCode.COMPONENT_PROCESS_EXIST); + } + //楠岃瘉閮ㄤ欢鏄惁琚�熺敤 + List<ComponentInfo> list = super.lambdaQuery().eq(ComponentInfo::getBorrowId,id).list(); + if (list != null && !list.isEmpty()) { + ExceptionCast.cast(ComponentInfoCode.COMPONENT_BORROW_EXIST); } boolean b; //楠岃瘉鏄惁瀛樺湪鏂囨。 @@ -566,4 +595,91 @@ } return docInfos; } + + /** + * 鏌ヨ鍙互琚紩鐢ㄧ殑閮ㄤ欢 + * @param componentInfo + * @param pageNo + * @param pageSize + * @return + */ + @Override + public IPage<ComponentInfo> getByComponentId(ComponentInfo componentInfo, Integer pageNo, Integer pageSize){ + //鏉冮檺鎺掗櫎,涓嶈兘寮曠敤鑷繁涓婁笅绾ч儴浠� + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String productIds = loginUser.getProductionIds(); + IPage<ComponentInfo> page = new Page<>(pageNo, pageSize); + if (productIds != null && !productIds.isEmpty()) { + List<String> productIdList = Arrays.asList(productIds.split(",")); + List<ProductMix> productMixList = permissionStreamNewService. + loadProductMixByBusinessIdAndBusinessType(loginUser.getId(),productIdList,componentInfo.getComponentId(),"2"); + List<Long> ids = productMixList.stream().map(ProductMix::getId).collect(Collectors.toList()); + //鑾峰彇宸茬粡琚�熺敤鐨勯儴浠� + LambdaQueryWrapper<ComponentInfo> borrowQueryWrapper = new LambdaQueryWrapper<>(); + borrowQueryWrapper.in(ComponentInfo::getBorrowId,ids); + borrowQueryWrapper.eq(ComponentInfo::getParentId,componentInfo.getComponentId()); + List<String> borrowIds= super.list(borrowQueryWrapper).stream().map(ComponentInfo::getBorrowId).collect(Collectors.toList()); + LambdaQueryWrapper<ComponentInfo> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.like(StrUtil.isNotEmpty(componentInfo.getComponentName()),ComponentInfo::getComponentName, componentInfo.getComponentName()); + queryWrapper.like(StrUtil.isNotEmpty(componentInfo.getComponentCode()),ComponentInfo::getComponentCode, componentInfo.getComponentCode()); + queryWrapper.isNull(ComponentInfo::getBorrowId); + queryWrapper.in(ComponentInfo::getComponentId,ids); + if (!borrowIds.isEmpty()) { + queryWrapper.notIn(ComponentInfo::getComponentId,borrowIds); + } + queryWrapper.orderByDesc(ComponentInfo::getCreateTime); + page = super.page(page, queryWrapper); + } + return page; + } + + /** + * 鍊熺敤閮ㄤ欢(鍙壒閲�) - 鍘熸湁閮ㄤ欢id锛屾柊閮ㄤ欢ids + * @param oldId,newIds + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Result<?> borrowComponent(String oldId, String newIds){ + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + ComponentInfo componentInfo = super.getById(oldId); + if(componentInfo == null) { + return Result.error("閮ㄤ欢涓嶅瓨鍦�"); + } + List<String> productIdList = Arrays.asList(loginUser.getProductionIds().split(",")); + //鑾峰彇鍙互鍊熺敤鐨勯儴浠� + List<ProductMix> productMixList = permissionStreamNewService. + loadProductMixByBusinessIdAndBusinessType(loginUser.getId(),productIdList,componentInfo.getComponentId(),"2"); + Set<Long> allowedIds = productMixList.stream() + .map(ProductMix::getId) + .collect(Collectors.toCollection(HashSet::new)); + List<String> newIdList = Arrays.asList(newIds.split(",")); + boolean allAllowed = newIdList.parallelStream() + .map(Long::parseLong) + .allMatch(allowedIds::contains); + if (!allAllowed) { + return Result.error("瀛樺湪鏈巿鏉冪殑閮ㄤ欢鍊熺敤"); + } + //鑾峰彇宸茬粡琚�熺敤鐨勯儴浠� + LambdaQueryWrapper<ComponentInfo> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(ComponentInfo::getBorrowId,newIdList); + queryWrapper.eq(ComponentInfo::getParentId,componentInfo.getComponentId()); + List<ComponentInfo> list = super.list(queryWrapper); + //鍒ゆ柇鏄惁宸茬粡琚綋鍓嶉儴浠跺�熺敤 + if(!list.isEmpty()) { + return Result.error("閫夋嫨鐨勯儴浠跺凡琚綋鍓嶉儴浠跺�熺敤"); + } + List<ComponentInfo> componentInfoList=listByIds(newIdList); + componentInfoList.forEach(item->{ + //娣诲姞閮ㄤ欢淇℃伅銆佸眰绾т俊鎭�佹潈闄愪俊鎭� + ComponentInfo newComponentInfo=new ComponentInfo(); + BeanUtil.copyProperties(item,newComponentInfo); + newComponentInfo.setComponentId(null); + newComponentInfo.setProductId(componentInfo.getProductId()); + newComponentInfo.setParentId(componentInfo.getComponentId()); + newComponentInfo.setBorrowId(item.getComponentId()); + addComponentInfo(newComponentInfo); + }); + return Result.ok("閮ㄤ欢鍊熺敤鎴愬姛"); + } } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceTypeServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceTypeServiceImpl.java index fa5d47b..d6ddbe8 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceTypeServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceTypeServiceImpl.java @@ -135,6 +135,7 @@ /** * 鏍规嵁涓氬姟id鏌ヨ璁惧绫诲垪琛� * @param businessId + * * @param type * @return */ diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java index fdf2f26..3b4b965 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java @@ -1,5 +1,6 @@ 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.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -63,6 +64,9 @@ private IDispatchFileService dispatchFileService; @Autowired private ISysParamsService sysParamsService; + @Autowired + @Lazy + private IComponentInfoService componentInfoService; /*澶囦唤澶勭悊*/ @Override @@ -99,6 +103,19 @@ docRelative.setAttributionType(uploadRequest.getAttributionType()); docRelative.setClassificationId(docClass.getClassificationId()); boolean b = docRelativeService.save(docRelative); + if (uploadRequest.getAttributionType()==2){ + //鏌ヨ鍊熺敤鐨勯儴浠� + List<ComponentInfo> borrowComponentInfoList=componentInfoService.list(new QueryWrapper<ComponentInfo>().eq("borrow_id", uploadRequest.getAttributionId())); + if (!borrowComponentInfoList.isEmpty()) { + borrowComponentInfoList.forEach(item->{ + DocRelative borrowDocRelative = new DocRelative(); + BeanUtil.copyProperties(docRelative,borrowDocRelative); + borrowDocRelative.setAttributionId(item.getComponentId()); + borrowDocRelative.setId(null); + docRelativeService.save(borrowDocRelative); + }); + } + } if(!b) ExceptionCast.cast(DocumentCode.DOC_UPLOAD_ERROR); DocFile docFile = new DocFile(); @@ -318,7 +335,7 @@ @Override @Transactional(rollbackFor = {Exception.class}) - public boolean deleteDocInfo(String id) { + public boolean deleteDocInfo(String id,String attrType,String attrId) { if(!ValidateUtil.validateString(id)) ExceptionCast.cast(CommonCode.INVALID_PARAM); DocInfo en = super.getById(id); @@ -326,6 +343,20 @@ ExceptionCast.cast(DocumentCode.DOC_NOT_EXIST); if(en.getDocStatus() != 1) ExceptionCast.cast(DocumentCode.DOC_DEL_ERROR); + //鏌ヨ瀵瑰簲鐨勫叧绯� + if ("2".equals(attrType)) { + //鍒ゆ柇閮ㄤ欢寮曠敤 + ComponentInfo componentInfo=componentInfoService.getById(attrId); + if(componentInfo!=null&&componentInfo.getBorrowId()!=null){ + //鍊熺敤鐨勯儴浠讹紝鍙垹闄よ嚜宸辩殑鍏崇郴 + DocRelative docRelative=docRelativeService.getOne(new QueryWrapper<DocRelative>() + .eq("attribution_id", attrId).eq("attribution_type", 2).eq("doc_id",id)); + if(docRelative!=null){ + docRelativeService.removeById(docRelative.getId()); + return true; + } + } + } FileOperate operate = fileOperateService.getByDocId(id); if(operate != null) ExceptionCast.cast(DocumentCode.DOC_IS_OPERATING); @@ -896,11 +927,11 @@ @Override @Transactional(rollbackFor = {Exception.class}) - public boolean batchRemoveDocInfo(String[] docIds) { + public boolean batchRemoveDocInfo(String[] docIds,String attrType,String attrId) { if(docIds == null || docIds.length < 1) ExceptionCast.cast(CommonCode.INVALID_PARAM); for(String docId : docIds) { - this.deleteDocInfo(docId); + this.deleteDocInfo(docId,attrType,attrId); } return true; } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamNewServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamNewServiceImpl.java index 074a073..672b6ab 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamNewServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamNewServiceImpl.java @@ -35,6 +35,20 @@ } /** + * 鏍规嵁鐢ㄦ埛id銆侀儴闂ㄥ垪琛ㄣ�乮d銆佷笟鍔$被鍨嬭幏鍙栧搴旂粨鏋勬爲鏉冮檺 + * @param userId + * @param productIdList + * @param businessId + * @param businessType + * @return + */ + @Override + public List<ProductMix> loadProductMixByBusinessIdAndBusinessType(String userId,List<String> productIdList, + String businessId,String businessType){ + return baseMapper.loadProductMixByBusinessId(userId,productIdList,businessId,businessType); + } + + /** * 绠$悊鍛樿幏鍙栨墍鏈夋潈闄� * @return */ 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 c5243fe..6b715e9 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 @@ -1069,8 +1069,10 @@ .processInstanceId(flowTaskDto.getProcInsId()) .singleResult(); SysUser startUser = iFlowThirdService.getUserByUsername(historicProcessInstance.getStartUserId()); - flowTaskDto.setStartUserId(startUser.getUsername()); - flowTaskDto.setStartUserName(startUser.getRealname()); + if (startUser!=null){ + flowTaskDto.setStartUserId(startUser.getUsername()); + flowTaskDto.setStartUserName(startUser.getRealname()); + } List<String> departNamesByUsername = iFlowThirdService.getDepartNamesByUsername(historicProcessInstance.getStartUserId()); flowTaskDto.setStartDeptName(CollUtil.join(departNamesByUsername,"锛�")); if (flowTaskDto.getTodoUsers() == null){ diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/base/service/impl/WarehouseLocationServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/base/service/impl/WarehouseLocationServiceImpl.java index 256b2bf..6bdcdda 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/base/service/impl/WarehouseLocationServiceImpl.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/base/service/impl/WarehouseLocationServiceImpl.java @@ -1,13 +1,11 @@ package org.jeecg.modules.base.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.base.entity.WarehouseLocation; import org.jeecg.modules.base.mapper.WarehouseLocationMapper; -import org.jeecg.modules.base.mapper.WarehouseMapper; import org.jeecg.modules.base.service.IWarehouseLocationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: mom_base_warehouse_location -- Gitblit v1.9.3