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