From 84e53f29d2c7eaceace2c7dd29d4f7125f211b76 Mon Sep 17 00:00:00 2001
From: weidy <lastanimals@163.com>
Date: 星期三, 05 七月 2023 20:31:56 +0800
Subject: [PATCH] 生命周期的方法写完了,等着联调
---
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/LifeCycleController.java | 35 ++++-
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LifeCycleServiceImpl.java | 294 ++++++++++++++++++++++++++++++++++++++++-
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IBtmTypeService.java | 19 ++
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/ILifeCycleService.java | 17 ++
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java | 48 ++++++
5 files changed, 391 insertions(+), 22 deletions(-)
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 2360c4b..7410c7a 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
@@ -8,7 +8,6 @@
import com.vci.ubcs.omd.vo.BtmTypeVO;
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;
@@ -65,26 +64,48 @@
}
/**
- * 鏂板鎴栦慨鏀�
+ * 鏂板
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 3)
- @ApiOperation(value = "鏂板鎴栦慨鏀�",notes = "浼犲叆鐢熷懡鍛ㄦ湡椤甸潰瀵硅薄")
- public R<LifeCycleVO> submit(@RequestBody LifeCycleDTO lifeCycleDTO){
+ @ApiOperation(value = "鏂板",notes = "浼犲叆鐢熷懡鍛ㄦ湡椤甸潰瀵硅薄")
+ public R<LifeCycleVO> addSave(@RequestBody LifeCycleDTO lifeCycleDTO){
return R.data(lifeCycleService.addSave(lifeCycleDTO));
}
/**
- * 鏂板鎴栦慨鏀�
+ * 淇敼
+ */
+ @PutMapping("/edit-save")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "淇敼",notes = "浼犲叆鐢熷懡鍛ㄦ湡椤甸潰瀵硅薄")
+ public R<LifeCycleVO> editSave(@RequestBody LifeCycleDTO lifeCycleDTO){
+ return R.data(lifeCycleService.editSave(lifeCycleDTO));
+ }
+
+
+
+ /**
+ * 鏂板
*/
@PostMapping("/batch-submit")
@ApiOperationSupport(order = 3)
- @ApiOperation(value = "鏂板鎴栦慨鏀�",notes = "浼犲叆鐘舵�佹睜椤甸潰瀵硅薄")
- public R<List<LifeCycleVO>> batchSubmit(@RequestBody List<LifeCycleDTO> lifeCycleDTOs){
+ @ApiOperation(value = "鏂板鎴栦慨鏀�",notes = "浼犲叆鐢熷懡鍛ㄦ湡椤甸潰瀵硅薄")
+ public R<List<LifeCycleVO>> batchAddSave(@RequestBody List<LifeCycleDTO> lifeCycleDTOs){
return R.data(lifeCycleService.batchAddSave(lifeCycleDTOs));
}
/**
+ * 淇敼
+ */
+ @PostMapping("/batch-edit-save")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "淇敼",notes = "浼犲叆鐢熷懡鍛ㄦ湡椤甸潰瀵硅薄")
+ public R<List<LifeCycleVO>> batchEditSave(@RequestBody List<LifeCycleDTO> lifeCycleDTOs){
+ return R.data(lifeCycleService.batchEditSave(lifeCycleDTOs));
+ }
+
+ /**
* 鍒犻櫎
*/
@PostMapping("/remove")
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 b8a6aff..bdf2f81 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
@@ -7,6 +7,7 @@
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
+import io.swagger.models.auth.In;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
@@ -253,15 +254,29 @@
/**
* 鑾峰彇寮曠敤鏌愪釜鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨�
- * @param lifeOid 鐢熷懡鍛ㄦ湡鐨勪富閿�
+ * @param lifeId 鐢熷懡鍛ㄦ湡鐨勭紪鍙�
* @return 涓氬姟绫诲瀷鏄剧ず瀵硅薄
*/
List<BtmTypeVO> selectByLifeId(String lifeId);
/**
+ * 鑾峰彇寮曠敤鏌愪簺鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨�
+ * @param lifeIds 鐢熷懡鍛ㄦ湡鐨勭紪鍙烽泦鍚�
+ * @return 涓氬姟绫诲瀷鏄剧ず瀵硅薄
+ */
+ List<BtmTypeVO> selectByLifeIds(Collection<String> lifeIds);
+
+ /**
* 缁熻寮曠敤鏌愪釜鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨�
- * @param lifeOid 鐢熷懡鍛ㄦ湡鐨勪富閿�
+ * @param lifeId 鐢熷懡鍛ㄦ湡鐨勭紪鍙�
* @return 涓暟
*/
Integer countByLifeId(String lifeId);
+
+ /**
+ * 缁熻寮曠敤鏌愪簺鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨�
+ * @param lifeIds 鐢熷懡鍛ㄦ湡鐨勭紪鍙烽泦鍚�
+ * @return 涓暟
+ */
+ Integer countByLifeIds(Collection<String> lifeIds);
}
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 525cfcd..982c852 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
@@ -9,6 +9,7 @@
import com.vci.ubcs.starter.web.pagemodel.PageHelper;
import org.springblade.core.mp.support.Query;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -39,7 +40,21 @@
* @param lifeCycleDTOs 鏁版嵁浼犺緭瀵硅薄
* @return 娣诲姞鍚庣殑鏄剧ず瀵硅薄
*/
- List<LifeCycleVO> batchAddSave(List<LifeCycleDTO> lifeCycleDTOs);
+ List<LifeCycleVO> batchAddSave(Collection<LifeCycleDTO> lifeCycleDTOs);
+
+ /**
+ * 淇敼淇濆瓨
+ * @param lifeCycleDTO 鏁版嵁浼犺緭瀵硅薄
+ * @return
+ */
+ LifeCycleVO editSave(LifeCycleDTO lifeCycleDTO);
+
+ /**
+ * 鎵归噺淇敼淇濆瓨
+ * @param lifeCycleDTOs
+ * @return
+ */
+ List<LifeCycleVO> batchEditSave(Collection<LifeCycleDTO> lifeCycleDTOs);
/**
* 鍒犻櫎鐢熷懡鍛ㄦ湡
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 af7f220..a75265e 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
@@ -887,6 +887,30 @@
}
/**
+ * 鑾峰彇寮曠敤鏌愪簺鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨�
+ *
+ * @param lifeIds 鐢熷懡鍛ㄦ湡鐨勭紪鍙烽泦鍚�
+ * @return 涓氬姟绫诲瀷鏄剧ず瀵硅薄
+ */
+ @Override
+ public List<BtmTypeVO> selectByLifeIds(Collection<String> lifeIds) {
+ if(CollectionUtils.isEmpty(lifeIds)){
+ return new ArrayList<>();
+ }
+ List<BtmType> btmTypeList = new ArrayList<>();
+ VciBaseUtil.switchCollectionForOracleIn(lifeIds).stream().forEach(ids->{
+ LambdaQueryWrapper<BtmType> query = new LambdaQueryWrapper<BtmType>();
+ ids.stream().forEach(id->{
+ query.eq(BtmType::getLifeCycleId,id);
+ query.or();
+ });
+ query.eq(BtmType::getLifeCycleId,"-1");
+ btmTypeList.addAll(baseMapper.selectList(query));
+ });
+ return BtmTypeWrapper.build().listEntityVO(btmTypeList);
+ }
+
+ /**
* 缁熻寮曠敤鏌愪釜鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨�
*
* @param lifeId 鐢熷懡鍛ㄦ湡鐨勭紪鍙�
@@ -901,4 +925,28 @@
query.eq(BtmType::getLifeCycleId,lifeId);
return baseMapper.selectCount(query).intValue();
}
+
+ /**
+ * 缁熻寮曠敤鏌愪簺鐢熷懡鍛ㄦ湡鐨勪笟鍔$被鍨�
+ *
+ * @param lifeIds 鐢熷懡鍛ㄦ湡鐨勭紪鍙烽泦鍚�
+ * @return 涓暟
+ */
+ @Override
+ public Integer countByLifeIds(Collection<String> lifeIds) {
+ if(CollectionUtils.isEmpty(lifeIds)){
+ return 0;
+ }
+ final Integer[] total = {0};
+ VciBaseUtil.switchCollectionForOracleIn(lifeIds).stream().forEach(ids->{
+ LambdaQueryWrapper<BtmType> query = new LambdaQueryWrapper<BtmType>();
+ ids.stream().forEach(id->{
+ query.eq(BtmType::getLifeCycleId,id);
+ query.or();
+ });
+ query.eq(BtmType::getLifeCycleId,"-1");
+ total[0] += baseMapper.selectCount(query).intValue();
+ });
+ return total[0];
+ }
}
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 62db19e..bd1f599 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
@@ -268,7 +268,7 @@
*/
@Override
@Transactional
- public List<LifeCycleVO> batchAddSave(List<LifeCycleDTO> lifeCycleDTOs) {
+ public List<LifeCycleVO> batchAddSave(Collection<LifeCycleDTO> lifeCycleDTOs) {
VciBaseUtil.alertNotNull(lifeCycleDTOs,"鐢熷懡鍛ㄦ湡鐨勪俊鎭�");
//鍏堥泦浣撴牎楠屼竴涓�
if(lifeCycleDTOs.stream().anyMatch(s->!StringUtils.hasLength(s.getId()) || !StringUtils.hasLength(s.getName())
@@ -276,7 +276,7 @@
throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勭紪鍙凤紝鍚嶇О锛岃捣濮嬬姸鎬侊紝鍖呭惈鐨勮妭鐐逛笉鑳戒负绌�");
}
//缁熶竴鏍¢獙閲嶅
- Map<String, List<LifeCycleDTO>> dtoMap = lifeCycleDTOs.stream().collect(Collectors.groupingBy(LifeCycleDTO::getId));
+ Map<String, List<LifeCycleDTO>> dtoMap = lifeCycleDTOs.stream().collect(Collectors.groupingBy(s->s.getId().toLowerCase(Locale.ROOT)));
dtoMap.forEach((id,dtos)->{
if(dtos.size()>1){
throw new VciBaseException("缂栧彿涓恒��" + id + "銆戠殑鐢熷懡鍛ㄦ湡閲嶅");
@@ -286,7 +286,7 @@
ids->{
QueryWrapper wrapper = new QueryWrapper(LifeCycleRule.class);
ids.stream().forEach(id->{
- wrapper.eq("lower(id)",id.toLowerCase(Locale.ROOT));
+ wrapper.eq("lower(id)",id);
wrapper.or();
});
wrapper.eq("1","2");
@@ -304,6 +304,156 @@
}
/**
+ * 淇敼淇濆瓨
+ *
+ * @param lifeCycleDTO 鏁版嵁浼犺緭瀵硅薄
+ * @return
+ */
+ @Override
+ public LifeCycleVO editSave(LifeCycleDTO lifeCycleDTO) {
+ VciBaseUtil.alertNotNull(lifeCycleDTO,"鐢熷懡鍛ㄦ湡淇℃伅",lifeCycleDTO.getId(),"鐢熷懡鍛ㄦ湡鐨勭紪鍙�",lifeCycleDTO.getName(),"鐢熷懡鍛ㄦ湡鍚嶇О"
+ ,lifeCycleDTO.getNodes(),"鐢熷懡鍛ㄦ湡鐨勮妭鐐�",lifeCycleDTO.getStartStatus(),"璧峰鐘舵��",
+ lifeCycleDTO.getOid(),"涓婚敭");
+ LifeCycleRule rule = selectByOid(lifeCycleDTO.getOid());
+ //鏌ヨ閲嶅
+ QueryWrapper wrapper = new QueryWrapper(LifeCycleRule.class);
+ if(rule.getId().equals(lifeCycleDTO.getId())){
+ throw new VciBaseException("鐢熷懡鍛ㄦ湡缂栧彿涓嶈兘淇敼");
+ }
+ wrapper.eq("lower(id)",lifeCycleDTO.getId().toLowerCase(Locale.ROOT));
+ wrapper.ne("oid",lifeCycleDTO.getOid());
+ if(baseMapper.selectCount(wrapper)>0){
+ throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勭紪鍙蜂笉鑳介噸澶�");
+ }
+ editLifeCycle(lifeCycleDTO,rule);
+ return LifeCycleRuleWrapper.build().entityVO(getById(rule.getOid()));
+ }
+
+ /**
+ * 淇敼鐢熷懡鍛ㄦ湡
+ * @param lifeCycleDTO
+ * @param life
+ */
+ private void editLifeCycle(LifeCycleDTO lifeCycleDTO,LifeCycleRule life){
+ if(!lifeCycleDTO.getId().matches(RegExpConstant.LETTER)){
+ throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勭紪鍙峰彧鑳芥槸瀛楁瘝");
+ }
+ BeanUtil.convert(lifeCycleDTO,life);
+ String creator = AuthUtil.getUserAccount();
+ Date now = new Date();
+ life.setLastModifier(creator);
+ life.setLastModifyTime(now);
+ life.setTs(now);
+
+ //鍒犻櫎鐜板湪鍏ㄩ儴鐨勬暟鎹紝鐒跺悗閲嶆柊娣诲姞=
+ List<LifeCycleNode> nodeList = selectNodeByLifeOid(life.getOid());
+ List<LifeCycleEdge> edges = selectEdgeByLifeOid(life.getOid());
+ List<LifeCycleLineEvent> eventList = selectEventByEdgeOids(Optional.ofNullable(edges).orElseGet(ArrayList::new).stream().map(LifeCycleEdge::getOid).collect(Collectors.toList()));
+ if(!CollectionUtils.isEmpty(nodeList)){
+ nodeMapper.deleteBatchIds(nodeList.stream().map(LifeCycleNode::getOid).collect(Collectors.toList()));
+ }
+ if(!CollectionUtils.isEmpty(edges)){
+ edgeMapper.deleteBatchIds(edges.stream().map(LifeCycleEdge::getOid).collect(Collectors.toList()));
+ }
+ if(!CollectionUtils.isEmpty(eventList)){
+ lineEventMapper.deleteBatchIds(eventList.stream().map(LifeCycleLineEvent::getOid).collect(Collectors.toList()));
+ }
+
+ 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.updateById(life);
+
+ }
+
+ /**
+ * 浣跨敤涓婚敭鏌ヨ
+ * @param oid
+ * @return
+ */
+ private LifeCycleRule selectByOid(String oid){
+ LifeCycleRule rule = null;
+ try {
+ rule = getById(oid);
+ }catch (Throwable e){
+ throw new VciBaseException("浣跨敤涓婚敭鑾峰彇瀵硅薄鍑洪敊锛岃繖涓暟鎹彲鑳戒笉瀛樺湪锛屾垨鑰呮暟鎹噸澶嶄簡");
+ }
+ return rule;
+ }
+
+ /**
+ * 鎵归噺淇敼淇濆瓨
+ *
+ * @param lifeCycleDTOs
+ * @return
+ */
+ @Override
+ public List<LifeCycleVO> batchEditSave(Collection<LifeCycleDTO> lifeCycleDTOs) {
+ if(CollectionUtils.isEmpty(lifeCycleDTOs)){
+ return new ArrayList<>();
+ }
+ 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(s->s.getId().toLowerCase(Locale.ROOT)));
+ 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);
+ wrapper.ne("oid",dtoMap.get(id).get(0).getOid());
+ wrapper.or();
+ });
+ wrapper.eq("1","2");
+ if(baseMapper.selectCount(wrapper)>0){
+ throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勭紪鍙蜂笉鑳介噸澶�");
+ }
+ }
+ );
+ List<String> oidList = lifeCycleDTOs.stream().map(LifeCycleDTO::getOid).collect(Collectors.toList());
+ List<LifeCycleRule> rules = listByIds(oidList);
+ if(!CollectionUtils.isEmpty(rules)){
+ rules.stream().forEach(life->{
+ editLifeCycle(dtoMap.get(life.getId().toLowerCase(Locale.ROOT)).get(0),life);
+ });
+ }
+ return LifeCycleRuleWrapper.build().listEntityVO(listByIds(oidList));
+ }
+
+ /**
* 鍒犻櫎鐢熷懡鍛ㄦ湡
*
* @param lifeCycleDTO 鏁版嵁浼犺緭瀵硅薄
@@ -312,22 +462,93 @@
@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("浣跨敤涓婚敭鑾峰彇瀵硅薄鍑洪敊锛岃繖涓暟鎹彲鑳戒笉瀛樺湪锛屾垨鑰呮暟鎹噸澶嶄簡");
- }
+ LifeCycleRule rule = selectByOid(lifeCycleDTO.getOid());
//妫�鏌ヨ寮曠敤涓嶈兘鍒犻櫎
- Integer count = btmTypeService.countByLifeId(lifeCycleDTO.getOid());
+ Integer count = btmTypeService.countByLifeId(lifeCycleDTO.getId());
if(count !=null && count>0){
throw new VciBaseException("鐢熷懡鍛ㄦ湡琚娇鐢紝涓嶈兘琚垹闄�");
}
//鎴戜滑鏌ヨ鍏ㄩ儴node鍜宔dge锛岀劧鍚庝竴璧峰垹闄�
+ List<LifeCycleNode> nodeList = selectNodeByLifeOid(rule.getOid());
+ List<LifeCycleEdge> edges = selectEdgeByLifeOid(rule.getOid());
+ List<LifeCycleLineEvent> eventList = selectEventByEdgeOids(Optional.ofNullable(edges).orElseGet(ArrayList::new).stream().map(LifeCycleEdge::getOid).collect(Collectors.toList()));
+ if(!CollectionUtils.isEmpty(nodeList)){
+ nodeMapper.deleteBatchIds(nodeList.stream().map(LifeCycleNode::getOid).collect(Collectors.toList()));
+ }
+ if(!CollectionUtils.isEmpty(edges)){
+ edgeMapper.deleteBatchIds(edges.stream().map(LifeCycleEdge::getOid).collect(Collectors.toList()));
+ }
+ if(!CollectionUtils.isEmpty(eventList)){
+ lineEventMapper.deleteBatchIds(eventList.stream().map(LifeCycleLineEvent::getOid).collect(Collectors.toList()));
+ }
+ baseMapper.deleteById(rule);
+ }
+ /**
+ * 鏌ヨ閾炬帴绾�
+ * @param lifeOid
+ * @return
+ */
+ private List<LifeCycleEdge> selectEdgeByLifeOid(String lifeOid){
+ if(!StringUtils.hasLength(lifeOid)){
+ return new ArrayList<>();
+ }
+ LambdaQueryWrapper<LifeCycleEdge> query = new LambdaQueryWrapper<LifeCycleEdge>();
+ query.eq(LifeCycleEdge::getLifeCycleOid,lifeOid);
+ return edgeMapper.selectList(query);
}
+ /**
+ * 鑾峰彇鑺傜偣鐨勪俊鎭�
+ * @param lifeOids 鐢熷懡鍛ㄦ湡鐨勪富閿泦鍚�
+ * @return
+ */
+ private List<LifeCycleEdge> selectEdgeByLifeOids(Collection<String> lifeOids){
+ if(!CollectionUtils.isEmpty(lifeOids)){
+ return new ArrayList<>();
+ }
+ List<LifeCycleEdge> edgeList = new ArrayList<>();
+ VciBaseUtil.switchCollectionForOracleIn(lifeOids).stream().forEach(lOids->{
+ LambdaQueryWrapper<LifeCycleEdge> query = new LambdaQueryWrapper<LifeCycleEdge>();
+ lOids.stream().forEach(lOid->{
+ query.eq(LifeCycleEdge::getLifeCycleOid,lOid);
+ query.or();
+ });
+ query.eq(LifeCycleEdge::getLifeCycleOid,"-1");
+ edgeList.addAll(edgeMapper.selectList(query));
+ });
+ return edgeList;
+ }
+
+ /**
+ * 鏌ヨ閾炬帴绾夸笂鐨勪簨浠�
+ * @param edgeOids
+ * @return
+ */
+ private List<LifeCycleLineEvent> selectEventByEdgeOids(Collection<String> edgeOids){
+ if(CollectionUtils.isEmpty(edgeOids)){
+ return new ArrayList<>();
+ }
+ List<LifeCycleLineEvent> eventList = new ArrayList<>();
+ VciBaseUtil.switchCollectionForOracleIn(edgeOids).stream().forEach(edgeOidList->{
+ LambdaQueryWrapper<LifeCycleLineEvent> query = new LambdaQueryWrapper<LifeCycleLineEvent>();
+ edgeOidList.stream().forEach(edgeOid->{
+ query.eq(LifeCycleLineEvent::getPkLifeCycleEdge,edgeOid);
+ query.or();
+ });
+ query.eq(LifeCycleLineEvent::getPkLifeCycleEdge,"-1");
+ eventList.addAll(lineEventMapper.selectList(query));
+ });
+ return eventList;
+ }
+
+
+ /**
+ * 鑾峰彇鑺傜偣鐨勪俊鎭�
+ * @param lifeOid
+ * @return
+ */
private List<LifeCycleNode> selectNodeByLifeOid(String lifeOid){
if(!StringUtils.hasLength(lifeOid)){
return new ArrayList<>();
@@ -338,13 +559,60 @@
}
/**
+ * 鑾峰彇鑺傜偣鐨勪俊鎭�
+ * @param lifeOids 鐢熷懡鍛ㄦ湡鐨勪富閿泦鍚�
+ * @return
+ */
+ private List<LifeCycleNode> selectNodeByLifeOids(Collection<String> lifeOids){
+ if(!CollectionUtils.isEmpty(lifeOids)){
+ return new ArrayList<>();
+ }
+ List<LifeCycleNode> nodeList = new ArrayList<>();
+ VciBaseUtil.switchCollectionForOracleIn(lifeOids).stream().forEach(lOids->{
+ LambdaQueryWrapper<LifeCycleNode> query = new LambdaQueryWrapper<LifeCycleNode>();
+ lOids.stream().forEach(lOid->{
+ query.eq(LifeCycleNode::getLifeCycleOid,lOid);
+ query.or();
+ });
+ query.eq(LifeCycleNode::getLifeCycleOid,"-1");
+ nodeList.addAll(nodeMapper.selectList(query));
+ });
+ return nodeList;
+ }
+
+ /**
* 鎵归噺鍒犻櫎鐢熷懡鍛ㄦ湡
*
* @param lifeCycleDTOs 鏁版嵁浼犺緭瀵硅薄鍒楄〃
*/
@Override
+ @Transactional
public void batchDelete(List<LifeCycleDTO> lifeCycleDTOs) {
-
+ VciBaseUtil.alertNotNull(lifeCycleDTOs,"鐢熷懡鍛ㄦ湡鐨勪俊鎭�");
+ if(lifeCycleDTOs.stream().anyMatch(s->!StringUtils.hasLength(s.getOid()))){
+ throw new VciBaseException("鐢熷懡鍛ㄦ湡鐨勪富閿笉鑳戒负绌�");
+ }
+ List<String> oidList = lifeCycleDTOs.stream().map(LifeCycleDTO::getOid).collect(Collectors.toList());
+ List<LifeCycleRule> lifeList = baseMapper.selectBatchIds(oidList);
+ //鎵归噺鏌ヨ
+ String usedBtmTypeId = Optional.ofNullable(btmTypeService.selectByLifeIds(lifeList.stream().map(LifeCycleRule::getId).collect(Collectors.toList()))).orElseGet(ArrayList::new).stream().map(BtmTypeVO::getId).collect(Collectors.joining(","));
+ if(StringUtils.hasLength(usedBtmTypeId)){
+ throw new VciBaseException(usedBtmTypeId + "杩欎簺涓氬姟绫诲瀷寮曠敤浜嗙敓鍛藉懆鏈燂紝涓嶈兘鍒犻櫎");
+ }
+ List<LifeCycleNode> nodeList = selectNodeByLifeOids(oidList);
+ List<LifeCycleEdge> edgeList = selectEdgeByLifeOids(oidList);
+ if(!CollectionUtils.isEmpty(nodeList)){
+ nodeMapper.deleteBatchIds(nodeList.stream().map(LifeCycleNode::getOid).collect(Collectors.toList()));
+ }
+ if(!CollectionUtils.isEmpty(edgeList)){
+ List<String> edgeOids = edgeList.stream().map(LifeCycleEdge::getOid).collect(Collectors.toList());
+ edgeMapper.deleteBatchIds(edgeOids);
+ List<LifeCycleLineEvent> eventList = selectEventByEdgeOids(edgeOids);
+ if(!CollectionUtils.isEmpty(eventList)){
+ lineEventMapper.deleteBatchIds(eventList.stream().map(LifeCycleLineEvent::getOid).collect(Collectors.toList()));
+ }
+ }
+ baseMapper.deleteBatchIds(oidList);
}
/**
@@ -355,6 +623,8 @@
*/
@Override
public List<BtmTypeVO> listUses(LifeCycleDTO lifeCycleDTO) {
- return null;
+ VciBaseUtil.alertNotNull(lifeCycleDTO,"鏁版嵁浼犺緭瀵硅薄",lifeCycleDTO.getOid(),"涓婚敭");
+ LifeCycleRule rule = selectByOid(lifeCycleDTO.getOid());
+ return btmTypeService.selectByLifeId(rule.getId());
}
}
--
Gitblit v1.9.3