| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | |
| | | 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; |
| | | } |
| | | |
| | | @Override |
| | | public int sort(TechnologyRoutingOperation technologyRoutingOperation) { |
| | | //æ¥è¯¢è¢«æ¹å¨çè¿æ¡æ°æ® |
| | | TechnologyRoutingOperation oldtechnologyRoutingOperation = technologyRoutingOperationMapper.selectById(technologyRoutingOperation.getId()); |
| | | //æ¥è¯¢è¯¥å·¥èºè·¯çº¿çææå·¥åºå¹¶æç
§é¡ºåºæåº |
| | | List<TechnologyRoutingOperation> technologyRouteOperations = technologyRoutingOperationMapper.selectList(Wrappers.<TechnologyRoutingOperation>lambdaQuery() |
| | | .eq(TechnologyRoutingOperation::getTechnologyRoutingId, oldtechnologyRoutingOperation.getTechnologyRoutingId()) |
| | | .orderByAsc(TechnologyRoutingOperation::getDragSort)); |
| | | // è·åç®æ ä½ç½®ï¼ç§»å¨å°ç¬¬å 个ä¹åï¼ |
| | | Integer targetPosition = technologyRoutingOperation.getDragSort(); |
| | | if (targetPosition != null && targetPosition >= 0) { |
| | | // ç§»å¨å
ç´ å°æ°çä½ç½® |
| | | technologyRouteOperations.remove(oldtechnologyRoutingOperation); |
| | | technologyRouteOperations.add(targetPosition-1, oldtechnologyRoutingOperation); |
| | | // æ´æ°ææåå½±åçæåºå段 |
| | | for (int i = 0; i < technologyRouteOperations.size(); i++) { |
| | | TechnologyRoutingOperation item = technologyRouteOperations.get(i); |
| | | if (!item.getId().equals(oldtechnologyRoutingOperation.getId())) { |
| | | // æ£æ¥æ¯å¦éè¦æ´æ°æåºå¼ |
| | | if (item.getDragSort() != i+1) { |
| | | item.setDragSort(i+1); |
| | | technologyRoutingOperationMapper.updateById(item); |
| | | } |
| | | } else { |
| | | // æ´æ°åè®°å½çæ°æåºä½ç½® |
| | | oldtechnologyRoutingOperation.setDragSort(targetPosition); |
| | | technologyRoutingOperationMapper.updateById(oldtechnologyRoutingOperation); |
| | | } |
| | | } |
| | | return 1; |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | } |