src/main/java/com/zy/asrs/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/ToWmsDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/taskCreateParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/OpenService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/utils/Utils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/wcs/images/ghlogo.jpg | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/wcs/images/ghlogo_mini.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/login.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -117,6 +117,8 @@ public R targetWharfApply(@RequestHeader String appkey, @RequestBody WMSAndAGVInterfaceParam param, HttpServletRequest request) throws IOException { auth(appkey,param,request); if (Cools.isEmpty(param)){ return R.error("参数为空!"); } else if (Cools.isEmpty(param.getTaskNo())){ @@ -128,35 +130,8 @@ } else if (Cools.isEmpty(param.getFreeWharfs()) || param.getFreeWharfs().size()==0){ return R.error("空闲的入库码头(AGV)为空!"); } ToWmsDTO toWmsDTO = new ToWmsDTO(); Map<String, Object> map = new HashMap<>(); map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); List<Integer> list = new ArrayList<>(); list.add(1); list.add(4); //TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo()); toWmsDTO.setWarehouseId("1688469798893297665"); toWmsDTO.setContainerCode(param.getContainerCode()); toWmsDTO.setApplyType("TUNNEL"); toWmsDTO.setCanInboundTunnels(list); String response = new HttpHandler.Builder() .setHeaders(map) .setUri(wmsUrl) .setPath("wcsManager/wcsInterface/inboundTaskApply") .setJson(JSON.toJSONString(toWmsDTO)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { //解析 return R.ok(jsonObject.get("data")); }else { return R.error((String) jsonObject.get("msg")); } R r = openService.AgvToWCSToWms(param); return r; } //AGV请求动作接口 src/main/java/com/zy/asrs/entity/ToWmsDTO.java
@@ -9,5 +9,6 @@ private String warehouseId; private String containerCode; private String applyType; private String wharfSource; private List<Integer> canInboundTunnels; } src/main/java/com/zy/asrs/entity/param/taskCreateParam.java
@@ -28,6 +28,8 @@ //备注 private String memo; //堆垛机 private Integer crn; public taskCreateParam(){}; @@ -39,7 +41,7 @@ this.startPoint = param.getSourceLocationCode(); this.targetPoint = param.getTargetLocationCode(); this.emptyContainer = param.getEmptyContainer(); this.crn = param.getTaskTunnel(); }; src/main/java/com/zy/asrs/service/OpenService.java
@@ -1,11 +1,15 @@ package com.zy.asrs.service; import com.core.common.R; import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; import com.zy.asrs.entity.param.taskCreateParam; import java.io.IOException; public interface OpenService { //创建任务 void taskCreate(taskCreateParam param); R AgvToWCSToWms(WMSAndAGVInterfaceParam param) throws IOException; } src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -1,22 +1,33 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.core.common.Cools; import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.entity.TaskWrk; import com.zy.asrs.entity.ToWmsDTO; import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; import com.zy.asrs.entity.param.taskCreateParam; import com.zy.asrs.service.OpenService; import com.zy.asrs.service.TaskWrkService; import com.zy.common.utils.HttpHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.Date; import java.io.IOException; import java.util.*; @Service public class OpenServiceImpl implements OpenService { @Autowired private TaskWrkService taskWrkService; @Value("${wms.url}") private String wmsUrl; @Override public void taskCreate(taskCreateParam param) { @@ -36,7 +47,13 @@ taskWrk.setIoType(param.getIoType());//任务类型 taskWrk.setIoPri(param.getTaskPriority());//优先级 taskWrk.setBarcode(param.getBarcode());//条码 taskWrk.setWrkSts(11); taskWrk.setCrnNo(param.getCrn()); if(param.getIoType() == 1){ taskWrk.setWrkSts(1); } else if (param.getIoType() == 2) { taskWrk.setWrkSts(11); } if (!Cools.isEmpty(param.getStartPoint())) { taskWrk.setStartPoint(param.getStartPoint());//起点 } @@ -51,4 +68,41 @@ throw new CoolException("生成任务失败,请联系管理员"); } } @Override public R AgvToWCSToWms(WMSAndAGVInterfaceParam param) throws IOException { ToWmsDTO toWmsDTO = new ToWmsDTO(); Map<String, Object> map = new HashMap<>(); map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); List<Integer> list = new ArrayList<>(); list.add(1); list.add(4); //TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo()); toWmsDTO.setWarehouseId("1688469798893297665"); toWmsDTO.setContainerCode(param.getContainerCode()); toWmsDTO.setApplyType("TUNNEL"); toWmsDTO.setWharfSource(null); toWmsDTO.setCanInboundTunnels(list); String response = new HttpHandler.Builder() .setHeaders(map) .setUri(wmsUrl) .setPath("wcsManager/wcsInterface/inboundTaskApply") .setJson(JSON.toJSONString(toWmsDTO)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { //解析 List<WMSAndAGVInterfaceParam> params = new ArrayList<>(); params.add(param); WMSAndAGVInterfaceParam data = JSONObject.parseObject(jsonObject.get("data").toString(), WMSAndAGVInterfaceParam.class); taskCreate(new taskCreateParam(data)); return R.ok(jsonObject.get("data")); }else { return R.error((String) jsonObject.get("msg")); } } } src/main/java/com/zy/asrs/utils/Utils.java
@@ -6,6 +6,7 @@ import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** @@ -14,6 +15,67 @@ public class Utils { private static final DecimalFormat fmt = new DecimalFormat("##0.00"); //转换wms传输的库位号 public static String getWcsLocNo(String locNo){ String[] split = locNo.split("-"); int[] wcsRow = getWcsRow(split[0]); int[] ints = null; if (split[3].equals("01")){ ints = Arrays.copyOfRange(wcsRow, 0, wcsRow.length / 2); if (split[4].equals("01")){ ints = Arrays.copyOfRange(ints, wcsRow.length / 2,wcsRow.length-1); }else { ints = Arrays.copyOfRange(ints, 0, wcsRow.length / 2); } }else { ints = Arrays.copyOfRange(wcsRow, wcsRow.length / 2,wcsRow.length-1 ); if (split[4].equals("01")){ ints = Arrays.copyOfRange(ints, 0, wcsRow.length / 2); }else { ints = Arrays.copyOfRange(ints, wcsRow.length / 2,wcsRow.length-1); } } int i = ints[0]; String wcsLocNo = ""; if (i>9){ wcsLocNo = i+"0"+split[1]+split[2]; }else { wcsLocNo = "0"+i+"0"+split[1]+split[2]; } return wcsLocNo; } public static int[] getWcsRow(String row){ int[] array = null; switch (row){ case "01": array= new int[]{1, 2, 3, 4}; break; case "02": array= new int[]{5,6}; break; case "03": array= new int[]{7,8,9,10}; break; case "04": array= new int[]{11,12,13,14}; break; case "05": array= new int[]{15,16,17,18}; break; case "06": array= new int[]{19,20,21}; break; default: } return array; } public static float scale(Float f){ if (f == null || f == 0f || Float.isNaN(f)) { @@ -214,14 +276,15 @@ } public static void main(String[] args) { SlaveProperties slaveProperties = new SlaveProperties(); slaveProperties.setDoubleDeep(true); List<Integer> list = new ArrayList<>(); list.add(1);list.add(4);list.add(5);list.add(8);list.add(9);list.add(12); slaveProperties.setDoubleLocs(list); slaveProperties.setGroupCount(4); Integer deepRow = getDeepRow(slaveProperties, 6); System.out.println(deepRow); // SlaveProperties slaveProperties = new SlaveProperties(); // slaveProperties.setDoubleDeep(true); // List<Integer> list = new ArrayList<>(); // list.add(1);list.add(4);list.add(5);list.add(8);list.add(9);list.add(12); // slaveProperties.setDoubleLocs(list); // slaveProperties.setGroupCount(4); // Integer deepRow = getDeepRow(slaveProperties, 6); // System.out.println(deepRow); String wcsLocNo = getWcsLocNo("03-52-01-01-02"); System.out.println(wcsLocNo); } } src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -73,7 +73,7 @@ /** * 条码数量 */ private int barcodeSize = 3; private int barcodeSize = 7; /** * 入出库模式 @@ -232,20 +232,21 @@ } } if (slave.getId() == 1){ //条码 Thread.sleep(200); OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.100",(short)31); OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.102",(short)60); if (result2.IsSuccess) { for (int i = 0; i < barcodeSize; i++) { for (int i = 0; i < 6; i++) { String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8"); BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1); if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { barcodeThread.setBarcode(barcode); } } } if (slave.getId() == 1){ // 外形检测 - 102 Thread.sleep(100); OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB101.150", (short)1); src/main/resources/application.yml
@@ -39,7 +39,9 @@ # 是否开启上报 start: true # WMS系统ip url: 10.32.53.195:8080 #url: 10.32.53.195:8080 # WMS系统ip url: 172.18.9.56:8080 # 入库任务申请接口 inboundTaskApplyPath: api/InterFace/get_InterFace_TestStorage # 任务状态反馈接口 src/main/webapp/static/wcs/images/ghlogo.jpg
src/main/webapp/static/wcs/images/ghlogo_mini.png
src/main/webapp/views/login.html
@@ -2,7 +2,7 @@ <html> <head> <meta charset="utf-8"> <title>中扬 │ login of zoneyung wcs</title> <title>冠鸿 │ login of zoneyung wcs</title> <style> * { padding: 0; @@ -187,7 +187,7 @@ <div class="form-main"> <p style="text-align: center;"><img class="loginLogoUrl" src="../static/wcs/images/logo.png" alt="" style="width: 80%"> </p> <p style="margin-top: -15px;"><span class="login100-form-title p-t-20 p-b-45" <p style="margin-top: -10px;"><span class="login100-form-title p-t-20 p-b-45" style="color: #868686;font-size: 24px">WCS</span></p> <div class="inputContainer"> <svg viewBox="0 0 16 16" fill="#2e2e2e" height="16" width="16"