| | |
| | | package com.ruoyi.technology.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.technology.bean.dto.TechnologyRoutingOperationDto; |
| | | import com.ruoyi.technology.bean.dto.TechnologyRoutingOperationParamSyncDto; |
| | | import com.ruoyi.technology.bean.vo.TechnologyRoutingOperationVo; |
| | | import com.ruoyi.technology.mapper.TechnologyRoutingMapper; |
| | | import com.ruoyi.technology.mapper.TechnologyRoutingOperationMapper; |
| | | import com.ruoyi.technology.pojo.TechnologyRoutingOperation; |
| | | import com.ruoyi.technology.service.TechnologyRoutingOperationParamService; |
| | | import com.ruoyi.technology.service.TechnologyRoutingOperationService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | /** |
| | | * <p> |
| | | * 工艺路线工序表 服务实现类 |
| | | * </p> |
| | | * |
| | | * @author 芯导软件(江苏)有限公司 |
| | | * @since 2026-04-20 10:06:47 |
| | | */ |
| | | import java.util.List; |
| | | |
| | | @Service |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @RequiredArgsConstructor |
| | | public class TechnologyRoutingOperationServiceImpl extends ServiceImpl<TechnologyRoutingOperationMapper, TechnologyRoutingOperation> implements TechnologyRoutingOperationService { |
| | | |
| | | private final TechnologyRoutingOperationMapper technologyRoutingOperationMapper; |
| | | |
| | | private final TechnologyRoutingMapper technologyRoutingMapper; |
| | | private final TechnologyRoutingOperationParamService technologyRoutingOperationParamService; |
| | | |
| | | @Override |
| | | public IPage<TechnologyRoutingOperationVo> pageTechnologyRoutingOperation(Page<TechnologyRoutingOperationDto> page, |
| | | TechnologyRoutingOperationDto technologyRoutingOperationDto) { |
| | | return technologyRoutingOperationMapper.pageTechnologyRoutingOperation(page, technologyRoutingOperationDto); |
| | | } |
| | | |
| | | @Override |
| | | public List<TechnologyRoutingOperationVo> listTechnologyRoutingOperation(TechnologyRoutingOperationDto technologyRoutingOperationDto) { |
| | | return technologyRoutingOperationMapper.listTechnologyRoutingOperation(technologyRoutingOperationDto); |
| | | } |
| | | |
| | | @Override |
| | | public TechnologyRoutingOperationVo getTechnologyRoutingOperationInfo(Long id) { |
| | | return technologyRoutingOperationMapper.getTechnologyRoutingOperationInfo(id); |
| | | } |
| | | |
| | | @Override |
| | | public boolean saveTechnologyRoutingOperation(TechnologyRoutingOperation technologyRoutingOperation) { |
| | | if (technologyRoutingOperation.getTechnologyRoutingId() == null |
| | | || technologyRoutingMapper.selectById(technologyRoutingOperation.getTechnologyRoutingId()) == null) { |
| | | throw new RuntimeException("工艺路线不存在,无法保存工序"); |
| | | } |
| | | if (technologyRoutingOperation.getDragSort() == null || technologyRoutingOperation.getDragSort() <= 0) { |
| | | technologyRoutingOperation.setDragSort(nextDragSort(technologyRoutingOperation.getTechnologyRoutingId())); |
| | | } |
| | | boolean saved = this.save(technologyRoutingOperation); |
| | | if (saved) { |
| | | TechnologyRoutingOperationParamSyncDto syncDto = new TechnologyRoutingOperationParamSyncDto(); |
| | | syncDto.setTechnologyRoutingOperationId(technologyRoutingOperation.getId()); |
| | | syncDto.setReplaceExisting(true); |
| | | technologyRoutingOperationParamService.syncTechnologyRoutingOperationParam(syncDto); |
| | | } |
| | | return saved; |
| | | } |
| | | |
| | | @Override |
| | | public boolean removeTechnologyRoutingOperation(Long id) { |
| | | TechnologyRoutingOperation technologyRoutingOperation = this.getById(id); |
| | | if (technologyRoutingOperation == null) { |
| | | return false; |
| | | } |
| | | boolean removed = this.removeById(id); |
| | | if (removed) { |
| | | resetDragSort(technologyRoutingOperation.getTechnologyRoutingId()); |
| | | } |
| | | return removed; |
| | | } |
| | | |
| | | private Integer nextDragSort(Long technologyRoutingId) { |
| | | TechnologyRoutingOperation lastOperation = technologyRoutingOperationMapper.selectOne( |
| | | Wrappers.<TechnologyRoutingOperation>lambdaQuery() |
| | | .eq(TechnologyRoutingOperation::getTechnologyRoutingId, technologyRoutingId) |
| | | .orderByDesc(TechnologyRoutingOperation::getDragSort) |
| | | .last("limit 1") |
| | | ); |
| | | if (lastOperation == null || lastOperation.getDragSort() == null) { |
| | | return 1; |
| | | } |
| | | return lastOperation.getDragSort() + 1; |
| | | } |
| | | |
| | | private void resetDragSort(Long technologyRoutingId) { |
| | | List<TechnologyRoutingOperation> operationList = technologyRoutingOperationMapper.selectList( |
| | | Wrappers.<TechnologyRoutingOperation>lambdaQuery() |
| | | .eq(TechnologyRoutingOperation::getTechnologyRoutingId, technologyRoutingId) |
| | | .orderByAsc(TechnologyRoutingOperation::getDragSort) |
| | | .orderByAsc(TechnologyRoutingOperation::getId) |
| | | ); |
| | | for (int i = 0; i < operationList.size(); i++) { |
| | | TechnologyRoutingOperation item = operationList.get(i); |
| | | int dragSort = i + 1; |
| | | if (item.getDragSort() == null || item.getDragSort() != dragSort) { |
| | | item.setDragSort(dragSort); |
| | | technologyRoutingOperationMapper.updateById(item); |
| | | } |
| | | } |
| | | } |
| | | } |