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:
2026-04-28 14:10:10 +08:00
parent ffe3a0e612
commit 3e0484b55c
21 changed files with 1930 additions and 0 deletions

View File

@@ -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; }
}

View File

@@ -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; }
}

View File

@@ -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; }
}