|  |  | 
 |  |  | 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.entity.WrkMastSplitTwin; | 
 |  |  | import com.zy.asrs.service.WrkMastService; | 
 |  |  | import com.zy.asrs.service.WrkMastSplitTwinService; | 
 |  |  | import com.zy.asrs.task.AbstractHandler; | 
 |  |  | import com.zy.asrs.task.core.ReturnT; | 
 |  |  | import com.zy.asrs.utils.LocAndStaCodeUtil; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | 
 |  |  | @Transactional | 
 |  |  | public class WrkMastSplitTwinInItHandler extends AbstractHandler<String> { | 
 |  |  |     @Autowired | 
 |  |  |     private WrkMastStaService wrkMastStaService; | 
 |  |  |     private WrkMastSplitTwinService wrkMastSplitTwinService; | 
 |  |  |     @Autowired | 
 |  |  |     private WrkMastService wrkMastService; | 
 |  |  |  | 
 |  |  |     public ReturnT<String> start(WrkMast wrkMast,BasDevp basDevp,Integer type) { | 
 |  |  |     public ReturnT<String> start(WrkMastSplitTwin wrkMastSplitTwin) {  //取货任务完成  放货 | 
 |  |  |         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; | 
 |  |  |             } | 
 |  |  |             Date now = new Date(); | 
 |  |  |             WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMastSplitTwin); | 
 |  |  |  | 
 |  |  |             wrkMastSplitTwin.setWrkSts(4);//工作状态 0: 初始  1: 等待取货完成  2: 取货完成待作业  3: 等待放货完成  4: 完成 | 
 |  |  |             wrkMastSplitTwin.setUpdateTime(now); | 
 |  |  |             wrkMastSplitTwinService.updateById(wrkMastSplitTwin); | 
 |  |  |  | 
 |  |  |             wrkMastSplitTwinNew.setCreateTime(now); | 
 |  |  |             wrkMastSplitTwinNew.setUpdateTime(now); | 
 |  |  |             wrkMastSplitTwinNew.setWrkSts(0);//工作状态 0: 初始  1: 等待取货完成  2: 取货完成待作业  3: 等待放货完成  4: 完成 | 
 |  |  |             wrkMastSplitTwinNew.setWrkType(2);//工作类型 0: 未知  1: 取  2: 放  3: 取放  4: 完成 | 
 |  |  |             wrkMastSplitTwinService.insert(wrkMastSplitTwinNew); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             log.error("异常!!!"+e); | 
 |  |  |             log.error("前后双工位拆分堆垛机执行作业生成异常!!!"+e.getMessage()); | 
 |  |  |             return FAIL; | 
 |  |  |         } | 
 |  |  |         return SUCCESS; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public boolean fullKM(WrkMast wrkMast){ | 
 |  |  |         if (wrkMast.getIoType()!=10 && wrkMast.getIoType()!=110){ | 
 |  |  |             return true; | 
 |  |  |     public ReturnT<String> start(WrkMastSplitTwin wrkMastSplitTwin,WrkMast wrkMast,Integer crnStation) {  //取货任务完成  放货 | 
 |  |  |         try { | 
 |  |  |             Date now = new Date(); | 
 |  |  |             WrkMastSplitTwin wrkMastSplitTwinNew = new WrkMastSplitTwin(wrkMast,crnStation,now); | 
 |  |  |             switch (wrkMastSplitTwin.getIoType()){ | 
 |  |  |                 case 1: | 
 |  |  |                     wrkMastSplitTwinNew.setWrkStart(wrkMast.getStaNo().toString()); | 
 |  |  |                     wrkMastSplitTwinNew.setWrkEnd(wrkMast.getLocNo()); | 
 |  |  |                     break; | 
 |  |  |                 case 2: | 
 |  |  |                     wrkMastSplitTwinNew.setWrkStart(wrkMast.getSourceLocNo()); | 
 |  |  |                     wrkMastSplitTwinNew.setWrkEnd(wrkMast.getIoType()==11? wrkMast.getLocNo():wrkMast.getSourceStaNo().toString()); | 
 |  |  |                     break; | 
 |  |  |                 default: | 
 |  |  |                     log.error("前后双工位拆分堆垛机执行作业生成异常!!!====>工作号={},任务类型={},任务类型异常!",wrkMastSplitTwin.getWrkNo(),wrkMastSplitTwin.getIoType$()); | 
 |  |  |                     return FAIL; | 
 |  |  |             } | 
 |  |  |             wrkMastSplitTwinNew.setStartRow(LocAndStaCodeUtil.getRow(wrkMastSplitTwinNew.getWrkStart())); | 
 |  |  |             wrkMastSplitTwinNew.setStartBay(LocAndStaCodeUtil.getBay(wrkMastSplitTwinNew.getWrkStart())); | 
 |  |  |             wrkMastSplitTwinNew.setStartLev(LocAndStaCodeUtil.getLev(wrkMastSplitTwinNew.getWrkStart())); | 
 |  |  |             wrkMastSplitTwinNew.setEndRow(LocAndStaCodeUtil.getRow(wrkMastSplitTwinNew.getWrkEnd())); | 
 |  |  |             wrkMastSplitTwinNew.setEndBay(LocAndStaCodeUtil.getBay(wrkMastSplitTwinNew.getWrkEnd())); | 
 |  |  |             wrkMastSplitTwinNew.setEndLev(LocAndStaCodeUtil.getLev(wrkMastSplitTwinNew.getWrkEnd())); | 
 |  |  |             wrkMastSplitTwinNew.setWrkType(1);//工作类型 0: 未知  1: 取  2: 放  3: 取放  4: 完成 | 
 |  |  |             wrkMastSplitTwinNew.setIoType(wrkMastSplitTwin.getIoType());//任务类型 0: 未知  1: 入库  2: 出库 | 
 |  |  |             wrkMastSplitTwinNew.setWrkSts(0);//工作状态 0: 初始  1: 等待取货完成  2: 取货完成待作业  3: 等待放货完成  4: 完成 | 
 |  |  |             wrkMastSplitTwinService.insert(wrkMastSplitTwinNew); | 
 |  |  |  | 
 |  |  |             wrkMast.setWrkSts(wrkMast.getWrkSts()+1); | 
 |  |  |             wrkMast.setAppeTime(now); | 
 |  |  |             wrkMastService.updateById(wrkMast); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             log.error("前后双工位拆分堆垛机执行作业生成异常!!!"+e.getMessage()); | 
 |  |  |             return FAIL; | 
 |  |  |         } | 
 |  |  |         return false; | 
 |  |  |         return SUCCESS; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |