From 08a962d2925baa255207fdf979e6fee794f1773b Mon Sep 17 00:00:00 2001
From: ke <893754509@qq.com>
Date: Fri, 19 Jul 2024 12:25:19 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxStepServiceImpl.java |  178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 178 insertions(+), 0 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
new file mode 100644
index 0000000..91fef81
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sg/service/impl/SgGxStepServiceImpl.java
@@ -0,0 +1,178 @@
+package cn.gistack.sm.sg.service.impl;
+
+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;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 施工工序步骤表 服务实现类
+ * </p>
+ *
+ * @author shenyijian
+ * @since 2024-06-13 15:46:18
+ */
+@Service
+public class SgGxStepServiceImpl extends ServiceImpl<SgGxStepMapper, SgGxStepDO> implements SgGxStepService {
+	@Autowired
+	private SgGxStepMapper sgGxStepMapper;
+	@Autowired
+	private SgGxRoleMapper sgGxRoleMapper;
+
+	@Autowired
+	private SgProgressReportMapper sgProgressReportMapper;
+
+	@Override
+	public void add(SgGxStepDO sgGxStepDO) {
+	List<SgGxStepDO> list= sgGxStepMapper.selectByGxInfoId(sgGxStepDO.getGxInfoId());
+	if (CollectionUtils.isNotEmpty(list)){
+		if (Integer.parseInt(sgGxStepDO.getGxStepNum()) - Integer.parseInt(list.get(0).getGxStepNum()) != 1){
+			throw  new ServiceException("请按顺序配置工序");
+		}
+	}
+	this.save(sgGxStepDO);
+	}
+
+	@Override
+	public void updateOne(SgGxStepDO sgGxStepDO) {
+		this.updateById(sgGxStepDO);
+	}
+
+	@Override
+	public void delete(String id) {
+		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);
+	}
+
+	@Override
+	public IPage<SgGxStepDO> queryPageList(IPage<SgGxStepDO> page, ProjectSearchDTO searchDTO) {
+		List<SgGxStepDO> list =  sgGxStepMapper.queryPageList(page,searchDTO);
+		return page.setRecords(list);
+	}
+
+	/**
+	 * 新增工序角色配置逻辑
+	 * @param sgGxRoleVO
+	 */
+	@Override
+	public void insertSgGxRole(SgGxRoleVO sgGxRoleVO){
+
+
+		if (sgGxRoleVO.getGxStepId()==null){
+			throw  new ServiceException("工序步骤参数错误");
+		}
+		if (sgGxRoleVO.getGxDeviceType()==null){
+			throw  new ServiceException("工序类型参数错误");
+		}
+
+		List<SgGxRoleDO> sgGxRoleDOS = sgGxRoleMapper.selectSgGxRole(sgGxRoleVO.getGxDeviceType(), sgGxRoleVO.getGxStepId());
+		if (sgGxRoleDOS==null||sgGxRoleDOS.size()>0){
+			throw  new ServiceException("已存在相同的工序角色配置");
+		}
+		List<SgGxRoleDO> sgGxRoles=new ArrayList<>();
+
+		if (sgGxRoleVO.getRoleIds()==null||sgGxRoleVO.getRoleIds().size()==0){
+			throw  new ServiceException("工序角色参数错误");
+		}
+		List<String> roleIds = sgGxRoleVO.getRoleIds();
+		for (int i = 0; i <roleIds.size() ; i++) {
+			SgGxRoleDO sgGxRoleDO=new SgGxRoleDO();
+			sgGxRoleDO.setGxDeviceType(sgGxRoleVO.getGxDeviceType());
+			sgGxRoleDO.setGxStepId(sgGxRoleVO.getGxStepId());
+			sgGxRoleDO.setRoleId(roleIds.get(i));
+			sgGxRoleDO.setSgOrder(sgGxRoleVO.getOrders().get(i));
+			sgGxRoles.add(sgGxRoleDO);
+		}
+		sgGxRoleMapper.insertBach(sgGxRoles);
+	}
+
+
+	/**
+	 * 更新工序角色配置
+	 * @param sgGxRoleVO
+	 */
+	@Override
+@Transactional
+public void updateSgGxRole(SgGxRoleVO sgGxRoleVO){
+		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){
+		throw  new ServiceException("工序类型参数错误");
+	}
+
+	List<SgGxRoleDO> sgGxRoleDOS = sgGxRoleMapper.selectSgGxRole(sgGxRoleVO.getGxDeviceType(), sgGxRoleVO.getGxStepId());
+	if (sgGxRoleDOS==null||sgGxRoleDOS.size()>0){
+		//删除原来的
+		sgGxRoleMapper.deleteSgGxRoleDOs(sgGxRoleVO.getGxDeviceType(),sgGxRoleVO.getGxStepId());
+	}
+	List<SgGxRoleDO> sgGxRoles=new ArrayList<>();
+
+	if (sgGxRoleVO.getRoleIds()==null||sgGxRoleVO.getRoleIds().size()==0){
+		throw  new ServiceException("工序角色参数错误");
+	}
+	List<String> roleIds = sgGxRoleVO.getRoleIds();
+	for (int i = 0; i <roleIds.size() ; i++) {
+		SgGxRoleDO sgGxRoleDO=new SgGxRoleDO();
+		sgGxRoleDO.setGxDeviceType(sgGxRoleVO.getGxDeviceType());
+		sgGxRoleDO.setGxStepId(sgGxRoleVO.getGxStepId());
+		sgGxRoleDO.setRoleId(roleIds.get(i));
+		sgGxRoleDO.setSgOrder(sgGxRoleVO.getOrders().get(i));
+		sgGxRoles.add(sgGxRoleDO);
+	}
+	sgGxRoleMapper.insertBach(sgGxRoles);
+}
+
+	/**
+	 * 获取绑定的角色进行回显
+	 *
+	 * @param gxDeviceType
+	 * @param gxStepId
+	 * @return
+	 */
+	@Override
+	public List<String> getSgGxRoles(String gxDeviceType, String gxStepId) {
+		return 	sgGxRoleMapper.getSgGxRoles(gxDeviceType, gxStepId);
+
+	}
+
+	@Override
+	public List<SgGxStepDO> sgGxStepList() {
+		return sgGxStepMapper.getDEviceGXtwo();
+	}
+}

--
Gitblit v1.9.3