src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
@@ -1,9 +1,12 @@ package com.ruoyi.production.controller; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.R; import com.ruoyi.production.dto.ProcessRouteDto; import com.ruoyi.production.pojo.ProcessRoute; import com.ruoyi.production.pojo.ProcessRouteItem; import com.ruoyi.production.service.ProcessRouteItemService; import com.ruoyi.production.service.ProcessRouteService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,6 +22,9 @@ @Autowired private ProcessRouteService processRouteService; @Autowired private ProcessRouteItemService processRouteItemService; @GetMapping("page") @ApiOperation("分页查询") @@ -39,6 +45,8 @@ @ApiOperation("删除工艺路线") @DeleteMapping("/{ids}") public R delete(@PathVariable("ids") Long[] ids) { //删除工艺路线详情 processRouteItemService.remove(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId,Arrays.asList(ids))); return R.ok(processRouteService.removeBatchByIds(Arrays.asList(ids))); } } src/main/java/com/ruoyi/production/controller/ProcessRouteItemController.java
@@ -1,14 +1,20 @@ package com.ruoyi.production.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.framework.web.domain.R; import com.ruoyi.production.dto.ProcessRouteItemDto; import com.ruoyi.production.pojo.ProcessRoute; import com.ruoyi.production.pojo.ProcessRouteItem; import com.ruoyi.production.service.ProcessRouteItemService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import java.util.Arrays; @@ -26,11 +32,22 @@ return R.ok(processRouteItemService.listProcessRouteItemDto(processRouteItemDto)); } @PostMapping () @ApiOperation("新增修改") public R addOrUpdate(@RequestBody ProcessRouteItemDto processRouteItemDto) { processRouteItemService.remove(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRouteItemDto.getRouteId())); return R.ok(processRouteItemService.saveBatch(processRouteItemDto.getProcessRouteItem())); public R addOrUpdate(@RequestBody ProcessRouteItem processRouteItem) { return R.ok(processRouteItemService.saveOrUpdate(processRouteItem)); } @PostMapping ("/sort") @ApiOperation("排序") public R sort(@RequestBody ProcessRouteItem processRouteItem) { return R.ok(processRouteItemService.sort(processRouteItem)); } @ApiOperation("删除工艺路线明细") @DeleteMapping("/batchDelete/{id}") @Log(title = "删除", businessType = BusinessType.DELETE) public AjaxResult batchDelete(@PathVariable("id") Long id) { return AjaxResult.success(processRouteItemService.batchDelete(id)); } } src/main/java/com/ruoyi/production/dto/ProcessRouteItemDto.java
@@ -27,6 +27,5 @@ private Long productId; private List<ProcessRouteItem> processRouteItem; private String model; } src/main/java/com/ruoyi/production/pojo/ProcessRouteItem.java
@@ -34,5 +34,8 @@ @TableField(fill = FieldFill.UPDATE) private LocalDateTime updateTime; @ApiModelProperty(value ="拖动排序") private Integer dragSort; } src/main/java/com/ruoyi/production/service/ProcessRouteItemService.java
@@ -11,4 +11,8 @@ public interface ProcessRouteItemService extends IService<ProcessRouteItem> { List<ProcessRouteItemDto> listProcessRouteItemDto( ProcessRouteItemDto processRouteItemDto); int sort(ProcessRouteItem processRouteItem); String batchDelete(Long id); } src/main/java/com/ruoyi/production/service/impl/ProcessRouteItemServiceImpl.java
@@ -1,6 +1,7 @@ package com.ruoyi.production.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.production.dto.ProcessRouteItemDto; @@ -10,11 +11,13 @@ import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @AllArgsConstructor @Transactional(rollbackFor = Exception.class) public class ProcessRouteItemServiceImpl extends ServiceImpl<ProcessRouteItemMapper, ProcessRouteItem> implements ProcessRouteItemService { @Autowired @@ -24,4 +27,66 @@ public List<ProcessRouteItemDto> listProcessRouteItemDto(ProcessRouteItemDto processRouteItemDto) { return processRouteItemMapper.listProcessRouteItemDto( processRouteItemDto); } //排序 @Override public int sort(ProcessRouteItem processRouteItem) { //查询被改动的这条数据 ProcessRouteItem oldProcessRouteItem = processRouteItemMapper.selectById(processRouteItem.getId()); //查询该工艺路线的所有工序并按照顺序排序 List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(Wrappers.<ProcessRouteItem>lambdaQuery() .eq(ProcessRouteItem::getRouteId, oldProcessRouteItem.getRouteId()) .orderByAsc(ProcessRouteItem::getDragSort)); //查询被更改的那条数据原来是第几条 int oldIndex = processRouteItems.indexOf(oldProcessRouteItem); // 获取目标位置(移动到第几个之后) Integer targetPosition = processRouteItem.getDragSort(); if (targetPosition != null && targetPosition >= 0) { // 移动元素到新的位置 processRouteItems.remove(oldProcessRouteItem); processRouteItems.add(targetPosition-1, oldProcessRouteItem); // 更新所有受影响的排序字段 for (int i = 0; i < processRouteItems.size(); i++) { ProcessRouteItem item = processRouteItems.get(i); if (!item.getId().equals(oldProcessRouteItem.getId())) { // 检查是否需要更新排序值 if (item.getDragSort() != i+1) { item.setDragSort(i+1); processRouteItemMapper.updateById(item); } } else { // 更新原记录的新排序位置 oldProcessRouteItem.setDragSort(targetPosition); processRouteItemMapper.updateById(oldProcessRouteItem); } } return 1; } return 0; } @Override public String batchDelete(Long id) { // 查询要删除的数据 ProcessRouteItem deleteProcessRouteItem = processRouteItemMapper.selectById(id); if (deleteProcessRouteItem == null) { return "删除失败,未找到对应数据"; } Long routeId = deleteProcessRouteItem.getRouteId(); // 删除指定数据 processRouteItemMapper.deleteById(id); // 查询该工艺路线的所有工序并按照顺序排序 List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(Wrappers.<ProcessRouteItem>lambdaQuery() .eq(ProcessRouteItem::getRouteId, routeId) .orderByAsc(ProcessRouteItem::getDragSort)); // 重新设置排序值,使序号连续 for (int i = 0; i < processRouteItems.size(); i++) { ProcessRouteItem item = processRouteItems.get(i); if (!item.getDragSort().equals(i+1)) { item.setDragSort(i+1); processRouteItemMapper.updateById(item); } } return "删除成功"; } } src/main/resources/mapper/production/ProcessRouteItemMapper.xml
@@ -10,6 +10,7 @@ <result property="tenantId" column="tenant_id"/> <result property="createTime" column="create_time"/> <result property="updateTime" column="update_time"/> <result property="dragSort" column="drag_sort"/> </resultMap> <select id="listProcessRouteItemDto" resultType="com.ruoyi.production.dto.ProcessRouteItemDto"> @@ -29,6 +30,6 @@ left join process_route pr on pr.id = pri.route_id where pri.route_id = #{c.routeId} order by pri.id order by pri.drag_sort </select> </mapper>