| | |
| | | package com.ruoyi.technology.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | 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.mapper.TechnologyRoutingMapper; |
| | | import com.ruoyi.technology.mapper.TechnologyRoutingOperationMapper; |
| | | import com.ruoyi.technology.pojo.TechnologyRoutingOperation; |
| | | import com.ruoyi.technology.service.TechnologyRoutingOperationService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | 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) |
| | | public class TechnologyRoutingOperationServiceImpl extends ServiceImpl<TechnologyRoutingOperationMapper, TechnologyRoutingOperation> implements TechnologyRoutingOperationService { |
| | | |
| | | @Autowired |
| | | private TechnologyRoutingOperationMapper technologyRoutingOperationMapper; |
| | | |
| | | @Autowired |
| | | private TechnologyRoutingMapper technologyRoutingMapper; |
| | | |
| | | @Override |
| | | public IPage<TechnologyRoutingOperation> pageTechnologyRoutingOperation(Page<TechnologyRoutingOperation> page, |
| | | TechnologyRoutingOperation technologyRoutingOperation) { |
| | | return this.page(page, buildQueryWrapper(technologyRoutingOperation)); |
| | | } |
| | | |
| | | @Override |
| | | public List<TechnologyRoutingOperation> listTechnologyRoutingOperation(TechnologyRoutingOperation technologyRoutingOperation) { |
| | | return this.list(buildQueryWrapper(technologyRoutingOperation)); |
| | | } |
| | | |
| | | @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())); |
| | | } |
| | | return this.save(technologyRoutingOperation); |
| | | } |
| | | |
| | | @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 LambdaQueryWrapper<TechnologyRoutingOperation> buildQueryWrapper(TechnologyRoutingOperation technologyRoutingOperation) { |
| | | LambdaQueryWrapper<TechnologyRoutingOperation> queryWrapper = Wrappers.lambdaQuery(); |
| | | queryWrapper.eq(technologyRoutingOperation.getId() != null, TechnologyRoutingOperation::getId, technologyRoutingOperation.getId()) |
| | | .eq(technologyRoutingOperation.getTechnologyRoutingId() != null, |
| | | TechnologyRoutingOperation::getTechnologyRoutingId, technologyRoutingOperation.getTechnologyRoutingId()) |
| | | .eq(technologyRoutingOperation.getProductModelId() != null, |
| | | TechnologyRoutingOperation::getProductModelId, technologyRoutingOperation.getProductModelId()) |
| | | .eq(technologyRoutingOperation.getTechnologyOperationId() != null, |
| | | TechnologyRoutingOperation::getTechnologyOperationId, technologyRoutingOperation.getTechnologyOperationId()) |
| | | .eq(technologyRoutingOperation.getIsQuality() != null, |
| | | TechnologyRoutingOperation::getIsQuality, technologyRoutingOperation.getIsQuality()) |
| | | .orderByAsc(TechnologyRoutingOperation::getDragSort) |
| | | .orderByAsc(TechnologyRoutingOperation::getId); |
| | | return queryWrapper; |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | } |