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