From 22ed5bf746e78f828a3e3b6634bde00893bc4e08 Mon Sep 17 00:00:00 2001 From: Allenxy <13762749+chaosallen@user.noreply.gitee.com> Date: Sat, 23 Aug 2025 16:28:09 +0800 Subject: [PATCH] =?UTF-8?q?init():=20=E8=AE=A1=E5=88=92=E5=92=8C=E4=BA=A7?= =?UTF-8?q?=E5=87=BA=E4=BB=A3=E7=A0=81=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constants/enums/L1OperateMatEnum.java | 23 +- .../constants/enums/WebOperateMatEnum.java | 63 +-- .../controller/CrmPdiPlanController.java | 6 + .../controller/CrmPdoExcoilController.java | 6 +- .../business/controller/TrackController.java | 8 - .../com/fizz/business/domain/CrmPdiPlan.java | 400 +++++++++++++----- .../fizz/business/domain/CrmPdoExcoil.java | 163 +++---- .../com/fizz/business/domain/HalfReturn.java | 4 +- .../com/fizz/business/domain/PdoExcoil.java | 3 - .../com/fizz/business/dto/CoilHeadDTO.java | 2 +- .../fizz/business/dto/CoilPositionDTO.java | 2 +- .../java/com/fizz/business/dto/MatmapDTO.java | 2 +- .../com/fizz/business/dto/PdoExCoilDTO.java | 31 +- .../business/form/ChangePlanStatusForm.java | 2 +- .../fizz/business/form/CrmPdiPlanForm.java | 1 + .../fizz/business/form/CrmPdoExcoilForm.java | 2 +- .../fizz/business/form/L1OperateMatForm.java | 2 +- .../fizz/business/form/OperateMatForm.java | 2 +- .../com/fizz/business/form/PlanQueryForm.java | 23 +- .../fizz/business/form/WebOperateMatForm.java | 2 +- .../business/service/CrmPdiPlanService.java | 15 +- .../business/service/CrmPdoExcoilService.java | 6 +- .../business/service/PdoExCoilService.java | 2 +- .../fizz/business/service/TrackService.java | 3 - .../service/client/PdiPlanClient.java | 79 ---- .../service/hanle/EntryMovementHandler.java | 62 ++- .../service/impl/CrmPdiPlanServiceImpl.java | 64 ++- .../service/impl/CrmPdoExcoilServiceImpl.java | 34 +- .../service/impl/PdoExCoilServiceImpl.java | 90 ++-- .../service/impl/TrackServiceImpl.java | 63 +-- .../com/fizz/business/utils/CalcUtil.java | 20 +- .../com/fizz/business/utils/MatmapUtil.java | 2 +- .../com/fizz/business/vo/CrmPdiPlanVO.java | 400 +++++++++++++----- 33 files changed, 937 insertions(+), 650 deletions(-) delete mode 100644 business/src/main/java/com/fizz/business/service/client/PdiPlanClient.java diff --git a/business/src/main/java/com/fizz/business/constants/enums/L1OperateMatEnum.java b/business/src/main/java/com/fizz/business/constants/enums/L1OperateMatEnum.java index e577577..5b44934 100644 --- a/business/src/main/java/com/fizz/business/constants/enums/L1OperateMatEnum.java +++ b/business/src/main/java/com/fizz/business/constants/enums/L1OperateMatEnum.java @@ -6,11 +6,12 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import com.fizz.business.form.ChangePlanStatusForm; import com.fizz.business.form.L1OperateMatForm; -import com.fizz.business.service.client.PdiPlanClient; +import com.fizz.business.service.CrmPdiPlanService; import com.fizz.business.service.client.RedisCacheManager; import com.fizz.business.service.impl.BeanFactory; import com.fizz.business.utils.MatmapUtil; import com.fizz.business.utils.WebSocketUtil; +import com.fizz.business.vo.CrmPdiPlanVO; import com.fizz.business.vo.PdiPlanVO; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; @@ -74,12 +75,10 @@ public enum L1OperateMatEnum implements IEnum, IOperateMat status = Lists.newArrayList(PlanStatusEnum.PRODUCING.name(), PlanStatusEnum.PRODUCT.name()); - PdiPlanClient planClient = BeanFactory.getBean(PdiPlanClient.class); - PdiPlanVO plan = planClient.detail(form.getPlanId()); + CrmPdiPlanService planClient = BeanFactory.getBean(CrmPdiPlanService.class); + CrmPdiPlanVO plan = planClient.getByCoilIdAndOperId(form.getEntryMatId()); Assert.notNull(plan, "计划[{}]不存在", plan.getId()); - if (!planClient.isVirtualPlan(plan.getId())) { - Assert.isTrue(status.contains(plan.getStatus()), "当前状态[{}]不支持甩尾", plan.getStatus()); - } + MatmapUtil.clearMatmap(form.getPorIdx()); WebSocketUtil.sendSignalMsg(form); WebSocketUtil.sendMatmapMsg(); @@ -114,15 +113,9 @@ public enum L1OperateMatEnum implements IEnum, IOperateMat, IOperateMat, IOperateMat status = Lists.newArrayList(PlanStatusEnum.ONLINE.name()); - PdiPlanClient planClient = BeanFactory.getBean(PdiPlanClient.class); - PdiPlanVO plan = planClient.detail(form.getPlanId()); - if (Objects.nonNull(plan) && !planClient.isVirtualPlan(plan.getId())) { + CrmPdiPlanService planClient = BeanFactory.getBean(CrmPdiPlanService.class); + CrmPdiPlanVO plan = planClient.getByCoilIdAndOperId(form.getEntryMatId()); + if (Objects.nonNull(plan) ) { Assert.isTrue(!status.contains(plan.getStatus()), "当前状态[{}]不支持甩尾", plan.getStatus()); } MatmapUtil.clearMatmap(form.getPorIdx()); @@ -192,15 +189,9 @@ public enum WebOperateMatEnum implements IEnum, IOperateMat, IOperateMat, IOperateMat add(@RequestParam String coilId) { + return R.ok(crmPdiPlanService.getByCoilIdAndOperId(coilId)); + } + @PutMapping("/update") @Operation(summary ="修改计划") public R update(@RequestBody CrmPdiPlan crmPdiPlan) { diff --git a/business/src/main/java/com/fizz/business/controller/CrmPdoExcoilController.java b/business/src/main/java/com/fizz/business/controller/CrmPdoExcoilController.java index bf19367..62764e1 100644 --- a/business/src/main/java/com/fizz/business/controller/CrmPdoExcoilController.java +++ b/business/src/main/java/com/fizz/business/controller/CrmPdoExcoilController.java @@ -37,11 +37,11 @@ public class CrmPdoExcoilController { return R.ok(crmPdoExcoilService.updateCrmPdoExcoil(crmPdoExcoil)); } - @DeleteMapping("/delete/{excoilid}/{operid}") + @DeleteMapping("/delete/{excoilid}/{planId}") @Operation(summary ="删除实绩") - public R delete(@PathVariable String excoilid, @PathVariable Integer operid) { - return R.ok(crmPdoExcoilService.deleteCrmPdoExcoil(excoilid, operid)); + public R delete(@PathVariable String excoilid, @PathVariable String planId) { + return R.ok(crmPdoExcoilService.deleteCrmPdoExcoil(excoilid, planId)); } @PostMapping("/list") diff --git a/business/src/main/java/com/fizz/business/controller/TrackController.java b/business/src/main/java/com/fizz/business/controller/TrackController.java index e79a57b..a47d55c 100644 --- a/business/src/main/java/com/fizz/business/controller/TrackController.java +++ b/business/src/main/java/com/fizz/business/controller/TrackController.java @@ -50,14 +50,6 @@ public class TrackController { return R.ok(trackService.getReturnInfo(posIdx)); } - @GetMapping("/half/return/mat/id") - @Operation(description = "获取半卷回退卷号") - public R getHalfReturnMatId(@RequestParam("planId") Long planId, - @RequestParam("entryMatId") String entryMatId) { - - return R.ok(trackService.getHalfReturnMatId(planId, entryMatId)); - } - @GetMapping("/coil/position") @Operation(description = "获取跟踪带钢位置") public R getCoilPosition() { diff --git a/business/src/main/java/com/fizz/business/domain/CrmPdiPlan.java b/business/src/main/java/com/fizz/business/domain/CrmPdiPlan.java index af02fdb..ded6278 100644 --- a/business/src/main/java/com/fizz/business/domain/CrmPdiPlan.java +++ b/business/src/main/java/com/fizz/business/domain/CrmPdiPlan.java @@ -2,6 +2,7 @@ package com.fizz.business.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; @@ -10,111 +11,306 @@ import java.time.LocalDateTime; @Data @TableName("crm_pdi_plan") +@Schema(description = "钢卷计划信息表") public class CrmPdiPlan implements Serializable { private static final long serialVersionUID = 1L; @TableId - private Long id; // 主键ID + @Schema(description = "主键ID") + private Long id; - private Integer seqid; // 主键ID - private String coilid; // 钢卷号 - private Integer picklingCount; // 酸洗次数 - private Integer dummyCoilFlag; // 虚卷标识 - private Integer seqno; // 顺序号 - private Integer status; // 状态 - private String planid; // 计划ID - private String planType; // 计划类型 - private BigDecimal yieldPoint; // 屈服点 - private BigDecimal entryWeight; // 入口重量(t) - private BigDecimal entryThick; // 入口厚度(mm) - private BigDecimal entryWidth; // 入口宽度(mm) - private BigDecimal entryLength; // 入口长度(mm) - private BigDecimal entryOuterDiameter; // 入口外径(mm) - private BigDecimal entryInnerDiameter; // 入口内径(mm) - private BigDecimal exitInnerDiameter; // 出口内径(mm) - private String steelGrade; // 钢种 - private String exitCoilid; // 出口卷号 - private Integer tlvFlag; // 张力平整标识 - private String orderNo; // 订单号 - private String custommerCode; // 客户代码 - private BigDecimal orderThick; // 订单厚度(mm) - private BigDecimal orderWidth; // 订单宽度(mm) - private BigDecimal orderLenLow; // 订单长度下限(mm) - private BigDecimal orderLenUp; // 订单长度上限(mm) - private BigDecimal orderWt; // 订单重量(t) - private BigDecimal orderWtLow; // 订单重量下限(t) - private BigDecimal orderWtUp; // 订单重量上限(t) - private BigDecimal orderMetCoatTop; // 订单镀层上 - private BigDecimal orderMetCoatBot; // 订单镀层下 - private String finalUse; // 最终用途 - private String hotCoilCode; // 热卷代码 - private BigDecimal exitLengthTar; // 出口目标长度(mm) - private BigDecimal exitLengthTolMax; // 出口长度公差最大值(mm) - private BigDecimal exitLengthTolMin; // 出口长度公差最小值(mm) - private BigDecimal exitThickTar; // 出口目标厚度(mm) - private BigDecimal exitThickTolMax; // 出口厚度公差最大值(mm) - private BigDecimal exitThickTolMin; // 出口厚度公差最小值(mm) - private BigDecimal exitWidthTar; // 出口目标宽度(mm) - private BigDecimal exitWidthTolMax; // 出口宽度公差最大值(mm) - private BigDecimal exitWidthTolMin; // 出口宽度公差最小值(mm) - private String nextWholeBacklogCode; // 下道全流程积压代码 - private String prevWholeBacklogCode; // 上道全流程积压代码 - private String exitWtMode; // 出口重量模式 - private Integer splitNum; // 分卷数量 - private BigDecimal exitWeight1; // 出口重量1 - private BigDecimal exitWeight2; // 出口重量2 - private BigDecimal exitWeight3; // 出口重量3 - private BigDecimal exitWeight4; // 出口重量4 - private BigDecimal exitWeight5; // 出口重量5 - private BigDecimal exitWeight6; // 出口重量6 - private String headSampleMode; // 头部取样模式 - private String headSamplePosition; // 头部取样位置 - private BigDecimal headSampleLength; // 头部取样长度(mm) - private String headSamplePlace; // 头部取样地点 - private Integer headSampleNum; // 头部取样数量 - private String tailSampleMode; // 尾部取样模式 - private String tailSamplePosition; // 尾部取样位置 - private BigDecimal tailSampleLength; // 尾部取样长度(mm) - private String tailSamplePlace; // 尾部取样地点 - private Integer tailSampleNum; // 尾部取样数量 - private LocalDateTime timestamp; // 时间戳 - private LocalDateTime onlineDate; // 上线时间 - private LocalDateTime startDate; // 开始时间 - private LocalDateTime endDate; // 结束时间 - private LocalDateTime furInDate; // 进炉时间 - private LocalDateTime furOutDate; // 出炉时间 - private LocalDateTime createTime; // 创建时间 - private LocalDateTime updateTime; // 更新时间 - private String surfaceVice; // 副面 - private String weldCode; // 焊缝代码 - private Integer spmFlag; // SPM标识 - private BigDecimal spmElongation; // SPM延伸率(%) - private BigDecimal spmRollforce; // SPM轧制力 - private String spmProcessType; // SPM工艺类型 - private String spmControlMode; // SPM控制模式 - private BigDecimal spmBendingForce; // SPM弯曲力 - private BigDecimal spmCrimpingRollMesh; // SPM咬入辊目 - private BigDecimal spmBillyRollMesh; // SPM精轧辊目 - private Integer trimFlag; // 切边标识 - private String tlvMode; // 张力平整模式 - private BigDecimal tlvElongation; // 张力平整延伸率(%) - private Integer chromating; // 钝化标识 - private String coatingCode; // 镀层代码 - private Integer oilingFlag; // 涂油标识 - private String oilingType; // 涂油类型 - private BigDecimal oilingTop; // 涂油上 - private BigDecimal oilingBottom; // 涂油下 - private String heatCycle; // 热循环 - private String coatingSelection; // 镀层选择 - private String coatingType; // 镀层类型 - private String chemTreatMode; // 化学处理模式 - private BigDecimal aimWeightTop; // 目标重量上 - private BigDecimal aimWeightBottom; // 目标重量下 - private BigDecimal maxTolWeightTop; // 最大公差重量上 - private BigDecimal maxTolWeightBottom; // 最大公差重量下 - private BigDecimal headendGaugeLength; // 头端测厚长度(mm) - private BigDecimal tailendGaugeLength; // 尾端测厚长度(mm) - private String origin; // 产地 - private String originCoilid; // 原卷号 -} \ No newline at end of file + @Schema(description = "顺序号") + private Integer seqid; + + @Schema(description = "钢卷号") + private String coilid; + + @Schema(description = "机组号") + private String unitCode; + + @Schema(description = "虚卷标识") + private Integer dummyCoilFlag; + + @Schema(description = "状态") + private String status; + + @Schema(description = "计划ID") + private String planid; + + @Schema(description = "计划类型") + private String planType; + + @Schema(description = "屈服点") + private BigDecimal yieldPoint; + + @Schema(description = "入口重量(t)") + private BigDecimal entryWeight; + + @Schema(description = "入口厚度(mm)") + private BigDecimal entryThick; + + @Schema(description = "入口宽度(mm)") + private BigDecimal entryWidth; + + @Schema(description = "入口长度(mm)") + private BigDecimal entryLength; + + @Schema(description = "入口外径(mm)") + private BigDecimal entryOuterDiameter; + + @Schema(description = "入口内径(mm)") + private BigDecimal entryInnerDiameter; + + @Schema(description = "出口内径(mm)") + private BigDecimal exitInnerDiameter; + + @Schema(description = "钢种") + private String steelGrade; + + @Schema(description = "出口卷号") + private String exitCoilid; + + @Schema(description = "张力平整标识") + private Integer tlvFlag; + + @Schema(description = "订单号") + private String orderNo; + + @Schema(description = "客户代码") + private String custommerCode; + + @Schema(description = "订单厚度(mm)") + private BigDecimal orderThick; + + @Schema(description = "订单宽度(mm)") + private BigDecimal orderWidth; + + @Schema(description = "订单长度下限(mm)") + private BigDecimal orderLenLow; + + @Schema(description = "订单长度上限(mm)") + private BigDecimal orderLenUp; + + @Schema(description = "订单重量(t)") + private BigDecimal orderWt; + + @Schema(description = "订单重量下限(t)") + private BigDecimal orderWtLow; + + @Schema(description = "订单重量上限(t)") + private BigDecimal orderWtUp; + + @Schema(description = "订单镀层上") + private BigDecimal orderMetCoatTop; + + @Schema(description = "订单镀层下") + private BigDecimal orderMetCoatBot; + + @Schema(description = "最终用途") + private String finalUse; + + @Schema(description = "热卷代码") + private String hotCoilCode; + + @Schema(description = "出口目标长度(mm)") + private BigDecimal exitLengthTar; + + @Schema(description = "出口长度公差最大值(mm)") + private BigDecimal exitLengthTolMax; + + @Schema(description = "出口长度公差最小值(mm)") + private BigDecimal exitLengthTolMin; + + @Schema(description = "出口目标厚度(mm)") + private BigDecimal exitThickTar; + + @Schema(description = "出口厚度公差最大值(mm)") + private BigDecimal exitThickTolMax; + + @Schema(description = "出口厚度公差最小值(mm)") + private BigDecimal exitThickTolMin; + + @Schema(description = "出口目标宽度(mm)") + private BigDecimal exitWidthTar; + + @Schema(description = "出口宽度公差最大值(mm)") + private BigDecimal exitWidthTolMax; + + @Schema(description = "出口宽度公差最小值(mm)") + private BigDecimal exitWidthTolMin; + + @Schema(description = "下道全流程积压代码") + private String nextWholeBacklogCode; + + @Schema(description = "上道全流程积压代码") + private String prevWholeBacklogCode; + + @Schema(description = "出口重量模式") + private String exitWtMode; + + @Schema(description = "分卷数量") + private Integer splitNum; + + @Schema(description = "出口重量1") + private BigDecimal exitWeight1; + + @Schema(description = "出口重量2") + private BigDecimal exitWeight2; + + @Schema(description = "出口重量3") + private BigDecimal exitWeight3; + + @Schema(description = "出口重量4") + private BigDecimal exitWeight4; + + @Schema(description = "出口重量5") + private BigDecimal exitWeight5; + + @Schema(description = "出口重量6") + private BigDecimal exitWeight6; + + @Schema(description = "头部取样模式") + private String headSampleMode; + + @Schema(description = "头部取样位置") + private String headSamplePosition; + + @Schema(description = "头部取样长度(mm)") + private BigDecimal headSampleLength; + + @Schema(description = "头部取样地点") + private String headSamplePlace; + + @Schema(description = "头部取样数量") + private Integer headSampleNum; + + @Schema(description = "尾部取样模式") + private String tailSampleMode; + + @Schema(description = "尾部取样位置") + private String tailSamplePosition; + + @Schema(description = "尾部取样长度(mm)") + private BigDecimal tailSampleLength; + + @Schema(description = "尾部取样地点") + private String tailSamplePlace; + + @Schema(description = "尾部取样数量") + private Integer tailSampleNum; + + @Schema(description = "时间戳") + private LocalDateTime timestamp; + + @Schema(description = "上线时间") + private LocalDateTime onlineDate; + + @Schema(description = "开始时间") + private LocalDateTime startDate; + + @Schema(description = "结束时间") + private LocalDateTime endDate; + + @Schema(description = "进炉时间") + private LocalDateTime furInDate; + + @Schema(description = "出炉时间") + private LocalDateTime furOutDate; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; + + @Schema(description = "副面") + private String surfaceVice; + + @Schema(description = "焊缝代码") + private String weldCode; + + @Schema(description = "SPM标识") + private Integer spmFlag; + + @Schema(description = "SPM延伸率(%)") + private BigDecimal spmElongation; + + @Schema(description = "SPM轧制力") + private BigDecimal spmRollforce; + + @Schema(description = "SPM工艺类型") + private String spmProcessType; + + @Schema(description = "SPM控制模式") + private String spmControlMode; + + @Schema(description = "SPM弯曲力") + private BigDecimal spmBendingForce; + + @Schema(description = "SPM咬入辊目") + private BigDecimal spmCrimpingRollMesh; + + @Schema(description = "SPM精轧辊目") + private BigDecimal spmBillyRollMesh; + + @Schema(description = "切边标识") + private Integer trimFlag; + + @Schema(description = "张力平整模式") + private String tlvMode; + + @Schema(description = "张力平整延伸率(%)") + private BigDecimal tlvElongation; + + @Schema(description = "钝化标识") + private Integer chromating; + + @Schema(description = "镀层代码") + private String coatingCode; + + @Schema(description = "涂油标识") + private Integer oilingFlag; + + @Schema(description = "涂油类型") + private String oilingType; + + @Schema(description = "涂油上") + private BigDecimal oilingTop; + + @Schema(description = "涂油下") + private BigDecimal oilingBottom; + + @Schema(description = "热循环") + private String heatCycle; + + @Schema(description = "镀层选择") + private String coatingSelection; + + @Schema(description = "镀层类型") + private String coatingType; + + @Schema(description = "化学处理模式") + private String chemTreatMode; + + @Schema(description = "目标重量上") + private BigDecimal aimWeightTop; + + @Schema(description = "目标重量下") + private BigDecimal aimWeightBottom; + + @Schema(description = "最大公差重量上") + private BigDecimal maxTolWeightTop; + + @Schema(description = "最大公差重量下") + private BigDecimal maxTolWeightBottom; + + @Schema(description = "头端测厚长度(mm)") + private BigDecimal headendGaugeLength; + + @Schema(description = "尾端测厚长度(mm)") + private BigDecimal tailendGaugeLength; + + @Schema(description = "原卷号") + private String originCoilid; +} diff --git a/business/src/main/java/com/fizz/business/domain/CrmPdoExcoil.java b/business/src/main/java/com/fizz/business/domain/CrmPdoExcoil.java index d4cb60d..1ea33b3 100644 --- a/business/src/main/java/com/fizz/business/domain/CrmPdoExcoil.java +++ b/business/src/main/java/com/fizz/business/domain/CrmPdoExcoil.java @@ -12,103 +12,122 @@ import java.sql.Timestamp; import java.time.LocalDateTime; @Data -@TableName("crm_pdo_excoil") +@Schema(description = "钢卷生产数据表") public class CrmPdoExcoil implements Serializable { - @TableId(type = IdType.AUTO) - @Schema(description = "id") + private static final long serialVersionUID = 1L; + + @Schema(description = "主键id") private Long id; - @Schema(description = "成品卷ID") - private String exitCoilid; + @Schema(description = "成品卷") + private String exitMatId; - @Schema(description = "进入卷ID") - private String encoilid; + @Schema(description = "来料卷") + private String entryMatId; - @Schema(description = "钢种") - private String grade; + @Schema(description = "分切数") + private Integer subId; - @Schema(description = "多火轧制次数") - private Integer operid; + @Schema(description = "开始位置") + private Double startPosition; - @Schema(description = "分卷id") - private Integer subid; + @Schema(description = "结束位置") + private Double endPosition; - @Schema(description = "头部位置") - private Double headpos; + @Schema(description = "计划id") + private Long planId; - @Schema(description = "尾部位置") - private Double tailpos; + @Schema(description = "计划号") + private String planNo; - @Schema(description = "班次") - private String shift; + @Schema(description = "产品类型") + private String prodCode; - @Schema(description = "班组") - private String crew; + @Schema(description = "班号") + private String groupNo; - @Schema(description = "退火厚度") - private Double annealThick; - - @Schema(description = "入口厚度") - private Double entryThick; - - @Schema(description = "入口宽度") - private Double entryWidth; - - @Schema(description = "入口重量") - private Double entryWeight; - - @Schema(description = "成品厚度") - private Double exitThick; - - @Schema(description = "成品宽度") - private Double exitWidth; - - @Schema(description = "成品长度") - private Double exitLength; - - @Schema(description = "成品内径") - private Double exitInnerDiameter; - - @Schema(description = "理论出口重量") - private Double calcExitWeight; - - @Schema(description = "实际出口重量") - private Double measExitWeight; - - @Schema(description = "外径") - private Double outerDiameter; + @Schema(description = "组号") + private String shiftNo; @Schema(description = "状态") private String status; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Schema(description = "钢种") + private String steelGrade; + + @Schema(description = "来料厚度") + private Double entryThick; + + @Schema(description = "来料宽带") + private Double entryWidth; + + @Schema(description = "来料长度") + private Double entryLength; + + @Schema(description = "来料重量") + private Double entryWeight; + + @Schema(description = "上表面镀锌") + private Double weightTop; + + @Schema(description = "下表面镀锌") + private Double weightBottom; + + @Schema(description = "成品长度") + private Double exitLength; + + @Schema(description = "成品带涂料重量") + private Double exitNetWeight; + + @Schema(description = "理论重量") + private Double theoryWeight; + + @Schema(description = "实际重量") + private Double actualWeight; + + @Schema(description = "成品外径") + private Double exitOuterDiameter; + + @Schema(description = "成品厚度") + private Double exitThickness; + + @Schema(description = "成品宽度") + private Double exitWidth; + + @Schema(description = "客户") + private String customer; + @Schema(description = "上线时间") - private LocalDateTime onlineDate; + private LocalDateTime onlineTime; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Schema(description = "开始时间") - private LocalDateTime startDate; + private LocalDateTime startTime; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Schema(description = "结束时间") - private LocalDateTime endDate; + private LocalDateTime endTime; - @Schema(description = "插入日期") - private LocalDateTime insdate; + @Schema(description = "0-未删除 时间戳:已删除") + private Long delFlag; - @Schema(description = "质量") - private Double quality; + @Schema(description = "创建时间") + private LocalDateTime createTime; - @Schema(description = "热卷ID") - private String hotCoilid; + @Schema(description = "修改时间") + private LocalDateTime updateTime; - @Schema(description = "下机组代码") - private String nextUnit; + @Schema(description = "机组号") + private String unitCode; - @Schema(description = "备注") - private String comments; + @Schema(description = "工序号") + private String processCode; - @Schema(description = "目的地") - private String destination; -} + @Schema(description = "是否尾卷") + private Boolean lastFlag; + + @Schema(description = "是否分卷") + private Boolean separateFlag; + + @Schema(description = "计划来源:L3-L3计划,MANUAL-人工") + private String planOrigin; +} \ No newline at end of file diff --git a/business/src/main/java/com/fizz/business/domain/HalfReturn.java b/business/src/main/java/com/fizz/business/domain/HalfReturn.java index a916670..abe4140 100644 --- a/business/src/main/java/com/fizz/business/domain/HalfReturn.java +++ b/business/src/main/java/com/fizz/business/domain/HalfReturn.java @@ -20,8 +20,8 @@ import java.time.LocalDateTime; */ @Getter @Setter -@TableName("track_ca1_half_return") -@Schema(title = "TrackCa1HalfReturn对象", description = "半卷整卷回退表") +@TableName("cpg_half_return") +@Schema(title = "CpgHalfReturn对象", description = "半卷整卷回退表") public class HalfReturn implements Serializable { private static final long serialVersionUID = 1L; diff --git a/business/src/main/java/com/fizz/business/domain/PdoExcoil.java b/business/src/main/java/com/fizz/business/domain/PdoExcoil.java index 514523e..ea1bc0f 100644 --- a/business/src/main/java/com/fizz/business/domain/PdoExcoil.java +++ b/business/src/main/java/com/fizz/business/domain/PdoExcoil.java @@ -78,9 +78,6 @@ public class PdoExcoil implements Serializable { @Schema(description = "来料重量") private Double entryWeight; - @Schema(description = "实际来料重量,CP/ZR/CA需要修改") - private Double actualEntryWeight; - @Schema(description = "上表面镀锌") private Double weightTop; diff --git a/business/src/main/java/com/fizz/business/dto/CoilHeadDTO.java b/business/src/main/java/com/fizz/business/dto/CoilHeadDTO.java index 7edb79f..603ecc7 100644 --- a/business/src/main/java/com/fizz/business/dto/CoilHeadDTO.java +++ b/business/src/main/java/com/fizz/business/dto/CoilHeadDTO.java @@ -12,7 +12,7 @@ public class CoilHeadDTO implements Serializable { private boolean first; private String matId; private String planNo; - private Long planId; + private String planId; private double pos; private int posIdx; private int porIdx; diff --git a/business/src/main/java/com/fizz/business/dto/CoilPositionDTO.java b/business/src/main/java/com/fizz/business/dto/CoilPositionDTO.java index c50cf97..7dc4371 100644 --- a/business/src/main/java/com/fizz/business/dto/CoilPositionDTO.java +++ b/business/src/main/java/com/fizz/business/dto/CoilPositionDTO.java @@ -32,7 +32,7 @@ public class CoilPositionDTO implements Serializable { public static class CoilStripLocation { private String matId; private String planNo; - private Long planId; + private String planId; private double stripLocation; private Integer porId; } diff --git a/business/src/main/java/com/fizz/business/dto/MatmapDTO.java b/business/src/main/java/com/fizz/business/dto/MatmapDTO.java index 592d454..2eb193d 100644 --- a/business/src/main/java/com/fizz/business/dto/MatmapDTO.java +++ b/business/src/main/java/com/fizz/business/dto/MatmapDTO.java @@ -10,7 +10,7 @@ import java.io.Serializable; public class MatmapDTO implements Serializable { private String matId; private String planNo; - private Long planId; + private String planId; private String positionNameCn; private String positionNameEn; private int posIdx; diff --git a/business/src/main/java/com/fizz/business/dto/PdoExCoilDTO.java b/business/src/main/java/com/fizz/business/dto/PdoExCoilDTO.java index c8646b3..8a5d5cd 100644 --- a/business/src/main/java/com/fizz/business/dto/PdoExCoilDTO.java +++ b/business/src/main/java/com/fizz/business/dto/PdoExCoilDTO.java @@ -1,5 +1,6 @@ package com.fizz.business.dto; +import com.fizz.business.domain.CrmPdoExcoil; import com.fizz.business.domain.PdoExcoil; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; @@ -16,36 +17,8 @@ import java.util.List; */ @Getter @Setter -public class PdoExCoilDTO extends PdoExcoil implements Serializable { +public class PdoExCoilDTO extends CrmPdoExcoil implements Serializable { - @Schema(description = "机组号") - private String unitCode; - @Schema(description = "工序号") - private String processCode; - @Schema(description = "是否尾卷") - private boolean lastFlag; - @Schema(description = "是否分卷") - private boolean separateFlag; - @Schema(description = "是否并卷") - private boolean mergeFlag; - @Schema(description = "并卷数") - private int mergeNum; - @Schema(description = "计划来源:L3-L3计划,MANUAL-人工") - private String planOrigin; - @Schema(description = "并卷数据") - private List subCoilList; - @Schema(description = "子计划数据") - private List subPlanList; - @Schema(description = "是否实验卷") - private String isExperiment; - @Schema(description = "实验种类") - private String experimentType; - - @Schema(description = "工艺规程id") - private Long setupId; - - @Schema(description = "工艺规程名称") - private String setupName; } diff --git a/business/src/main/java/com/fizz/business/form/ChangePlanStatusForm.java b/business/src/main/java/com/fizz/business/form/ChangePlanStatusForm.java index 68776f0..5a2b176 100644 --- a/business/src/main/java/com/fizz/business/form/ChangePlanStatusForm.java +++ b/business/src/main/java/com/fizz/business/form/ChangePlanStatusForm.java @@ -25,7 +25,7 @@ public class ChangePlanStatusForm implements Serializable { private String operation; @NotNull(message = "计划id不能为空") @Schema(description = "计划id集合") - private Long id; + private String id; @Schema(description = "半卷回退新卷号") private String returnMatId; @Schema(description = "回退重量") diff --git a/business/src/main/java/com/fizz/business/form/CrmPdiPlanForm.java b/business/src/main/java/com/fizz/business/form/CrmPdiPlanForm.java index 6df6fcd..e696c1e 100644 --- a/business/src/main/java/com/fizz/business/form/CrmPdiPlanForm.java +++ b/business/src/main/java/com/fizz/business/form/CrmPdiPlanForm.java @@ -16,6 +16,7 @@ public class CrmPdiPlanForm { private Integer seqid; // 主键ID private String coilid; // 钢卷号 + private String unitCode; // 钢卷号 private Integer picklingCount; // 酸洗次数 private Integer dummyCoilFlag; // 虚卷标识 private Integer seqno; // 顺序号 diff --git a/business/src/main/java/com/fizz/business/form/CrmPdoExcoilForm.java b/business/src/main/java/com/fizz/business/form/CrmPdoExcoilForm.java index f233743..2326d15 100644 --- a/business/src/main/java/com/fizz/business/form/CrmPdoExcoilForm.java +++ b/business/src/main/java/com/fizz/business/form/CrmPdoExcoilForm.java @@ -10,7 +10,7 @@ public class CrmPdoExcoilForm { @Schema(description = "钢卷号") - private String encoilid; + private String coilid; @Schema(description = "开始日期") private String startDate; diff --git a/business/src/main/java/com/fizz/business/form/L1OperateMatForm.java b/business/src/main/java/com/fizz/business/form/L1OperateMatForm.java index 56981f1..cf4f135 100644 --- a/business/src/main/java/com/fizz/business/form/L1OperateMatForm.java +++ b/business/src/main/java/com/fizz/business/form/L1OperateMatForm.java @@ -25,7 +25,7 @@ public class L1OperateMatForm extends OperateMatForm implements Serializable { private L1OperateMatEnum operation; @Builder - public L1OperateMatForm(Integer porIdx, Integer trIdx, Long planId, String entryMatId, String planNo, L1OperateMatEnum operation) { + public L1OperateMatForm(Integer porIdx, Integer trIdx, String planId, String entryMatId, String planNo, L1OperateMatEnum operation) { super(porIdx, trIdx, planId, entryMatId, planNo); this.operation = operation; } diff --git a/business/src/main/java/com/fizz/business/form/OperateMatForm.java b/business/src/main/java/com/fizz/business/form/OperateMatForm.java index 9f31ade..0f541a8 100644 --- a/business/src/main/java/com/fizz/business/form/OperateMatForm.java +++ b/business/src/main/java/com/fizz/business/form/OperateMatForm.java @@ -31,7 +31,7 @@ public class OperateMatForm implements Serializable { @NotNull(message = "计划id不能为空") @Schema(description = "计划id") - private Long planId; + private String planId; @NotBlank(message = "钢卷号不能为空") @Schema(description = "钢卷号") diff --git a/business/src/main/java/com/fizz/business/form/PlanQueryForm.java b/business/src/main/java/com/fizz/business/form/PlanQueryForm.java index 03e3467..4bb7004 100644 --- a/business/src/main/java/com/fizz/business/form/PlanQueryForm.java +++ b/business/src/main/java/com/fizz/business/form/PlanQueryForm.java @@ -3,6 +3,7 @@ package com.fizz.business.form; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.math.BigDecimal; import java.time.LocalDateTime; @@ -12,33 +13,15 @@ public class PlanQueryForm { @Schema(description = "卷ID") private String coilid; - @Schema(description = "热轧卷ID") - private String hotCoilid; - - @Schema(description = "道次数") - private Integer passno; - @Schema(description = "入口厚度") - private Float entryThick; + private BigDecimal entryThick; @Schema(description = "入口宽度") - private Float entryWidth; - - @Schema(description = "入口内径") - private Integer entryInnerDiameter; - - @Schema(description = "入口外径") - private Integer entryOuterDiameter; + private BigDecimal entryWidth; @Schema(description = "状态") private String status; - @Schema(description = "记录日期") - private LocalDateTime insdate; - - @Schema(description = "上线时间") - private LocalDateTime onlineTime; - @Schema(description = "开始日期") private LocalDateTime startDate; diff --git a/business/src/main/java/com/fizz/business/form/WebOperateMatForm.java b/business/src/main/java/com/fizz/business/form/WebOperateMatForm.java index 053ffe6..c65fe39 100644 --- a/business/src/main/java/com/fizz/business/form/WebOperateMatForm.java +++ b/business/src/main/java/com/fizz/business/form/WebOperateMatForm.java @@ -37,7 +37,7 @@ public class WebOperateMatForm extends OperateMatForm implements Serializable { private Double coilLength; @Builder - public WebOperateMatForm(Integer porIdx, Integer trIdx, Long planId, String entryMatId, String planNo, WebOperateMatEnum operation, Double returnWeight, String returnRemark) { + public WebOperateMatForm(Integer porIdx, Integer trIdx, String planId, String entryMatId, String planNo, WebOperateMatEnum operation, Double returnWeight, String returnRemark) { super(porIdx, trIdx, planId, entryMatId, planNo); this.operation = operation; this.returnWeight = returnWeight; diff --git a/business/src/main/java/com/fizz/business/service/CrmPdiPlanService.java b/business/src/main/java/com/fizz/business/service/CrmPdiPlanService.java index 682c903..a929d9f 100644 --- a/business/src/main/java/com/fizz/business/service/CrmPdiPlanService.java +++ b/business/src/main/java/com/fizz/business/service/CrmPdiPlanService.java @@ -13,15 +13,20 @@ import java.util.List; public interface CrmPdiPlanService extends IService { - public CrmPdiPlanVO getByCoilIdAndOperId(String coilid); + CrmPdiPlanVO getByCoilIdAndOperId(String coilid); - public boolean addCrmPdiPlan(CrmPdiPlan crmPdiPlan); + boolean addCrmPdiPlan(CrmPdiPlan crmPdiPlan); - public boolean updateCrmPdiPlan(CrmPdiPlan crmPdiPlan); + boolean updateCrmPdiPlan(CrmPdiPlan crmPdiPlan); - public boolean deleteCrmPdiPlan(List coilid); + boolean deleteCrmPdiPlan(List coilid); - public List listAll(PlanQueryForm form); + List listAll(PlanQueryForm form); + /** + * 获取未生产的第一个钢卷(按顺序号或创建时间最早) + */ + CrmPdiPlan getFirstUnProducedCoil(); + void changeStatus(ChangePlanStatusForm build); } diff --git a/business/src/main/java/com/fizz/business/service/CrmPdoExcoilService.java b/business/src/main/java/com/fizz/business/service/CrmPdoExcoilService.java index ce6ea74..15c2553 100644 --- a/business/src/main/java/com/fizz/business/service/CrmPdoExcoilService.java +++ b/business/src/main/java/com/fizz/business/service/CrmPdoExcoilService.java @@ -1,7 +1,9 @@ package com.fizz.business.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.IService; import com.fizz.business.domain.CrmPdoExcoil; +import com.fizz.business.domain.PdoExcoil; import com.fizz.business.form.CrmPdoExcoilForm; import java.util.List; @@ -13,8 +15,10 @@ public interface CrmPdoExcoilService extends IService { boolean updateCrmPdoExcoil(CrmPdoExcoil crmPdoExcoil); - boolean deleteCrmPdoExcoil(String excoilid, Integer operid); + boolean deleteCrmPdoExcoil(String excoilid, String planId); List listAll(CrmPdoExcoilForm form); + + Long getNumber(String matId,String planId,Integer subNumber); } diff --git a/business/src/main/java/com/fizz/business/service/PdoExCoilService.java b/business/src/main/java/com/fizz/business/service/PdoExCoilService.java index c95ce35..4826a39 100644 --- a/business/src/main/java/com/fizz/business/service/PdoExCoilService.java +++ b/business/src/main/java/com/fizz/business/service/PdoExCoilService.java @@ -16,5 +16,5 @@ public interface PdoExCoilService { ExitCoilInfoDTO genExitCoilInfo(MatmapDTO trMatmap, ExitCutTypeEnum cutType); - void deleteExistPdo(Long planId); + void deleteExistPdo(String coilId, String planId); } diff --git a/business/src/main/java/com/fizz/business/service/TrackService.java b/business/src/main/java/com/fizz/business/service/TrackService.java index 391f111..6ca3937 100644 --- a/business/src/main/java/com/fizz/business/service/TrackService.java +++ b/business/src/main/java/com/fizz/business/service/TrackService.java @@ -23,9 +23,6 @@ public interface TrackService { ReturnInfoVO getReturnInfo(int posIdx); - HalfReturnInfoVO getHalfReturnMatId(Long planId, String entryMatId); - - CoilPositionDTO getCoilPosition(); void adjustPosition(AdjustPosForm form); diff --git a/business/src/main/java/com/fizz/business/service/client/PdiPlanClient.java b/business/src/main/java/com/fizz/business/service/client/PdiPlanClient.java deleted file mode 100644 index fa7a767..0000000 --- a/business/src/main/java/com/fizz/business/service/client/PdiPlanClient.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.fizz.business.service.client; - -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.fasterxml.jackson.databind.JavaType; -import com.fizz.business.constants.enums.PlanStatusEnum; -import com.fizz.business.constants.enums.PlanTypeEnum; -import com.fizz.business.form.ChangePlanStatusForm; -import com.fizz.business.service.CrmPdiPlanService; -import com.fizz.business.vo.CrmPdiPlanVO; -import com.fizz.business.vo.PdiPlanVO; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.data.redis.cache.RedisCacheManager; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.Optional; - -/** - * 计划执行接口 - * - * @author chenhao - * @date 2023/05/17 - */ -@Slf4j -@Component -public class PdiPlanClient { - - @Autowired - RedisCacheManager redisCacheManager; - - @Value("${plan-execute.url:}") - private String url; - @Value("${plan-execute.timeout:30000}") - private int timeout; - private final String queryTrackPlanList = "/plan/track/plan-mat/list"; - private final String queryTrackPlanFirst = "/plan/track/plan-mat/first"; - private final String queryList = "/plan/list"; - private final String changeStatus = "/plan/track/status/change"; - - public List queryList(PlanTypeEnum type, PlanStatusEnum status) { - - return null; - } - - public List queryTrackPlanList() { - return null; - } - - public PdiPlanVO queryTrackPlanFirst() { - return null; - } - - public PdiPlanVO detail(Long planId) { - return null; - } - - public void changeStatus(ChangePlanStatusForm form) { - if (isVirtualPlan(form.getId())) { - return; - } - - } - - public boolean isVirtualPlan(long planId) { - // 2020-01-01 00:00:00-->1577808000000 - return planId > 1577808000000L; - } - - - -} diff --git a/business/src/main/java/com/fizz/business/service/hanle/EntryMovementHandler.java b/business/src/main/java/com/fizz/business/service/hanle/EntryMovementHandler.java index 1eb32a3..c5cca32 100644 --- a/business/src/main/java/com/fizz/business/service/hanle/EntryMovementHandler.java +++ b/business/src/main/java/com/fizz/business/service/hanle/EntryMovementHandler.java @@ -1,17 +1,77 @@ package com.fizz.business.service.hanle; import com.fizz.business.anno.OpcMessageHandlerType; +import com.fizz.business.constants.enums.L1OperateMatEnum; import com.fizz.business.constants.enums.OpcMessageType; +import com.fizz.business.domain.CrmPdiPlan; import com.fizz.business.domain.msg.EntryMovementMessage; +import com.fizz.business.form.L1OperateMatForm; +import com.fizz.business.service.CrmPdiPlanService; import com.fizz.business.service.OpcMessageHandler; +import com.fizz.business.service.TrackService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.annotation.Resource; + @Component +@Slf4j @OpcMessageHandlerType(OpcMessageType.ENTRY_MOVEMENT) public class EntryMovementHandler implements OpcMessageHandler { + + @Autowired + private CrmPdiPlanService crmPdiPlanService; + + @Autowired + private TrackService trackService; + @Override public void handle(EntryMovementMessage message) { - System.out.println("处理入口移动消息: " + message); + Integer src = message.getMaterialPlaceSource(); + Integer des = message.getMaterialPlaceDestination(); + + String action = resolveAction(src, des); + + log.info("处理入口移动消息: " + message); + if (action != null) { + log.info("识别到动作: " + action); + + // 如果是上卷动作 + if (action.contains("上卷")) { + CrmPdiPlan coilPlan = crmPdiPlanService.getFirstUnProducedCoil(); + if (coilPlan != null) { + log.info("获取到未生产的钢卷: " + coilPlan.getCoilid()); + trackService.l1OperateMat(L1OperateMatForm.builder() + .entryMatId(coilPlan.getCoilid()) + .operation(L1OperateMatEnum.ONLINE) + .planId(coilPlan.getPlanid()) + .porIdx(des) + .build()); + } else { + log.error("未找到可上卷的钢卷计划!"); + } + } + } else { + log.error("未识别的组合: SRC=" + src + ", DES=" + des); + } + } + + private String resolveAction(Integer src, Integer des) { + if (src == null || des == null) { + return null; + } + + if (src == 100 && des == 0) { + return "1#开卷机上卷"; + } else if (src == 100 && des == 1) { + return "2#开卷机上卷"; + } else if (src == 0 && des == 200) { + return "1#开卷机甩尾"; + } else if (src == 1 && des == 200) { + return "2#开卷机甩尾"; + } + return null; } } \ No newline at end of file diff --git a/business/src/main/java/com/fizz/business/service/impl/CrmPdiPlanServiceImpl.java b/business/src/main/java/com/fizz/business/service/impl/CrmPdiPlanServiceImpl.java index e6b6a59..94940fc 100644 --- a/business/src/main/java/com/fizz/business/service/impl/CrmPdiPlanServiceImpl.java +++ b/business/src/main/java/com/fizz/business/service/impl/CrmPdiPlanServiceImpl.java @@ -1,6 +1,7 @@ package com.fizz.business.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -30,15 +31,6 @@ import java.util.List; public class CrmPdiPlanServiceImpl extends ServiceImpl implements CrmPdiPlanService { - @Resource - ModSetupResultService modSetupResultService; - - @Resource - ProMatmapService proMatmapService; - - @Resource - ModCoilMapService modCoilMapService; - /** * 根据卷ID和操作员ID查询单个记录 * @@ -105,14 +97,66 @@ public class CrmPdiPlanServiceImpl extends ServiceImpl listAll(PlanQueryForm form) { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("STATUS", "NEW", "READY"); + // 卷ID + if (StrUtil.isNotBlank(form.getCoilid())) { + queryWrapper.eq("coilid", form.getCoilid()); + } + + // 入口厚度 + if (form.getEntryThick() != null) { + queryWrapper.eq("entry_thick", form.getEntryThick()); + } + + // 入口宽度 + if (form.getEntryWidth() != null) { + queryWrapper.eq("entry_width", form.getEntryWidth()); + } + + // 状态 + if (StrUtil.isNotBlank(form.getStatus())) { + queryWrapper.eq("status", form.getStatus()); + } else { + // 如果没传状态,默认查 NEW 和 READY + queryWrapper.in("status", "新计划", "准备好"); + } + + // 开始日期 + if (form.getStartDate() != null) { + queryWrapper.ge("start_date", form.getStartDate()); + } + + // 结束日期 + if (form.getEndDate() != null) { + queryWrapper.le("end_date", form.getEndDate()); + } + + // 查询并转成 VO return BeanUtil.copyToList(this.list(queryWrapper), CrmPdiPlanVO.class); } + @Override + public CrmPdiPlan getFirstUnProducedCoil() { + return this.lambdaQuery() + .eq(CrmPdiPlan::getStatus, 0) // 0 表示未生产 + .orderByAsc(CrmPdiPlan::getSeqid) // 按顺序号排序,取第一个 + .last("limit 1") + .one(); + } + + @Override + public void changeStatus(ChangePlanStatusForm build) { + + CrmPdiPlan pdiPlan = baseMapper.selectById(build.getId()); + + pdiPlan.setStatus(build.getOperation()); + + + } } diff --git a/business/src/main/java/com/fizz/business/service/impl/CrmPdoExcoilServiceImpl.java b/business/src/main/java/com/fizz/business/service/impl/CrmPdoExcoilServiceImpl.java index 36e2443..21c7229 100644 --- a/business/src/main/java/com/fizz/business/service/impl/CrmPdoExcoilServiceImpl.java +++ b/business/src/main/java/com/fizz/business/service/impl/CrmPdoExcoilServiceImpl.java @@ -1,8 +1,10 @@ package com.fizz.business.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fizz.business.domain.CrmPdoExcoil; +import com.fizz.business.domain.PdoExcoil; import com.fizz.business.form.CrmPdoExcoilForm; import com.fizz.business.mapper.CrmPdoExcoilMapper; import com.fizz.business.service.CrmPdoExcoilService; @@ -51,12 +53,12 @@ public class CrmPdoExcoilServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("exit_coilid", excoilid).eq("operid", operid); + queryWrapper.eq("exit_mat_id", excoilid).eq("plan_id", planId); return this.remove(queryWrapper); } @@ -70,15 +72,31 @@ public class CrmPdoExcoilServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); // 根据 exit_coilid 和 encoilid 进行查询 - if (!StringUtils.isEmpty(form.getEncoilid())) { - queryWrapper.like("exit_coilid", form.getEncoilid()).like("encoilid", form.getEncoilid()); + if (!StringUtils.isEmpty(form.getCoilid())) { + queryWrapper.like("exit_mat_id", form.getCoilid()); return baseMapper.selectList(queryWrapper); } - queryWrapper.ge("start_date", form.getStartDate() + " 00:00:00"); - queryWrapper.le("start_date", form.getEndDate() + " 23:59:59"); - queryWrapper.orderByDesc("end_date"); + if (!StringUtils.isEmpty(form.getStartDate())&& !StringUtils.isEmpty(form.getEndDate())){ + queryWrapper.ge("start_time", form.getStartDate() + " 00:00:00"); + queryWrapper.le("end_time", form.getEndDate() + " 23:59:59"); + } + + queryWrapper.orderByDesc("end_time"); return baseMapper.selectList(queryWrapper); } + + @Override + public Long getNumber(String matId, String planId, Integer subNumber) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CrmPdoExcoil::getEntryMatId,matId); + queryWrapper.eq(CrmPdoExcoil::getPlanId,planId); + queryWrapper.eq(CrmPdoExcoil::getSubId,subNumber); + + return baseMapper.selectCount(queryWrapper); + } + + } diff --git a/business/src/main/java/com/fizz/business/service/impl/PdoExCoilServiceImpl.java b/business/src/main/java/com/fizz/business/service/impl/PdoExCoilServiceImpl.java index 51d521f..bd052d3 100644 --- a/business/src/main/java/com/fizz/business/service/impl/PdoExCoilServiceImpl.java +++ b/business/src/main/java/com/fizz/business/service/impl/PdoExCoilServiceImpl.java @@ -1,6 +1,5 @@ package com.fizz.business.service.impl; -import cn.hutool.core.collection.CollUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -9,12 +8,12 @@ import com.fizz.business.domain.PdoExcoil; import com.fizz.business.dto.ExitCoilInfoDTO; import com.fizz.business.dto.MatmapDTO; import com.fizz.business.dto.PdoExCoilDTO; -import com.fizz.business.mapper.PdoExcoilMapper; +import com.fizz.business.service.CrmPdiPlanService; +import com.fizz.business.service.CrmPdoExcoilService; import com.fizz.business.service.PdoExCoilService; import com.fizz.business.service.PdoStripValueService; -import com.fizz.business.service.client.PdiPlanClient; import com.fizz.business.utils.CalcUtil; -import com.fizz.business.vo.PdiPlanVO; +import com.fizz.business.vo.CrmPdiPlanVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -23,10 +22,9 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.Objects; +import static com.fizz.business.constants.CommonConstants.SYSTEM_MODULE; import static com.fizz.business.constants.enums.ExitCutTypeEnum.SPLIT_CUT; import static com.fizz.business.constants.enums.ExitCutTypeEnum.WELDER_CUT; -import static com.fizz.business.constants.enums.HalfReturnTypeEnum.HEAD_COIL; -import static com.fizz.business.constants.enums.HalfReturnTypeEnum.TAIL_COIL; /** @@ -38,9 +36,9 @@ import static com.fizz.business.constants.enums.HalfReturnTypeEnum.TAIL_COIL; public class PdoExCoilServiceImpl implements PdoExCoilService { @Autowired - private PdoExcoilMapper pdoExcoilMapper; + private CrmPdoExcoilService crmPdoExcoilService; @Autowired - private PdiPlanClient pdiPlanClient; + private CrmPdiPlanService crmPdiPlanService; @Autowired private PdoStripValueService pdoStripValueService; @@ -50,48 +48,43 @@ public class PdoExCoilServiceImpl implements PdoExCoilService { public PdoExCoilDTO saveExCoil(ExitCoilInfoDTO exitCoil) { PdoExCoilDTO pdoExCoilDTO = new PdoExCoilDTO(); - PdiPlanVO plan = pdiPlanClient.detail(exitCoil.getPlanId()); + CrmPdiPlanVO plan = crmPdiPlanService.getByCoilIdAndOperId(exitCoil.getEntryMatId()); double aimWeightTop = 1; double aimWeightBottom = 1; - pdoExCoilDTO.setPlanOrigin(plan.getOrigin()); - pdoExCoilDTO.setUnitCode(plan.getL3UnitCode()); - pdoExCoilDTO.setProcessCode(plan.getProcessCode()); + pdoExCoilDTO.setPlanOrigin(plan.getUnitCode()); + pdoExCoilDTO.setUnitCode(plan.getUnitCode()); + pdoExCoilDTO.setProcessCode(SYSTEM_MODULE); pdoExCoilDTO.setExitMatId(exitCoil.getExitMatId()); pdoExCoilDTO.setEntryMatId(exitCoil.getEntryMatId()); pdoExCoilDTO.setSubId(exitCoil.getSubNum()); pdoExCoilDTO.setStartPosition(exitCoil.getStartPos()); pdoExCoilDTO.setEndPosition(exitCoil.getEndPos()); pdoExCoilDTO.setPlanId(plan.getId()); - pdoExCoilDTO.setPlanNo(plan.getPlanNo()); - pdoExCoilDTO.setProdCode(plan.getProdCode()); pdoExCoilDTO.setSteelGrade(plan.getSteelGrade()); - pdoExCoilDTO.setEntryThick(plan.getEntryThickness()); - pdoExCoilDTO.setEntryWidth(plan.getEntryWidth()); - pdoExCoilDTO.setEntryLength(plan.getEntryLength()); - pdoExCoilDTO.setEntryWeight(plan.getEntryWeight()); - pdoExCoilDTO.setActualEntryWeight(plan.getActualEntryWeight()); + pdoExCoilDTO.setEntryThick(plan.getEntryThick().doubleValue()); + pdoExCoilDTO.setEntryWidth(plan.getEntryWidth().doubleValue()); + pdoExCoilDTO.setEntryLength(plan.getEntryLength().doubleValue()); + pdoExCoilDTO.setEntryWeight(plan.getEntryWeight().doubleValue()); pdoExCoilDTO.setWeightTop(aimWeightTop); pdoExCoilDTO.setWeightBottom(aimWeightBottom); pdoExCoilDTO.setExitLength(exitCoil.getExitCutLength()); - double exitWeight = CalcUtil.calcCoilWeight(exitCoil.getExitCutLength(), plan.getTargetThickness(), plan.getTargetWidth()); + double exitWeight = CalcUtil.calcCoilWeight(exitCoil.getExitCutLength(), plan.getExitThickTar(), plan.getExitWidthTar()); pdoExCoilDTO.setExitNetWeight(exitWeight); pdoExCoilDTO.setActualWeight(exitWeight); pdoExCoilDTO.setTheoryWeight(exitWeight); - double exitOuterDiameter = CalcUtil.calcOuterDiameter(exitWeight, plan.getTargetWidth(), plan.getEntryInnerDiameter()); + double exitOuterDiameter = CalcUtil.calcOuterDiameter(exitWeight, exitWeight, plan.getEntryInnerDiameter().doubleValue()); pdoExCoilDTO.setExitOuterDiameter(exitOuterDiameter); - pdoExCoilDTO.setExitThickness(plan.getTargetThickness()); - pdoExCoilDTO.setExitWidth(plan.getTargetWidth()); + pdoExCoilDTO.setExitThickness(plan.getExitThickTar().doubleValue()); + pdoExCoilDTO.setExitWidth(plan.getExitWidthTar().doubleValue()); pdoExCoilDTO.setLastFlag(exitCoil.isLastFlag()); pdoExCoilDTO.setSeparateFlag(exitCoil.isSeparateFlag()); // 计划有子卷需要记录,通知L3 - if (CollUtil.isNotEmpty(plan.getSubPlanList())) { - pdoExCoilDTO.setSubPlanList(plan.getSubPlanList()); - } - pdoExCoilDTO.setOnlineTime(plan.getOnlineTime()); - pdoExCoilDTO.setStartTime(plan.getProducingTime()); + + pdoExCoilDTO.setOnlineTime(plan.getOnlineDate()); + pdoExCoilDTO.setStartTime(plan.getStartDate()); LocalDateTime now = LocalDateTime.now(); pdoExCoilDTO.setEndTime(now); @@ -101,12 +94,9 @@ public class PdoExCoilServiceImpl implements PdoExCoilService { pdoExCoilDTO.setStatus("UNWEIGHT"); log.info("save pdo exit coil:{}", JSONUtil.toJsonStr(pdoExCoilDTO)); - // 虚拟卷不记录产出 - if (pdiPlanClient.isVirtualPlan(exitCoil.getPlanId())) { - return pdoExCoilDTO; - } + // 产出实际入库 - pdoExcoilMapper.insert(pdoExCoilDTO); + crmPdoExcoilService.addCrmPdoExcoil(pdoExCoilDTO); // 打包segment pdoStripValueService.treatStripValues(exitCoil); return pdoExCoilDTO; @@ -128,39 +118,17 @@ public class PdoExCoilServiceImpl implements PdoExCoilService { String trCoilId = trMatmap.getMatId(); //准备的成品子卷号 //考虑依据数据库记录分卷,避免因为平台重启导致分卷丢失或错误 - Long subNum = pdoExcoilMapper.selectCount(new LambdaQueryWrapper() - .eq(PdoExcoil::getEntryMatId, trCoilId) - .eq(PdoExcoil::getPlanNo, trMatmap.getPlanNo()) - .ne(PdoExcoil::getSubId, 0)); + Long subNum = crmPdoExcoilService.getNumber(trCoilId + , trMatmap.getPlanNo(), + 0); - PdiPlanVO plan = pdiPlanClient.detail(trMatmap.getPlanId()); - boolean halfReturnHeadCoil = Objects.equals(plan.getHalfReturnType(), HEAD_COIL.name()); - boolean halfReturnTailCoil = Objects.equals(plan.getHalfReturnType(), TAIL_COIL.name()); + CrmPdiPlanVO plan = crmPdiPlanService.getByCoilIdAndOperId(trMatmap.getMatId()); String entryMatId = trCoilId; String exitMatId = entryMatId; boolean separateFlag = false; boolean lastFlag = Objects.equals(cutType, WELDER_CUT); - // 头部卷产出时,原料卷号:A01, 产出卷号: A01-1, 分卷标识: true, 尾卷标识: false - if (halfReturnHeadCoil) { - entryMatId = plan.getReturnMatId(); - // 如果是第一次回退,头部卷产出卷号需要手动拼接“-1” - // 多次回退时,头部卷产出卷号和入口卷号一致 - if (Objects.equals(plan.getEntryMatId(), plan.getReturnMatId())) { - exitMatId = entryMatId + "-1"; - } - separateFlag = true; - lastFlag = false; - } - // 尾部卷产出时:原料卷号:A01(保存在计划的returnMatId),产出卷号: A01-2 - if (halfReturnTailCoil) { - entryMatId = plan.getReturnMatId(); - exitMatId = plan.getEntryMatId(); - separateFlag = true; - } - - // 分卷处理 if (subNum != 0 || Objects.equals(cutType, SPLIT_CUT)) { subNum = subNum + 1; separateFlag = true; @@ -180,7 +148,7 @@ public class PdoExCoilServiceImpl implements PdoExCoilService { } @Override - public void deleteExistPdo(Long planId) { - pdoExcoilMapper.delete(new LambdaQueryWrapper().eq(PdoExcoil::getPlanId, planId)); + public void deleteExistPdo(String coilId, String planId) { + crmPdoExcoilService.deleteCrmPdoExcoil(coilId,planId); } } diff --git a/business/src/main/java/com/fizz/business/service/impl/TrackServiceImpl.java b/business/src/main/java/com/fizz/business/service/impl/TrackServiceImpl.java index 9cdd0f5..ea51bf8 100644 --- a/business/src/main/java/com/fizz/business/service/impl/TrackServiceImpl.java +++ b/business/src/main/java/com/fizz/business/service/impl/TrackServiceImpl.java @@ -17,21 +17,23 @@ import com.fizz.business.form.L1OperateMatForm; import com.fizz.business.form.WebOperateMatForm; import com.fizz.business.mapper.HalfReturnMapper; import com.fizz.business.mapper.SegmentMapper; +import com.fizz.business.service.CrmPdiPlanService; import com.fizz.business.service.TrackService; import com.fizz.business.service.client.LocalCacheManager; -import com.fizz.business.service.client.PdiPlanClient; import com.fizz.business.service.client.RedisCacheManager; import com.fizz.business.utils.CalcUtil; import com.fizz.business.utils.CoilMeasUtil; import com.fizz.business.utils.MatmapUtil; import com.fizz.business.utils.WebSocketUtil; +import com.fizz.business.vo.CrmPdiPlanVO; import com.fizz.business.vo.HalfReturnInfoVO; -import com.fizz.business.vo.PdiPlanVO; import com.fizz.business.vo.ReturnInfoVO; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.List; import java.util.Objects; @@ -51,7 +53,7 @@ public class TrackServiceImpl implements TrackService { @Autowired SegmentMapper segmentMapper; @Autowired - PdiPlanClient pdiPlanClient; + CrmPdiPlanService crmPdiPlanService; @Override public void webOperateMat(WebOperateMatForm form) { @@ -73,16 +75,16 @@ public class TrackServiceImpl implements TrackService { if (MatmapUtil.notReady(matmap)) { } - PdiPlanVO planVO = pdiPlanClient.detail(matmap.getPlanId()); + CrmPdiPlanVO planVO = crmPdiPlanService.getByCoilIdAndOperId(matmap.getPlanId()); String returnType = null; double returnWt = 0; if (Objects.equals(planVO.getStatus(), PlanStatusEnum.PRODUCING.name())) { double coiledLength = redisCacheManager.getStripLocation(); - double calcCoilWeight = CalcUtil.calcCoilWeight(coiledLength, planVO.getEntryThickness(), planVO.getEntryWidth()); - returnWt = planVO.getEntryWeight() - calcCoilWeight; + double calcCoilWeight = CalcUtil.calcCoilWeight(coiledLength, planVO.getEntryThick(), planVO.getEntryWidth()); + returnWt = planVO.getEntryWeight().divide(BigDecimal.valueOf(calcCoilWeight)).setScale(2, RoundingMode.HALF_UP).doubleValue(); returnType = HALF_RETURN.name(); } else if (Objects.equals(planVO.getStatus(), PlanStatusEnum.ONLINE.name())) { - returnWt = planVO.getEntryWeight(); + returnWt = planVO.getEntryWeight().doubleValue(); returnType = ALL_RETURN.name(); } else { log.error("invalid plan status[{}], planId={}", planVO.getStatus(), planVO.getId()); @@ -91,54 +93,11 @@ public class TrackServiceImpl implements TrackService { return ReturnInfoVO.builder() .returnWeight(NumberUtil.round(returnWt, 3).doubleValue()) .returnType(returnType) - .entryMatId(planVO.getEntryMatId()) + .entryMatId(planVO.getCoilid()) .planId(planVO.getId()) - .planNo(planVO.getPlanNo()) .build(); } - /** - * 获取半卷回退的钢卷号 - * - * @param entryMatId - * @return - */ - @Override - public HalfReturnInfoVO getHalfReturnMatId(Long planId, String entryMatId) { - PdiPlanVO plan = pdiPlanClient.detail(planId); - - String returnMatId = entryMatId; - HalfReturnMapper returnMapper = BeanFactory.getBean(HalfReturnMapper.class); - // 多次回退 - if (Objects.equals(plan.getReturnType(), HALF_RETURN.name())) { - entryMatId = plan.getReturnMatId(); - - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(HalfReturn::getEntryMatId, entryMatId); - queryWrapper.eq(HalfReturn::getPlanNo, plan.getPlanNo()); - queryWrapper.eq(HalfReturn::getReturnType, HALF_RETURN.name()); - queryWrapper.orderByDesc(HalfReturn::getId); - queryWrapper.last("limit 1"); - HalfReturn halfReturn = returnMapper.selectOne(queryWrapper); - - if (Objects.nonNull(halfReturn)) { - String exitMatId = halfReturn.getExitMatId(); - int lastIndex = exitMatId.lastIndexOf("-"); - if (lastIndex != -1 && lastIndex < exitMatId.length() - 1) { - String numberStr = exitMatId.substring(lastIndex + 1); - int number = Integer.parseInt(numberStr) + 1; - returnMatId = exitMatId.substring(0, lastIndex + 1) + number; - } - } - } - // 第一次回退,需要将头部卷与尾部卷都记录到回退表中 - else { - returnMatId = entryMatId + "-2"; - } - - return HalfReturnInfoVO.builder().returnMatId(returnMatId).build(); - } - /** * 调整钢卷位置 * 更新matmap @@ -240,7 +199,7 @@ public class TrackServiceImpl implements TrackService { } // 判断当前计划状态,如果是ONLINE,需要变更为PRODUCING - PdiPlanVO plan = pdiPlanClient.detail(curr.getPlanId()); + CrmPdiPlanVO plan = crmPdiPlanService.getByCoilIdAndOperId(curr.getMatId()); if (Objects.equals(plan.getStatus(), ONLINE.name())) { webOperateMat(WebOperateMatForm.builder() .operation(WebOperateMatEnum.PRODUCING) diff --git a/business/src/main/java/com/fizz/business/utils/CalcUtil.java b/business/src/main/java/com/fizz/business/utils/CalcUtil.java index f705f47..10e88a8 100644 --- a/business/src/main/java/com/fizz/business/utils/CalcUtil.java +++ b/business/src/main/java/com/fizz/business/utils/CalcUtil.java @@ -2,6 +2,8 @@ package com.fizz.business.utils; import cn.hutool.core.util.NumberUtil; +import java.math.BigDecimal; + import static com.fizz.business.constants.CommonConstants.RO; @@ -32,8 +34,8 @@ public class CalcUtil { * @param width 宽度[mm] * @return 重量[T] */ - public static double calcCoilWeight(double length, double thick, double width) { - double v = thick * width * length * RO / (1000 * 1000); + public static double calcCoilWeight(double length, BigDecimal thick, BigDecimal width) { + double v = thick.doubleValue() * width.doubleValue() * length * RO / (1000 * 1000); return NumberUtil.round(v, 3).doubleValue(); } @@ -50,18 +52,4 @@ public class CalcUtil { double v = 2 * Math.sqrt(((weight * 1000) / (width * RO) + Math.PI * Math.pow(innerRadius, 2)) / Math.PI) * 1000; return NumberUtil.round(v, 0).doubleValue(); } - - public static void main(String[] args) { - // 6882.0m - double length = CalcUtil.calcCoilLength(15, 0.27, 1027); - System.out.println(length); - - // 15.0T - double weight = CalcUtil.calcCoilWeight(6882, 0.27, 1027); - System.out.println(weight); - - // 1620.0mm - double diameter1 = CalcUtil.calcOuterDiameter(15, 1027, 508); - System.out.println(diameter1); - } } diff --git a/business/src/main/java/com/fizz/business/utils/MatmapUtil.java b/business/src/main/java/com/fizz/business/utils/MatmapUtil.java index 762df56..4693103 100644 --- a/business/src/main/java/com/fizz/business/utils/MatmapUtil.java +++ b/business/src/main/java/com/fizz/business/utils/MatmapUtil.java @@ -89,7 +89,7 @@ public class MatmapUtil { redisCacheManager.setMatmap(index, matmap); } - public static void setMatmap(int index, String matId, Long planId, String planNo) { + public static void setMatmap(int index, String matId, String planId, String planNo) { MatmapDTO matmap = getMatmap(index); if (ObjectUtil.isNull(matmap)) { return; diff --git a/business/src/main/java/com/fizz/business/vo/CrmPdiPlanVO.java b/business/src/main/java/com/fizz/business/vo/CrmPdiPlanVO.java index 6c68b6e..a3ae746 100644 --- a/business/src/main/java/com/fizz/business/vo/CrmPdiPlanVO.java +++ b/business/src/main/java/com/fizz/business/vo/CrmPdiPlanVO.java @@ -1,5 +1,6 @@ package com.fizz.business.vo; +import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -11,106 +12,303 @@ import java.time.LocalDateTime; @Data public class CrmPdiPlanVO { - private Long id; // 主键ID + private static final long serialVersionUID = 1L; - private Integer seqid; // 主键ID - private String coilid; // 钢卷号 - private Integer picklingCount; // 酸洗次数 - private Integer dummyCoilFlag; // 虚卷标识 - private Integer seqno; // 顺序号 - private Integer status; // 状态 - private String planid; // 计划ID - private String planType; // 计划类型 - private BigDecimal yieldPoint; // 屈服点 - private BigDecimal entryWeight; // 入口重量(t) - private BigDecimal entryThick; // 入口厚度(mm) - private BigDecimal entryWidth; // 入口宽度(mm) - private BigDecimal entryLength; // 入口长度(mm) - private BigDecimal entryOuterDiameter; // 入口外径(mm) - private BigDecimal entryInnerDiameter; // 入口内径(mm) - private BigDecimal exitInnerDiameter; // 出口内径(mm) - private String steelGrade; // 钢种 - private String exitCoilid; // 出口卷号 - private Integer tlvFlag; // 张力平整标识 - private String orderNo; // 订单号 - private String custommerCode; // 客户代码 - private BigDecimal orderThick; // 订单厚度(mm) - private BigDecimal orderWidth; // 订单宽度(mm) - private BigDecimal orderLenLow; // 订单长度下限(mm) - private BigDecimal orderLenUp; // 订单长度上限(mm) - private BigDecimal orderWt; // 订单重量(t) - private BigDecimal orderWtLow; // 订单重量下限(t) - private BigDecimal orderWtUp; // 订单重量上限(t) - private BigDecimal orderMetCoatTop; // 订单镀层上 - private BigDecimal orderMetCoatBot; // 订单镀层下 - private String finalUse; // 最终用途 - private String hotCoilCode; // 热卷代码 - private BigDecimal exitLengthTar; // 出口目标长度(mm) - private BigDecimal exitLengthTolMax; // 出口长度公差最大值(mm) - private BigDecimal exitLengthTolMin; // 出口长度公差最小值(mm) - private BigDecimal exitThickTar; // 出口目标厚度(mm) - private BigDecimal exitThickTolMax; // 出口厚度公差最大值(mm) - private BigDecimal exitThickTolMin; // 出口厚度公差最小值(mm) - private BigDecimal exitWidthTar; // 出口目标宽度(mm) - private BigDecimal exitWidthTolMax; // 出口宽度公差最大值(mm) - private BigDecimal exitWidthTolMin; // 出口宽度公差最小值(mm) - private String nextWholeBacklogCode; // 下道全流程积压代码 - private String prevWholeBacklogCode; // 上道全流程积压代码 - private String exitWtMode; // 出口重量模式 - private Integer splitNum; // 分卷数量 - private BigDecimal exitWeight1; // 出口重量1 - private BigDecimal exitWeight2; // 出口重量2 - private BigDecimal exitWeight3; // 出口重量3 - private BigDecimal exitWeight4; // 出口重量4 - private BigDecimal exitWeight5; // 出口重量5 - private BigDecimal exitWeight6; // 出口重量6 - private String headSampleMode; // 头部取样模式 - private String headSamplePosition; // 头部取样位置 - private BigDecimal headSampleLength; // 头部取样长度(mm) - private String headSamplePlace; // 头部取样地点 - private Integer headSampleNum; // 头部取样数量 - private String tailSampleMode; // 尾部取样模式 - private String tailSamplePosition; // 尾部取样位置 - private BigDecimal tailSampleLength; // 尾部取样长度(mm) - private String tailSamplePlace; // 尾部取样地点 - private Integer tailSampleNum; // 尾部取样数量 - private LocalDateTime timestamp; // 时间戳 - private LocalDateTime onlineDate; // 上线时间 - private LocalDateTime startDate; // 开始时间 - private LocalDateTime endDate; // 结束时间 - private LocalDateTime furInDate; // 进炉时间 - private LocalDateTime furOutDate; // 出炉时间 - private LocalDateTime createTime; // 创建时间 - private LocalDateTime updateTime; // 更新时间 - private String surfaceVice; // 副面 - private String weldCode; // 焊缝代码 - private Integer spmFlag; // SPM标识 - private BigDecimal spmElongation; // SPM延伸率(%) - private BigDecimal spmRollforce; // SPM轧制力 - private String spmProcessType; // SPM工艺类型 - private String spmControlMode; // SPM控制模式 - private BigDecimal spmBendingForce; // SPM弯曲力 - private BigDecimal spmCrimpingRollMesh; // SPM咬入辊目 - private BigDecimal spmBillyRollMesh; // SPM精轧辊目 - private Integer trimFlag; // 切边标识 - private String tlvMode; // 张力平整模式 - private BigDecimal tlvElongation; // 张力平整延伸率(%) - private Integer chromating; // 钝化标识 - private String coatingCode; // 镀层代码 - private Integer oilingFlag; // 涂油标识 - private String oilingType; // 涂油类型 - private BigDecimal oilingTop; // 涂油上 - private BigDecimal oilingBottom; // 涂油下 - private String heatCycle; // 热循环 - private String coatingSelection; // 镀层选择 - private String coatingType; // 镀层类型 - private String chemTreatMode; // 化学处理模式 - private BigDecimal aimWeightTop; // 目标重量上 - private BigDecimal aimWeightBottom; // 目标重量下 - private BigDecimal maxTolWeightTop; // 最大公差重量上 - private BigDecimal maxTolWeightBottom; // 最大公差重量下 - private BigDecimal headendGaugeLength; // 头端测厚长度(mm) - private BigDecimal tailendGaugeLength; // 尾端测厚长度(mm) - private String origin; // 产地 - private String originCoilid; // 原卷号 + @TableId + @Schema(description = "主键ID") + private Long id; + + @Schema(description = "顺序号") + private Integer seqid; + + @Schema(description = "钢卷号") + private String coilid; + + @Schema(description = "机组号") + private String unitCode; + + @Schema(description = "虚卷标识") + private Integer dummyCoilFlag; + + @Schema(description = "状态") + private String status; + + @Schema(description = "计划ID") + private String planid; + + @Schema(description = "计划类型") + private String planType; + + @Schema(description = "屈服点") + private BigDecimal yieldPoint; + + @Schema(description = "入口重量(t)") + private BigDecimal entryWeight; + + @Schema(description = "入口厚度(mm)") + private BigDecimal entryThick; + + @Schema(description = "入口宽度(mm)") + private BigDecimal entryWidth; + + @Schema(description = "入口长度(mm)") + private BigDecimal entryLength; + + @Schema(description = "入口外径(mm)") + private BigDecimal entryOuterDiameter; + + @Schema(description = "入口内径(mm)") + private BigDecimal entryInnerDiameter; + + @Schema(description = "出口内径(mm)") + private BigDecimal exitInnerDiameter; + + @Schema(description = "钢种") + private String steelGrade; + + @Schema(description = "出口卷号") + private String exitCoilid; + + @Schema(description = "张力平整标识") + private Integer tlvFlag; + + @Schema(description = "订单号") + private String orderNo; + + @Schema(description = "客户代码") + private String custommerCode; + + @Schema(description = "订单厚度(mm)") + private BigDecimal orderThick; + + @Schema(description = "订单宽度(mm)") + private BigDecimal orderWidth; + + @Schema(description = "订单长度下限(mm)") + private BigDecimal orderLenLow; + + @Schema(description = "订单长度上限(mm)") + private BigDecimal orderLenUp; + + @Schema(description = "订单重量(t)") + private BigDecimal orderWt; + + @Schema(description = "订单重量下限(t)") + private BigDecimal orderWtLow; + + @Schema(description = "订单重量上限(t)") + private BigDecimal orderWtUp; + + @Schema(description = "订单镀层上") + private BigDecimal orderMetCoatTop; + + @Schema(description = "订单镀层下") + private BigDecimal orderMetCoatBot; + + @Schema(description = "最终用途") + private String finalUse; + + @Schema(description = "热卷代码") + private String hotCoilCode; + + @Schema(description = "出口目标长度(mm)") + private BigDecimal exitLengthTar; + + @Schema(description = "出口长度公差最大值(mm)") + private BigDecimal exitLengthTolMax; + + @Schema(description = "出口长度公差最小值(mm)") + private BigDecimal exitLengthTolMin; + + @Schema(description = "出口目标厚度(mm)") + private BigDecimal exitThickTar; + + @Schema(description = "出口厚度公差最大值(mm)") + private BigDecimal exitThickTolMax; + + @Schema(description = "出口厚度公差最小值(mm)") + private BigDecimal exitThickTolMin; + + @Schema(description = "出口目标宽度(mm)") + private BigDecimal exitWidthTar; + + @Schema(description = "出口宽度公差最大值(mm)") + private BigDecimal exitWidthTolMax; + + @Schema(description = "出口宽度公差最小值(mm)") + private BigDecimal exitWidthTolMin; + + @Schema(description = "下道全流程积压代码") + private String nextWholeBacklogCode; + + @Schema(description = "上道全流程积压代码") + private String prevWholeBacklogCode; + + @Schema(description = "出口重量模式") + private String exitWtMode; + + @Schema(description = "分卷数量") + private Integer splitNum; + + @Schema(description = "出口重量1") + private BigDecimal exitWeight1; + + @Schema(description = "出口重量2") + private BigDecimal exitWeight2; + + @Schema(description = "出口重量3") + private BigDecimal exitWeight3; + + @Schema(description = "出口重量4") + private BigDecimal exitWeight4; + + @Schema(description = "出口重量5") + private BigDecimal exitWeight5; + + @Schema(description = "出口重量6") + private BigDecimal exitWeight6; + + @Schema(description = "头部取样模式") + private String headSampleMode; + + @Schema(description = "头部取样位置") + private String headSamplePosition; + + @Schema(description = "头部取样长度(mm)") + private BigDecimal headSampleLength; + + @Schema(description = "头部取样地点") + private String headSamplePlace; + + @Schema(description = "头部取样数量") + private Integer headSampleNum; + + @Schema(description = "尾部取样模式") + private String tailSampleMode; + + @Schema(description = "尾部取样位置") + private String tailSamplePosition; + + @Schema(description = "尾部取样长度(mm)") + private BigDecimal tailSampleLength; + + @Schema(description = "尾部取样地点") + private String tailSamplePlace; + + @Schema(description = "尾部取样数量") + private Integer tailSampleNum; + + @Schema(description = "时间戳") + private LocalDateTime timestamp; + + @Schema(description = "上线时间") + private LocalDateTime onlineDate; + + @Schema(description = "开始时间") + private LocalDateTime startDate; + + @Schema(description = "结束时间") + private LocalDateTime endDate; + + @Schema(description = "进炉时间") + private LocalDateTime furInDate; + + @Schema(description = "出炉时间") + private LocalDateTime furOutDate; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; + + @Schema(description = "副面") + private String surfaceVice; + + @Schema(description = "焊缝代码") + private String weldCode; + + @Schema(description = "SPM标识") + private Integer spmFlag; + + @Schema(description = "SPM延伸率(%)") + private BigDecimal spmElongation; + + @Schema(description = "SPM轧制力") + private BigDecimal spmRollforce; + + @Schema(description = "SPM工艺类型") + private String spmProcessType; + + @Schema(description = "SPM控制模式") + private String spmControlMode; + + @Schema(description = "SPM弯曲力") + private BigDecimal spmBendingForce; + + @Schema(description = "SPM咬入辊目") + private BigDecimal spmCrimpingRollMesh; + + @Schema(description = "SPM精轧辊目") + private BigDecimal spmBillyRollMesh; + + @Schema(description = "切边标识") + private Integer trimFlag; + + @Schema(description = "张力平整模式") + private String tlvMode; + + @Schema(description = "张力平整延伸率(%)") + private BigDecimal tlvElongation; + + @Schema(description = "钝化标识") + private Integer chromating; + + @Schema(description = "镀层代码") + private String coatingCode; + + @Schema(description = "涂油标识") + private Integer oilingFlag; + + @Schema(description = "涂油类型") + private String oilingType; + + @Schema(description = "涂油上") + private BigDecimal oilingTop; + + @Schema(description = "涂油下") + private BigDecimal oilingBottom; + + @Schema(description = "热循环") + private String heatCycle; + + @Schema(description = "镀层选择") + private String coatingSelection; + + @Schema(description = "镀层类型") + private String coatingType; + + @Schema(description = "化学处理模式") + private String chemTreatMode; + + @Schema(description = "目标重量上") + private BigDecimal aimWeightTop; + + @Schema(description = "目标重量下") + private BigDecimal aimWeightBottom; + + @Schema(description = "最大公差重量上") + private BigDecimal maxTolWeightTop; + + @Schema(description = "最大公差重量下") + private BigDecimal maxTolWeightBottom; + + @Schema(description = "头端测厚长度(mm)") + private BigDecimal headendGaugeLength; + + @Schema(description = "尾端测厚长度(mm)") + private BigDecimal tailendGaugeLength; + + @Schema(description = "原卷号") + private String originCoilid; }