zjj
2023-11-27 15dfde1636a2aff5e12ee1d1c53007f6e4c12391
#openCont+读码+logo
9个文件已修改
2个文件已添加
200 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ToWmsDTO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/taskCreateParam.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OpenService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java 81 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 4 ●●● 补丁 | 查看 | 原始文档 | 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 4 ●●●● 补丁 | 查看 | 原始文档 | 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"