自动化立体仓库 - WCS系统
*
lsh
2025-04-08 a5e366c9143ff99bc5f707048a73f93a8d444bb8
src/main/java/com/zy/core/thread/ScaleThread.java
@@ -1,8 +1,14 @@
package com.zy.core.thread;
import com.alibaba.fastjson.JSONObject;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.service.BasDevpService;
import com.zy.core.Slave;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.OutputQueue;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -13,6 +19,7 @@
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketTimeoutException;
import java.util.Date;
/**
 * 磅秤线程
@@ -42,7 +49,52 @@
                if (null != read) {
                    String s = new String(read);
                    if (!Cools.isEmpty(s) && s.startsWith("=")) {
                        scale = Double.parseDouble(s.substring(1));
                        String substring = s.substring(1);
                        String s1 = new StringBuilder(substring).reverse().toString();
                        scale = Double.parseDouble(s1);//50.8    67.6
                        if (scale>60){
                            switch (slave.getId()){
                                case 1:
                                    scale = scale - 60;
                                    break;
                                case 2:
                                    scale = scale - 52;
                                    break;
                                case 3:
                                    scale = scale - 74.0;
                                    break;
                                case 4:
                                    scale = scale - 50.8;
                                    break;
                                default:
                                    scale = scale - 74.0;
                            }
                        }
//                        if (slave.getId()>3){
//                            scale = scale - 50.8;
//                        } else {
//                            scale = scale - 74.0;
//                        }
                        //将称重重量写入设备基础数据中的gross_wt字段
                        if(scale > 5) {
                            BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
                            BasDevp basDevp = basDevpService.selectById(slave.getStaNo());
                            if(!Cools.isEmpty(basDevp)) {
                                basDevp.setGrossWt(scale);
                                if (null != basDevpService && !basDevpService.updateById(basDevp)) {
                                    throw new Exception("更新数据库数据失败");
                                }
                                JSONObject jsonObject = new JSONObject();
                                jsonObject.put("time", DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmss_F));
                                jsonObject.put("id", slave.getStaNo());
                                jsonObject.put("scale", scale);
                                if (OutputQueue.SCALE.size() >= 32) {
                                    OutputQueue.SCALE.poll();
                                }
                                OutputQueue.SCALE.offer(jsonObject);
                            }
                        }
                    }
                }
                Thread.sleep(100);
@@ -66,7 +118,7 @@
//            log.info("条码扫描仪连接成功 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        } catch (Exception e) {
            socket = null;
            log.error("条码扫描仪连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            log.error("磅秤连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            return false;
        }
        return true;
@@ -76,18 +128,18 @@
    public void close() {
        try {
            if (null != dataOutputStream) {
            dataOutputStream.close();
        }
        if (null != dataInputStream) {
            dataInputStream.close();
        }
                dataOutputStream.close();
            }
            if (null != dataInputStream) {
                dataInputStream.close();
            }
//        if (null != socket && !socket.isClosed()) {
//            socket.close();
//        }
        if (null != socket){
            socket.close();
        }
        socket = null;
            if (null != socket){
                socket.close();
            }
            socket = null;
        } catch (IOException e) {
            log.error("SocketClient close Exception:" + e.getMessage());
        }
@@ -111,8 +163,8 @@
        int len = dataInputStream.read(bytes);
        byte[] tempBytes = null;
        if (len > 0) {
        tempBytes = new byte[len];
        System.arraycopy(bytes, 0, tempBytes, 0, len);
            tempBytes = new byte[len];
            System.arraycopy(bytes, 0, tempBytes, 0, len);
        }
        return tempBytes;
    }