From 44d30cbd79df473dbdf6d28decde2bbc931c0821 Mon Sep 17 00:00:00 2001
From: shenyijian <1178253012@qq.com>
Date: Fri, 30 Aug 2024 18:19:47 +0800
Subject: [PATCH] 湖北水库:工程项目树数量修改

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxStepServiceImpl.java |   51 ++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 40 insertions(+), 11 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxStepServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxStepServiceImpl.java
index 46e0f24..8a63545 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxStepServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxStepServiceImpl.java
@@ -2,13 +2,16 @@
 
 import cn.gistack.sm.sg.DO.SgGxRoleDO;
 import cn.gistack.sm.sg.DO.SgGxStepDO;
+import cn.gistack.sm.sg.DO.SgProgressReportDO;
 import cn.gistack.sm.sg.DTO.ProjectSearchDTO;
 import cn.gistack.sm.sg.VO.SgGxRoleVO;
 import cn.gistack.sm.sg.mapper.SgGxRoleMapper;
 import cn.gistack.sm.sg.mapper.SgGxStepMapper;
+import cn.gistack.sm.sg.mapper.SgProgressReportMapper;
 import cn.gistack.sm.sg.service.SgGxStepService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import org.springblade.core.log.exception.ServiceException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -16,7 +19,10 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * <p>
@@ -32,6 +38,10 @@
 	private SgGxStepMapper sgGxStepMapper;
 	@Autowired
 	private SgGxRoleMapper sgGxRoleMapper;
+
+	@Autowired
+	private SgProgressReportMapper sgProgressReportMapper;
+
 	@Override
 	public void add(SgGxStepDO sgGxStepDO) {
 	List<SgGxStepDO> list= sgGxStepMapper.selectByGxInfoId(sgGxStepDO.getGxInfoId());
@@ -49,13 +59,19 @@
 	}
 
 	@Override
-	public void delete(String id) {
-		SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(id);
-		List<SgGxStepDO> list= sgGxStepMapper.selectByGxInfoId(sgGxStepDO.getGxInfoId());
-		if (!sgGxStepDO.getGxStepNum().equals(list.get(0).getGxStepNum())){
-			throw  new ServiceException("请按顺序删除工序步骤");
+	public void delete(String ids) {
+		List<String> idList = Stream.of(ids.split(",")).sorted(Comparator.reverseOrder()) .collect(Collectors.toList());
+		for (String id : idList) {
+			SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(id);
+			if (!new LambdaQueryChainWrapper<>(sgGxRoleMapper).eq(SgGxRoleDO::getGxStepId,id).list().isEmpty()){
+				throw  new ServiceException(sgGxStepDO.getGxStepName()+ "已绑定角色,无法删除");
+			}
+			List<SgGxStepDO> list= sgGxStepMapper.selectByGxInfoId(sgGxStepDO.getGxInfoId());
+			if (!sgGxStepDO.getGxStepNum().equals(list.get(0).getGxStepNum())){
+				throw  new ServiceException("请按顺序删除工序步骤");
+			}
+			this.removeById(id);
 		}
-		this.removeById(id);
 	}
 
 	@Override
@@ -93,7 +109,7 @@
 			SgGxRoleDO sgGxRoleDO=new SgGxRoleDO();
 			sgGxRoleDO.setGxDeviceType(sgGxRoleVO.getGxDeviceType());
 			sgGxRoleDO.setGxStepId(sgGxRoleVO.getGxStepId());
-			sgGxRoleDO.setRoleId(Long.valueOf(roleIds.get(i)));
+			sgGxRoleDO.setRoleId(roleIds.get(i));
 			sgGxRoleDO.setSgOrder(sgGxRoleVO.getOrders().get(i));
 			sgGxRoles.add(sgGxRoleDO);
 		}
@@ -108,9 +124,17 @@
 	@Override
 @Transactional
 public void updateSgGxRole(SgGxRoleVO sgGxRoleVO){
-
-
-	if (sgGxRoleVO.getGxStepId()==null){
+		String gxStepId = sgGxRoleVO.getGxStepId();
+		List<SgProgressReportDO> reportDOS = new LambdaQueryChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getGxStepId, gxStepId).list();
+		List<SgGxRoleDO> list = new LambdaQueryChainWrapper<>(sgGxRoleMapper).eq(SgGxRoleDO::getGxStepId, gxStepId).orderByAsc(SgGxRoleDO::getSgOrder).list();
+		List<String> roles = list.stream().map(SgGxRoleDO::getRoleId).map(Object::toString).collect(Collectors.toList());
+		List<Integer> orders  = list.stream().map(SgGxRoleDO::getSgOrder).collect(Collectors.toList());
+		if (!reportDOS.isEmpty()){
+			if (! roles.equals(sgGxRoleVO.getRoleIds()) || ! orders.equals(sgGxRoleVO.getOrders()))	{
+				throw  new ServiceException("此配置已有上报记录,不允许修改");
+			}
+		}
+		if (sgGxRoleVO.getGxStepId()==null){
 		throw  new ServiceException("工序步骤参数错误");
 	}
 	if (sgGxRoleVO.getGxDeviceType()==null){
@@ -132,7 +156,7 @@
 		SgGxRoleDO sgGxRoleDO=new SgGxRoleDO();
 		sgGxRoleDO.setGxDeviceType(sgGxRoleVO.getGxDeviceType());
 		sgGxRoleDO.setGxStepId(sgGxRoleVO.getGxStepId());
-		sgGxRoleDO.setRoleId(Long.valueOf(roleIds.get(i)));
+		sgGxRoleDO.setRoleId(roleIds.get(i));
 		sgGxRoleDO.setSgOrder(sgGxRoleVO.getOrders().get(i));
 		sgGxRoles.add(sgGxRoleDO);
 	}
@@ -151,4 +175,9 @@
 		return 	sgGxRoleMapper.getSgGxRoles(gxDeviceType, gxStepId);
 
 	}
+
+	@Override
+	public List<SgGxStepDO> sgGxStepList() {
+		return sgGxStepMapper.getDEviceGXtwo();
+	}
 }

--
Gitblit v1.9.3