| New file |
| | |
| | | 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(); |
| | | } |
| | | } |