src/main/java/com/zy/asrs/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/TaskLogScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/utils/Utils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensCrnThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/TaskWrkMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/locMast/locMast_detail.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/taskWrk/taskWrk.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -192,15 +192,19 @@ map.put("J-1109",118);map.put("J-1110",117); map.put("J-1111",122);map.put("J-1112",121); map.put("H-1102",300);map.put("H-1101",305); StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() .eq("stn_desc", param.getWharfCode())); if (Cools.isEmpty(staDesc)){ return R.error("程序报错,未查询到站点"); map.put("G-1102",400);map.put("G-1101",405); // StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() // .eq("stn_desc", param.getWharfCode())); // // if (Cools.isEmpty(staDesc)){ // return R.error("程序报错,未查询到站点"); // } if (Cools.isEmpty(map.get(param.getWharfCode()))){ return R.error("未查询到站点"); } //BasDevp basDevp = basDevpService.selectById(map.get(param.getWharfCode())); BasDevp basDevp = basDevpService.selectById(staDesc.getStnNo()); if (basDevp.getAutoing().equals("Y")){ BasDevp basDevp = basDevpService.selectById(map.get(param.getWharfCode())); // BasDevp basDevp = basDevpService.selectById(staDesc.getStnNo()); if (basDevp.getAutoing().equals("Y") && (basDevp.getInEnable().equals("Y") || basDevp.getOutEnable().equals("Y"))){ apiLogService.save("AGV请求入库码头接口" ,request.getRemoteAddr()+request.getRequestURI() ,appkey @@ -209,7 +213,7 @@ ,R.ok().toString() ,true ); return R.ok(); return R.ok("可入"); }else { apiLogService.save("AGV请求入库码头接口" ,request.getRemoteAddr()+request.getRequestURI() @@ -256,9 +260,12 @@ if (Cools.isEmpty(param.getEmptyContainer())){ return R.error("是否空托盘信号为空!"); } if (Cools.isEmpty(param.getTargetWharf())){ return R.error("目标码头区域为空!");//G开头=7车间,H开头=8层,J开头=9车间 if (!param.getTaskType().equals("YK")){ if (Cools.isEmpty(param.getTargetWharf())){ return R.error("目标码头区域为空!");//G开头=7车间,H开头=8层,J开头=9车间 } } StaDesc staDesc = new StaDesc(); if (param.getTaskType().equals("CK") && param.getTargetWharf().contains("J")){ staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,6 +10,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.TaskOverToWms; import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; import com.zy.asrs.entity.param.taskCreateParam; import com.zy.asrs.mapper.*; @@ -85,6 +86,8 @@ @Autowired private OpenServiceImpl openServiceImpl; @Autowired private StaDescService staDescService; @Value("${wms.url}") private String wmsUrl; @@ -415,6 +418,15 @@ if (taskWrkMapper.updateById(taskWrk) == 0) { log.error("修改工作档状态 2.设备上走 => 3.吊车入库中 失败!!,工作号={}", taskWrk.getWrkNo()); } //开始运行 String response = CrnStartRunning(taskWrk); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { }else { log.error("入库开始运行通讯失败,"+jsonObject.get("msg")); } } // // 命令下发区 -------------------------------------------------------------------------- @@ -513,25 +525,25 @@ String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint()); TaskWrk hallowLocNoTask = taskWrkMapper.selectByStartPoint(shallowLocNo); if (!Cools.isEmpty(hallowLocNoTask)){ if (!Cools.isEmpty(hallowLocNoTask.getTargetPoint())){ continue; } // new PostMesDataUtils().postMesData("移库任务分配库位",wmsUrl,movePath,hallowLocNoTask); try { String response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath(movePath) .setJson(JSON.toJSONString(hallowLocNoTask)) .build() .doPost(); System.out.println("response:"+response); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { //解析 } }catch (Exception e){ log.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl+"/"+movePath, JSON.toJSONString(hallowLocNoTask), "请求移库任务分配库位"); } // if (!Cools.isEmpty(hallowLocNoTask.getTargetPoint())){ // continue; // } //// new PostMesDataUtils().postMesData("移库任务分配库位",wmsUrl,movePath,hallowLocNoTask); // try { // String response = new HttpHandler.Builder() // .setUri(wmsUrl) // .setPath(movePath) // .setJson(JSON.toJSONString(hallowLocNoTask)) // .build() // .doPost(); // System.out.println("response:"+response); // JSONObject jsonObject = JSON.parseObject(response); // if (jsonObject.getInteger("code").equals(200)) { // //解析 // } // }catch (Exception e){ // log.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl+"/"+movePath, JSON.toJSONString(hallowLocNoTask), "请求移库任务分配库位"); // } continue; } } @@ -556,6 +568,15 @@ if (taskWrkMapper.updateById(taskWrk) == 0) { log.error("修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,工作号={}", taskWrk.getWrkNo()); } //开始运行 String response = CrnStartRunning(taskWrk); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { }else { log.error("出库开始运行通讯失败,"+jsonObject.get("msg")); } } } @@ -570,9 +591,50 @@ public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){ for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { // 获取工作状态为11(生成出库ID)的移库工作档 List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut3(slave.getId(), crnStn.getStaNo().toString()); List<TaskWrk> taskWrks = taskWrkMapper.selectList(new EntityWrapper<TaskWrk>() .eq("crn_no",slave.getId()) .eq("wrk_sts",11) .eq("io_type",3)); for (TaskWrk taskWrk : taskWrks){ if (taskWrk == null || Cools.isEmpty(taskWrk.getTargetPoint()) || taskWrk.getTargetPoint().equals("")) { if (Cools.isEmpty(taskWrk.getTargetPoint())){ List<Integer> list = openServiceImpl.getInEnableRoadway(); Map<String, Object> map = new HashMap<>(); map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); ToWmsDTO toWmsDTO = new ToWmsDTO(); toWmsDTO.setWarehouseId("1688469798893297665"); toWmsDTO.setContainerCode(taskWrk.getBarcode()); toWmsDTO.setApplyType("TUNNEL_LOCATION"); toWmsDTO.setTaskTunnel(taskWrk.getCrnNo()); toWmsDTO.setCanInboundTunnels(list); String response = null; try { response = new HttpHandler.Builder() .setHeaders(map) .setUri(wmsUrl) .setPath("wcsManager/wcsInterface/inboundTaskApply") .setJson(JSON.toJSONString(toWmsDTO)) .build() .doPost(); }catch (Exception e){ log.error("wms通讯失败,"+e.getMessage()); continue; } JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { GetWmsDto getWmsDto = JSON.parseObject(jsonObject.get("data").toString(), GetWmsDto.class); taskWrk.setOriginTargetPoint(getWmsDto.getTargetLocationCode()); taskWrk.setTargetPoint(Utils.getWcsLocNo(getWmsDto.getTargetLocationCode())); if (!taskWrkService.updateById(taskWrk)){ log.error("保存wms库位号失败"); } continue; }else { log.error("wms通讯失败,"+jsonObject.get("msg")); continue; } } if (taskWrk == null || Cools.isEmpty(taskWrk.getTargetPoint()) || taskWrk.getTargetPoint().equals("") || taskWrk.getWrkNo() == null) { continue; } // 工作档状态判断 @@ -607,7 +669,7 @@ crnCommand.setDestinationPosX(Utils.getBayShort(taskWrk.getTargetPoint())); // 目标库位列 crnCommand.setDestinationPosY(Utils.getLevShort(taskWrk.getTargetPoint())); // 目标库位层 crnCommand.setCommand((short) 1); if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand),false)) { log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); } else { // 修改工作档状态 11.生成出库ID => 12.吊车出库中 @@ -616,6 +678,15 @@ taskWrk.setModiTime(now); if (taskWrkMapper.updateById(taskWrk) == 0) { log.error("修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,工作号={}", taskWrk.getWrkNo()); } //开始运行 String response = CrnStartRunning(taskWrk); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { }else { log.error("移库任务开始运行通讯失败,"+jsonObject.get("msg")); continue; } break; } @@ -890,4 +961,61 @@ } public synchronized String CrnStartRunning(TaskWrk taskWrk){ String tasktype = null; switch (taskWrk.getIoType()){ case 1: tasktype= "RK"; break; case 2: tasktype= "CK"; break; case 3: tasktype= "YK"; break; default: tasktype= "未知"; } Map<String, Object> map = new HashMap<>(); map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); TaskOverToWms taskOverToWms = new TaskOverToWms(); taskOverToWms.setFeedbackFrom("WCS"); //来源 taskOverToWms.setWarehouseId("1688469798893297665"); //仓库标识 taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //任务号 taskOverToWms.setTaskType(tasktype); // 任务类型 taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 容器编码 if (taskWrk.getIoType() ==1 || taskWrk.getIoType() == 3){ taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //设备编码 taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //目标库位 }else if (taskWrk.getIoType() ==2){ Map<Integer,String> map1 = new HashMap<>(); map1.put(102,"J-1101"); map1.put(106,"J-1103"); map1.put(110,"J-1105"); map1.put(114,"J-1107"); map1.put(118,"J-1109"); map1.put(122,"J-1111"); map1.put(305,"H-1101"); map1.put(405,"G-1101"); taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //设备编码 taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //源库位 } taskOverToWms.setTaskStatus("executing"); //任务状态 String response = null; try { response = new HttpHandler.Builder() .setHeaders(map) .setUri(wmsUrl) .setPath("wcsManager/wcsInterface/taskStatusFeedback") .setJson(JSON.toJSONString(taskOverToWms)) .build() .doPost(); }catch (Exception e){ log.error("堆垛机任务完成,请求wms任务完成接口失败"); } return response; } } src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -92,6 +92,12 @@ taskWrk.setOriginStartPoint(param.getStartPoint()); } taskWrk.setTargetPoint(param.getTargetPoint()); }else if (param.getIoType() == 3){ taskWrk.setWrkSts(11); if (!Cools.isEmpty(param.getStartPoint())) { taskWrk.setStartPoint(Utils.getWcsLocNo(param.getStartPoint()));//起点 taskWrk.setOriginStartPoint(param.getStartPoint()); } } @@ -176,8 +182,8 @@ .eq("type_no",1) .ge("crn_stn",200)); } //map1.put("taskTunnel", staDesc.getStnDesc()); map1.put("taskTunnel", "J-1104"); map1.put("taskTunnel", staDesc.getStnDesc()); //map1.put("taskTunnel", "J-1104"); return R.ok(map1); } return R.error((String) jsonObject.get("msg")); src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java
@@ -1,6 +1,7 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.domain.enums.WorkNoType; @@ -180,16 +181,15 @@ @Override public void locMove(TaskWrk taskWrk, Long userId) { //库格移载任务派发 StaDesc staDesc = staDescService.queryCrn(taskWrk.getIoType(), Integer.parseInt(taskWrk.getTargetPoint()), taskWrk.getCrnNo()); if (staDesc == null) { return;//不存在路径 } if (Cools.isEmpty(taskWrk.getTargetPoint())){ return; } int workNo = commonService.getWorkNo(WorkNoType.OTHER.type);//获取工作号 taskWrk.setWrkNo(workNo);//工作号 taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//派发状态 taskWrk.setAssignTime(new Date());//派发时间 taskWrk.setWrkSts(11);//工作状态 11.生成出库ID taskWrk.setCrnNo(staDesc.getCrnNo());//堆垛机号 //taskWrk.setCrnNo(staDesc.getCrnNo());//堆垛机号 taskWrk.setModiTime(new Date()); taskWrk.setModiUser(userId); updateById(taskWrk); src/main/java/com/zy/asrs/task/TaskLogScheduler.java
@@ -4,10 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.CommandInfo; import com.zy.asrs.entity.StaDesc; import com.zy.asrs.entity.TaskWrk; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.TaskOverToWms; import com.zy.asrs.entity.param.TaskStatusFeedbackParam; import com.zy.asrs.service.*; @@ -20,6 +17,7 @@ import org.springframework.stereotype.Component; import java.io.IOException; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -42,6 +40,8 @@ @Autowired private StaDescService staDescService; @Autowired private LocMastService locMastService; @Value("${wms.url}") private String wmsUrl; @@ -75,6 +75,25 @@ if (!basDevp.getWrkNo().equals(taskWrk.getWrkNo())){ continue; } } else if (taskWrk.getIoType() ==3) { taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //设备编码 taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //目标库位 Date now = new Date(); //更新库位状态 LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint()); locMast.setLocSts("O");//O.空库位 locMast.setBarcode("");//托盘码 locMast.setModiTime(now); locMast.setModiUser(9999L); locMastService.updateById(locMast); //更新库位状态 LocMast locMast2 = locMastService.selectByLocNo(taskWrk.getTargetPoint()); locMast2.setLocSts("F");//F.在库 locMast2.setBarcode(taskWrk.getBarcode());//托盘码 locMast2.setModiTime(now); locMast2.setModiUser(9999L); locMastService.updateById(locMast); } taskOverToWms.setTaskStatus("done"); //任务状态 src/main/java/com/zy/asrs/utils/Utils.java
@@ -18,6 +18,30 @@ private static final DecimalFormat fmt = new DecimalFormat("##0.00"); public static String getWmsRow(String loc){ String row = loc.substring(0, 2); String bay = loc.substring(3, 5); String lev = loc.substring(5, 7); String locNo = null; ArrayList<String> list = new ArrayList<>(); list.add("01");list.add("02");list.add("03");list.add("04"); int i = list.indexOf(row); if (i != -1){ if (i == 0){ locNo = "01"+"-"+bay+"-"+lev+"-"+"01-02"; }else if (i == 1) { locNo = "01"+"-"+bay+"-"+lev+"-"+"01-01"; }else if (i == 2) { locNo = "01"+"-"+bay+"-"+lev+"-"+"02-01"; }else if (i == 3) { locNo = "01"+"-"+bay+"-"+lev+"-"+"02-02"; } } return locNo; } //转换wms传输的库位号 public static String getWcsLocNo(String locNo){ src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -219,7 +219,7 @@ taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //任务号 taskOverToWms.setTaskType(tasktype); // 任务类型 taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 容器编码 if (taskWrk.getIoType() ==1 ){ if (taskWrk.getIoType() ==1 || taskWrk.getIoType() == 3){ taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //设备编码 taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //目标库位 }else if (taskWrk.getIoType() ==2){ @@ -230,6 +230,8 @@ map1.put(114,"J-1107"); map1.put(118,"J-1109"); map1.put(122,"J-1111"); map1.put(305,"H-1101"); map1.put(405,"G-1101"); taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //设备编码 taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //源库位 } @@ -258,6 +260,9 @@ ); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)){ if (taskWrk.getIoType() == 3){ taskWrk.setWrkSts(4); } taskWrk.setStatus(5); if (!taskWrkService.update(taskWrk,new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo()))){ log.error("堆垛机任务完成,改变任务状态失败"); src/main/resources/mapper/TaskWrkMapper.xml
@@ -92,10 +92,10 @@ <select id="selectPakOut3" resultMap="BaseResultMap"> select * from dbo.wcs_task_wrk where crn_no=#{crnNo} and target_point=#{targetPoint} -- and target_point=#{targetPoint} and wrk_sts=11 and io_type = 3 order by io_pri desc,create_time,wrk_no ASC order by io_pri desc,create_time ASC </select> <select id="selectCrnWorking" resultMap="BaseResultMap"> src/main/webapp/views/locMast/locMast_detail.html
@@ -90,6 +90,12 @@ </div> </div> <div class="layui-inline" style="width:80%;"> <label class="layui-form-label">排:</label> <div class="layui-input-inline"> <input id="row1" class="layui-input" type="text" autocomplete="off" disabled="disabled"> </div> </div> <div class="layui-inline" style="width:80%;"> <label class="layui-form-label">列:</label> <div class="layui-input-inline"> <input id="bay1" class="layui-input" type="text" autocomplete="off" disabled="disabled"> src/main/webapp/views/taskWrk/taskWrk.html
@@ -83,7 +83,7 @@ </el-table-column> <el-table-column property="crnNo" label="堆垛机号"> </el-table-column> <el-table-column property="memo" label="备注"> <el-table-column property="ioPri" label="优先级"> </el-table-column> </el-table>