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; } 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; 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); } 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); } 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); } 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); } 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); } 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); } } src/main/java/com/zy/asrs/task/WrkMastSplitTwinInItScheduler.java
New file @@ -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()); } } } } 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 { src/main/java/com/zy/asrs/task/handler/WrkMastSplitTwinInItHandler.java
New file @@ -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; } } src/main/java/com/zy/common/model/enums/CrnStnType.java
New file @@ -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; } } src/main/java/com/zy/common/model/enums/WrkMastExecuteType.java
New file @@ -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; } } 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" /> 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> 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>