From 12b2cc7e2049a9832a30be89e49c5ca0c9e3efe6 Mon Sep 17 00:00:00 2001 From: 86156 <823267011@qq.com> Date: Fri, 20 Mar 2026 14:36:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8C=E7=BA=A7=E6=9B=B4=E6=96=B0=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E6=96=B0=E5=A2=9E=E8=BD=AF=E6=8E=A8=E8=8D=90=EF=BC=8C?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E5=BD=95=E5=85=A5=E5=92=8C=E5=AE=9E=E7=BB=A9?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E6=B7=BB=E5=8A=A0=E5=85=A5=E5=9C=BA=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E5=8F=B7=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../comm/OPC/MessageReceiveSchedule.java | 2 - .../controller/CrmPdiPlanController.java | 11 +++ .../com/fizz/business/domain/CrmPdiPlan.java | 3 + .../fizz/business/domain/CrmPdoExcoil.java | 3 + .../fizz/business/form/CrmPdiPlanForm.java | 1 + .../mapper/L3PickupRecommendMapper.java | 21 +++++ .../service/L3PickupRecommendService.java | 10 +++ .../service/impl/CrmPdiPlanServiceImpl.java | 3 + .../service/impl/CrmPdoExcoilServiceImpl.java | 3 + .../impl/L3PickupRecommendServiceImpl.java | 81 +++++++++++++++++++ .../service/impl/PdoExCoilServiceImpl.java | 1 + .../com/fizz/business/vo/CrmPdiPlanVO.java | 3 + .../fizz/business/vo/L3PickupRecommendVO.java | 29 +++++++ .../ruoyi/common/enums/DataSourceType.java | 7 +- .../ruoyi/framework/config/DruidConfig.java | 9 +++ 15 files changed, 184 insertions(+), 3 deletions(-) create mode 100644 business/src/main/java/com/fizz/business/mapper/L3PickupRecommendMapper.java create mode 100644 business/src/main/java/com/fizz/business/service/L3PickupRecommendService.java create mode 100644 business/src/main/java/com/fizz/business/service/impl/L3PickupRecommendServiceImpl.java create mode 100644 business/src/main/java/com/fizz/business/vo/L3PickupRecommendVO.java diff --git a/business/src/main/java/com/fizz/business/comm/OPC/MessageReceiveSchedule.java b/business/src/main/java/com/fizz/business/comm/OPC/MessageReceiveSchedule.java index 14bfa82..9ebd871 100644 --- a/business/src/main/java/com/fizz/business/comm/OPC/MessageReceiveSchedule.java +++ b/business/src/main/java/com/fizz/business/comm/OPC/MessageReceiveSchedule.java @@ -131,8 +131,6 @@ public class MessageReceiveSchedule extends BaseSchedule { ProStoppage stoppage = new ProStoppage(); stoppage.setStartDate(lowSpeedStartTime); stoppage.setDuration(BigDecimal.ZERO); // 初始为0,恢复后再更新 - stoppage.setStopType("AUTO_LOW_SPEED"); - stoppage.setRemark("stripSpeed<5 自动停机"); if (proStoppageService.save(stoppage)) { currentStopId = stoppage.getStopid(); stopRecorded = true; 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 beb6d60..569ea86 100644 --- a/business/src/main/java/com/fizz/business/controller/CrmPdiPlanController.java +++ b/business/src/main/java/com/fizz/business/controller/CrmPdiPlanController.java @@ -5,7 +5,9 @@ import com.fizz.business.form.CalcPdiPlanForm; import com.fizz.business.form.CrmPdiPlanForm; import com.fizz.business.form.PlanQueryForm; import com.fizz.business.service.CrmPdiPlanService; +import com.fizz.business.service.L3PickupRecommendService; import com.fizz.business.vo.CrmPdiPlanVO; +import com.fizz.business.vo.L3PickupRecommendVO; import com.fizz.business.vo.PdiPlanSetupInfoVO; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.core.domain.R; @@ -25,6 +27,9 @@ public class CrmPdiPlanController { @Resource private CrmPdiPlanService crmPdiPlanService; + @Resource + private L3PickupRecommendService l3PickupRecommendService; + @PostMapping("/add") @Operation(summary ="新增计划") public R add(@RequestBody CrmPdiPlan crmPdiPlan) { @@ -55,4 +60,10 @@ public class CrmPdiPlanController { return R.ok(crmPdiPlanService.listAll(form)); } + @GetMapping("/l3PickupRecommend") + @Operation(summary ="三级领料推荐") + public R> l3PickupRecommend(@RequestParam(required = false, defaultValue = "10") Integer limit) { + return R.ok(l3PickupRecommendService.listPickupRecommend(limit)); + } + } 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 9c6327a..d91ab98 100644 --- a/business/src/main/java/com/fizz/business/domain/CrmPdiPlan.java +++ b/business/src/main/java/com/fizz/business/domain/CrmPdiPlan.java @@ -26,6 +26,9 @@ public class CrmPdiPlan implements Serializable { @Schema(description = "钢卷号") private String coilid; + @Schema(description = "入场钢卷号") + private String enterCoilNo; + @Schema(description = "机组号") private String unitCode; 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 ea35ea4..da019e0 100644 --- a/business/src/main/java/com/fizz/business/domain/CrmPdoExcoil.java +++ b/business/src/main/java/com/fizz/business/domain/CrmPdoExcoil.java @@ -27,6 +27,9 @@ public class CrmPdoExcoil implements Serializable { @Schema(description = "来料卷") private String entryMatId; + @Schema(description = "入场钢卷号") + private String enterCoilNo; + @Schema(description = "分切数") private Integer subId; 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 ed7f669..d582ac9 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 enterCoilNo; // 入场钢卷号 private String unitCode; // 钢卷号 private Integer picklingCount; // 酸洗次数 private Integer dummyCoilFlag; // 虚卷标识 diff --git a/business/src/main/java/com/fizz/business/mapper/L3PickupRecommendMapper.java b/business/src/main/java/com/fizz/business/mapper/L3PickupRecommendMapper.java new file mode 100644 index 0000000..22dadf2 --- /dev/null +++ b/business/src/main/java/com/fizz/business/mapper/L3PickupRecommendMapper.java @@ -0,0 +1,21 @@ +package com.fizz.business.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface L3PickupRecommendMapper { + + @Select("SELECT action_id, coil_id, current_coil_no, priority, scan_time " + + "FROM wms_coil_pending_action " + + "WHERE action_type = 501 AND action_status = 0 AND del_flag = 0 " + + "ORDER BY priority DESC, scan_time ASC, action_id ASC LIMIT #{limit}") + List> selectPendingActions(@Param("limit") Integer limit); + + @Select("SELECT coil_id, enter_coil_no FROM wms_material_coil WHERE coil_id = #{coilId} LIMIT 1") + Map selectMaterialByCoilId(@Param("coilId") Long coilId); +} diff --git a/business/src/main/java/com/fizz/business/service/L3PickupRecommendService.java b/business/src/main/java/com/fizz/business/service/L3PickupRecommendService.java new file mode 100644 index 0000000..58dcf7d --- /dev/null +++ b/business/src/main/java/com/fizz/business/service/L3PickupRecommendService.java @@ -0,0 +1,10 @@ +package com.fizz.business.service; + +import com.fizz.business.vo.L3PickupRecommendVO; + +import java.util.List; + +public interface L3PickupRecommendService { + + List listPickupRecommend(Integer limit); +} 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 f48fa66..e85bc57 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 @@ -61,6 +61,9 @@ public class CrmPdiPlanServiceImpl extends ServiceImpl listPickupRecommend(Integer limit) { + int queryLimit = (limit == null || limit <= 0) ? 10 : Math.min(limit, 50); + List> pendingActions = l3PickupRecommendMapper.selectPendingActions(queryLimit); + List result = new ArrayList<>(); + + for (Map action : pendingActions) { + L3PickupRecommendVO vo = new L3PickupRecommendVO(); + vo.setActionId(toLong(action.get("action_id"))); + vo.setSourceCoilId(toLong(action.get("coil_id"))); + vo.setCoilId(toStringValue(action.get("current_coil_no"))); + vo.setPriority(toInteger(action.get("priority"))); + vo.setScanTime(toLocalDateTime(action.get("scan_time"))); + + Long sourceCoilId = vo.getSourceCoilId(); + if (sourceCoilId != null) { + Map material = l3PickupRecommendMapper.selectMaterialByCoilId(sourceCoilId); + if (material != null) { + vo.setEnterCoilNo(toStringValue(material.get("enter_coil_no"))); + } + } + result.add(vo); + } + + return result; + } + + private Long toLong(Object value) { + if (value == null) return null; + if (value instanceof Number) return ((Number) value).longValue(); + try { + return Long.parseLong(String.valueOf(value)); + } catch (Exception e) { + return null; + } + } + + private Integer toInteger(Object value) { + if (value == null) return null; + if (value instanceof Number) return ((Number) value).intValue(); + try { + return Integer.parseInt(String.valueOf(value)); + } catch (Exception e) { + return null; + } + } + + private String toStringValue(Object value) { + return value == null ? null : String.valueOf(value); + } + + private LocalDateTime toLocalDateTime(Object value) { + if (value == null) return null; + if (value instanceof LocalDateTime) return (LocalDateTime) value; + if (value instanceof Timestamp) return ((Timestamp) value).toLocalDateTime(); + return null; + } +} 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 3faae6a..684e2a8 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 @@ -56,6 +56,7 @@ public class PdoExCoilServiceImpl implements PdoExCoilService { pdoExCoilDTO.setProcessCode(SYSTEM_MODULE); pdoExCoilDTO.setExitMatId(exitCoil.getExitMatId()); pdoExCoilDTO.setEntryMatId(exitCoil.getEntryMatId()); + pdoExCoilDTO.setEnterCoilNo(plan.getEnterCoilNo()); pdoExCoilDTO.setSubId(exitCoil.getSubNum()); pdoExCoilDTO.setStartPosition(exitCoil.getStartPos()); pdoExCoilDTO.setEndPosition(exitCoil.getEndPos()); 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 3e964e9..5a291e7 100644 --- a/business/src/main/java/com/fizz/business/vo/CrmPdiPlanVO.java +++ b/business/src/main/java/com/fizz/business/vo/CrmPdiPlanVO.java @@ -24,6 +24,9 @@ public class CrmPdiPlanVO { @Schema(description = "钢卷号") private String coilid; + @Schema(description = "入场钢卷号") + private String enterCoilNo; + @Schema(description = "机组号") private String unitCode; diff --git a/business/src/main/java/com/fizz/business/vo/L3PickupRecommendVO.java b/business/src/main/java/com/fizz/business/vo/L3PickupRecommendVO.java new file mode 100644 index 0000000..d30c301 --- /dev/null +++ b/business/src/main/java/com/fizz/business/vo/L3PickupRecommendVO.java @@ -0,0 +1,29 @@ +package com.fizz.business.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@Schema(description = "三级领料推荐") +public class L3PickupRecommendVO { + + @Schema(description = "待操作主键") + private Long actionId; + + @Schema(description = "当前钢卷号(回填到计划coilid)") + private String coilId; + + @Schema(description = "入场钢卷号(回填到计划enterCoilNo)") + private String enterCoilNo; + + @Schema(description = "L3钢卷ID") + private Long sourceCoilId; + + @Schema(description = "优先级") + private Integer priority; + + @Schema(description = "扫码时间") + private LocalDateTime scanTime; +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceType.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceType.java index 0d945be..84712ad 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceType.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceType.java @@ -15,5 +15,10 @@ public enum DataSourceType /** * 从库 */ - SLAVE + SLAVE, + + /** + * L3库 + */ + L3 } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java index f6abac1..ec54575 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java @@ -49,6 +49,14 @@ public class DruidConfig return druidProperties.dataSource(dataSource); } + @Bean + @ConfigurationProperties("spring.datasource.druid.l3") + public DataSource l3DataSource(DruidProperties druidProperties) + { + DruidDataSource dataSource = DruidDataSourceBuilder.create().build(); + return druidProperties.dataSource(dataSource); + } + @Bean(name = "dynamicDataSource") @Primary public DynamicDataSource dataSource(DataSource masterDataSource) @@ -56,6 +64,7 @@ public class DruidConfig Map targetDataSources = new HashMap<>(); targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource); setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource"); + setDataSource(targetDataSources, DataSourceType.L3.name(), "l3DataSource"); return new DynamicDataSource(masterDataSource, targetDataSources); }