| | |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.domain.param.ForwardAGVTaskParam; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.mapper.*; |
| | | import com.zy.asrs.service.*; |
| | |
| | | import com.zy.core.enums.DevpType.DevpStateType; |
| | | import com.zy.core.enums.DevpType.DevpTrayType; |
| | | import com.zy.core.enums.DevpType.DevpWorkType; |
| | | import com.zy.core.model.*; |
| | | import com.zy.core.model.CrnSlave; |
| | | import com.zy.core.model.DevpSlave; |
| | | import com.zy.core.model.LedSlave; |
| | | import com.zy.core.model.Task; |
| | | import com.zy.core.model.command.CrnCommand; |
| | | import com.zy.core.model.command.LedCommand; |
| | | import com.zy.core.model.command.RgvCommand; |
| | | import com.zy.core.model.protocol.CrnProtocol; |
| | | import com.zy.core.model.protocol.RgvProtocol; |
| | | import com.zy.core.model.protocol.StaProtocol; |
| | | import com.zy.core.properties.SlaveProperties; |
| | | import com.zy.core.thread.BarcodeThread; |
| | | import com.zy.core.thread.LedThread; |
| | | import com.zy.core.thread.RgvThread; |
| | | import com.zy.core.thread.SiemensDevpThread; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import java.text.DecimalFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | |
| | | // 更新站点信息 且 下发plc命令 |
| | | staProtocol.setWorkNo(wrkMast.getWrkNo()); |
| | | staProtocol.setStaNo((short) 161); |
| | | staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | log.error("输送线下发5:"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); |
| | |
| | | // News.infoNoLog(""+mark+" - 0"+" - outOfDevp执行完成"); |
| | | } |
| | | |
| | | public synchronized void forwardAGVInTasks() { |
| | | for (DevpSlave devp : slaveProperties.getDevp()) { |
| | | // 遍历入库口 |
| | | for (DevpSlave.Sta agvSta : devp.getAgvOutSta()) { |
| | | // 获取入库站信息 |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(agvSta.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (!(staProtocol.stateType == DevpStateType.AUTO && staProtocol.requestType == DevpRequestType.OUT)){ |
| | | continue; |
| | | } |
| | | if (staProtocol.getWorkNo() == 0){ |
| | | continue; |
| | | } |
| | | WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getWorkNo()).eq("wrk_sts", 101)); |
| | | if(!Cools.isEmpty(wrkMast1)){ |
| | | continue; |
| | | } |
| | | //查询状态为2的任务 |
| | | //查询状态为2的任务 |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>() |
| | | .eq("wrk_no", staProtocol.getWorkNo()) |
| | | .in("io_type",101,110,103,104,107) |
| | | .eq("wrk_sts", 15)); |
| | | if (Cools.isEmpty(wrkMast)) { |
| | | log.error(agvSta.getStaNo()+"站,转发agv任务未找到对应任务,任务号:"+staProtocol.getWorkNo()); |
| | | continue; |
| | | } |
| | | ForwardAGVTaskParam forwardAGVTaskParam = new ForwardAGVTaskParam(); |
| | | getAgvTaskParam(forwardAGVTaskParam,wrkMast,staProtocol.getSiteId()); |
| | | String request = forwardAGVHttpRequest(forwardAGVTaskParam, "10.0.100.110:8182", "/rcms/services/rest/hikRpcService/genAgvSchedulingTask"); |
| | | if ("SUCCESS".equals(request)) { |
| | | wrkMast.setWrkSts(101L); |
| | | boolean update = wrkMastService.updateById(wrkMast); |
| | | if (update){ |
| | | log.info("入库转发AGV任务完成,任务号:"+wrkMast.getWrkNo()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | private void getAgvTaskParam(ForwardAGVTaskParam agvTaskCreateParam,WrkMast param,Integer staNo){ |
| | | String sourceSite = ""; |
| | | if (staNo == 1040 || staNo == 1042) { |
| | | sourceSite = "a"; |
| | | } else if (staNo == 2010 || staNo == 2012) { |
| | | sourceSite = "b"; |
| | | } else if(staNo == 3010 || staNo ==3012) { |
| | | sourceSite = "c"; |
| | | } else if(staNo == 2000 || staNo ==2002) { |
| | | sourceSite = "d"; |
| | | } |
| | | List<ForwardAGVTaskParam.PositionCodePaths> agvTaskParamList = Arrays.asList( |
| | | //起始位 |
| | | new ForwardAGVTaskParam.PositionCodePaths(staNo.toString(),"05"), |
| | | //目标位 |
| | | new ForwardAGVTaskParam.PositionCodePaths(sourceSite,"04") |
| | | ); |
| | | Date date = new Date(); |
| | | DecimalFormat df = new DecimalFormat("0000"); |
| | | String wrkNo = "Crn"+df.format(param.getWrkNo())+date.getTime()/1000; |
| | | agvTaskCreateParam.setReqCode(wrkNo); |
| | | agvTaskCreateParam.setReqTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | agvTaskCreateParam.setTaskTyp("GT4"); |
| | | agvTaskCreateParam.setCtnrCode(param.getBarcode()); |
| | | agvTaskCreateParam.setPositionCodePath(agvTaskParamList); |
| | | agvTaskCreateParam.setCtnrTyp("2"); |
| | | agvTaskCreateParam.setPriority("1"); |
| | | agvTaskCreateParam.setTaskCode(wrkNo); |
| | | |
| | | } |
| | | |
| | | private String forwardAGVHttpRequest(Object requestParam, String url, String path){ |
| | | String response = ""; |
| | | String success = "error"; |
| | | try { |
| | | response = new HttpHandler.Builder() |
| | | .setUri(url) |
| | | // .setHttps(true) |
| | | .setPath(path) |
| | | .setJson(JSONObject.toJSONString(requestParam)) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | |
| | | String message = jsonObject.get("code").toString(); |
| | | if(("0").equals(message) || ("请求编号已存在").contains(message)){ |
| | | success = "SUCCESS"; |
| | | }else { |
| | | success = message; |
| | | } |
| | | log.info("转发agv任务:请求体:"+JSONObject.toJSONString(requestParam)+",返回值:"+jsonObject); |
| | | }catch (Exception e){ |
| | | |
| | | } |
| | | return success; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |