feat: 改造为冷轧双机架二级控制系统

- 删除 ruoyi-flowable 模块,移除所有 Flowable 依赖
- 新建 ruoyi-mill 业务模块:
  * protocol: iXComPCS UDP 电文编解码器(7条电文完整定义)
  * udp: UdpServer/UdpSender/TelegramDispatcher
  * domain: MillPlan / MillProductionResult
  * service/controller: 生产计划、产出管理骨架
- 前端改造为工业深色主题(深海军蓝 + 工业青色)
- 系统标题更新为"冷轧双机架二级控制系统"
- application.yml 新增 mill.udp 配置节

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-28 12:58:22 +08:00
parent 30764b5854
commit 7648a56a0d
66 changed files with 1579 additions and 6169 deletions

View File

@@ -0,0 +1,128 @@
package com.ruoyi.mill.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.math.BigDecimal;
/**
* 冷轧生产计划 — 对应 2FK101 作业命令信息
*/
public class MillPlan extends BaseEntity {
@Excel(name = "计划号")
private String planNo;
@Excel(name = "序号")
private String matSeqNo;
@Excel(name = "机组代码")
private String unitCode;
@Excel(name = "计划类型")
private String planType;
/** 计划状态: 0-待生产 1-生产中 2-完成 3-撤销 */
@Excel(name = "计划状态")
private Integer planStatus;
@Excel(name = "入口钢卷号")
private String inMatNo;
@Excel(name = "入口厚度(mm)")
private BigDecimal inMatThick;
@Excel(name = "入口最大厚度(mm)")
private BigDecimal inMatThickMax;
@Excel(name = "入口最小厚度(mm)")
private BigDecimal inMatThickMin;
@Excel(name = "入口宽度(mm)")
private BigDecimal inMatWidth;
@Excel(name = "入口重量(t)")
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 = "内部钢卷号")
private String custInMatNo;
@Excel(name = "备注")
private String remark;
// ---- getters / setters ----
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 Integer getPlanStatus() { return planStatus; }
public void setPlanStatus(Integer v) { this.planStatus = 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 getInMatThickMax() { return inMatThickMax; }
public void setInMatThickMax(BigDecimal v) { this.inMatThickMax = v; }
public BigDecimal getInMatThickMin() { return inMatThickMin; }
public void setInMatThickMin(BigDecimal v) { this.inMatThickMin = 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 String getCustInMatNo() { return custInMatNo; }
public void setCustInMatNo(String v) { this.custInMatNo = v; }
public String getRemark() { return remark; }
public void setRemark(String v) { this.remark = v; }
}

View File

@@ -0,0 +1,158 @@
package com.ruoyi.mill.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.math.BigDecimal;
/**
* 冷轧产出信息 — 对应 K12F03 生产信息电文
*/
public class MillProductionResult extends BaseEntity {
/** 操作标识: I-新增 U-修改 D-删除 */
@Excel(name = "操作标识")
private String flag;
@Excel(name = "计划号")
private String planNo;
@Excel(name = "序号")
private Integer seqNo;
@Excel(name = "机组代码")
private String unitCode;
@Excel(name = "产出序号")
private String procSeqNo;
@Excel(name = "产出类型")
private String annealFlag;
@Excel(name = "入口钢卷号")
private String inMatNo;
@Excel(name = "入口重量(t)")
private Integer inMatWt;
@Excel(name = "入口厚度(mm)")
private BigDecimal inMatThick;
@Excel(name = "入口宽度(mm)")
private BigDecimal inMatWidth;
@Excel(name = "出口钢卷号")
private String outMatNo;
@Excel(name = "内部钢卷号")
private String custMatNo;
@Excel(name = "出口实际重量(t)")
private Integer outMatActWt;
@Excel(name = "出口实际厚度(mm)")
private BigDecimal outMatActThick;
@Excel(name = "出口实际宽度(mm)")
private BigDecimal outMatActWidth;
@Excel(name = "出口实际长度(m)")
private BigDecimal outMatActLen;
@Excel(name = "出口内径(mm)")
private BigDecimal outMatActInnerDia;
@Excel(name = "出口外径(mm)")
private BigDecimal outMatActOuterDia;
@Excel(name = "生产班次")
private String prodShiftNo;
@Excel(name = "生产班组")
private String prodShiftGroup;
@Excel(name = "开始时刻")
private String startProdTime;
@Excel(name = "结束时刻")
private String endProdTime;
@Excel(name = "炉台号")
private String socketNo;
@Excel(name = "备注")
private String remark;
// ---- getters / setters ----
public String getFlag() { return flag; }
public void setFlag(String v) { this.flag = v; }
public String getPlanNo() { return planNo; }
public void setPlanNo(String v) { this.planNo = v; }
public Integer getSeqNo() { return seqNo; }
public void setSeqNo(Integer v) { this.seqNo = v; }
public String getUnitCode() { return unitCode; }
public void setUnitCode(String v) { this.unitCode = v; }
public String getProcSeqNo() { return procSeqNo; }
public void setProcSeqNo(String v) { this.procSeqNo = v; }
public String getAnnealFlag() { return annealFlag; }
public void setAnnealFlag(String v) { this.annealFlag = v; }
public String getInMatNo() { return inMatNo; }
public void setInMatNo(String v) { this.inMatNo = v; }
public Integer getInMatWt() { return inMatWt; }
public void setInMatWt(Integer v) { this.inMatWt = 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 String getOutMatNo() { return outMatNo; }
public void setOutMatNo(String v) { this.outMatNo = v; }
public String getCustMatNo() { return custMatNo; }
public void setCustMatNo(String v) { this.custMatNo = v; }
public Integer getOutMatActWt() { return outMatActWt; }
public void setOutMatActWt(Integer v) { this.outMatActWt = v; }
public BigDecimal getOutMatActThick() { return outMatActThick; }
public void setOutMatActThick(BigDecimal v) { this.outMatActThick = v; }
public BigDecimal getOutMatActWidth() { return outMatActWidth; }
public void setOutMatActWidth(BigDecimal v) { this.outMatActWidth = v; }
public BigDecimal getOutMatActLen() { return outMatActLen; }
public void setOutMatActLen(BigDecimal v) { this.outMatActLen = v; }
public BigDecimal getOutMatActInnerDia() { return outMatActInnerDia; }
public void setOutMatActInnerDia(BigDecimal v) { this.outMatActInnerDia = v; }
public BigDecimal getOutMatActOuterDia() { return outMatActOuterDia; }
public void setOutMatActOuterDia(BigDecimal v) { this.outMatActOuterDia = v; }
public String getProdShiftNo() { return prodShiftNo; }
public void setProdShiftNo(String v) { this.prodShiftNo = v; }
public String getProdShiftGroup() { return prodShiftGroup; }
public void setProdShiftGroup(String v) { this.prodShiftGroup = v; }
public String getStartProdTime() { return startProdTime; }
public void setStartProdTime(String v) { this.startProdTime = v; }
public String getEndProdTime() { return endProdTime; }
public void setEndProdTime(String v) { this.endProdTime = v; }
public String getSocketNo() { return socketNo; }
public void setSocketNo(String v) { this.socketNo = v; }
public String getRemark() { return remark; }
public void setRemark(String v) { this.remark = v; }
}