diff --git a/business/pom.xml b/business/pom.xml
index caebf4a..263f2ae 100644
--- a/business/pom.xml
+++ b/business/pom.xml
@@ -97,6 +97,12 @@
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
com.alibaba
fastjson
diff --git a/business/src/main/java/com/fizz/business/constants/CommonConstants.java b/business/src/main/java/com/fizz/business/constants/CommonConstants.java
new file mode 100644
index 0000000..74b2786
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/constants/CommonConstants.java
@@ -0,0 +1,24 @@
+package com.fizz.business.constants;
+
+public class CommonConstants {
+
+ public static final double RO = 7.86; //硅钢密度
+
+ public static class RocketMQ {
+ public static final String CONSUMER_GROUP_RECEIVE_ALARM_ZR1 = "C-ZG-ZR1-ALARM";
+ public static final String CONSUMER_GROUP_RECEIVE_ALARM_ZR2 = "C-ZG-ZR2-ALARM";
+
+ public static final String TOPIC_RECEIVE_ALARM_FROM_PLAT_ZR1 = "ZG-ZR1-ALARM";
+ public static final String TOPIC_RECEIVE_ALARM_FROM_PLAT_ZR2 = "ZG-ZR2-ALARM";
+
+ public static final String CONSUMER_GROUP_COIL_POINT_DATA_ZR1 = "C-ZG-ZR1-COIL-POINT-DATA";
+ public static final String CONSUMER_GROUP_COIL_POINT_DATA_ZR2 = "C-ZG-ZR2-COIL-POINT-DATA";
+
+ public static final String TOPIC_RECEIVE_COIL_POINT_DATA_ZR1 = "ZG-ZR1-COIL-POINT-DATA";
+ public static final String TOPIC_RECEIVE_COIL_POINT_DATA_ZR2 = "ZG-ZR2-COIL-POINT-DATA";
+
+ public static final String TOPIC_COIL_OUTPUT = "JH_PRODUCTION_PLAN_OUT";
+
+ public static final String TOPIC_COIL_DEFECT = "ZG-COIL-DEFECT";
+ }
+}
diff --git a/business/src/main/java/com/fizz/business/constants/enums/WebMatOperateEnum.java b/business/src/main/java/com/fizz/business/constants/enums/WebMatOperateEnum.java
new file mode 100644
index 0000000..211d84e
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/constants/enums/WebMatOperateEnum.java
@@ -0,0 +1,90 @@
+package com.fizz.business.constants.enums;
+
+import com.baomidou.mybatisplus.annotation.IEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fizz.business.form.ChangePlanStatusForm;
+import com.fizz.business.form.WebOperateMatForm;
+import com.fizz.business.service.client.PdiPlanClient;
+import com.fizz.business.service.impl.BeanFactory;
+import com.fizz.business.utils.WebSocketUtil;
+import com.fizz.business.vo.CrmPdiPlanVO;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+@Getter
+@Slf4j
+@AllArgsConstructor
+public enum WebMatOperateEnum implements IEnum {
+ ONLINE("上线") {
+ @Override
+ public void operate(WebOperateMatForm form) {
+
+ CrmPdiPlanVO crmPdiPlanVO = ONLINE.syncPlanStatus(form.getId());
+ WebSocketUtil.sendMatmapMsg(crmPdiPlanVO);
+ }
+ },
+ READY("回退") {
+ @Override
+ public void operate(WebOperateMatForm form) {
+
+ }
+ },
+
+ PRODUCT("卸卷并封闭") {
+ @Override
+ public void operate(WebOperateMatForm form) {
+ super.operate(form);
+ }
+ },
+ ;
+
+ private final String desc;
+
+ private static final Map MAP = new HashMap<>(16);
+
+ static {
+ for (WebMatOperateEnum e : WebMatOperateEnum.values()) {
+ MAP.put(e.getValue(), e);
+ }
+ }
+
+ @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+ public static WebMatOperateEnum getByValue(String value) {
+ return MAP.get(value);
+ }
+
+ @JsonValue
+ @Override
+ public String getValue() {
+ return this.name();
+ }
+
+ public void operate(WebOperateMatForm form) {
+ PdiPlanClient planClient = BeanFactory.getBean(PdiPlanClient.class);
+ planClient.changeStatus(ChangePlanStatusForm.builder()
+ .operation(this.name())
+ .id(form.getId())
+ .build());
+ }
+
+ /**
+ * 同步计划状态
+ *
+ * @param planId 计划id
+ */
+ private CrmPdiPlanVO syncPlanStatus(Long planId) {
+ PdiPlanClient planClient = BeanFactory.getBean(PdiPlanClient.class);
+
+ return planClient.changeStatus(ChangePlanStatusForm.builder()
+ .operation(this.name())
+ .id(planId)
+ .build());
+
+ }
+}
diff --git a/business/src/main/java/com/fizz/business/constants/enums/WsTypeEnum.java b/business/src/main/java/com/fizz/business/constants/enums/WsTypeEnum.java
new file mode 100644
index 0000000..3a5cacf
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/constants/enums/WsTypeEnum.java
@@ -0,0 +1,39 @@
+package com.fizz.business.constants.enums;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * websocket type
+ *
+ * @author chenhao
+ * @date 2023/04/24
+ */
+@Getter
+@AllArgsConstructor
+public enum WsTypeEnum {
+ alarm, track_position, track_measure, track_signal, track_matmap;
+
+ private static final Map MAP = new HashMap<>(8);
+
+ static {
+ for (WsTypeEnum e : WsTypeEnum.values()) {
+ MAP.put(e.getValue(), e);
+ }
+ }
+
+ @JsonCreator(mode = JsonCreator.Mode.DELEGATING)
+ public static WsTypeEnum getByValue(String value) {
+ return MAP.get(value);
+ }
+
+ @JsonValue
+ public String getValue() {
+ return this.name();
+ }
+}
diff --git a/business/src/main/java/com/fizz/business/controller/CrmPdiPlanController.java b/business/src/main/java/com/fizz/business/controller/CrmPdiPlanController.java
index 37d9133..696fb12 100644
--- a/business/src/main/java/com/fizz/business/controller/CrmPdiPlanController.java
+++ b/business/src/main/java/com/fizz/business/controller/CrmPdiPlanController.java
@@ -3,7 +3,9 @@ package com.fizz.business.controller;
import com.fizz.business.domain.CrmPdiPlan;
import com.fizz.business.form.PlanQueryForm;
import com.fizz.business.service.CrmPdiPlanService;
+import com.fizz.business.service.ModSetupResultService;
import com.fizz.business.vo.CrmPdiPlanVO;
+import com.fizz.business.vo.ModSetupResultVO;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.domain.R;
import io.swagger.annotations.Api;
@@ -24,7 +26,7 @@ public class CrmPdiPlanController {
private CrmPdiPlanService crmPdiPlanService;
@GetMapping("/get/{coilid}")
- @ApiOperation("通过钢卷号查询计划")
+ @ApiOperation("通过钢卷号或者状态查询计划")
public R getByCoilId(@PathVariable String coilid) {
return R.ok(crmPdiPlanService.getByCoilIdAndOperId(coilid));
}
@@ -52,4 +54,5 @@ public class CrmPdiPlanController {
public R> list(@RequestBody PlanQueryForm form) {
return R.ok(crmPdiPlanService.listAll(form));
}
+
}
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 f828646..bba2b5c 100644
--- a/business/src/main/java/com/fizz/business/controller/CrmPdoExcoilController.java
+++ b/business/src/main/java/com/fizz/business/controller/CrmPdoExcoilController.java
@@ -1,6 +1,7 @@
package com.fizz.business.controller;
import com.fizz.business.domain.CrmPdoExcoil;
+import com.fizz.business.form.CrmPdoExcoilForm;
import com.fizz.business.service.CrmPdoExcoilService;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.domain.R;
@@ -45,9 +46,9 @@ public class CrmPdoExcoilController {
return R.ok(crmPdoExcoilService.deleteCrmPdoExcoil(excoilid, operid));
}
- @GetMapping("/list")
+ @PostMapping("/list")
@ApiOperation("查询实绩列表")
- public R> list() {
- return R.ok(crmPdoExcoilService.listAll());
+ public R> list(@RequestBody CrmPdoExcoilForm form) {
+ return R.ok(crmPdoExcoilService.listAll(form));
}
}
diff --git a/business/src/main/java/com/fizz/business/controller/ModSetupResultController.java b/business/src/main/java/com/fizz/business/controller/ModSetupResultController.java
new file mode 100644
index 0000000..322a326
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/controller/ModSetupResultController.java
@@ -0,0 +1,37 @@
+package com.fizz.business.controller;
+
+import com.fizz.business.domain.ModSetupResult;
+import com.fizz.business.form.ModSetupResultForm;
+import com.fizz.business.service.ModSetupResultService;
+import com.fizz.business.vo.ModSetupResultVO;
+import com.ruoyi.common.core.domain.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@RequestMapping("/setup")
+@Api("南钢设定值接口")
+public class ModSetupResultController {
+
+ @Resource
+ private ModSetupResultService modSetupResultService;
+
+ // 查询所有记录
+ @PostMapping("/list")
+ @ApiOperation("查询设定值列表")
+ public R> list(@RequestBody ModSetupResultForm form) {
+ return R.ok(modSetupResultService.list(form));
+ }
+
+
+ @PostMapping("/calc")
+ @ApiOperation("计算设定值")
+ public R calcSetup(@RequestBody ModSetupResultForm form) {
+ return R.ok(modSetupResultService.calcSetup(form));
+ }
+
+}
\ No newline at end of file
diff --git a/business/src/main/java/com/fizz/business/controller/TrackController.java b/business/src/main/java/com/fizz/business/controller/TrackController.java
new file mode 100644
index 0000000..5f31504
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/controller/TrackController.java
@@ -0,0 +1,41 @@
+package com.fizz.business.controller;
+
+
+import com.fizz.business.form.WebOperateMatForm;
+import com.fizz.business.service.TrackService;
+import com.ruoyi.common.core.domain.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * @author baomidou
+ * @since 2023-05-17
+ */
+@RestController
+@RequestMapping("/track")
+@Api(value = "过程跟踪页面", tags = "过程跟踪")
+public class TrackController {
+
+ @Resource
+ TrackService trackService;
+
+ @PostMapping("/manual/operate/mat")
+ @ApiOperation(value = "页面手动操作钢卷 上线,回退")
+ public R manualOperateMat(@RequestBody @Valid WebOperateMatForm form) {
+ trackService.operateMatWeb(form);
+ return R.ok();
+ }
+
+ @PostMapping("/manual/tr/unload")
+ @ApiOperation(value = "页面卷取机手动卸卷登记产出")
+ public R manualtrUnload(@RequestBody @Valid WebOperateMatForm form) {
+ trackService.trUnload(form);
+ return R.ok();
+ }
+
+}
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 91705d6..32bd335 100644
--- a/business/src/main/java/com/fizz/business/domain/CrmPdiPlan.java
+++ b/business/src/main/java/com/fizz/business/domain/CrmPdiPlan.java
@@ -44,16 +44,16 @@ public class CrmPdiPlan implements Serializable {
private Integer annealThick;
@ApiModelProperty(value = "入口厚度")
- private Float entryThick;
+ private Double entryThick;
@ApiModelProperty(value = "入口宽度")
- private Float entryWidth;
+ private Double entryWidth;
@ApiModelProperty(value = "入口重量")
- private Float entryWeight;
+ private Double entryWeight;
@ApiModelProperty(value = "入口长度")
- private Float entryLength;
+ private Double entryLength;
@ApiModelProperty(value = "入口内径")
private Integer entryInnerDiameter;
@@ -74,34 +74,34 @@ public class CrmPdiPlan implements Serializable {
private Integer cutMode;
@ApiModelProperty(value = "出口重量1")
- private Float exitValue1;
+ private Double exitValue1;
@ApiModelProperty(value = "出口重量2")
- private Float exitValue2;
+ private Double exitValue2;
@ApiModelProperty(value = "出口重量3")
- private Float exitValue3;
+ private Double exitValue3;
@ApiModelProperty(value = "出口重量4")
- private Float exitValue4;
+ private Double exitValue4;
@ApiModelProperty(value = "出口重量5")
- private Float exitValue5;
+ private Double exitValue5;
@ApiModelProperty(value = "出口重量6")
- private Float exitValue6;
+ private Double exitValue6;
@ApiModelProperty(value = "出口重量")
- private Float exitWeight;
+ private Double exitWeight;
@ApiModelProperty(value = "出口长度")
- private Float exitLength;
+ private Double exitLength;
@ApiModelProperty(value = "出口厚度")
- private Float exitThick;
+ private Double exitThick;
@ApiModelProperty(value = "出口宽度")
- private Float exitWidth;
+ private Double exitWidth;
@ApiModelProperty(value = "钢种")
private String grade;
@@ -119,16 +119,16 @@ public class CrmPdiPlan implements Serializable {
private String planNo;
@ApiModelProperty(value = "压下率")
- private Float reductionRate;
+ private Double reductionRate;
@ApiModelProperty(value = "热卷温度")
- private Float hotCoilTemp;
+ private Double hotCoilTemp;
@ApiModelProperty(value = "厚度正偏差")
- private Float entryThickMaxtol;
+ private Double entryThickMaxtol;
@ApiModelProperty(value = "厚度正偏差")
- private Float entryThickMintol;
+ private Double entryThickMintol;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "计划日期")
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 2c99626..cf69457 100644
--- a/business/src/main/java/com/fizz/business/domain/CrmPdoExcoil.java
+++ b/business/src/main/java/com/fizz/business/domain/CrmPdoExcoil.java
@@ -1,5 +1,6 @@
package com.fizz.business.domain;
+import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
@@ -14,9 +15,12 @@ import java.time.LocalDateTime;
@TableName("crm_pdo_excoil")
public class CrmPdoExcoil implements Serializable {
- @TableId
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty(value = "id")
+ private Long id;
+
@ApiModelProperty(value = "成品卷ID")
- private String excoilid;
+ private String exitCoilid;
@ApiModelProperty(value = "进入卷ID")
private String encoilid;
@@ -31,10 +35,10 @@ public class CrmPdoExcoil implements Serializable {
private Integer subid;
@ApiModelProperty(value = "头部位置")
- private Float headpos;
+ private Double headpos;
@ApiModelProperty(value = "尾部位置")
- private Float tailpos;
+ private Double tailpos;
@ApiModelProperty(value = "班次")
private String shift;
@@ -43,37 +47,37 @@ public class CrmPdoExcoil implements Serializable {
private String crew;
@ApiModelProperty(value = "退火厚度")
- private Float annealThick;
+ private Double annealThick;
@ApiModelProperty(value = "入口厚度")
- private Float entryThick;
+ private Double entryThick;
@ApiModelProperty(value = "入口宽度")
- private Float entryWidth;
+ private Double entryWidth;
@ApiModelProperty(value = "入口重量")
- private Float entryWeight;
+ private Double entryWeight;
@ApiModelProperty(value = "成品厚度")
- private Float exitThick;
+ private Double exitThick;
@ApiModelProperty(value = "成品宽度")
- private Float exitWidth;
+ private Double exitWidth;
@ApiModelProperty(value = "成品长度")
- private Float exitLength;
+ private Double exitLength;
@ApiModelProperty(value = "成品内径")
- private Float exitInnerDiameter;
+ private Double exitInnerDiameter;
@ApiModelProperty(value = "理论出口重量")
- private Float calcExitWeight;
+ private Double calcExitWeight;
@ApiModelProperty(value = "实际出口重量")
- private Float measExitWeight;
+ private Double measExitWeight;
@ApiModelProperty(value = "外径")
- private Float outerDiameter;
+ private Double outerDiameter;
@ApiModelProperty(value = "状态")
private String status;
@@ -94,7 +98,7 @@ public class CrmPdoExcoil implements Serializable {
private LocalDateTime insdate;
@ApiModelProperty(value = "质量")
- private Float quality;
+ private Double quality;
@ApiModelProperty(value = "热卷ID")
private String hotCoilid;
diff --git a/business/src/main/java/com/fizz/business/domain/ModSetupResult.java b/business/src/main/java/com/fizz/business/domain/ModSetupResult.java
new file mode 100644
index 0000000..30ee617
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/domain/ModSetupResult.java
@@ -0,0 +1,189 @@
+package com.fizz.business.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@TableName("mod_setup_result")
+@ApiModel(value = "ModSetupResult对象", description = "轧机设置结果实体类")
+public class ModSetupResult {
+
+ @ApiModelProperty(value = "自增主键")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty(value = "logid")
+ private Integer logId;
+
+ @ApiModelProperty(value = "钢卷ID")
+ private String coilId;
+
+ @ApiModelProperty(value = "道次号")
+ private Integer passId;
+
+ @ApiModelProperty(value = "机架号")
+ private Integer standId;
+
+ @ApiModelProperty(value = "断面ID")
+ private Integer fractId;
+
+ @ApiModelProperty(value = "速度限制")
+ private Integer speedLimit;
+
+ @ApiModelProperty(value = "力限制")
+ private Integer forceLimit;
+
+ @ApiModelProperty(value = "功率限制")
+ private Integer powerLimit;
+
+ @ApiModelProperty(value = "入口厚度")
+ private Float entryThick;
+
+ @ApiModelProperty(value = "出口厚度")
+ private Float exitThick;
+
+ @ApiModelProperty(value = "最小厚度")
+ private Float minThick;
+
+ @ApiModelProperty(value = "压下率")
+ private Float reduction;
+
+ @ApiModelProperty(value = "摩擦系数")
+ private Float friction;
+
+ @ApiModelProperty(value = "入口凸度")
+ private Float entryCrown;
+
+ @ApiModelProperty(value = "出口凸度")
+ private Float exitCrown;
+
+ @ApiModelProperty(value = "入口张力")
+ private Float entryTension;
+
+ @ApiModelProperty(value = "出口张力")
+ private Float exitTension;
+
+ @ApiModelProperty(value = "入口应力")
+ private Float entryTenstress;
+
+ @ApiModelProperty(value = "出口应力")
+ private Float exitTenstress;
+
+ @ApiModelProperty(value = "速度比")
+ private Float speedFract;
+
+ @ApiModelProperty(value = "入口速度")
+ private Float entrySpeed;
+
+ @ApiModelProperty(value = "出口速度")
+ private Float exitSpeed;
+
+ @ApiModelProperty(value = "轧制速度")
+ private Float rollSpeed;
+
+ @ApiModelProperty(value = "入口应变")
+ private Float sigmae;
+
+ @ApiModelProperty(value = "出口应变")
+ private Float sigmas;
+
+ @ApiModelProperty(value = "平均应变")
+ private Float sigmaave;
+
+ @ApiModelProperty(value = "轧制力")
+ private Float rollForce;
+
+ @ApiModelProperty(value = "轧辊间隙")
+ private Float rollgap;
+
+ @ApiModelProperty(value = "超出间隙")
+ private Float overgap;
+
+ @ApiModelProperty(value = "轧机刚度")
+ private Float millModulus;
+
+ @ApiModelProperty(value = "滑移")
+ private Float slip;
+
+ @ApiModelProperty(value = "变形半径")
+ private Float rdef;
+
+ @ApiModelProperty(value = "轧制角度")
+ private Float angle;
+
+ @ApiModelProperty(value = "中心流量")
+ private Float centerFlow;
+
+ @ApiModelProperty(value = "边缘流量")
+ private Float edgeFlow;
+
+ @ApiModelProperty(value = "中心压力")
+ private Float centerPress;
+
+ @ApiModelProperty(value = "边缘压力")
+ private Float edgePress;
+
+ @ApiModelProperty(value = "入口温度")
+ private Float entryTemp;
+
+ @ApiModelProperty(value = "出口温度")
+ private Float exitTemp;
+
+ @ApiModelProperty(value = "工作辊弯曲")
+ private Float wrbend;
+
+ @ApiModelProperty(value = "支撑辊弯曲")
+ private Float irbend;
+
+ @ApiModelProperty(value = "支撑辊位移")
+ private Float irshift;
+
+ @ApiModelProperty(value = "电机电流")
+ private Float motorCurrent;
+
+ @ApiModelProperty(value = "电机电压")
+ private Float motorVoltage;
+
+ @ApiModelProperty(value = "轧制扭矩")
+ private Float rollTorque;
+
+ @ApiModelProperty(value = "总轧制扭矩")
+ private Float totalRollTorque;
+
+ @ApiModelProperty(value = "电机扭矩")
+ private Float motorTorque;
+
+ @ApiModelProperty(value = "扭矩比")
+ private Float torqueRatio;
+
+ @ApiModelProperty(value = "比扭矩")
+ private Float specTorque;
+
+ @ApiModelProperty(value = "功率")
+ private Float power;
+
+ @ApiModelProperty(value = "负载比")
+ private Float loadRatio;
+
+ @ApiModelProperty(value = "计算ID 实际用的这个值")
+ private String calcId;
+
+ @ApiModelProperty(value = "记录插入时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime insdate;
+
+ @ApiModelProperty(value = "创建时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "更新时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+}
diff --git a/business/src/main/java/com/fizz/business/dto/10086.txt b/business/src/main/java/com/fizz/business/dto/10086.txt
deleted file mode 100644
index 56b6510..0000000
--- a/business/src/main/java/com/fizz/business/dto/10086.txt
+++ /dev/null
@@ -1 +0,0 @@
-11111
\ No newline at end of file
diff --git a/business/src/main/java/com/fizz/business/form/ChangePlanStatusForm.java b/business/src/main/java/com/fizz/business/form/ChangePlanStatusForm.java
new file mode 100644
index 0000000..9a6ce83
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/form/ChangePlanStatusForm.java
@@ -0,0 +1,30 @@
+package com.fizz.business.form;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 状态变更form
+ *
+ * @author chenhao
+ * @date 2023/04/27
+ */
+@Getter
+@Setter
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ChangePlanStatusForm implements Serializable {
+
+ @NotNull(message = "状态变更类型不能为空")
+ @ApiModelProperty("ONLINE-钢卷上线,UNLOAD-手动卸卷,PRODUCT-生产完成")
+ private String operation;
+
+ @NotNull(message = "计划id不能为空")
+ @ApiModelProperty("计划id集合")
+ private Long id;
+
+}
diff --git a/business/src/main/java/com/fizz/business/form/CrmPdoExcoilForm.java b/business/src/main/java/com/fizz/business/form/CrmPdoExcoilForm.java
new file mode 100644
index 0000000..242211c
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/form/CrmPdoExcoilForm.java
@@ -0,0 +1,25 @@
+package com.fizz.business.form;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class CrmPdoExcoilForm {
+
+
+ @ApiModelProperty(value = "钢卷号")
+ private String encoilid;
+
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @ApiModelProperty(value = "开始日期")
+ private LocalDateTime startDate;
+
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @ApiModelProperty(value = "结束日期")
+ private LocalDateTime endDate;
+
+}
diff --git a/business/src/main/java/com/fizz/business/form/ModSetupResultForm.java b/business/src/main/java/com/fizz/business/form/ModSetupResultForm.java
new file mode 100644
index 0000000..b90ade0
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/form/ModSetupResultForm.java
@@ -0,0 +1,27 @@
+package com.fizz.business.form;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ModSetupResultForm {
+
+ @ApiModelProperty(value = "钢卷ID")
+ private String coilId;
+
+ @ApiModelProperty(value = "钢种")
+ private String grade;
+
+ @ApiModelProperty(value = "道次号")
+ private Integer passId;
+
+ @ApiModelProperty(value = "退火厚度")
+ private Integer annealThick;
+
+ @ApiModelProperty(value = "入口厚度")
+ private Double entryThick;
+
+ @ApiModelProperty(value = "出口厚度")
+ private Double exitThick;
+
+}
diff --git a/business/src/main/java/com/fizz/business/form/WebOperateMatForm.java b/business/src/main/java/com/fizz/business/form/WebOperateMatForm.java
new file mode 100644
index 0000000..d53c56e
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/form/WebOperateMatForm.java
@@ -0,0 +1,39 @@
+package com.fizz.business.form;
+
+import com.fizz.business.constants.enums.WebMatOperateEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 状态变更form
+ *
+ * @author chenhao
+ * @date 2023/04/27
+ */
+@Getter
+@Setter
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class WebOperateMatForm implements Serializable {
+
+ @NotNull(message = "操作不存在")
+ @ApiModelProperty("ONLINE-钢卷上线,READY-回退,PRODUCT-生成完成")
+ private WebMatOperateEnum operation;
+
+ @NotNull(message = "计划id不能为空")
+ @ApiModelProperty("计划id集合")
+ private Long id;
+
+ @NotBlank(message = "钢卷号不能为空")
+ @ApiModelProperty(value = "钢卷号")
+ private String entryMatId;
+
+ @ApiModelProperty(value = "计划号")
+ private String planNo;
+
+}
diff --git a/business/src/main/java/com/fizz/business/mapper/ModSetupResultMapper.java b/business/src/main/java/com/fizz/business/mapper/ModSetupResultMapper.java
new file mode 100644
index 0000000..ebbb428
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/mapper/ModSetupResultMapper.java
@@ -0,0 +1,10 @@
+package com.fizz.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fizz.business.domain.ModSetupResult;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ModSetupResultMapper extends BaseMapper {
+ // 如果需要自定义查询或操作,可在此处添加相应的接口方法
+}
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 3f50769..3feb5c1 100644
--- a/business/src/main/java/com/fizz/business/service/CrmPdiPlanService.java
+++ b/business/src/main/java/com/fizz/business/service/CrmPdiPlanService.java
@@ -2,6 +2,7 @@ package com.fizz.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fizz.business.domain.CrmPdiPlan;
+import com.fizz.business.form.ChangePlanStatusForm;
import com.fizz.business.form.PlanQueryForm;
import com.fizz.business.vo.CrmPdiPlanVO;
@@ -18,4 +19,6 @@ public interface CrmPdiPlanService extends IService {
public boolean deleteCrmPdiPlan(List coilid);
public List listAll(PlanQueryForm form);
+
+ CrmPdiPlanVO updateCrmPdiPlanById(ChangePlanStatusForm form);
}
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 5f56c04..ce6ea74 100644
--- a/business/src/main/java/com/fizz/business/service/CrmPdoExcoilService.java
+++ b/business/src/main/java/com/fizz/business/service/CrmPdoExcoilService.java
@@ -2,6 +2,7 @@ package com.fizz.business.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fizz.business.domain.CrmPdoExcoil;
+import com.fizz.business.form.CrmPdoExcoilForm;
import java.util.List;
@@ -14,6 +15,6 @@ public interface CrmPdoExcoilService extends IService {
boolean deleteCrmPdoExcoil(String excoilid, Integer operid);
- List listAll();
+ List listAll(CrmPdoExcoilForm form);
}
diff --git a/business/src/main/java/com/fizz/business/service/ModSetupResultService.java b/business/src/main/java/com/fizz/business/service/ModSetupResultService.java
new file mode 100644
index 0000000..13d739b
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/ModSetupResultService.java
@@ -0,0 +1,15 @@
+package com.fizz.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fizz.business.domain.ModSetupResult;
+import com.fizz.business.form.ModSetupResultForm;
+import com.fizz.business.vo.ModSetupResultVO;
+
+import java.util.List;
+
+public interface ModSetupResultService extends IService {
+ List list(ModSetupResultForm form);
+
+ String calcSetup(ModSetupResultForm form);
+ // 可在此处添加自定义业务方法
+}
diff --git a/business/src/main/java/com/fizz/business/service/TrackService.java b/business/src/main/java/com/fizz/business/service/TrackService.java
new file mode 100644
index 0000000..e3c560a
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/TrackService.java
@@ -0,0 +1,15 @@
+package com.fizz.business.service;
+
+
+import com.fizz.business.form.WebOperateMatForm;
+
+/**
+ * @author chenhao
+ * @date 2023/05/17
+ */
+public interface TrackService {
+
+ void operateMatWeb(WebOperateMatForm form);
+
+ void trUnload(WebOperateMatForm 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
new file mode 100644
index 0000000..db4ac87
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/client/PdiPlanClient.java
@@ -0,0 +1,44 @@
+package com.fizz.business.service.client;
+
+import com.fizz.business.form.ChangePlanStatusForm;
+import com.fizz.business.service.CrmPdiPlanService;
+import com.fizz.business.vo.CrmPdiPlanVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 计划执行接口
+ *
+ * @author chenhao
+ * @date 2023/05/17
+ */
+@Slf4j
+@Component
+public class PdiPlanClient {
+
+ @Resource
+ CrmPdiPlanService crmPdiPlanService;
+
+ public List queryTrackPlanList() {
+ return null;
+ }
+
+ public CrmPdiPlanVO queryTrackPlanFirst() {
+ return null;
+ }
+
+ public CrmPdiPlanVO detail(Long planId) {
+ return null;
+ }
+
+ public CrmPdiPlanVO changeStatus(ChangePlanStatusForm form) {
+
+ return crmPdiPlanService.updateCrmPdiPlanById(form);
+
+ }
+
+
+}
diff --git a/business/src/main/java/com/fizz/business/service/client/TrackWsHandler.java b/business/src/main/java/com/fizz/business/service/client/TrackWsHandler.java
new file mode 100644
index 0000000..b067a94
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/client/TrackWsHandler.java
@@ -0,0 +1,102 @@
+package com.fizz.business.service.client;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.web.socket.CloseStatus;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketSession;
+import org.springframework.web.socket.handler.AbstractWebSocketHandler;
+
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author chenhao
+ * @date 2023/05/19
+ */
+@Slf4j
+@Component
+public class TrackWsHandler extends AbstractWebSocketHandler {
+
+ private static final ConcurrentHashMap> clients = new ConcurrentHashMap<>();
+
+ /**
+ * socket 建立成功事件
+ *
+ * @param session
+ */
+ @Override
+ public void afterConnectionEstablished(WebSocketSession session) {
+ try {
+ String sid = session.getId();
+ String type = (String) session.getAttributes().get("type");
+ Map sessionMap = clients.get(type);
+ if (Objects.isNull(sessionMap)) {
+ sessionMap = new ConcurrentHashMap<>();
+ }
+ sessionMap.put(sid, session);
+ // 添加 session
+ clients.put(type, sessionMap);
+ log.info("[websocket]建立连接:{}", type + sid);
+ } catch (Exception e) {
+ log.error("[websocket]建立连接错误:{}", e.getMessage(), e);
+ }
+ }
+
+ /**
+ * 接收消息事件
+ *
+ * @param session
+ * @param message
+ * @throws Exception
+ */
+ @Override
+ protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
+ String payload = message.getPayload();
+ log.info("[websocket]收到客户端[{}]的消息:{}", session.getAttributes().get("type") + "-" + session.getId(), payload);
+ // 心跳
+ if (payload.equals("ping")) {
+ session.sendMessage(new TextMessage("pong"));
+ }
+ }
+
+ /**
+ * socket 断开连接时
+ *
+ * @param session
+ * @param status
+ * @throws Exception
+ */
+ @Override
+ public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
+ onClose(session);
+ }
+
+ @Override
+ public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
+ log.error("[websocket]连接异常:{}", session.getAttributes().get("type") + "-" + session.getId(), exception);
+ onClose(session);
+ }
+
+ public ConcurrentHashMap> getClients() {
+ return clients;
+ }
+
+ private void onClose(WebSocketSession session) {
+ try {
+ String sid = session.getId();
+ String type = (String) session.getAttributes().get("type");
+ if (clients.containsKey(type) && clients.get(type).containsKey(sid)) {
+ WebSocketSession webSocketSession = clients.get(type).remove(sid);
+ if (webSocketSession != null) {
+ webSocketSession.close();
+ }
+ }
+ log.info("[websocket]连接关闭:{}", type + "-" + sid);
+ } catch (Exception e) {
+ log.error("[websocket]连接关闭错误:{}", e.getMessage(), e);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/business/src/main/java/com/fizz/business/service/impl/BeanFactory.java b/business/src/main/java/com/fizz/business/service/impl/BeanFactory.java
new file mode 100644
index 0000000..16236af
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/impl/BeanFactory.java
@@ -0,0 +1,25 @@
+package com.fizz.business.service.impl;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author chenhao
+ * @date 2023/05/18
+ */
+@Component
+public class BeanFactory implements ApplicationContextAware {
+
+ private static ApplicationContext applicationContext;
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ BeanFactory.applicationContext = applicationContext;
+ }
+
+ public static T getBean(Class var1, Object... var2) {
+ return applicationContext.getBean(var1, var2);
+ }
+}
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 0ee5a03..42f7e8c 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,9 +1,11 @@
package com.fizz.business.service.impl;
import cn.hutool.core.bean.BeanUtil;
+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.CrmPdiPlan;
+import com.fizz.business.form.ChangePlanStatusForm;
import com.fizz.business.form.PlanQueryForm;
import com.fizz.business.mapper.CrmPdiPlanMapper;
import com.fizz.business.service.CrmPdiPlanService;
@@ -23,7 +25,15 @@ public class CrmPdiPlanServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>();
+ if (coilid.equals("online")){
+ queryWrapper.eq("STATUS", coilid);
+ CrmPdiPlan one = this.getOne(queryWrapper);
+ return BeanUtil.copyProperties(one, CrmPdiPlanVO.class);
+
+ }
+
queryWrapper.like("coilid", coilid);
CrmPdiPlan one = this.getOne(queryWrapper);
@@ -70,4 +80,17 @@ public class CrmPdiPlanServiceImpl extends ServiceImpl listAll() {
- return this.list();
+ public List listAll(CrmPdoExcoilForm form) {
+
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ if (!StringUtils.isEmpty(form.getEncoilid())){
+ queryWrapper.eq("exit_coilid", form.getEncoilid()).eq("encoilid", form.getEncoilid());
+ }
+
+ queryWrapper.ge("start_date", form.getStartDate() + "00:00:00");
+ queryWrapper.le("start_date", form.getStartDate() + "23:59:59");
+
+ return baseMapper.selectList(queryWrapper);
}
}
diff --git a/business/src/main/java/com/fizz/business/service/impl/ModSetupResultServiceImpl.java b/business/src/main/java/com/fizz/business/service/impl/ModSetupResultServiceImpl.java
new file mode 100644
index 0000000..d692615
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/impl/ModSetupResultServiceImpl.java
@@ -0,0 +1,52 @@
+package com.fizz.business.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fizz.business.domain.ModSetupResult;
+import com.fizz.business.form.ModSetupResultForm;
+import com.fizz.business.mapper.ModSetupResultMapper;
+import com.fizz.business.service.ModSetupResultService;
+import com.fizz.business.vo.ModSetupResultVO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class ModSetupResultServiceImpl extends ServiceImpl implements ModSetupResultService {
+
+ @Override
+ public List list(ModSetupResultForm form) {
+
+ // 确保各个字段的非空验证
+ if (StringUtils.isEmpty(form.getGrade()) || form.getAnnealThick() == null ||
+ form.getEntryThick() == null || form.getExitThick() == null || form.getPassId() == null) {
+ throw new IllegalArgumentException("必要的字段缺失");
+ }
+
+ // 去除Double类型的字段的小数位
+ int annealThick = form.getAnnealThick();
+ int entryThick = form.getEntryThick().intValue(); // 去除小数位
+ int exitThick = form.getExitThick().intValue(); // 去除小数位
+ int passId = form.getPassId();
+
+ // 根据字段构建 calcId
+ String calcId = form.getGrade() + annealThick + entryThick + exitThick + passId;
+
+ // 实际查询代码(根据 calcId 查询数据)
+ // 这里假设查询方法为根据 calcId 查找结果
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(ModSetupResult::getCalcId,calcId);
+
+ List results = this.baseMapper.selectList(queryWrapper);
+
+
+ return BeanUtil.copyToList(results, ModSetupResultVO.class);
+ }
+
+ @Override
+ public String calcSetup(ModSetupResultForm form) {
+ return null;
+ }
+}
\ No newline at end of file
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
new file mode 100644
index 0000000..b2e8ecb
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/service/impl/TrackServiceImpl.java
@@ -0,0 +1,68 @@
+package com.fizz.business.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSON;
+import com.fizz.business.domain.CrmPdiPlan;
+import com.fizz.business.domain.CrmPdoExcoil;
+import com.fizz.business.form.WebOperateMatForm;
+import com.fizz.business.mapper.CrmPdiPlanMapper;
+import com.fizz.business.service.CrmPdoExcoilService;
+import com.fizz.business.service.TrackService;
+import com.fizz.business.utils.CalcUtil;
+import com.fizz.business.vo.Plan2PdoVO;
+import com.ruoyi.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+
+
+/**
+ * @author chenhao
+ * @date 2023/05/18
+ */
+@Slf4j
+@Service
+public class TrackServiceImpl implements TrackService {
+
+ @Resource
+ CrmPdiPlanMapper crmPdiPlanMapper;
+
+ @Resource
+ CrmPdoExcoilService crmPdoExcoilService;
+
+ @Override
+ public void operateMatWeb(WebOperateMatForm form) {
+
+ log.info("unitCode:{}, hand operate mat by Web: {}", form.getPlanNo(), JSON.toJSONString(form));
+ form.getOperation().operate(form);
+
+ }
+
+ @Override
+ public void trUnload(WebOperateMatForm form) {
+ if (StringUtils.compare(form.getOperation().getValue(),"PRODUCT") != 0) {
+ return;
+ }
+
+ CrmPdiPlan pdiPlan = crmPdiPlanMapper.selectById(form.getId());
+ Plan2PdoVO bean = BeanUtil.toBean(pdiPlan, Plan2PdoVO.class);
+
+ CrmPdoExcoil excoil = BeanUtil.toBean(bean, CrmPdoExcoil.class);
+
+ double calcCoilWeight = CalcUtil.calcCoilWeight(excoil.getExitLength(), excoil.getEntryThick(), excoil.getEntryWidth());
+ excoil.setCalcExitWeight(calcCoilWeight);
+ excoil.setMeasExitWeight(calcCoilWeight);
+ excoil.setHeadpos(0d);
+ excoil.setTailpos(excoil.getExitLength());
+ excoil.setSubid(1);
+ excoil.setOuterDiameter(Double.valueOf(bean.getEntryOuterDiameter()));
+ excoil.setStatus("PRODUCT");
+
+ crmPdoExcoilService.addCrmPdoExcoil(excoil);
+
+ }
+
+
+}
diff --git a/business/src/main/java/com/fizz/business/utils/10086.txt b/business/src/main/java/com/fizz/business/utils/10086.txt
deleted file mode 100644
index 56b6510..0000000
--- a/business/src/main/java/com/fizz/business/utils/10086.txt
+++ /dev/null
@@ -1 +0,0 @@
-11111
\ No newline at end of file
diff --git a/business/src/main/java/com/fizz/business/utils/CalcUtil.java b/business/src/main/java/com/fizz/business/utils/CalcUtil.java
new file mode 100644
index 0000000..81599c1
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/utils/CalcUtil.java
@@ -0,0 +1,53 @@
+package com.fizz.business.utils;
+
+
+import cn.hutool.core.util.NumberUtil;
+import com.fizz.business.constants.CommonConstants;
+
+/**
+ * @author chenhao
+ * @date 2023/05/15
+ */
+public class CalcUtil {
+
+ /**
+ * 计算带钢长度
+ *
+ * @param weight 重量[T]
+ * @param thick 厚度[mm]
+ * @param width 宽度[mm]
+ * @return 长度[m]
+ */
+ public static double calcCoilLength(double weight, double thick, double width) {
+ double v = weight / (thick * width * CommonConstants.RO) * 1000 * 1000;
+ return NumberUtil.round(v, 0).doubleValue();
+ }
+
+ /**
+ * 计算带钢重量
+ *
+ * @param length 长度[m]
+ * @param thick 厚度[mm]
+ * @param width 宽度[mm]
+ * @return 重量[T]
+ */
+ public static double calcCoilWeight(double length, double thick, double width) {
+ double v = thick * width * length * CommonConstants.RO / (1000 * 1000);
+ return NumberUtil.round(v, 3).doubleValue();
+ }
+
+ /**
+ * 计算钢卷外径
+ *
+ * @param weight 重量[T]
+ * @param width 宽度[mm]
+ * @param innerDiameter 内径[mm]
+ * @return 外径[mm]
+ */
+ public static double calcOuterDiameter(double weight, double width, double innerDiameter) {
+ double innerRadius = (innerDiameter / 1000) / 2;
+ double v = 2 * Math.sqrt(((weight * 1000) / (width * CommonConstants.RO) + Math.PI * Math.pow(innerRadius, 2)) / Math.PI) * 1000;
+ return NumberUtil.round(v, 0).doubleValue();
+ }
+
+}
diff --git a/business/src/main/java/com/fizz/business/utils/WebSocketUtil.java b/business/src/main/java/com/fizz/business/utils/WebSocketUtil.java
new file mode 100644
index 0000000..8e043a2
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/utils/WebSocketUtil.java
@@ -0,0 +1,48 @@
+package com.fizz.business.utils;
+
+import com.alibaba.druid.support.json.JSONUtils;
+import com.fizz.business.constants.enums.WsTypeEnum;
+import com.fizz.business.service.client.TrackWsHandler;
+import com.fizz.business.vo.CrmPdiPlanVO;
+import com.google.common.collect.Maps;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketSession;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.util.Map;
+
+
+@Slf4j
+@Component
+public class WebSocketUtil {
+
+ private static TrackWsHandler trackWsHandler;
+
+ @Autowired
+ public void setTrackWsHandler(TrackWsHandler trackWsHandler) {
+ WebSocketUtil.trackWsHandler = trackWsHandler;
+ }
+
+ public static void sendMessage(WsTypeEnum type, String text) {
+ Map clients = trackWsHandler.getClients().getOrDefault(type.name(), Maps.newConcurrentMap());
+ TextMessage message = new TextMessage(text);
+ clients.values().forEach(s -> {
+ try {
+ s.sendMessage(message);
+// log.info("[websocket]向客户端[{}]推送消息:{}", type + "-" + s.getId(), text);
+ } catch (IOException e) {
+ log.error("[websocket]向客户端[{}]推送消息异常:{}", type + "-" + s.getId(), text);
+ }
+ });
+ }
+
+ public static void sendMatmapMsg(CrmPdiPlanVO crmPdiPlanVO) {
+
+ sendMessage(WsTypeEnum.valueOf(WsTypeEnum.track_matmap.getValue()), JSONUtils.toJSONString(crmPdiPlanVO));
+ }
+
+}
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 1ec9e59..dc420e5 100644
--- a/business/src/main/java/com/fizz/business/vo/CrmPdiPlanVO.java
+++ b/business/src/main/java/com/fizz/business/vo/CrmPdiPlanVO.java
@@ -38,16 +38,16 @@ public class CrmPdiPlanVO {
private Integer annealThick;
@ApiModelProperty(value = "入口厚度")
- private Float entryThick;
+ private Double entryThick;
@ApiModelProperty(value = "入口宽度")
- private Float entryWidth;
+ private Double entryWidth;
@ApiModelProperty(value = "入口重量")
- private Float entryWeight;
+ private Double entryWeight;
@ApiModelProperty(value = "入口长度")
- private Float entryLength;
+ private Double entryLength;
@ApiModelProperty(value = "入口内径")
private Integer entryInnerDiameter;
@@ -68,34 +68,34 @@ public class CrmPdiPlanVO {
private Integer cutMode;
@ApiModelProperty(value = "出口重量1")
- private Float exitValue1;
+ private Double exitValue1;
@ApiModelProperty(value = "出口重量2")
- private Float exitValue2;
+ private Double exitValue2;
@ApiModelProperty(value = "出口重量3")
- private Float exitValue3;
+ private Double exitValue3;
@ApiModelProperty(value = "出口重量4")
- private Float exitValue4;
+ private Double exitValue4;
@ApiModelProperty(value = "出口重量5")
- private Float exitValue5;
+ private Double exitValue5;
@ApiModelProperty(value = "出口重量6")
- private Float exitValue6;
+ private Double exitValue6;
@ApiModelProperty(value = "出口重量")
- private Float exitWeight;
+ private Double exitWeight;
@ApiModelProperty(value = "出口长度")
- private Float exitLength;
+ private Double exitLength;
@ApiModelProperty(value = "出口厚度")
- private Float exitThick;
+ private Double exitThick;
@ApiModelProperty(value = "出口宽度")
- private Float exitWidth;
+ private Double exitWidth;
@ApiModelProperty(value = "钢种")
private String grade;
@@ -113,16 +113,16 @@ public class CrmPdiPlanVO {
private String planNo;
@ApiModelProperty(value = "压下率")
- private Float reductionRate;
+ private Double reductionRate;
@ApiModelProperty(value = "热卷温度")
- private Float hotCoilTemp;
+ private Double hotCoilTemp;
@ApiModelProperty(value = "厚度正偏差")
- private Float entryThickMaxtol;
+ private Double entryThickMaxtol;
@ApiModelProperty(value = "厚度正偏差")
- private Float entryThickMintol;
+ private Double entryThickMintol;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "计划日期")
diff --git a/business/src/main/java/com/fizz/business/vo/ModSetupResultVO.java b/business/src/main/java/com/fizz/business/vo/ModSetupResultVO.java
new file mode 100644
index 0000000..1a97705
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/vo/ModSetupResultVO.java
@@ -0,0 +1,118 @@
+package com.fizz.business.vo;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class ModSetupResultVO {
+
+ @ApiModelProperty(value = "自增主键")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty(value = "logid")
+ private Integer logId;
+
+ @ApiModelProperty(value = "钢卷ID")
+ private String coilId;
+
+ @ApiModelProperty(value = "道次号")
+ private Integer passId;
+
+ @ApiModelProperty(value = "入口厚度")
+ private Float entryThick;
+
+ @ApiModelProperty(value = "出口厚度")
+ private Float exitThick;
+
+ @ApiModelProperty(value = "压下率")
+ private Float reduction;
+
+ @ApiModelProperty(value = "入口张力")
+ private Float entryTension;
+
+ @ApiModelProperty(value = "出口张力")
+ private Float exitTension;
+
+ @ApiModelProperty(value = "入口应力")
+ private Float entryTenstress;
+
+ @ApiModelProperty(value = "出口应力")
+ private Float exitTenstress;
+
+ @ApiModelProperty(value = "速度比")
+ private Float speedFract;
+
+ @ApiModelProperty(value = "入口速度")
+ private Float entrySpeed;
+
+ @ApiModelProperty(value = "出口速度")
+ private Float exitSpeed;
+
+ @ApiModelProperty(value = "轧制速度")
+ private Float rollSpeed;
+
+ @ApiModelProperty(value = "轧制力")
+ private Float rollForce;
+
+ @ApiModelProperty(value = "轧辊间隙")
+ private Float rollgap;
+
+ @ApiModelProperty(value = "超出间隙")
+ private Float overgap;
+
+ @ApiModelProperty(value = "轧机刚度")
+ private Float millModulus;
+
+ @ApiModelProperty(value = "前滑")
+ private Float slip;
+
+ @ApiModelProperty(value = "工作辊弯辊力")
+ private Float wrbend;
+
+ @ApiModelProperty(value = "支撑辊弯辊力")
+ private Float irbend;
+
+ @ApiModelProperty(value = "轧制扭矩")
+ private Float rollTorque;
+
+ @ApiModelProperty(value = "总轧制扭矩")
+ private Float totalRollTorque;
+
+ @ApiModelProperty(value = "电机扭矩")
+ private Float motorTorque;
+
+ @ApiModelProperty(value = "扭矩比")
+ private Float torqueRatio;
+
+ @ApiModelProperty(value = "比扭矩")
+ private Float specTorque;
+
+ @ApiModelProperty(value = "功率")
+ private Float power;
+
+ @ApiModelProperty(value = "负载比")
+ private Float loadRatio;
+
+ @ApiModelProperty(value = "计算ID 实际用的这个值")
+ private String calcId;
+
+ @ApiModelProperty(value = "记录插入时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime insdate;
+
+ @ApiModelProperty(value = "创建时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "更新时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+}
diff --git a/business/src/main/java/com/fizz/business/vo/Plan2PdoVO.java b/business/src/main/java/com/fizz/business/vo/Plan2PdoVO.java
new file mode 100644
index 0000000..b8dc3c6
--- /dev/null
+++ b/business/src/main/java/com/fizz/business/vo/Plan2PdoVO.java
@@ -0,0 +1,87 @@
+package com.fizz.business.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+
+@Data
+public class Plan2PdoVO {
+
+
+ @ApiModelProperty(value = "多火轧制次数")
+ private Integer operid;
+
+
+ @ApiModelProperty(value = "钢卷id")
+ private String coilid;
+
+ @ApiModelProperty(value = "热轧卷ID")
+ private String hotCoilid;
+
+ @ApiModelProperty(value = "道次数")
+ private Integer passno;
+
+ @ApiModelProperty(value = "退火厚度")
+ private Integer annealThick;
+
+ @ApiModelProperty(value = "入口厚度")
+ private Double entryThick;
+
+ @ApiModelProperty(value = "入口宽度")
+ private Double entryWidth;
+
+ @ApiModelProperty(value = "入口重量")
+ private Double entryWeight;
+
+ @ApiModelProperty(value = "入口长度")
+ private Double entryLength;
+
+ @ApiModelProperty(value = "入口内径")
+ private Integer entryInnerDiameter;
+
+ @ApiModelProperty(value = "入口外径")
+ private Integer entryOuterDiameter;
+
+ @ApiModelProperty(value = "出口卷号")
+ private String exitCoilid;
+
+ @ApiModelProperty(value = "下工序代码")
+ private String nextUnit;
+
+ @ApiModelProperty(value = "出口长度")
+ private Double exitLength;
+
+ @ApiModelProperty(value = "出口厚度")
+ private Double exitThick;
+
+ @ApiModelProperty(value = "出口宽度")
+ private Double exitWidth;
+
+ @ApiModelProperty(value = "钢种")
+ private String grade;
+
+ @ApiModelProperty(value = "屈服强度")
+ private Integer yieldStrength;
+
+ @ApiModelProperty(value = "抗拉强度")
+ private Integer tensileStrength;
+
+ @ApiModelProperty(value = "状态")
+ private String status;
+
+ @ApiModelProperty(value = "计划号")
+ private String planNo;
+
+ @ApiModelProperty(value = "压下率")
+ private Double reductionRate;
+
+ @ApiModelProperty(value = "热卷温度")
+ private Double hotCoilTemp;
+
+
+}