From 760147292fcc7fe745332ba068874d1758bd7248 Mon Sep 17 00:00:00 2001 From: wangting <675591594@qq.com> Date: 星期三, 05 七月 2023 17:48:26 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/BtmTypeConstant.java | 10 + Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/BaseQueryObject.java | 7 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java | 3 Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java | 16 - Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java | 5 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LifeCycleNodeMapper.java | 12 + Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LifeCycleRuleWrapper.java | 5 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java | 7 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LifeCycleEdgeMapper.java | 12 + Source/UBCS-WEB/src/mixins/codeApply.js | 7 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LifeCycleLineEventMapper.java | 13 + Source/UBCS-WEB/src/components/BatchImport/index.vue | 8 Source/UBCS-WEB/src/views/modeling/originalAdd.vue | 18 +- Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java | 286 ++++++++++++++++++++++++++++++++++- Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java | 14 + Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java | 33 ++++ 16 files changed, 420 insertions(+), 36 deletions(-) diff --git a/Source/UBCS-WEB/src/components/BatchImport/index.vue b/Source/UBCS-WEB/src/components/BatchImport/index.vue index b794d20..b54d048 100644 --- a/Source/UBCS-WEB/src/components/BatchImport/index.vue +++ b/Source/UBCS-WEB/src/components/BatchImport/index.vue @@ -148,9 +148,15 @@ classifyAttr: this.classifyAttr, }; } else if (this.type === "batchImportApply") { + const secDTOList = this.localSecVOList.map(item => { + return { + secOid: item.oid, + secValue: this.codeApplyForm[item.id] + } + }) return { codeClassifyOid: this.codeClassifyOid, - secDTOList: this.secDTOList, + secDTOList: JSON.stringify(secDTOList), ...this.codeApplyForm, }; } else if (this.type === "batchApplyCode") { diff --git a/Source/UBCS-WEB/src/mixins/codeApply.js b/Source/UBCS-WEB/src/mixins/codeApply.js index 3f0c1be..4b84617 100644 --- a/Source/UBCS-WEB/src/mixins/codeApply.js +++ b/Source/UBCS-WEB/src/mixins/codeApply.js @@ -3,6 +3,7 @@ data() { return { secVOList: [], + localSecVOList: [], showCodeApply: false, selfColumnType: { codefixedsec: "combox", @@ -57,13 +58,13 @@ "coderefersec", ]; this.secVOList = res.data.data.secVOList || [] - let localSecVOList = (res.data.data.secVOList || []).filter((item) => + this.localSecVOList = (res.data.data.secVOList || []).filter((item) => typeList.includes(item.secType) ); - if (localSecVOList.length > 0) { + if (this.localSecVOList.length > 0) { this.showCodeApply = true this.$nextTick(() => { - this.$refs.CodeApply.templateRender(localSecVOList); + this.$refs.CodeApply.templateRender(this.localSecVOList); }); } diff --git a/Source/UBCS-WEB/src/views/modeling/originalAdd.vue b/Source/UBCS-WEB/src/views/modeling/originalAdd.vue index f73ccfa..35dccbd 100644 --- a/Source/UBCS-WEB/src/views/modeling/originalAdd.vue +++ b/Source/UBCS-WEB/src/views/modeling/originalAdd.vue @@ -297,17 +297,17 @@ submitAttribute() { const that = this; if (that.referInitFlag && that.referEditFlag){ - this.$delete(this.attribute,'dictCode'); - this.$delete(this.attribute,'dictKey'); - this.$delete(this.attribute,'dictValue'); - this.$delete(this.attribute,'usingDict'); + this.$set(this.attribute,'dictCode',''); + this.$set(this.attribute,'dictKey',''); + this.$set(this.attribute,'dictValue',''); + this.$set(this.attribute,'usingDict',''); } if (that.enumInitFlag && that.enumEditFlag){ - this.$delete(this.attribute,'referTypeCode'); - this.$delete(this.attribute,'referTypeKey'); - this.$delete(this.attribute,'referTypeValue'); - this.$delete(this.attribute,'referToId'); - this.$delete(this.attribute,'referToName'); + this.$set(this.attribute,'referTypeCode',''); + this.$set(this.attribute,'referTypeKey',''); + this.$set(this.attribute,'referTypeValue',''); + this.$set(this.attribute,'referToId',''); + this.$set(this.attribute,'referToName',''); } this.$refs.form.validate(function (pass, field) { if (pass) { diff --git a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java index e9ec1fd..b01bb9d 100644 --- a/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java +++ b/Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java @@ -62,6 +62,8 @@ private final ProcessStageAttrService processStageAttrService; private static String MODELKEY = "modelKey";//鍓嶇浼犺繃鏉ョ殑妯″瀷key + private static String TASKID = "taskId";//鍓嶇浼犺繃鏉ョ殑妯″瀷key + private static String PROCESSINSTANCEID = "processInstanceId";//鍓嶇浼犺繃鏉ョ殑妯″瀷key @Override public R<BladeFlow> startProcess(FlowTaskDTO flowTaskUserC){ Map<String, Object> kvv = flowTaskUserC.getVariables(); @@ -228,16 +230,10 @@ flowTaskDTO.setVariables(variables); } - String templateId = variables.get("templateId").toString(); - //娴佺▼闃舵 - Map<String, Object> m = new HashMap<>(); - m.put("template_id", templateId); - m.put("task_id", crruentActivityId); - m.put("model_key", modelKey); - QueryWrapper q = Condition.getQueryWrapper(m, ProcessStageAttr.class) - .select("attr_id attrId,attr_name attrName,attr_group attrGroup"); - List<ProcessStageAttr> stageAttrs = processStageAttrService.list(q); - flowTaskDTO.setStageAttrs(stageAttrs); + + //鏀惧叆娴佺▼闃舵銆佹祦绋媘odelkey + variables.put(TASKID,crruentActivityId); + variables.put(PROCESSINSTANCEID,processInstanceId); return flowTaskDTO; } } diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/BtmTypeConstant.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/BtmTypeConstant.java index 59145dd..659a53a 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/BtmTypeConstant.java +++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/constant/BtmTypeConstant.java @@ -54,6 +54,16 @@ public static final String LIFE_CYCLE_EVENT = "lifeCycleEvent"; /** + * 鐢熷懡鍛ㄦ湡鐨勮妭鐐� + */ + public static final String LIFE_CYCLE_NODE = "lifeCycleNode"; + + /** + * 鐢熷懡鍛ㄦ湡鐨勮繛鎺ョ嚎淇℃伅 + */ + public static final String LIFE_CYCLE_EDGE = "lifeCycleEdge"; + + /** * 鐢熷懡鍛ㄦ湡杩炴帴绾跨殑涓氬姟绫诲瀷鍚嶇О */ public static final String LIFE_CYCLE_LINE = "lifeCycleLine"; diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/BaseQueryObject.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/BaseQueryObject.java index 780a0c2..b833bf9 100644 --- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/BaseQueryObject.java +++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/pagemodel/BaseQueryObject.java @@ -8,6 +8,7 @@ import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import org.springblade.core.mp.support.Query; import java.io.Serializable; import java.util.HashMap; @@ -103,10 +104,15 @@ this.limit = limit; } + /** + * 浠庝互鍓嶇殑椤圭洰鎷疯礉杩囨潵鐨勫垎椤� + * @return + */ @JSONField( serialize = false, deserialize = false ) + @Deprecated public PageHelper getPageHelper() { PageHelper pageHelper = new PageHelper(this.limit); pageHelper.setPage(this.getPage()); @@ -115,6 +121,7 @@ return pageHelper; } + public BaseQueryObject addSort(String sort, String order) { this.setSort(StringUtils.isBlank(this.getSort()) ? sort : this.getSort() + "," + sort); this.setOrder(StringUtils.isBlank(this.getOrder()) ? order : this.getOrder() + "," + order); diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java index c3a9567..2360c4b 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java @@ -9,6 +9,7 @@ import com.vci.ubcs.omd.vo.LifeCycleVO; import com.vci.ubcs.omd.wrapper.LifeCycleRuleWrapper; import com.vci.ubcs.starter.web.pagemodel.BaseQueryObject; +import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; @@ -43,12 +44,12 @@ @GetMapping("page") @ApiOperationSupport(order = 2) @ApiOperation(value = "鍒嗛〉鏌ヨ鐢熷懡鍛ㄦ湡",notes = "鍒嗛〉鏌ヨ鐢熷懡鍛ㄦ湡") - public R<IPage<LifeCycleVO>> page(BaseQueryObject baseQueryObject){ - Map<String, String> conditionMap = baseQueryObject.getConditionMap(); + public R<IPage<LifeCycleVO>> page(BladeQueryObject baseQueryObject){ + Map<String, Object> conditionMap = baseQueryObject.getConditionMap(); if (conditionMap == null){ conditionMap = new HashMap<>(); } - return R.data(lifeCycleService.listLife(conditionMap,baseQueryObject.getPageHelper())); + return R.data(lifeCycleService.listLife(conditionMap,baseQueryObject.getQuery())); } diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java index b94fd52..f75ae74 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmTypeClient.java @@ -171,6 +171,7 @@ * @return 榛樿瀛楁灞炴�� */ @Override + @GetMapping(GET_DEFAULT_ATTR_BY_BTM_ID) public R<BtmTypeVO> getDefaultAttrByBtmId(String btmTypeId) { return R.data(Optional.ofNullable(btmTypeService.getDefaultAttrByBtmId(btmTypeId)).orElseGet(BtmTypeVO::new)); } @@ -182,6 +183,7 @@ * @return 鎵�鏈夊瓧娈� */ @Override + @GetMapping(GET_ALL_ATTR_BY_BTM_ID) public R<BtmTypeVO> getAllAttributeByBtmId(String btmTypeId) { return R.data(Optional.ofNullable(btmTypeService.getAllAttributeByBtmId(btmTypeId)).orElseGet(BtmTypeVO::new)); } @@ -193,6 +195,7 @@ * @return 鎵�鏈夊瓧娈� */ @Override + @GetMapping(GET_ALL_ATTR_BY_BTM_OID) public R<BtmTypeVO> getAllAttributeByBtmOid(String btmTypeOid) { return R.data(Optional.ofNullable(btmTypeService.getAllAttributeByBtmOid(btmTypeOid)).orElseGet(BtmTypeVO::new)); } diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LifeCycleEdgeMapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LifeCycleEdgeMapper.java new file mode 100644 index 0000000..139bed1 --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LifeCycleEdgeMapper.java @@ -0,0 +1,12 @@ +package com.vci.ubcs.omd.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.vci.ubcs.omd.entity.LifeCycleEdge; + +/** + * 鐢熷懡鍛ㄦ湡鐨勮繛鎺ョ嚎 + * @author weidy + * @date 2023/7/4 + */ +public interface LifeCycleEdgeMapper extends BaseMapper<LifeCycleEdge> { +} diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LifeCycleLineEventMapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LifeCycleLineEventMapper.java new file mode 100644 index 0000000..1128048 --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LifeCycleLineEventMapper.java @@ -0,0 +1,13 @@ +package com.vci.ubcs.omd.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.vci.ubcs.omd.dto.LifeCycleLineEventDTO; +import com.vci.ubcs.omd.entity.LifeCycleLineEvent; + +/** + * 鐢熷懡鍛ㄦ湡杩炴帴绾跨殑浜嬩欢 + * @author weidy + * @date 2023/7/4 + */ +public interface LifeCycleLineEventMapper extends BaseMapper<LifeCycleLineEvent> { +} diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LifeCycleNodeMapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LifeCycleNodeMapper.java new file mode 100644 index 0000000..882bf55 --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/mapper/LifeCycleNodeMapper.java @@ -0,0 +1,12 @@ +package com.vci.ubcs.omd.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.vci.ubcs.omd.entity.LifeCycleNode; + +/** + * 鐢熷懡鍛ㄦ湡鐨勮妭鐐瑰瓨鍌� + * @author weidy + * @date 2023/7/4 + */ +public interface LifeCycleNodeMapper extends BaseMapper<LifeCycleNode> { +} diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java index 0049267..b8a6aff 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java @@ -250,4 +250,18 @@ * @return 涓氬姟绫诲瀷 */ BtmTypeVO getAllAttributeByBtmOid(String btmTypeOid); + + /** + * 鑾峰彇寮曠敤鏌愪釜鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨� + * @param lifeOid 鐢熷懡鍛ㄦ湡鐨勪富閿� + * @return 涓氬姟绫诲瀷鏄剧ず瀵硅薄 + */ + List<BtmTypeVO> selectByLifeId(String lifeId); + + /** + * 缁熻寮曠敤鏌愪釜鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨� + * @param lifeOid 鐢熷懡鍛ㄦ湡鐨勪富閿� + * @return 涓暟 + */ + Integer countByLifeId(String lifeId); } diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java index fd21582..525cfcd 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java @@ -7,6 +7,7 @@ import com.vci.ubcs.omd.vo.BtmTypeVO; import com.vci.ubcs.omd.vo.LifeCycleVO; import com.vci.ubcs.starter.web.pagemodel.PageHelper; +import org.springblade.core.mp.support.Query; import java.util.List; import java.util.Map; @@ -21,10 +22,10 @@ /** * 鑾峰彇鐢熷懡鍛ㄦ湡鍒楄〃 * @param conditionMap 鏌ヨ鏉′欢 - * @param pageHelper 鍒嗛〉 + * @param query 鍒嗛〉 * @return 鐢熷懡鍛ㄦ湡鐨勬樉绀哄璞� */ - IPage<LifeCycleVO> listLife(Map<String, String> conditionMap, PageHelper pageHelper); + IPage<LifeCycleVO> listLife(Map<String, Object> conditionMap, Query query); /** * 娣诲姞淇濆瓨 diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java index f947641..af7f220 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.api.exception.NacosException; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.omd.constant.BtmTypeConstant; @@ -868,4 +869,36 @@ btmType.setAttributes(btmTypeAttributeService.getAllAttribute(btmType)); return btmType; } + + /** + * 鑾峰彇寮曠敤鏌愪釜鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨� + * + * @param lifeId 鐢熷懡鍛ㄦ湡鐨勭紪鍙� + * @return 涓氬姟绫诲瀷鏄剧ず瀵硅薄 + */ + @Override + public List<BtmTypeVO> selectByLifeId(String lifeId) { + if(StringUtils.isBlank(lifeId)){ + return new ArrayList<>(); + } + LambdaQueryWrapper<BtmType> query = new LambdaQueryWrapper<BtmType>(); + query.eq(BtmType::getLifeCycleId,lifeId); + return BtmTypeWrapper.build().listEntityVO(getBaseMapper().selectList(query)); + } + + /** + * 缁熻寮曠敤鏌愪釜鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨� + * + * @param lifeId 鐢熷懡鍛ㄦ湡鐨勭紪鍙� + * @return 涓暟 + */ + @Override + public Integer countByLifeId(String lifeId) { + if(StringUtils.isBlank(lifeId)){ + return 0; + } + LambdaQueryWrapper<BtmType> query = new LambdaQueryWrapper<BtmType>(); + query.eq(BtmType::getLifeCycleId,lifeId); + return baseMapper.selectCount(query).intValue(); + } } diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java index 29ad035..62db19e 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java @@ -1,18 +1,49 @@ package com.vci.ubcs.omd.service.impl; +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.extension.service.impl.ServiceImpl; +import com.vci.ubcs.omd.constant.BtmTypeConstant; import com.vci.ubcs.omd.dto.LifeCycleDTO; +import com.vci.ubcs.omd.dto.LifeCycleEdgeDTO; +import com.vci.ubcs.omd.dto.LifeCycleLineEventDTO; +import com.vci.ubcs.omd.dto.LifeCycleNodeDTO; +import com.vci.ubcs.omd.entity.LifeCycleEdge; +import com.vci.ubcs.omd.entity.LifeCycleLineEvent; +import com.vci.ubcs.omd.entity.LifeCycleNode; import com.vci.ubcs.omd.entity.LifeCycleRule; +import com.vci.ubcs.omd.mapper.LifeCycleEdgeMapper; +import com.vci.ubcs.omd.mapper.LifeCycleLineEventMapper; import com.vci.ubcs.omd.mapper.LifeCycleMapper; +import com.vci.ubcs.omd.mapper.LifeCycleNodeMapper; +import com.vci.ubcs.omd.repeater.DomainRepeater; +import com.vci.ubcs.omd.service.IBtmTypeService; import com.vci.ubcs.omd.service.ILifeCycleService; +import com.vci.ubcs.omd.service.IStatusService; import com.vci.ubcs.omd.vo.BtmTypeVO; import com.vci.ubcs.omd.vo.LifeCycleVO; -import com.vci.ubcs.starter.web.pagemodel.PageHelper; +import com.vci.ubcs.omd.vo.StatusVO; +import com.vci.ubcs.omd.wrapper.LifeCycleRuleWrapper; +import com.vci.ubcs.starter.enumpack.NewAppConstantEnum; +import com.vci.ubcs.starter.exception.VciBaseException; +import com.vci.ubcs.starter.web.constant.RegExpConstant; +import com.vci.ubcs.starter.web.util.BeanUtil; +import com.vci.ubcs.starter.web.util.VciBaseUtil; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +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 org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; -import java.util.List; -import java.util.Map; +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + /** * 鐢熷懡鍛ㄦ湡鐨勬湇鍔� @@ -22,17 +53,49 @@ @Service public class LifeCycleServiceImpl extends ServiceImpl<LifeCycleMapper, LifeCycleRule> implements ILifeCycleService{ + /** + * 鑺傜偣鐨勬暟鎹眰 + */ + @Resource + private LifeCycleNodeMapper nodeMapper; + + /** + * 杩炴帴绾挎暟鎹眰 + */ + @Resource + private LifeCycleEdgeMapper edgeMapper; + + /** + * 鐘舵�� + */ + @Autowired(required = false) + @Lazy + private IStatusService statusService; + + /** + * 杩炴帴绾跨殑浜嬩欢 + */ + @Resource + private LifeCycleLineEventMapper lineEventMapper; + + /** + * 涓氬姟绫诲瀷鐨勬湇鍔� + */ + @Autowired(required = false) + @Lazy + private IBtmTypeService btmTypeService; + /** * 鑾峰彇鐢熷懡鍛ㄦ湡鍒楄〃 * * @param conditionMap 鏌ヨ鏉′欢 - * @param pageHelper 鍒嗛〉 + * @param query 鍒嗛〉 * @return 鐢熷懡鍛ㄦ湡鐨勬樉绀哄璞� */ @Override - public IPage<LifeCycleVO> listLife(Map<String, String> conditionMap, PageHelper pageHelper) { - return null; + public IPage<LifeCycleVO> listLife(Map<String, Object> conditionMap, Query query) { + return LifeCycleRuleWrapper.build().pageVO(baseMapper.selectPage(Condition.getPage(query),Condition.getQueryWrapper(conditionMap,LifeCycleRule.class).lambda().orderByAsc(LifeCycleRule::getId))); } /** @@ -42,9 +105,160 @@ * @return 娣诲姞鍚庣殑鏄剧ず瀵硅薄 */ @Override + @Transactional public LifeCycleVO addSave(LifeCycleDTO lifeCycleDTO) { - return null; + VciBaseUtil.alertNotNull(lifeCycleDTO,"鐢熷懡鍛ㄦ湡淇℃伅",lifeCycleDTO.getId(),"鐢熷懡鍛ㄦ湡鐨勭紪鍙�",lifeCycleDTO.getName(),"鐢熷懡鍛ㄦ湡鍚嶇О",lifeCycleDTO.getNodes(),"鐢熷懡鍛ㄦ湡鐨勮妭鐐�",lifeCycleDTO.getStartStatus(),"璧峰鐘舵��"); + //鍏堟煡璇㈡槸鍚﹀瓨鍦� + QueryWrapper wrapper = new QueryWrapper(LifeCycleRule.class); + wrapper.eq("lower(id)",lifeCycleDTO.getId().toLowerCase(Locale.ROOT)); + if(baseMapper.selectCount(wrapper)>0){ + throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勭紪鍙蜂笉鑳介噸澶�"); + } + String lifeOid = addLifeCycle(lifeCycleDTO); + return LifeCycleRuleWrapper.build().entityVO(baseMapper.selectById(lifeOid)); } + + /** + * 娣诲姞鐢熷懡鍛ㄦ湡 + * @param lifeCycleDTO + * @return 涓婚敭 + */ + private String addLifeCycle(LifeCycleDTO lifeCycleDTO){ + //缂栧彿涓嶈兘鏈夌壒娈婄殑鍐呭 + if(!lifeCycleDTO.getId().matches(RegExpConstant.LETTER)){ + throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勭紪鍙峰彧鑳芥槸瀛楁瘝"); + } + LifeCycleRule life = LifeCycleRuleWrapper.build().copyDTO2DO(lifeCycleDTO); + life.setOid(VciBaseUtil.getPk()); + String creator = AuthUtil.getUserAccount(); + Date now = new Date(); + life.setBtmname(BtmTypeConstant.LIFE_CYCLE); + life.setOwner(creator); + life.setCreator(creator); + life.setCreateTime(now); + life.setLastModifier(creator); + life.setLastModifyTime(now); + life.setTs(now); + + List<String> statusList = new ArrayList<>(); + //澶勭悊鑺傜偣 + if(!CollectionUtils.isEmpty(lifeCycleDTO.getNodes())){ + lifeCycleDTO.getNodes().stream().forEach(nodeDTO->{ + addLifeCycleNode(nodeDTO,life.getOid(),creator,now); + statusList.add(nodeDTO.getId()); + }); + } + if(!statusList.contains(life.getStartStatus())){ + throw new VciBaseException("璧峰鐘舵�佷笉鍦ㄧ敓鍛藉懆鏈熺殑鐢诲竷涓�"); + } + //鍒ゆ柇鎵�鏈夌殑鑺傜偣鍦ㄧ郴缁熼噷閮藉瓨鍦� + List<String> existStatusIdList = statusService.listStatusByIdCollection(statusList).stream().map(StatusVO::getId).collect(Collectors.toList()); + String unExistStatus = statusList.stream().filter(s -> !existStatusIdList.contains(s)).collect(Collectors.joining(",")); + if(StringUtils.hasLength(unExistStatus)){ + throw new VciBaseException(unExistStatus + "杩欎簺鐘舵�佸湪鐘舵�佹睜閲屼笉瀛樺湪锛屼笉鑳芥坊鍔犲埌鐢熷懡鍛ㄦ湡涓�"); + } + //澶勭悊杈圭晫鍜岃繛鎺ョ嚎 + if(!CollectionUtils.isEmpty(lifeCycleDTO.getEdges())){ + lifeCycleDTO.getEdges().stream().forEach(edgeDTO->{ + String edgeOid = addLifeCycleEdge(edgeDTO,statusList,life.getOid(),creator,now); + if(!CollectionUtils.isEmpty(edgeDTO.getEvents())){ + //鏈変簨浠� + edgeDTO.getEvents().stream().forEach(eventDTO->{ + addLifeCycleLineEvent(eventDTO,edgeOid,creator,now); + }); + } + }); + } + baseMapper.insert(life); + return life.getOid(); + } + + /** + * 娣诲姞鐢熷懡鍛ㄦ湡鐨勮繛鎺ョ嚎涓婄殑浜嬩欢 + * @param eventDTO + * @param edgeOid + * @param creator + * @param now + */ + private void addLifeCycleLineEvent(LifeCycleLineEventDTO eventDTO,String edgeOid,String creator,Date now){ + VciBaseUtil.alertNotNull(eventDTO.getBizDomain(),"鎵�灞為鍩�",eventDTO.getEventFullName(),"浜嬩欢鐨勫叏璺緞"); + NewAppConstantEnum[] values = NewAppConstantEnum.values(); + Boolean fined = false; + for (int i = 0; i < values.length; i++) { + NewAppConstantEnum value = values[i]; + if(value.getName().equalsIgnoreCase(eventDTO.getBizDomain())){ + fined = true; + break; + } + } + if(!fined){ + throw new VciBaseException(eventDTO.getBizDomain() + "杩欎釜棰嗗煙杩樻病鏈夊紑鏀�,璇疯寮�鍙戜汉鍛樺湪NewAppConstantEnum绫讳腑娣诲姞"); + } + LifeCycleLineEvent event = org.springblade.core.tool.utils.BeanUtil.copy(eventDTO, LifeCycleLineEvent.class); + event.setOid(VciBaseUtil.getPk()); + event.setPkLifeCycleEdge(edgeOid); + event.setBtmname(BtmTypeConstant.LIFE_CYCLE_LINE_EVENT); + event.setOwner(creator); + event.setCreator(creator); + event.setCreateTime(now); + event.setLastModifier(creator); + event.setLastModifyTime(now); + event.setTs(now); + lineEventMapper.insert(event); + } + + /** + * 娣诲姞鐢熷懡鍛ㄦ湡鐨勮妭鐐� + * @param nodeDTO + * @param lifeOid + * @param creator + * @param now + */ + private void addLifeCycleNode(LifeCycleNodeDTO nodeDTO,String lifeOid,String creator,Date now){ + VciBaseUtil.alertNotNull(nodeDTO.getId(),"鐘舵�佹爣璇�",nodeDTO.getName(),"鐘舵�佸悕绉�"); + LifeCycleNode node = org.springblade.core.tool.utils.BeanUtil.copy(nodeDTO, LifeCycleNode.class); + node.setOid(VciBaseUtil.getPk()); + node.setLifeCycleOid(lifeOid); + node.setBtmname(BtmTypeConstant.LIFE_CYCLE_NODE); + node.setOwner(creator); + node.setCreator(creator); + node.setCreateTime(now); + node.setLastModifier(creator); + node.setLastModifyTime(now); + node.setTs(now); + nodeMapper.insert(node); + } + + /** + * 娣诲姞鐢熷懡鍛ㄦ湡鐨勮繛鎺ョ嚎 + * @param edgeDTO + * @param statusList + * @param lifeOid + * @param creator + * @param now + * @return 杩炴帴绾跨殑涓婚敭 + */ + private String addLifeCycleEdge(LifeCycleEdgeDTO edgeDTO,List<String> statusList,String lifeOid,String creator,Date now){ + VciBaseUtil.alertNotNull(edgeDTO.getSource(),"鏉ユ簮鐘舵��",edgeDTO.getTarget(),"鐩爣鐘舵��",edgeDTO.getName(),"杩炴帴绾垮悕绉�"); + if(!statusList.contains(edgeDTO.getSource()) + ||!statusList.contains(edgeDTO.getTarget())){ + throw new VciBaseException("鏁版嵁閿欒锛孾" + edgeDTO.getName() + "]杩炴帴绾夸笂涓娇鐢ㄧ殑鐘舵�佹病鏈夋壘鍒�"); + } + LifeCycleEdge edge = org.springblade.core.tool.utils.BeanUtil.copy(edgeDTO, LifeCycleEdge.class); + edge.setOid(VciBaseUtil.getPk()); + edge.setLifeCycleOid(lifeOid); + edge.setBtmname(BtmTypeConstant.LIFE_CYCLE_EDGE); + edge.setOwner(creator); + edge.setCreator(creator); + edge.setCreateTime(now); + edge.setLastModifier(creator); + edge.setLastModifyTime(now); + edge.setTs(now); + edgeMapper.insert(edge); + return edge.getOid(); + } + + /** * 鎵归噺娣诲姞鍐呭 @@ -53,8 +267,40 @@ * @return 娣诲姞鍚庣殑鏄剧ず瀵硅薄 */ @Override + @Transactional public List<LifeCycleVO> batchAddSave(List<LifeCycleDTO> lifeCycleDTOs) { - return null; + VciBaseUtil.alertNotNull(lifeCycleDTOs,"鐢熷懡鍛ㄦ湡鐨勪俊鎭�"); + //鍏堥泦浣撴牎楠屼竴涓� + if(lifeCycleDTOs.stream().anyMatch(s->!StringUtils.hasLength(s.getId()) || !StringUtils.hasLength(s.getName()) + || CollectionUtils.isEmpty(s.getNodes()) || !StringUtils.hasLength(s.getStartStatus()))){ + throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勭紪鍙凤紝鍚嶇О锛岃捣濮嬬姸鎬侊紝鍖呭惈鐨勮妭鐐逛笉鑳戒负绌�"); + } + //缁熶竴鏍¢獙閲嶅 + Map<String, List<LifeCycleDTO>> dtoMap = lifeCycleDTOs.stream().collect(Collectors.groupingBy(LifeCycleDTO::getId)); + dtoMap.forEach((id,dtos)->{ + if(dtos.size()>1){ + throw new VciBaseException("缂栧彿涓恒��" + id + "銆戠殑鐢熷懡鍛ㄦ湡閲嶅"); + } + }); + VciBaseUtil.switchCollectionForOracleIn(dtoMap.keySet()).stream().forEach( + ids->{ + QueryWrapper wrapper = new QueryWrapper(LifeCycleRule.class); + ids.stream().forEach(id->{ + wrapper.eq("lower(id)",id.toLowerCase(Locale.ROOT)); + wrapper.or(); + }); + wrapper.eq("1","2"); + if(baseMapper.selectCount(wrapper)>0){ + throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勭紪鍙蜂笉鑳介噸澶�"); + } + } + ); + //鍏堝惊鐜鐞嗕笅锛屽洜涓虹幇鍦ㄥ綋鍓嶇敤鎴锋病鏈夊鐞嗕负绾跨▼鍏变韩鐨勶紝鍚庨潰淇敼鍚庯紝鍙互鐢ㄥ苟鍙戞祦鍘诲鐞� + List<String> oidList = new ArrayList<>(); + lifeCycleDTOs.stream().forEach(dto->{ + oidList.add(addLifeCycle(dto)); + }); + return LifeCycleRuleWrapper.build().listEntityVO(listByIds(oidList)); } /** @@ -63,10 +309,34 @@ * @param lifeCycleDTO 鏁版嵁浼犺緭瀵硅薄 */ @Override + @Transactional public void delete(LifeCycleDTO lifeCycleDTO) { + VciBaseUtil.alertNotNull(lifeCycleDTO,"鏁版嵁浼犺緭瀵硅薄",lifeCycleDTO.getOid(),"涓婚敭"); + LifeCycleRule rule = null; + try { + rule = getById(lifeCycleDTO.getOid()); + }catch (Throwable e){ + throw new VciBaseException("浣跨敤涓婚敭鑾峰彇瀵硅薄鍑洪敊锛岃繖涓暟鎹彲鑳戒笉瀛樺湪锛屾垨鑰呮暟鎹噸澶嶄簡"); + } + //妫�鏌ヨ寮曠敤涓嶈兘鍒犻櫎 + Integer count = btmTypeService.countByLifeId(lifeCycleDTO.getOid()); + if(count !=null && count>0){ + throw new VciBaseException("鐢熷懡鍛ㄦ湡琚娇鐢紝涓嶈兘琚垹闄�"); + } + //鎴戜滑鏌ヨ鍏ㄩ儴node鍜宔dge锛岀劧鍚庝竴璧峰垹闄� } + + private List<LifeCycleNode> selectNodeByLifeOid(String lifeOid){ + if(!StringUtils.hasLength(lifeOid)){ + return new ArrayList<>(); + } + LambdaQueryWrapper<LifeCycleNode> query = new LambdaQueryWrapper<LifeCycleNode>(); + query.eq(LifeCycleNode::getLifeCycleOid,lifeOid); + return nodeMapper.selectList(query); + } + /** * 鎵归噺鍒犻櫎鐢熷懡鍛ㄦ湡 * diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LifeCycleRuleWrapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LifeCycleRuleWrapper.java index 739efa7..4bf2bf2 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LifeCycleRuleWrapper.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LifeCycleRuleWrapper.java @@ -1,5 +1,6 @@ package com.vci.ubcs.omd.wrapper; +import com.vci.ubcs.omd.dto.LifeCycleDTO; import com.vci.ubcs.omd.entity.LifeCycleRule; import com.vci.ubcs.omd.vo.LifeCycleVO; import org.springblade.core.mp.support.BaseEntityWrapper; @@ -43,4 +44,8 @@ } + public LifeCycleRule copyDTO2DO(LifeCycleDTO lifeCycleDTO) { + LifeCycleRule LifeCycleRule = BeanUtil.copy(lifeCycleDTO, LifeCycleRule.class); + return LifeCycleRule; + } } -- Gitblit v1.9.3