From ac3337133fd635463ac77741f5fca0eff5aeaa77 Mon Sep 17 00:00:00 2001 From: hdka <823267011@qq.com> Date: Fri, 8 Aug 2025 21:09:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E4=BA=8C=E8=BE=8A=E5=B0=86?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=BC=A0=E5=85=A5=E5=9B=9B=E8=BE=8A=E8=B0=83?= =?UTF-8?q?=E8=AF=95=EF=BC=8C=E5=8A=A0=E5=85=A5=E9=94=81=E6=9C=BA=E5=88=B6?= =?UTF-8?q?=E8=BD=AC=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/IIndustryMaterialService.java | 10 ++++- .../impl/IndustryMaterialServiceImpl.java | 41 ++++++++++++++++++- .../service/impl/IndustryStepServiceImpl.java | 34 ++++++++++++--- 3 files changed, 77 insertions(+), 8 deletions(-) diff --git a/industry-system/src/main/java/com/industry/work/service/IIndustryMaterialService.java b/industry-system/src/main/java/com/industry/work/service/IIndustryMaterialService.java index b3031182..4e350d81 100644 --- a/industry-system/src/main/java/com/industry/work/service/IIndustryMaterialService.java +++ b/industry-system/src/main/java/com/industry/work/service/IIndustryMaterialService.java @@ -116,7 +116,7 @@ public interface IIndustryMaterialService void deleteIndustryMaterialByState(Long state); - void insertIndustryMaterialToSlaveDataSource(List industryMaterialVos); + String insertIndustryMaterialToSlaveDataSource(List industryMaterialVos); /**3 * @@ -125,4 +125,12 @@ public interface IIndustryMaterialService * @return */ List selectIndustryListRecord(IndustryMaterial industryMaterial); + + /** + * 查询四辊数据是否存在0的,将0的全部删除 + * + * @return + */ + boolean clearNotProcessMaterial(); + } diff --git a/industry-system/src/main/java/com/industry/work/service/impl/IndustryMaterialServiceImpl.java b/industry-system/src/main/java/com/industry/work/service/impl/IndustryMaterialServiceImpl.java index 71eb50ac..6c25a7f6 100644 --- a/industry-system/src/main/java/com/industry/work/service/impl/IndustryMaterialServiceImpl.java +++ b/industry-system/src/main/java/com/industry/work/service/impl/IndustryMaterialServiceImpl.java @@ -9,6 +9,7 @@ import java.util.concurrent.TimeUnit; import com.github.xingshuangs.iot.protocol.s7.service.S7PLC; import com.industry.common.annotation.DataSource; import com.industry.common.constant.Constants; +import com.industry.common.core.redis.Redis2Cache; import com.industry.common.core.redis.RedisCache; import com.industry.common.enums.DataSourceType; @@ -54,6 +55,9 @@ public class IndustryMaterialServiceImpl implements IIndustryMaterialService { @Autowired private RedisCache redisCache; + @Autowired + private Redis2Cache redis2Cache; + @Autowired private IMomService momService; @@ -115,8 +119,10 @@ public class IndustryMaterialServiceImpl implements IIndustryMaterialService { @Override @DataSource(value = DataSourceType.SLAVE) - public void insertIndustryMaterialToSlaveDataSource(List industryMaterialVos) { + public String insertIndustryMaterialToSlaveDataSource(List industryMaterialVos) { + // 直接删掉扫入并且未轧制的,写入二辊数据到四辊机器里面 + clearSystem(); // TODO 这里需要查一下数据库查看是否有正在轧或者说是未轧的情况 state=0,1,3,4 List industryMaterialVos1 = industryMaterialMapper.selectIndustryMaterialListAndNotFinish(); @@ -136,9 +142,12 @@ public class IndustryMaterialServiceImpl implements IIndustryMaterialService { industryMaterialVo.setFinalWidth(null); industryMaterialMapper.insertIndustryMaterial(industryMaterialVo); } + + return "写入成功"; } + return "检测到存在物料正在轧制"; } @Override @@ -146,6 +155,21 @@ public class IndustryMaterialServiceImpl implements IIndustryMaterialService { return industryMaterialMapper.selectIndustryListRecord(industryMaterial); } + @Override + @DataSource(value = DataSourceType.SLAVE) + public boolean clearNotProcessMaterial() { + IndustryMaterial industryMaterial = new IndustryMaterial(); + industryMaterial.setState(0L); + List industryMaterialVos = industryMaterialMapper.selectAbnormalList(industryMaterial); + if (industryMaterialVos.isEmpty()){ + + // 代表状态至少是 1 2 3 4 5 6 + return false; + } + industryMaterialMapper.deleteIndustryMaterialByState(0L); + return true; + } + /** * 新增钽靶主类 @@ -749,7 +773,7 @@ public class IndustryMaterialServiceImpl implements IIndustryMaterialService { if ("1".equals(mode)) { Long materialLock = redisCache.getCacheObject("materialLock"); - if (Objects.isNull(materialLock)) { + if (Objects.isNull(materialLock) || materialLock !=1L) { // 如果没有获取到锁对象就向里面写一个锁对象 redisCache.setCacheObject("materialLock", 0L, 100, TimeUnit.HOURS); } @@ -891,4 +915,17 @@ public class IndustryMaterialServiceImpl implements IIndustryMaterialService { } + @DataSource(value = DataSourceType.SLAVE) + private void clearSystem() { + redis2Cache.deleteObject("sort"); + redis2Cache.deleteObject("batchId"); + redis2Cache.deleteObject("leftId"); + redis2Cache.deleteObject("rightId"); + + s7PLC.writeString("DB4.30","\u0000\u0000\u0000\u0000"); + s7PLC.writeString("DB44.30","\u0000\u0000\u0000\u0000"); + industryMaterialMapper.deleteIndustryMaterialByState(0L); + } + + } diff --git a/industry-system/src/main/java/com/industry/work/service/impl/IndustryStepServiceImpl.java b/industry-system/src/main/java/com/industry/work/service/impl/IndustryStepServiceImpl.java index b9e7d901..725e753b 100644 --- a/industry-system/src/main/java/com/industry/work/service/impl/IndustryStepServiceImpl.java +++ b/industry-system/src/main/java/com/industry/work/service/impl/IndustryStepServiceImpl.java @@ -403,7 +403,7 @@ public class IndustryStepServiceImpl implements IIndustryStepService { if ("0".equals(mode)) { // 2辊需要把当前材料提交到四辊库中 Long materialLock = redis2Cache.getCacheObject("materialLock"); - if (Objects.isNull(materialLock) & materialLock != 0L) { + if (Objects.isNull(materialLock) || materialLock != 0L) { // 如果是空就写一个1进去占住锁 redis2Cache.setCacheObject("materialLock", 1L); // 然后把非异常的东西都赛里面 @@ -411,7 +411,9 @@ public class IndustryStepServiceImpl implements IIndustryStepService { industryMaterialVo.setBatchId(industryStep.getBatchId()); industryMaterialVo.setState(6L); List industryMaterialVos1 = industryMaterialMapper.selectIndustryMaterialList1(industryMaterialVo); - industryMaterialService.insertIndustryMaterialToSlaveDataSource(industryMaterialVos1); + String result = industryMaterialService.insertIndustryMaterialToSlaveDataSource(industryMaterialVos1); + + System.out.println(result); } } @@ -517,15 +519,37 @@ public class IndustryStepServiceImpl implements IIndustryStepService { if ("0".equals(mode)) { // 2辊需要把当前材料提交到四辊库中 Long materialLock = redis2Cache.getCacheObject("materialLock"); - if (Objects.isNull(materialLock) & materialLock != 0L) { + + // DONE 这里还有一个问题来自,他拿到的锁标志是0代表四辊正在工作 有一个种可能来自四辊工作但是都是未轧制的(state==0),这个时候应该删除然后直接进入 + if (Objects.nonNull(materialLock) && materialLock == 0L){ + // 这个时候要加一个方法 如果是状态为0的直接全部clear然后改锁标志 + + // 这里的返回值如果是true则代表虽然四辊站住锁了但是物料未轧制。 返回值是true的情况就已经将state的都删掉了 + // 根据二辊优先原则,将二辊未轧制数据直接删除解除锁让新数据进来。 + boolean flag = industryMaterialService.clearNotProcessMaterial(); + if (flag){ + // 删除后将锁标志改为空也就是直接删除锁 + redis2Cache.deleteObject("materialLock"); + // 删除后重新获取供下方使用 + materialLock = redis2Cache.getCacheObject("materialLock"); + } + + // 如果上面的bool返回的是false 则代表四辊中有数据进行轧制此时应该巩固锁不让二辊物料进入 + else{ + redis2Cache.setCacheObject("materialLock", 0L,3000,TimeUnit.HOURS); + } + } + if (Objects.isNull(materialLock) || materialLock != 0L) { + // 如果是空就写一个1进去占住锁 - redis2Cache.setCacheObject("materialLock", 1L); + redis2Cache.setCacheObject("materialLock", 1L,3000,TimeUnit.HOURS); // 然后把非异常的东西都赛里面 IndustryMaterialVo industryMaterialVo = new IndustryMaterialVo(); industryMaterialVo.setBatchId(industryStep.getBatchId()); industryMaterialVo.setState(2L); List industryMaterialVos = industryMaterialMapper.selectIndustryMaterialList1(industryMaterialVo); - industryMaterialService.insertIndustryMaterialToSlaveDataSource(industryMaterialVos); + String result = industryMaterialService.insertIndustryMaterialToSlaveDataSource(industryMaterialVos); + System.out.println(result); } }