From e28ce2a6686f46cf20fecebd661af13febba8fbc Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 07 六月 2024 18:12:11 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/common/model/enums/CrnStnType.java | 57 +++++
src/main/resources/mapper/WrkMastSplitTwinMapper.xml | 49 ++++
src/main/java/com/zy/asrs/service/BasDevpService.java | 7
src/main/java/com/zy/asrs/task/handler/WrkMastSplitTwinInItHandler.java | 84 +++++++
src/main/java/com/zy/asrs/mapper/BasDevpMapper.java | 2
src/main/java/com/zy/asrs/service/WrkMastSplitTwinService.java | 5
src/main/java/com/zy/asrs/entity/BasCrnp.java | 45 ++++
src/main/java/com/zy/common/model/enums/WrkMastExecuteType.java | 51 ++++
src/main/resources/mapper/BasCrnpMapper.xml | 3
src/main/java/com/zy/asrs/mapper/WrkMastSplitTwinMapper.java | 6
src/main/java/com/zy/asrs/entity/WrkMastSplitTwin.java | 29 ++
src/main/java/com/zy/asrs/task/WrkMastStaInItScheduler.java | 2
src/main/java/com/zy/asrs/service/impl/WrkMastSplitTwinServiceImpl.java | 10
src/main/java/com/zy/asrs/task/WrkMastSplitTwinInItScheduler.java | 290 ++++++++++++++++++++++++++
src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java | 5
src/main/resources/mapper/BasDevpMapper.xml | 12 +
16 files changed, 654 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/BasCrnp.java b/src/main/java/com/zy/asrs/entity/BasCrnp.java
index 73d632e..43d7092 100644
--- a/src/main/java/com/zy/asrs/entity/BasCrnp.java
+++ b/src/main/java/com/zy/asrs/entity/BasCrnp.java
@@ -53,11 +53,32 @@
private Integer crnSts;
/**
+ * 鐘舵��
+ */
+ @ApiModelProperty(value= "鐘舵��1")
+ @TableField("crn_status_one")
+ private Integer crnStatusOne;
+
+ /**
+ * 鐘舵��
+ */
+ @ApiModelProperty(value= "鐘舵��2")
+ @TableField("crn_status_two")
+ private Integer crnStatusTwo;
+
+ /**
* 宸ヤ綔鍙�
*/
@ApiModelProperty(value= "宸ヤ綔鍙�")
@TableField("wrk_no")
private Integer wrkNo;
+
+ /**
+ * 宸ヤ綔鍙�
+ */
+ @ApiModelProperty(value= "宸ヤ綔鍙�")
+ @TableField("wrk_no_two")
+ private Integer wrkNoTwo;
/**
* 鍥炲師鐐�
@@ -245,6 +266,22 @@
this.crnSts = crnSts;
}
+ public Integer getCrnStatusOne() {
+ return crnStatusOne;
+ }
+
+ public void setCrnStatusOne(Integer crnStatusOne) {
+ this.crnStatusOne = crnStatusOne;
+ }
+
+ public Integer getCrnStatusTwo() {
+ return crnStatusTwo;
+ }
+
+ public void setCrnStatusTwo(Integer crnStatusTwo) {
+ this.crnStatusTwo = crnStatusTwo;
+ }
+
public Integer getWrkNo() {
return wrkNo;
}
@@ -253,6 +290,14 @@
this.wrkNo = wrkNo;
}
+ public Integer getWrkNoTwo() {
+ return wrkNoTwo;
+ }
+
+ public void setWrkNoTwo(Integer wrkNoTwo) {
+ this.wrkNoTwo = wrkNoTwo;
+ }
+
public Integer getOrigin() {
return origin;
}
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastSplitTwin.java b/src/main/java/com/zy/asrs/entity/WrkMastSplitTwin.java
index ec0a4d7..2ef6006 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastSplitTwin.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastSplitTwin.java
@@ -159,6 +159,35 @@
public WrkMastSplitTwin() {}
+ public WrkMastSplitTwin(WrkMast wrkMast,Integer crnStation,Date now) {
+ this.wrkNo = wrkMast.getWrkNo().longValue();
+ this.createTime = now;
+ this.updateTime = now;
+ this.type = crnStation; //宸ヤ綅
+ this.lineNumber = wrkMast.getIoPri().intValue();
+ this.bignTime = wrkMast.getIoTime();
+ this.crnNo = wrkMast.getCrnNo();
+ }
+
+ public WrkMastSplitTwin(WrkMastSplitTwin wrkMastSplitTwin) {
+ this.wrkNo = wrkMastSplitTwin.getWrkNo();
+ this.createTime = wrkMastSplitTwin.getCreateTime();
+ this.updateTime = wrkMastSplitTwin.getUpdateTime();
+ this.type = wrkMastSplitTwin.getType();
+ this.lineNumber = wrkMastSplitTwin.getLineNumber();
+ this.bignTime = wrkMastSplitTwin.getBignTime();
+ this.crnNo = wrkMastSplitTwin.getCrnNo();
+ this.wrkStart = wrkMastSplitTwin.getWrkStart();
+ this.wrkEnd = wrkMastSplitTwin.getWrkEnd();
+ this.startRow = wrkMastSplitTwin.getStartRow();
+ this.startBay = wrkMastSplitTwin.getStartBay();
+ this.startLev = wrkMastSplitTwin.getStartLev();
+ this.endRow = wrkMastSplitTwin.getEndRow();
+ this.endBay = wrkMastSplitTwin.getEndBay();
+ this.endLev = wrkMastSplitTwin.getEndLev();
+ this.ioType = wrkMastSplitTwin.getIoType();
+ }
+
public WrkMastSplitTwin(Long wrkNo,Date createTime,Date updateTime,Integer type,Integer wrkSts,Integer lineNumber,Integer wrkType,Date bignTime,Integer crnNo,String wrkStart,String wrkEnd,Integer startRow,Integer startBay,Integer startLev,Integer endRow,Integer endBay,Integer endLev,Integer ioType) {
this.wrkNo = wrkNo;
this.createTime = createTime;
diff --git a/src/main/java/com/zy/asrs/mapper/BasDevpMapper.java b/src/main/java/com/zy/asrs/mapper/BasDevpMapper.java
index 668d2ca..f5ddf09 100644
--- a/src/main/java/com/zy/asrs/mapper/BasDevpMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/BasDevpMapper.java
@@ -15,4 +15,6 @@
List<Integer> getAvailableInSite(@Param("typeNo") Integer typeNo);
List<Integer> getAvailableOutSite(@Param("typeNo") Integer typeNo);
+
+ Integer selectWaitNecessary(@Param("devNos") List<Integer> devNos,@Param("wrkNo") Integer wrkNo);
}
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastSplitTwinMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastSplitTwinMapper.java
index 2b7cfc5..317d9cb 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastSplitTwinMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastSplitTwinMapper.java
@@ -3,10 +3,14 @@
import com.zy.asrs.entity.WrkMastSplitTwin;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
+
+import java.util.List;
@Mapper
@Repository
public interface WrkMastSplitTwinMapper extends BaseMapper<WrkMastSplitTwin> {
-
+ List<WrkMastSplitTwin> getWrkMastSplitTwin(@Param("crnNo")Integer crnNo, @Param("type")Integer type, @Param("ioType")Integer ioType, @Param("wrkType")Integer wrkType, @Param("wrkSts")Integer wrkSts);
+ List<WrkMastSplitTwin> getWrkMastSplitTwinNoComplete(@Param("crnNo")Integer crnNo, @Param("type")Integer type, @Param("ioType")Integer ioType, @Param("wrkType")Integer wrkType, @Param("wrkSts")Integer wrkSts);
}
diff --git a/src/main/java/com/zy/asrs/service/BasDevpService.java b/src/main/java/com/zy/asrs/service/BasDevpService.java
index 3e8f21f..43ff028 100644
--- a/src/main/java/com/zy/asrs/service/BasDevpService.java
+++ b/src/main/java/com/zy/asrs/service/BasDevpService.java
@@ -49,4 +49,11 @@
*/
BasDevp checkSiteStatusEmpty(Integer devpNo, boolean pakin);
+ /**
+ * 鐩爣绔欑偣鐘舵�佹娴�
+ * @param devNos 妫�娴嬬珯鐐归泦鍚�
+ * @param wrkNo 鎺掗櫎宸ヤ綔鍙�
+ */
+ Integer selectWaitNecessary(List<Integer> devNos,Integer wrkNo);
+
}
diff --git a/src/main/java/com/zy/asrs/service/WrkMastSplitTwinService.java b/src/main/java/com/zy/asrs/service/WrkMastSplitTwinService.java
index 7f1d735..b1d584a 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastSplitTwinService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastSplitTwinService.java
@@ -3,6 +3,9 @@
import com.zy.asrs.entity.WrkMastSplitTwin;
import com.baomidou.mybatisplus.service.IService;
-public interface WrkMastSplitTwinService extends IService<WrkMastSplitTwin> {
+import java.util.List;
+public interface WrkMastSplitTwinService extends IService<WrkMastSplitTwin> {
+ List<WrkMastSplitTwin> getWrkMastSplitTwin(Integer crnNo, Integer type, Integer ioType, Integer wrkType, Integer wrkSts);
+ List<WrkMastSplitTwin> getWrkMastSplitTwinNoComplete(Integer crnNo, Integer type, Integer ioType, Integer wrkType, Integer wrkSts);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
index fa2dd99..9f914a8 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
@@ -18,6 +18,11 @@
private WrkMastService wrkMastService;
@Override
+ public Integer selectWaitNecessary(List<Integer> devNos,Integer wrkNo){
+ return this.baseMapper.selectWaitNecessary(devNos,wrkNo);
+ }
+
+ @Override
public List<Integer> getAvailableInSite() {
return this.baseMapper.getAvailableInSite(1);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastSplitTwinServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastSplitTwinServiceImpl.java
index f0b7c4d..eb9235f 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastSplitTwinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastSplitTwinServiceImpl.java
@@ -6,7 +6,17 @@
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
+import java.util.List;
+
@Service("wrkMastSplitTwinService")
public class WrkMastSplitTwinServiceImpl extends ServiceImpl<WrkMastSplitTwinMapper, WrkMastSplitTwin> implements WrkMastSplitTwinService {
+ @Override
+ public List<WrkMastSplitTwin> getWrkMastSplitTwin(Integer crnNo, Integer type, Integer ioType, Integer wrkType, Integer wrkSts) {
+ return this.baseMapper.getWrkMastSplitTwin(crnNo, type, ioType, wrkType, wrkSts);
+ }
+ @Override
+ public List<WrkMastSplitTwin> getWrkMastSplitTwinNoComplete(Integer crnNo, Integer type, Integer ioType, Integer wrkType, Integer wrkSts) {
+ return this.baseMapper.getWrkMastSplitTwinNoComplete(crnNo, type, ioType, wrkType, wrkSts);
+ }
}
diff --git a/src/main/java/com/zy/asrs/task/WrkMastSplitTwinInItScheduler.java b/src/main/java/com/zy/asrs/task/WrkMastSplitTwinInItScheduler.java
new file mode 100644
index 0000000..c9a66cf
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/WrkMastSplitTwinInItScheduler.java
@@ -0,0 +1,290 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.BasCrnp;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.WrkMastSplitTwin;
+import com.zy.asrs.service.BasCrnpService;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.service.WrkMastSplitTwinService;
+import com.zy.asrs.service.impl.BasDevpServiceImpl;
+import com.zy.asrs.service.impl.WrkMastServiceImpl;
+import com.zy.asrs.task.handler.WrkMastSplitTwinInItHandler;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.model.enums.CrnStnType;
+import com.zy.common.model.enums.WrkMastExecuteType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Created by Monkey D. Luffy on 2024.06.07
+ * 浜冲窞鐓滄槦..............浠ヤ笅.............浜冲窞鐓滄槦.............鍓嶅悗鍙屽伐浣嶆媶鍒嗗爢鍨涙満鎵ц浣滀笟鐢熸垚
+ */
+@Component
+public class WrkMastSplitTwinInItScheduler {
+
+ private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class);
+
+ @Autowired
+ private WrkMastSplitTwinInItHandler wrkMastSplitTwinInItHandler;
+ @Autowired
+ private WrkMastSplitTwinService wrkMastSplitTwinService;
+ @Autowired
+ private BasCrnpService basCrnpService;
+ @Autowired
+ private BasDevpServiceImpl basDevpService;
+
+ public static final List<Integer> SplitTwin_CRN_NO = new ArrayList<Integer>() {{
+ add(3);
+ add(4);
+ add(5);
+ }};
+ @Autowired
+ private WrkMastServiceImpl wrkMastService;
+
+
+ @Scheduled(cron = "0/3 * * * * ? ")
+ private void execute() {
+ for (Integer crnNo : SplitTwin_CRN_NO) {
+ try {
+ Date now = new Date();
+ List<Integer> integers = WrkMastExecuteType.get(crnNo);
+ BasCrnp basCrnp = basCrnpService.selectById(crnNo);
+ if (!Cools.isEmpty(basCrnp)) {
+ if (basCrnp.getWrkNo() == 0 && basCrnp.getCrnSts() != 3) {
+ continue;
+ }
+ if (((basCrnp.getCrnStatusOne() > 0 && basCrnp.getCrnStatusOne() <= 3) || basCrnp.getCrnStatusOne() == 20) && basCrnp.getCrnStatusTwo() == 0) {//鍫嗗灈鏈哄伐浣�1鍙栬揣杩愯涓� //鍫嗗灈鏈哄伐浣�1鏈夌墿寰呬綔涓�
+ List<WrkMastSplitTwin> wrkMastSplitTwinList = wrkMastSplitTwinService.getWrkMastSplitTwinNoComplete(crnNo, 1, null, null, 4);
+ if (wrkMastSplitTwinList.size() != 1){
+ log.error("鍓嶅悗鍙屽伐浣嶆媶鍒嗗爢鍨涙満鎵ц浣滀笟鐢熸垚,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crnNo,"涓嶅瓨鍦ㄦ垨鑰呭瓨鍦ㄥ绗斿彲鎵ц浣滀笟锛岃鍒犻櫎鏃犳晥浣滀笟锛侊紒锛�",1);
+ continue;
+ }
+ WrkMastSplitTwin wrkMastSplitTwin = wrkMastSplitTwinList.get(0);
+ if (wrkMastSplitTwin.getWrkType()!=1){
+ continue;
+ }
+ wrkMastSplitTwinList = wrkMastSplitTwinService.getWrkMastSplitTwinNoComplete(crnNo, 2, null, null, 4);
+ if (wrkMastSplitTwinList.size() > 1){
+ log.error("鍓嶅悗鍙屽伐浣嶆媶鍒嗗爢鍨涙満鎵ц浣滀笟鐢熸垚,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crnNo,"瀛樺湪澶氱瑪鍙墽琛屼綔涓氾紝璇峰垹闄ゆ棤鏁堜綔涓氾紒锛侊紒",2);
+ continue;
+ } else if (wrkMastSplitTwinList.size()==1){
+ continue;
+ }
+ switch (wrkMastSplitTwin.getIoType()){
+ case 1:
+ Integer count = basDevpService.selectWaitNecessary(integers,wrkMastSplitTwin.getWrkNo().intValue());
+ if (basCrnp.getCrnStatusOne() != 20) {//鍫嗗灈鏈哄伐浣�1鏈夌墿寰呬綔涓�
+ continue;
+ }
+ if (wrkMastSplitTwin.getWrkSts()!=2){
+ continue;
+ }
+ if (count==0){
+
+ wrkMastSplitTwin.setWrkSts(4);
+ wrkMastSplitTwin.setUpdateTime(now);
+ wrkMastSplitTwinService.updateById(wrkMastSplitTwin);
+
+ WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMastSplitTwin);
+ wrkMastSplitTwinNew.setCreateTime(now);
+ wrkMastSplitTwinNew.setUpdateTime(now);
+ wrkMastSplitTwinNew.setWrkSts(0);
+ wrkMastSplitTwinNew.setWrkType(2);
+ wrkMastSplitTwinService.insert(wrkMastSplitTwinNew);
+ }else {
+ BasDevp basDevp = basDevpService.selectById(CrnStnType.getDevNo(crnNo, true));
+ if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){
+ continue;
+ }
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()));
+ if (wrkMast.getIoType()>10 || wrkMast.getWrkSts()!=2){
+ continue;
+ }
+ WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMast,2,now);
+ wrkMastSplitTwinNew.setWrkStart(wrkMast.getSourceLocNo());
+ wrkMastSplitTwinNew.setWrkEnd(wrkMast.getIoType()==11? wrkMast.getLocNo():wrkMast.getSourceStaNo().toString());
+ wrkMastSplitTwinNew.setStartRow(Utils.getRow(wrkMast.getSourceLocNo()));
+ wrkMastSplitTwinNew.setStartBay(Utils.getBay(wrkMast.getSourceLocNo()));
+ wrkMastSplitTwinNew.setStartLev(Utils.getLev(wrkMast.getSourceLocNo()));
+ int[] ints = new int[3];
+ if (wrkMast.getIoType()!=11){
+ ints = CrnStnType.get(wrkMast.getSourceStaNo());
+ if (ints == null){
+ log.error("鍓嶅悗鍙屽伐浣嶆媶鍒嗗爢鍨涙満鎵ц浣滀笟鐢熸垚,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綔鍙�={},绔欑偣鍙�={}",crnNo,"鏈煡绔欑偣鍙�",wrkMast.getSourceStaNo(),wrkMast.getSourceStaNo());
+ continue;
+ }
+ }
+ wrkMastSplitTwinNew.setEndRow(wrkMast.getIoType()==11? Utils.getRow(wrkMast.getLocNo()): ints[0]);
+ wrkMastSplitTwinNew.setEndBay(wrkMast.getIoType()==11? Utils.getBay(wrkMast.getLocNo()): ints[1]);
+ wrkMastSplitTwinNew.setEndLev(wrkMast.getIoType()==11? Utils.getLev(wrkMast.getLocNo()): ints[2]);
+ wrkMastSplitTwinNew.setWrkType(1);
+ wrkMastSplitTwinNew.setIoType(1);
+ wrkMastSplitTwinNew.setWrkSts(0);
+ wrkMastSplitTwinService.insert(wrkMastSplitTwinNew);
+ }
+ break;
+ case 2:
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 12L).eq("crn_no", crnNo));
+ if (wrkMasts.size()==1){
+ wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 11L).eq("crn_no", crnNo));
+ if (wrkMasts.isEmpty()){
+ if (basCrnp.getCrnStatusOne() != 20) {//鍫嗗灈鏈哄伐浣�1鏈夌墿寰呬綔涓�
+ continue;
+ }
+ if (wrkMastSplitTwin.getWrkSts()!=2){
+ continue;
+ }
+ wrkMastSplitTwin.setWrkSts(4);
+ wrkMastSplitTwin.setUpdateTime(now);
+ wrkMastSplitTwinService.updateById(wrkMastSplitTwin);
+
+ WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMastSplitTwin);
+ wrkMastSplitTwinNew.setCreateTime(now);
+ wrkMastSplitTwinNew.setUpdateTime(now);
+ wrkMastSplitTwinNew.setWrkSts(0);
+ wrkMastSplitTwinNew.setWrkType(2);
+ wrkMastSplitTwinService.insert(wrkMastSplitTwinNew);
+ }else {
+ for (WrkMast wrkMast:wrkMasts){
+ WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMast,2,now);
+ wrkMastSplitTwinNew.setWrkStart(wrkMast.getSourceLocNo());
+ wrkMastSplitTwinNew.setWrkEnd(wrkMast.getIoType()==11? wrkMast.getLocNo():wrkMast.getSourceStaNo().toString());
+ wrkMastSplitTwinNew.setStartRow(Utils.getRow(wrkMast.getSourceLocNo()));
+ wrkMastSplitTwinNew.setStartBay(Utils.getBay(wrkMast.getSourceLocNo()));
+ wrkMastSplitTwinNew.setStartLev(Utils.getLev(wrkMast.getSourceLocNo()));
+ int[] ints = new int[3];
+ if (wrkMast.getIoType()!=11){
+ ints = CrnStnType.get(wrkMast.getSourceStaNo());
+ if (ints == null){
+ log.error("鍓嶅悗鍙屽伐浣嶆媶鍒嗗爢鍨涙満鎵ц浣滀笟鐢熸垚,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綔鍙�={},绔欑偣鍙�={}",crnNo,"鏈煡绔欑偣鍙�",wrkMast.getSourceStaNo(),wrkMast.getSourceStaNo());
+ continue;
+ }
+ }
+ wrkMastSplitTwinNew.setEndRow(wrkMast.getIoType()==11? Utils.getRow(wrkMast.getLocNo()): ints[0]);
+ wrkMastSplitTwinNew.setEndBay(wrkMast.getIoType()==11? Utils.getBay(wrkMast.getLocNo()): ints[1]);
+ wrkMastSplitTwinNew.setEndLev(wrkMast.getIoType()==11? Utils.getLev(wrkMast.getLocNo()): ints[2]);
+ wrkMastSplitTwinNew.setWrkType(1);
+ wrkMastSplitTwinNew.setIoType(2);
+ wrkMastSplitTwinNew.setWrkSts(0);
+ wrkMastSplitTwinService.insert(wrkMastSplitTwinNew);
+ }
+ }
+ }
+ break;
+ default:
+ log.error("鍓嶅悗鍙屽伐浣嶆媶鍒嗗爢鍨涙満鎵ц浣滀笟鐢熸垚,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",crnNo,"浠诲姟绫诲瀷鏈煡",1,1,1);
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("鍓嶅悗鍙屽伐浣嶆媶鍒嗗爢鍨涙満鎵ц浣滀笟鐢熸垚澶辫触锛屽爢鍨涙満鍙�={}锛屽紓甯稿師鍥�={}", crnNo, e.getMessage());
+ }
+ }
+ }
+
+ @Scheduled(cron = "0/3 * * * * ? ")
+ private void executeTwo() {
+ for (Integer crnNo : SplitTwin_CRN_NO) {
+ try {
+ Date now = new Date();
+ List<Integer> integers = WrkMastExecuteType.get(crnNo);
+ BasCrnp basCrnp = basCrnpService.selectById(crnNo);
+ if (!Cools.isEmpty(basCrnp)) {
+ if (basCrnp.getWrkNo() == 0 && basCrnp.getCrnSts() != 3) {
+ continue;
+ }
+
+ if (basCrnp.getCrnStatusOne() == 20 && basCrnp.getCrnStatusTwo() == 0) {//鍫嗗灈鏈哄伐浣�1鏈夌墿寰呬綔涓�
+ List<WrkMastSplitTwin> wrkMastSplitTwinList = wrkMastSplitTwinService.getWrkMastSplitTwinNoComplete(crnNo, 1, null, null, 4);
+ if (wrkMastSplitTwinList.size() != 1){
+ log.error("鍓嶅悗鍙屽伐浣嶆媶鍒嗗爢鍨涙満鎵ц浣滀笟鐢熸垚,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crnNo,"涓嶅瓨鍦ㄦ垨鑰呭瓨鍦ㄥ绗斿彲鎵ц浣滀笟锛岃鍒犻櫎鏃犳晥浣滀笟锛侊紒锛�",1);
+ continue;
+ }
+ WrkMastSplitTwin wrkMastSplitTwin = wrkMastSplitTwinList.get(0);
+ if (wrkMastSplitTwin.getWrkType()!=1){
+ continue;
+ }
+ wrkMastSplitTwinList = wrkMastSplitTwinService.getWrkMastSplitTwinNoComplete(crnNo, 2, null, null, 4);
+ if (wrkMastSplitTwinList.size() > 1){
+ log.error("鍓嶅悗鍙屽伐浣嶆媶鍒嗗爢鍨涙満鎵ц浣滀笟鐢熸垚,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crnNo,"瀛樺湪澶氱瑪鍙墽琛屼綔涓氾紝璇峰垹闄ゆ棤鏁堜綔涓氾紒锛侊紒",2);
+ continue;
+ } else if (wrkMastSplitTwinList.size()==1){
+ continue;
+ }
+ switch (wrkMastSplitTwin.getIoType()){
+ case 1:
+ Integer count = basDevpService.selectWaitNecessary(integers,wrkMastSplitTwin.getWrkNo().intValue());
+ if (count!=0){
+
+ }
+ break;
+ case 2:
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 12L).eq("crn_no", crnNo));
+ if (wrkMasts.size()==1){
+ wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 11L).eq("crn_no", crnNo));
+ if (wrkMasts.isEmpty()){
+ if (basCrnp.getCrnStatusOne() != 20) {//鍫嗗灈鏈哄伐浣�1鏈夌墿寰呬綔涓�
+ continue;
+ }
+ if (wrkMastSplitTwin.getWrkSts()!=2){
+ continue;
+ }
+ wrkMastSplitTwin.setWrkSts(4);
+ wrkMastSplitTwin.setUpdateTime(now);
+ wrkMastSplitTwinService.updateById(wrkMastSplitTwin);
+
+ WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMastSplitTwin);
+ wrkMastSplitTwinNew.setCreateTime(now);
+ wrkMastSplitTwinNew.setUpdateTime(now);
+ wrkMastSplitTwinNew.setWrkSts(0);
+ wrkMastSplitTwinNew.setWrkType(2);
+ wrkMastSplitTwinService.insert(wrkMastSplitTwinNew);
+ }else {
+ for (WrkMast wrkMast:wrkMasts){
+ WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMast,2,now);
+ wrkMastSplitTwinNew.setWrkStart(wrkMast.getSourceLocNo());
+ wrkMastSplitTwinNew.setWrkEnd(wrkMast.getIoType()==11? wrkMast.getLocNo():wrkMast.getSourceStaNo().toString());
+ wrkMastSplitTwinNew.setStartRow(Utils.getRow(wrkMast.getSourceLocNo()));
+ wrkMastSplitTwinNew.setStartBay(Utils.getBay(wrkMast.getSourceLocNo()));
+ wrkMastSplitTwinNew.setStartLev(Utils.getLev(wrkMast.getSourceLocNo()));
+ int[] ints = new int[3];
+ if (wrkMast.getIoType()!=11){
+ ints = CrnStnType.get(wrkMast.getSourceStaNo());
+ if (ints == null){
+ log.error("鍓嶅悗鍙屽伐浣嶆媶鍒嗗爢鍨涙満鎵ц浣滀笟鐢熸垚,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綔鍙�={},绔欑偣鍙�={}",crnNo,"鏈煡绔欑偣鍙�",wrkMast.getSourceStaNo(),wrkMast.getSourceStaNo());
+ continue;
+ }
+ }
+ wrkMastSplitTwinNew.setEndRow(wrkMast.getIoType()==11? Utils.getRow(wrkMast.getLocNo()): ints[0]);
+ wrkMastSplitTwinNew.setEndBay(wrkMast.getIoType()==11? Utils.getBay(wrkMast.getLocNo()): ints[1]);
+ wrkMastSplitTwinNew.setEndLev(wrkMast.getIoType()==11? Utils.getLev(wrkMast.getLocNo()): ints[2]);
+ wrkMastSplitTwinNew.setWrkType(0);
+ wrkMastSplitTwinNew.setIoType(1);
+ wrkMastSplitTwinNew.setWrkSts(0);
+ wrkMastSplitTwinService.insert(wrkMastSplitTwinNew);
+ }
+ }
+ }
+ break;
+ default:
+ log.error("鍓嶅悗鍙屽伐浣嶆媶鍒嗗爢鍨涙満鎵ц浣滀笟鐢熸垚,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",crnNo,"浠诲姟绫诲瀷鏈煡",1,1,1);
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("鍓嶅悗鍙屽伐浣嶆媶鍒嗗爢鍨涙満鎵ц浣滀笟鐢熸垚澶辫触锛屽爢鍨涙満鍙�={}锛屽紓甯稿師鍥�={}", crnNo, e.getMessage());
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/task/WrkMastStaInItScheduler.java b/src/main/java/com/zy/asrs/task/WrkMastStaInItScheduler.java
index 8f96b4e..8ff7df8 100644
--- a/src/main/java/com/zy/asrs/task/WrkMastStaInItScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WrkMastStaInItScheduler.java
@@ -17,7 +17,7 @@
/**
* Created by Monkey D. Luffy on 2023.07.25
- * 寰愬伐姹変簯..............浠ヤ笅.............涓婇ザ姹熼摐.............鑷姩琛ョ┖鏉�
+ * 寰愬伐姹変簯..............浠ヤ笅.............涓婇ザ姹熼摐.............灏忚溅鎵ц浣滀笟鐢熸垚
*/
@Component
public class WrkMastStaInItScheduler {
diff --git a/src/main/java/com/zy/asrs/task/handler/WrkMastSplitTwinInItHandler.java b/src/main/java/com/zy/asrs/task/handler/WrkMastSplitTwinInItHandler.java
new file mode 100644
index 0000000..8f879a8
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/WrkMastSplitTwinInItHandler.java
@@ -0,0 +1,84 @@
+package com.zy.asrs.task.handler;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.WrkMastSta;
+import com.zy.asrs.service.WrkMastStaService;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+
+/**
+ * Created by Monkey D. Luffy on 2024.06.07
+ * 浜冲窞鐓滄槦..............浠ヤ笅.............浜冲窞鐓滄槦.............鍓嶅悗鍙屽伐浣嶆媶鍒嗗爢鍨涙満鎵ц浣滀笟鐢熸垚
+ */
+@Slf4j
+@Service
+@Transactional
+public class WrkMastSplitTwinInItHandler extends AbstractHandler<String> {
+ @Autowired
+ private WrkMastStaService wrkMastStaService;
+
+ public ReturnT<String> start(WrkMast wrkMast,BasDevp basDevp,Integer type) {
+ try {
+ WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no", wrkMast.getWrkNo().longValue()));
+ if (!Cools.isEmpty(wrkMastSta)){
+ return SUCCESS;
+ }
+ switch (type){
+ case 13://鍑� 3锛氬彇鏀�
+ if (Cools.isEmpty(wrkMastSta)){
+ WrkMastSta wrkMastSta1 = new WrkMastSta(wrkMast,new Date(),basDevp);
+ wrkMastSta1.setType(1); //绫诲瀷 1:闈炵┖ 2:绌烘澘
+ wrkMastSta1.setWrkType(3); //宸ヤ綔绫诲瀷 1:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 3锛氬彇鏀� 5锛氭弧鍙� 6锛氭弧鏀�
+ wrkMastStaService.insert(wrkMastSta1);
+ }
+ break;
+ case 21://1:鍙栵紙鍙犵洏锛�
+ if (Cools.isEmpty(wrkMastSta)){
+ WrkMastSta wrkMastSta1 = new WrkMastSta(wrkMast,new Date(),basDevp);
+ wrkMastSta1.setType(fullKM(wrkMast)? 1:2);
+ wrkMastSta1.setWrkType(1);//宸ヤ綔绫诲瀷 1:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 3锛氬彇鏀� 5锛氭弧鍙� 6锛氭弧鏀�
+ wrkMastStaService.insert(wrkMastSta1);
+ };
+ break;
+ case 22://2锛氭斁(鎷嗙洏)
+ if (Cools.isEmpty(wrkMastSta)){
+ WrkMastSta wrkMastSta1 = new WrkMastSta(wrkMast,new Date(),basDevp);
+ wrkMastSta1.setType(fullKM(wrkMast)? 1:2);
+ wrkMastSta1.setWrkType(5);//宸ヤ綔绫诲瀷 1:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 3锛氬彇鏀� 5锛氭弧鍙� 6锛氭弧鏀�
+ wrkMastStaService.insert(wrkMastSta1);
+ };
+ break;
+ case 23://3锛氭弧鍙�
+ if (Cools.isEmpty(wrkMastSta)){
+ WrkMastSta wrkMastSta1 = new WrkMastSta(wrkMast,new Date(),basDevp);
+ wrkMastSta1.setType(fullKM(wrkMast)? 1:2);
+ wrkMastSta1.setWrkType(5);
+ wrkMastStaService.insert(wrkMastSta1);
+ }
+ default:
+ return SUCCESS;
+ }
+
+ }catch (Exception e){
+ log.error("寮傚父锛侊紒锛�"+e);
+ return FAIL;
+ }
+ return SUCCESS;
+ }
+
+ public boolean fullKM(WrkMast wrkMast){
+ if (wrkMast.getIoType()!=10 && wrkMast.getIoType()!=110){
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/src/main/java/com/zy/common/model/enums/CrnStnType.java b/src/main/java/com/zy/common/model/enums/CrnStnType.java
new file mode 100644
index 0000000..ed4ec3b
--- /dev/null
+++ b/src/main/java/com/zy/common/model/enums/CrnStnType.java
@@ -0,0 +1,57 @@
+package com.zy.common.model.enums;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public enum CrnStnType {
+
+ CRN_STN_261(3,261,10,1,1,true),
+ CRN_STN_200(3,200,9,1,1,false),
+ CRN_STN_260(4,260,12,1,1,true),
+ CRN_STN_250(4,250,11,1,1,false),
+ CRN_STN_259(5,259,14,1,1,true),
+ CRN_STN_241(5,241,13,1,1,false)
+ ;
+ private final Integer CrnNo;
+ private final Integer devNo;
+ private final Integer row;
+ private final Integer bay;
+ private final Integer lev;
+ private final boolean sign;
+ CrnStnType(Integer CrnNo, Integer devNo,Integer row,Integer bay,Integer lev,boolean sign){
+ this.CrnNo = CrnNo;
+ this.devNo = devNo;
+ this.row = row;
+ this.bay = bay;
+ this.lev = lev;
+ this.sign = sign;
+ }
+
+ public static int[] get(Integer CrnNo,boolean sign) {
+ for (CrnStnType type : CrnStnType.values()){
+ if (type.CrnNo.equals(CrnNo) && type.sign == sign){
+ return new int[]{type.row,type.bay,type.lev};
+ }
+ }
+ return null;
+ }
+
+ public static Integer getDevNo(Integer CrnNo,boolean sign) {
+ for (CrnStnType type : CrnStnType.values()){
+ if (type.CrnNo.equals(CrnNo) && type.sign == sign){
+ return type.devNo;
+ }
+ }
+ return 0;
+ }
+
+ public static int[] get(Integer devNo) {
+ for (CrnStnType type : CrnStnType.values()){
+ if (type.devNo.equals(devNo)){
+ return new int[]{type.row,type.bay,type.lev};
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/zy/common/model/enums/WrkMastExecuteType.java b/src/main/java/com/zy/common/model/enums/WrkMastExecuteType.java
new file mode 100644
index 0000000..716c986
--- /dev/null
+++ b/src/main/java/com/zy/common/model/enums/WrkMastExecuteType.java
@@ -0,0 +1,51 @@
+package com.zy.common.model.enums;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public enum WrkMastExecuteType {
+
+ DEVP_NO_CRN_THREE(3,"DEVP_NO_CRN_THREE", linearSmallToBig(1,3)),
+ DEVP_NO_CRN_FOUR(4,"DEVP_NO_CRN_FOUR", linearSmallToBig(1,3)),
+ DEVP_NO_CRN_FIVE(5,"DEVP_NO_CRN_FIVE", linearSmallToBig(1,3))
+ ;
+ private final Integer id;
+ private final String code;
+ private List<Integer> siteList;
+ WrkMastExecuteType(Integer id,String code,List<Integer> siteList){
+ this.id = id;
+ this.code = code;
+ this.siteList = siteList;
+ }
+
+ public static List<Integer> get(Integer id) {
+ for (WrkMastExecuteType type : WrkMastExecuteType.values()){
+ if (type.id.equals(id)){
+ return type.siteList;
+ }
+ }
+ return new ArrayList<>();
+ }
+
+ public static List<Integer> get(String code) {
+ for (WrkMastExecuteType type : WrkMastExecuteType.values()){
+ if (type.code.equals(code)){
+ return type.siteList;
+ }
+ }
+ return new ArrayList<>();
+ }
+
+ private static List<Integer> nonlinearSmallToBig(Integer[] sites){
+ return new ArrayList<>(Arrays.asList(sites));
+ }
+
+ private static List<Integer> linearSmallToBig(Integer smallSta,Integer bigSta){
+ List<Integer> integers = new ArrayList<>();
+ for (int i = smallSta;i<bigSta;i++){
+ integers.add(i);
+ }
+ return integers;
+ }
+}
diff --git a/src/main/resources/mapper/BasCrnpMapper.xml b/src/main/resources/mapper/BasCrnpMapper.xml
index 50d9755..f52453f 100644
--- a/src/main/resources/mapper/BasCrnpMapper.xml
+++ b/src/main/resources/mapper/BasCrnpMapper.xml
@@ -8,7 +8,10 @@
<result column="in_enable" property="inEnable" />
<result column="out_enable" property="outEnable" />
<result column="crn_sts" property="crnSts" />
+ <result column="crn_status_one" property="crnStatusOne" />
+ <result column="crn_status_two" property="crnStatusTwo" />
<result column="wrk_no" property="wrkNo" />
+ <result column="wrk_no_two" property="wrkNoTwo" />
<result column="crn_err" property="crnErr" />
<result column="frm_locno" property="frmLocno" />
<result column="frm_sta" property="frmSta" />
diff --git a/src/main/resources/mapper/BasDevpMapper.xml b/src/main/resources/mapper/BasDevpMapper.xml
index 7cd9d8e..9a765ab 100644
--- a/src/main/resources/mapper/BasDevpMapper.xml
+++ b/src/main/resources/mapper/BasDevpMapper.xml
@@ -68,4 +68,16 @@
group by abd.dev_no
</select>
+ <select id="selectWaitNecessary" resultType="java.lang.Integer">
+ select count(1)
+ from asr_bas_devp
+ where 1=1
+ and dev_no in
+ <foreach item="item" collection="devNos" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ and wrk_no not is null and wrk_no!=0 and wrk_no != #{wrkNo}
+
+ </select>
+
</mapper>
diff --git a/src/main/resources/mapper/WrkMastSplitTwinMapper.xml b/src/main/resources/mapper/WrkMastSplitTwinMapper.xml
index f409abe..0a474f2 100644
--- a/src/main/resources/mapper/WrkMastSplitTwinMapper.xml
+++ b/src/main/resources/mapper/WrkMastSplitTwinMapper.xml
@@ -26,4 +26,53 @@
</resultMap>
+ <sql id="batchSeq">
+ <if test="type != null">
+ and type = #{type}
+ </if>
+ <if test="ioType != null">
+ and io_type = #{ioType}
+ </if>
+ <if test="wrkType != null">
+ and wrk_type = #{wrkType}
+ </if>
+ <if test="wrkSts != null">
+ and wrk_sts = #{wrkSts}
+ </if>
+ <if test="crnNo != null">
+ and crn_no = #{crnNo}
+ </if>
+ </sql>
+
+ <sql id="batchSeqNo">
+ <if test="type != null">
+ and type = #{type}
+ </if>
+ <if test="ioType != null">
+ and io_type = #{ioType}
+ </if>
+ <if test="wrkType != null">
+ and wrk_type = #{wrkType}
+ </if>
+ <if test="crnNo != null">
+ and crn_no = #{crnNo}
+ </if>
+ </sql>
+
+ <select id="getWrkMastSplitTwin" resultMap="BaseResultMap">
+ select * from asr_wrk_mast_split_twin
+ where 1=1
+ <include refid="batchSeq"></include>
+ order by line_number,id
+ </select>
+
+ <select id="getWrkMastSplitTwinNoComplete" resultMap="BaseResultMap">
+ select * from asr_wrk_mast_split_twin
+ where 1=1
+ <if test="wrkSts != null">
+ and wrk_sts != #{wrkSts}
+ </if>
+ <include refid="batchSeq"></include>
+ order by line_number,id
+ </select>
</mapper>
--
Gitblit v1.9.1