feat(mill): 完成工艺管理与生产计划全栈业务模块
- 新增三张业务表 SQL:mill_process_recipe / mill_process_pass / mill_production_plan - 后端:Domain + Mapper + MyBatis XML + Service + Controller(工艺方案 & 生产计划) - 生产计划支持队列排序(sortNo)、上移/下移、软删除 - 工艺方案支持道次批量保存、事务管理 - 前端:工艺管理页(左侧方案列表 + 右侧表单 + 道次内联表格) - 前端:生产计划页(轧制队列 + 轧制工艺展示 + 操作面板 + 底部带卷状态栏) - 注册 /mill/process 与 /mill/plan 前端路由 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package com.ruoyi.mill.controller;
|
||||
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.mill.domain.MillProcessRecipe;
|
||||
import com.ruoyi.mill.service.IMillProcessRecipeService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/mill/recipe")
|
||||
public class MillProcessRecipeController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private IMillProcessRecipeService recipeService;
|
||||
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(MillProcessRecipe query) {
|
||||
startPage();
|
||||
List<MillProcessRecipe> list = recipeService.selectList(query);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/** 不分页的全量列表(下拉选择用) */
|
||||
@GetMapping("/listAll")
|
||||
public AjaxResult listAll(MillProcessRecipe query) {
|
||||
return AjaxResult.success(recipeService.selectList(query));
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public AjaxResult detail(@PathVariable Long id) {
|
||||
return AjaxResult.success(recipeService.selectDetailById(id));
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody MillProcessRecipe recipe) {
|
||||
return toAjax(recipeService.save(recipe));
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody MillProcessRecipe recipe) {
|
||||
return toAjax(recipeService.update(recipe));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable Long[] ids) {
|
||||
return toAjax(recipeService.deleteByIds(ids));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.ruoyi.mill.controller;
|
||||
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.mill.domain.MillProductionPlan;
|
||||
import com.ruoyi.mill.service.IMillProductionPlanService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/mill/plan")
|
||||
public class MillProductionPlanController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private IMillProductionPlanService planService;
|
||||
|
||||
@GetMapping("/list")
|
||||
public AjaxResult list(MillProductionPlan query) {
|
||||
// 轧制队列不分页,按 sort_no 顺序全量返回
|
||||
List<MillProductionPlan> list = planService.selectList(query);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public AjaxResult getInfo(@PathVariable Long id) {
|
||||
return AjaxResult.success(planService.selectById(id));
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody MillProductionPlan plan) {
|
||||
return toAjax(planService.insert(plan));
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody MillProductionPlan plan) {
|
||||
return toAjax(planService.update(plan));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public AjaxResult remove(@PathVariable Long id) {
|
||||
return toAjax(planService.deleteById(id));
|
||||
}
|
||||
|
||||
@PutMapping("/moveUp/{id}")
|
||||
public AjaxResult moveUp(@PathVariable Long id) {
|
||||
return toAjax(planService.moveUp(id));
|
||||
}
|
||||
|
||||
@PutMapping("/moveDown/{id}")
|
||||
public AjaxResult moveDown(@PathVariable Long id) {
|
||||
return toAjax(planService.moveDown(id));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package com.ruoyi.mill.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/** 工艺方案道次详情 */
|
||||
public class MillProcessPass extends BaseEntity {
|
||||
|
||||
private Long recipeId;
|
||||
|
||||
@Excel(name = "道次")
|
||||
private Integer passNo;
|
||||
|
||||
@Excel(name = "入口厚度(mm)")
|
||||
private BigDecimal inThick;
|
||||
|
||||
@Excel(name = "出口厚度(mm)")
|
||||
private BigDecimal outThick;
|
||||
|
||||
@Excel(name = "宽度(mm)")
|
||||
private BigDecimal width;
|
||||
|
||||
@Excel(name = "轧制力(kN)")
|
||||
private BigDecimal rollForce;
|
||||
|
||||
@Excel(name = "入口张力(kN)")
|
||||
private BigDecimal inTension;
|
||||
|
||||
@Excel(name = "出口张力(kN)")
|
||||
private BigDecimal outTension;
|
||||
|
||||
@Excel(name = "最高速度(m/min)")
|
||||
private BigDecimal maxSpeed;
|
||||
|
||||
@Excel(name = "入口单位张力(N/mm²)")
|
||||
private BigDecimal inUnitTension;
|
||||
|
||||
@Excel(name = "出口单位张力(N/mm²)")
|
||||
private BigDecimal outUnitTension;
|
||||
|
||||
@Excel(name = "压下量(mm)")
|
||||
private BigDecimal reduction;
|
||||
|
||||
@Excel(name = "总压下量(mm)")
|
||||
private BigDecimal totalReduction;
|
||||
|
||||
private String delFlag;
|
||||
|
||||
public Long getRecipeId() { return recipeId; }
|
||||
public void setRecipeId(Long v) { this.recipeId = v; }
|
||||
public Integer getPassNo() { return passNo; }
|
||||
public void setPassNo(Integer v) { this.passNo = v; }
|
||||
public BigDecimal getInThick() { return inThick; }
|
||||
public void setInThick(BigDecimal v) { this.inThick = v; }
|
||||
public BigDecimal getOutThick() { return outThick; }
|
||||
public void setOutThick(BigDecimal v) { this.outThick = v; }
|
||||
public BigDecimal getWidth() { return width; }
|
||||
public void setWidth(BigDecimal v) { this.width = v; }
|
||||
public BigDecimal getRollForce() { return rollForce; }
|
||||
public void setRollForce(BigDecimal v) { this.rollForce = v; }
|
||||
public BigDecimal getInTension() { return inTension; }
|
||||
public void setInTension(BigDecimal v) { this.inTension = v; }
|
||||
public BigDecimal getOutTension() { return outTension; }
|
||||
public void setOutTension(BigDecimal v) { this.outTension = v; }
|
||||
public BigDecimal getMaxSpeed() { return maxSpeed; }
|
||||
public void setMaxSpeed(BigDecimal v) { this.maxSpeed = v; }
|
||||
public BigDecimal getInUnitTension() { return inUnitTension; }
|
||||
public void setInUnitTension(BigDecimal v) { this.inUnitTension = v; }
|
||||
public BigDecimal getOutUnitTension() { return outUnitTension; }
|
||||
public void setOutUnitTension(BigDecimal v){ this.outUnitTension = v; }
|
||||
public BigDecimal getReduction() { return reduction; }
|
||||
public void setReduction(BigDecimal v) { this.reduction = v; }
|
||||
public BigDecimal getTotalReduction() { return totalReduction; }
|
||||
public void setTotalReduction(BigDecimal v){ this.totalReduction = v; }
|
||||
public String getDelFlag() { return delFlag; }
|
||||
public void setDelFlag(String v) { this.delFlag = v; }
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.ruoyi.mill.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/** 工艺方案主表 */
|
||||
public class MillProcessRecipe extends BaseEntity {
|
||||
|
||||
@Excel(name = "方案记录号")
|
||||
private String recipeNo;
|
||||
|
||||
@Excel(name = "合金号")
|
||||
private String alloyNo;
|
||||
|
||||
@Excel(name = "道次数量")
|
||||
private Integer passCount;
|
||||
|
||||
@Excel(name = "原料厚度(mm)")
|
||||
private BigDecimal inThick;
|
||||
|
||||
@Excel(name = "成品厚度(mm)")
|
||||
private BigDecimal outThick;
|
||||
|
||||
@Excel(name = "成品宽度(mm)")
|
||||
private BigDecimal outWidth;
|
||||
|
||||
/** 0-正常 1-停用 */
|
||||
private String status;
|
||||
|
||||
/** 删除标志 0-存在 2-删除 */
|
||||
private String delFlag;
|
||||
|
||||
/** 关联道次列表(非数据库字段) */
|
||||
private List<MillProcessPass> passList;
|
||||
|
||||
public String getRecipeNo() { return recipeNo; }
|
||||
public void setRecipeNo(String v) { this.recipeNo = v; }
|
||||
public String getAlloyNo() { return alloyNo; }
|
||||
public void setAlloyNo(String v) { this.alloyNo = v; }
|
||||
public Integer getPassCount() { return passCount; }
|
||||
public void setPassCount(Integer v) { this.passCount = v; }
|
||||
public BigDecimal getInThick() { return inThick; }
|
||||
public void setInThick(BigDecimal v) { this.inThick = v; }
|
||||
public BigDecimal getOutThick() { return outThick; }
|
||||
public void setOutThick(BigDecimal v) { this.outThick = v; }
|
||||
public BigDecimal getOutWidth() { return outWidth; }
|
||||
public void setOutWidth(BigDecimal v) { this.outWidth = v; }
|
||||
public String getStatus() { return status; }
|
||||
public void setStatus(String v) { this.status = v; }
|
||||
public String getDelFlag() { return delFlag; }
|
||||
public void setDelFlag(String v) { this.delFlag = v; }
|
||||
public List<MillProcessPass> getPassList() { return passList; }
|
||||
public void setPassList(List<MillProcessPass> v) { this.passList = v; }
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
package com.ruoyi.mill.domain;
|
||||
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/** 生产计划(轧制队列) */
|
||||
public class MillProductionPlan extends BaseEntity {
|
||||
|
||||
@Excel(name = "计划号")
|
||||
private String planNo;
|
||||
|
||||
private String matSeqNo;
|
||||
private String unitCode;
|
||||
private String planType;
|
||||
|
||||
/** 0-待生产 1-生产中 2-完成 3-撤销 */
|
||||
@Excel(name = "计划状态")
|
||||
private String planStatus;
|
||||
|
||||
/** Rolling / NextCoil / Idle */
|
||||
@Excel(name = "生产状态")
|
||||
private String prodStatus;
|
||||
|
||||
@Excel(name = "队列序号")
|
||||
private Integer sortNo;
|
||||
|
||||
@Excel(name = "钢卷编号")
|
||||
private String inMatNo;
|
||||
|
||||
@Excel(name = "采料厚度(mm)")
|
||||
private BigDecimal inMatThick;
|
||||
|
||||
@Excel(name = "采料宽度(mm)")
|
||||
private BigDecimal inMatWidth;
|
||||
|
||||
@Excel(name = "采料重量(kg)")
|
||||
private BigDecimal inMatWt;
|
||||
|
||||
@Excel(name = "采料长度(m)")
|
||||
private BigDecimal inMatLen;
|
||||
|
||||
@Excel(name = "采料内径(mm)")
|
||||
private BigDecimal inMatInDia;
|
||||
|
||||
@Excel(name = "采料外径(mm)")
|
||||
private BigDecimal inMatDia;
|
||||
|
||||
@Excel(name = "炉号")
|
||||
private String pono;
|
||||
|
||||
@Excel(name = "合金牌号")
|
||||
private String sgSign;
|
||||
|
||||
@Excel(name = "出口材料号")
|
||||
private String outMatNo;
|
||||
|
||||
@Excel(name = "成品厚度(mm)")
|
||||
private BigDecimal outThick;
|
||||
|
||||
@Excel(name = "工艺方案ID")
|
||||
private Long recipeId;
|
||||
|
||||
@Excel(name = "工艺方案号")
|
||||
private String recipeNo;
|
||||
|
||||
private String delFlag;
|
||||
|
||||
public String getPlanNo() { return planNo; }
|
||||
public void setPlanNo(String v) { this.planNo = v; }
|
||||
public String getMatSeqNo() { return matSeqNo; }
|
||||
public void setMatSeqNo(String v) { this.matSeqNo = v; }
|
||||
public String getUnitCode() { return unitCode; }
|
||||
public void setUnitCode(String v) { this.unitCode = v; }
|
||||
public String getPlanType() { return planType; }
|
||||
public void setPlanType(String v) { this.planType = v; }
|
||||
public String getPlanStatus() { return planStatus; }
|
||||
public void setPlanStatus(String v) { this.planStatus = v; }
|
||||
public String getProdStatus() { return prodStatus; }
|
||||
public void setProdStatus(String v) { this.prodStatus = v; }
|
||||
public Integer getSortNo() { return sortNo; }
|
||||
public void setSortNo(Integer v) { this.sortNo = v; }
|
||||
public String getInMatNo() { return inMatNo; }
|
||||
public void setInMatNo(String v) { this.inMatNo = v; }
|
||||
public BigDecimal getInMatThick() { return inMatThick; }
|
||||
public void setInMatThick(BigDecimal v) { this.inMatThick = v; }
|
||||
public BigDecimal getInMatWidth() { return inMatWidth; }
|
||||
public void setInMatWidth(BigDecimal v) { this.inMatWidth = v; }
|
||||
public BigDecimal getInMatWt() { return inMatWt; }
|
||||
public void setInMatWt(BigDecimal v) { this.inMatWt = v; }
|
||||
public BigDecimal getInMatLen() { return inMatLen; }
|
||||
public void setInMatLen(BigDecimal v) { this.inMatLen = v; }
|
||||
public BigDecimal getInMatInDia() { return inMatInDia; }
|
||||
public void setInMatInDia(BigDecimal v) { this.inMatInDia = v; }
|
||||
public BigDecimal getInMatDia() { return inMatDia; }
|
||||
public void setInMatDia(BigDecimal v) { this.inMatDia = v; }
|
||||
public String getPono() { return pono; }
|
||||
public void setPono(String v) { this.pono = v; }
|
||||
public String getSgSign() { return sgSign; }
|
||||
public void setSgSign(String v) { this.sgSign = v; }
|
||||
public String getOutMatNo() { return outMatNo; }
|
||||
public void setOutMatNo(String v) { this.outMatNo = v; }
|
||||
public BigDecimal getOutThick() { return outThick; }
|
||||
public void setOutThick(BigDecimal v) { this.outThick = v; }
|
||||
public Long getRecipeId() { return recipeId; }
|
||||
public void setRecipeId(Long v) { this.recipeId = v; }
|
||||
public String getRecipeNo() { return recipeNo; }
|
||||
public void setRecipeNo(String v) { this.recipeNo = v; }
|
||||
public String getDelFlag() { return delFlag; }
|
||||
public void setDelFlag(String v) { this.delFlag = v; }
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.ruoyi.mill.mapper;
|
||||
|
||||
import com.ruoyi.mill.domain.MillProcessPass;
|
||||
import java.util.List;
|
||||
|
||||
public interface MillProcessPassMapper {
|
||||
List<MillProcessPass> selectByRecipeId(Long recipeId);
|
||||
int insertBatch(List<MillProcessPass> list);
|
||||
int deleteByRecipeId(Long recipeId);
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.ruoyi.mill.mapper;
|
||||
|
||||
import com.ruoyi.mill.domain.MillProcessRecipe;
|
||||
import java.util.List;
|
||||
|
||||
public interface MillProcessRecipeMapper {
|
||||
List<MillProcessRecipe> selectList(MillProcessRecipe query);
|
||||
MillProcessRecipe selectById(Long id);
|
||||
MillProcessRecipe selectByRecipeNo(String recipeNo);
|
||||
int insert(MillProcessRecipe recipe);
|
||||
int update(MillProcessRecipe recipe);
|
||||
int deleteById(Long id);
|
||||
int deleteBatchByIds(Long[] ids);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.ruoyi.mill.mapper;
|
||||
|
||||
import com.ruoyi.mill.domain.MillProductionPlan;
|
||||
import java.util.List;
|
||||
|
||||
public interface MillProductionPlanMapper {
|
||||
List<MillProductionPlan> selectList(MillProductionPlan query);
|
||||
MillProductionPlan selectById(Long id);
|
||||
MillProductionPlan selectByPlanNo(String planNo);
|
||||
int insert(MillProductionPlan plan);
|
||||
int update(MillProductionPlan plan);
|
||||
int deleteById(Long id);
|
||||
/** 将 sortNo >= targetSort 的记录全部 +1(上移腾位) */
|
||||
int incrementSortFrom(int targetSort);
|
||||
/** 交换两条记录的 sortNo */
|
||||
int updateSortNo(Long id, int sortNo);
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.ruoyi.mill.service;
|
||||
|
||||
import com.ruoyi.mill.domain.MillProcessRecipe;
|
||||
import java.util.List;
|
||||
|
||||
public interface IMillProcessRecipeService {
|
||||
List<MillProcessRecipe> selectList(MillProcessRecipe query);
|
||||
/** 查询方案详情(含道次列表) */
|
||||
MillProcessRecipe selectDetailById(Long id);
|
||||
int save(MillProcessRecipe recipe);
|
||||
int update(MillProcessRecipe recipe);
|
||||
int deleteByIds(Long[] ids);
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.ruoyi.mill.service;
|
||||
|
||||
import com.ruoyi.mill.domain.MillProductionPlan;
|
||||
import java.util.List;
|
||||
|
||||
public interface IMillProductionPlanService {
|
||||
List<MillProductionPlan> selectList(MillProductionPlan query);
|
||||
MillProductionPlan selectById(Long id);
|
||||
int insert(MillProductionPlan plan);
|
||||
int update(MillProductionPlan plan);
|
||||
int deleteById(Long id);
|
||||
int moveUp(Long id);
|
||||
int moveDown(Long id);
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.ruoyi.mill.service.impl;
|
||||
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.mill.domain.MillProcessPass;
|
||||
import com.ruoyi.mill.domain.MillProcessRecipe;
|
||||
import com.ruoyi.mill.mapper.MillProcessPassMapper;
|
||||
import com.ruoyi.mill.mapper.MillProcessRecipeMapper;
|
||||
import com.ruoyi.mill.service.IMillProcessRecipeService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class MillProcessRecipeServiceImpl implements IMillProcessRecipeService {
|
||||
|
||||
@Autowired private MillProcessRecipeMapper recipeMapper;
|
||||
@Autowired private MillProcessPassMapper passMapper;
|
||||
|
||||
@Override
|
||||
public List<MillProcessRecipe> selectList(MillProcessRecipe query) {
|
||||
return recipeMapper.selectList(query);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MillProcessRecipe selectDetailById(Long id) {
|
||||
MillProcessRecipe recipe = recipeMapper.selectById(id);
|
||||
if (recipe != null) {
|
||||
recipe.setPassList(passMapper.selectByRecipeId(id));
|
||||
}
|
||||
return recipe;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int save(MillProcessRecipe recipe) {
|
||||
String user = SecurityUtils.getUsername();
|
||||
recipe.setCreateBy(user);
|
||||
recipe.setUpdateBy(user);
|
||||
recipeMapper.insert(recipe);
|
||||
savePassList(recipe);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int update(MillProcessRecipe recipe) {
|
||||
recipe.setUpdateBy(SecurityUtils.getUsername());
|
||||
recipeMapper.update(recipe);
|
||||
// 先删除旧道次,再重新插入
|
||||
passMapper.deleteByRecipeId(recipe.getId());
|
||||
savePassList(recipe);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int deleteByIds(Long[] ids) {
|
||||
for (Long id : ids) {
|
||||
passMapper.deleteByRecipeId(id);
|
||||
}
|
||||
return recipeMapper.deleteBatchByIds(ids);
|
||||
}
|
||||
|
||||
private void savePassList(MillProcessRecipe recipe) {
|
||||
List<MillProcessPass> list = recipe.getPassList();
|
||||
if (list == null || list.isEmpty()) return;
|
||||
String user = SecurityUtils.getUsername();
|
||||
for (MillProcessPass p : list) {
|
||||
p.setRecipeId(recipe.getId());
|
||||
p.setCreateBy(user);
|
||||
p.setUpdateBy(user);
|
||||
}
|
||||
passMapper.insertBatch(list);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package com.ruoyi.mill.service.impl;
|
||||
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.mill.domain.MillProductionPlan;
|
||||
import com.ruoyi.mill.mapper.MillProductionPlanMapper;
|
||||
import com.ruoyi.mill.service.IMillProductionPlanService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class MillProductionPlanServiceImpl implements IMillProductionPlanService {
|
||||
|
||||
@Autowired private MillProductionPlanMapper planMapper;
|
||||
|
||||
@Override
|
||||
public List<MillProductionPlan> selectList(MillProductionPlan query) {
|
||||
return planMapper.selectList(query);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MillProductionPlan selectById(Long id) {
|
||||
return planMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insert(MillProductionPlan plan) {
|
||||
String user = SecurityUtils.getUsername();
|
||||
plan.setCreateBy(user);
|
||||
plan.setUpdateBy(user);
|
||||
// 新计划追加到队列末尾
|
||||
List<MillProductionPlan> all = planMapper.selectList(new MillProductionPlan());
|
||||
plan.setSortNo(all.size() + 1);
|
||||
return planMapper.insert(plan);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(MillProductionPlan plan) {
|
||||
plan.setUpdateBy(SecurityUtils.getUsername());
|
||||
return planMapper.update(plan);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteById(Long id) {
|
||||
return planMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int moveUp(Long id) {
|
||||
MillProductionPlan cur = planMapper.selectById(id);
|
||||
if (cur == null || cur.getSortNo() <= 1) return 0;
|
||||
// 找上一条
|
||||
MillProductionPlan query = new MillProductionPlan();
|
||||
List<MillProductionPlan> all = planMapper.selectList(query);
|
||||
MillProductionPlan prev = all.stream()
|
||||
.filter(p -> p.getSortNo() == cur.getSortNo() - 1)
|
||||
.findFirst().orElse(null);
|
||||
if (prev == null) return 0;
|
||||
planMapper.updateSortNo(cur.getId(), prev.getSortNo());
|
||||
planMapper.updateSortNo(prev.getId(), cur.getSortNo());
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int moveDown(Long id) {
|
||||
MillProductionPlan cur = planMapper.selectById(id);
|
||||
if (cur == null) return 0;
|
||||
List<MillProductionPlan> all = planMapper.selectList(new MillProductionPlan());
|
||||
MillProductionPlan next = all.stream()
|
||||
.filter(p -> p.getSortNo() == cur.getSortNo() + 1)
|
||||
.findFirst().orElse(null);
|
||||
if (next == null) return 0;
|
||||
planMapper.updateSortNo(cur.getId(), next.getSortNo());
|
||||
planMapper.updateSortNo(next.getId(), cur.getSortNo());
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user