hzd 6 روز پیش
والد
کامیت
bd89dc4e0e

BIN
lib/logback-classic-1.2.13.jar


BIN
lib/logback-core-1.2.13.jar


BIN
lib/slf4j-api-1.7.36.jar


BIN
lib/slf4j-api-2.0.6.jar


+ 3 - 0
src/META-INF/MANIFEST.MF

@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: com.mes.ui.MesClient
+

+ 7 - 2
src/com/mes/ui/MesClient.java

@@ -11,9 +11,10 @@ import com.mes.ygsl.YgslClient;
 import com.mes.ygsl.YgslClient2;
 //import com.mes.ygsl.YgslClient3;
 //import com.mes.ygsl.YgslClient4;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
+
 import javafx.embed.swing.JFXPanel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import javax.swing.*;
 import javax.swing.border.EmptyBorder;
@@ -36,10 +37,13 @@ import java.util.*;
 import java.util.List;
 import java.util.Timer;
 
+
 public class MesClient extends JFrame {
 
     private static String Drivde = "org.sqlite.JDBC";
 
+    public static final Logger log =  LoggerFactory.getLogger(MesClient.class);
+
     public static int mes_auth = 0; // 权限级别 0=无权限 1=操作工人 2=管理员
     public static String mes_gw = ""; // 工位号
     public static String mes_gw_des = ""; // 工位名称
@@ -183,6 +187,7 @@ public class MesClient extends JFrame {
     public static void main(String[] args) {
         // 设置全局 UI 字体,解决中文乱码问题
         setUIFont(new Font("微软雅黑", Font.PLAIN, 18));
+        log.info("123");
         
         // 使用 Lambda 表达式替换匿名内部类 Runnable
         EventQueue.invokeLater(() -> {

+ 5 - 3
src/com/mes/ygsl/YgslClient.java

@@ -13,6 +13,8 @@ import io.netty.channel.socket.nio.NioSocketChannel;
 import io.netty.handler.codec.DelimiterBasedFrameDecoder;
 import io.netty.handler.codec.string.StringEncoder;
 import io.netty.util.CharsetUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.concurrent.TimeUnit;
 
@@ -25,6 +27,7 @@ public class YgslClient {
     // B 121
     // C 111
     public static String serverIp = "192.168.5.100"; // M6
+    public static final Logger log =  LoggerFactory.getLogger(YgslClient.class);
 
     /**
      * 启动枪A客户端连接
@@ -52,7 +55,7 @@ public class YgslClient {
 
         //连接
         future = bootstrap.connect();
-        System.out.println("Ygsl客户端正在连接服务端" + serverIp + "...");
+        log.info("Ygsl客户端正在连接服务端" + serverIp + "...");
         //客户端断线重连逻辑
         future.addListener((ChannelFutureListener) future1 -> {
             if (future1.isSuccess()) {
@@ -60,14 +63,13 @@ public class YgslClient {
                 MesClient.ygsl_tcp_connect_flag = true;
                 //设置TCP请求状态
                 MesClient.ygsl_connect_request_flag = false;
-                System.out.println("连接Ygsl服务端成功");
                 YgslUtil.comStart(MesClient.ygslClient);
             } else {
                 //tcp连接失败
                 MesClient.ygslClient = null;
                 MesClient.ygsl_tcp_connect_flag = false;
                 MesClient.ygsl_connect_request_flag = true;
-                System.out.println("连接Ygsl失败,进行断线重连");
+                log.error("连接Ygsl失败,进行断线重连");
 
                 // 延迟重连
                 new Thread(() -> {

+ 6 - 4
src/com/mes/ygsl/YgslClient2.java

@@ -12,6 +12,8 @@ import io.netty.channel.socket.nio.NioSocketChannel;
 import io.netty.handler.codec.DelimiterBasedFrameDecoder;
 import io.netty.handler.codec.string.StringEncoder;
 import io.netty.util.CharsetUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class YgslClient2 {
     public SocketChannel socketChannel;
@@ -19,7 +21,7 @@ public class YgslClient2 {
     private EventLoopGroup group;
     // 枪B服务器IP地址
     public static String serverIp = "192.168.5.101";
-
+    public static final Logger log =  LoggerFactory.getLogger(YgslClient2.class);
     /**
      * 启动枪B客户端连接
      */
@@ -47,7 +49,7 @@ public class YgslClient2 {
 
         // 发起连接
         future = bootstrap.connect();
-        System.out.println("Ygsl2客户端正在连接服务端" + serverIp + "...");
+        log.info("Ygsl2客户端正在连接服务端" + serverIp + "...");
         // 客户端断线重连逻辑
         future.addListener((ChannelFutureListener) future1 -> {
             if (future1.isSuccess()) {
@@ -55,7 +57,7 @@ public class YgslClient2 {
                 MesClient.ygsl_tcp_connect_flag2 = true;
                 // 设置TCP请求状态
                 MesClient.ygsl_connect_request_flag2 = false;
-                System.out.println("连接Ygsl2服务端成功");
+//                System.out.println("连接Ygsl2服务端成功");
                 // 发送启动指令
                 YgslUtil2.comStart(MesClient.ygslClient2);
             } else {
@@ -63,7 +65,7 @@ public class YgslClient2 {
                 MesClient.ygslClient2 = null;
                 MesClient.ygsl_tcp_connect_flag2 = false;
                 MesClient.ygsl_connect_request_flag2 = true;
-                System.out.println("连接Ygsl2失败,进行断线重连");
+                log.error("连接Ygsl2失败,进行断线重连");
 
                 // 延迟重连
                 new Thread(() -> {

+ 22 - 12
src/com/mes/ygsl/YgslClientHandler.java

@@ -7,6 +7,8 @@ import io.netty.buffer.ByteBuf;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.awt.*;
 import java.nio.charset.StandardCharsets;
@@ -17,6 +19,7 @@ public class YgslClientHandler extends ChannelInboundHandlerAdapter {
 
     private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     public static byte[] responseByte;
+    public static final Logger log =  LoggerFactory.getLogger(YgslClientHandler.class);
 
     @Override
     public void channelActive(ChannelHandlerContext ctx) throws Exception {
@@ -45,11 +48,11 @@ public class YgslClientHandler extends ChannelInboundHandlerAdapter {
                 ByteBuf buf = (ByteBuf) msg;
                 // 你的处理逻辑
                 String content = buf.toString(StandardCharsets.UTF_8);
-//                System.out.println("msg:"+content);
-//                System.out.println("msg-size:"+content.length());
-
+                log.info("msg:"+content);
+                log.info("msg-size:"+content.length());
                 String mid = YgslParam.getMid(content);
-//                System.out.println("MID:"+mid);
+                log.info("MID:"+mid);
+
                 switch (mid){
                     case "0002":
                         YgslUtil.lastTighteningResultSubscribe(MesClient.ygslClient);
@@ -61,7 +64,7 @@ public class YgslClientHandler extends ChannelInboundHandlerAdapter {
                         YgslUtil.selectJob(MesClient.ygslClient);
                         break;
                     case "0004": // 错误信息
-                        System.out.println("MID1:"+YgslParam.getReplyMid(content)+";ErrorCode:"+YgslParam.getErrCode(content));
+                        log.error("MID:"+YgslParam.getReplyMid(content)+";ErrorCode:"+YgslParam.getErrCode(content));
                         if(YgslParam.getReplyMid(content).equals("0063")) {
                             System.out.println("未订阅");
                             MesClient.subBtnA.setText("未订阅");
@@ -102,7 +105,7 @@ public class YgslClientHandler extends ChannelInboundHandlerAdapter {
 //                        System.out.println("getBatchSize:"+YgslParam.getBatchSize(content));
 //                        System.out.println("getBatchCounter:"+YgslParam.getBatchCounter(content));
                         YgslUtil.lastTighteningResultDataAcknowledge(MesClient.ygslClient);
-                        if(MesClient.work_status == 1){
+                        if(MesClient.work_status == 1 && MesClient.cura < MesClient.maxa){
                             String tighteningStatus = YgslParam.getTighteningStatus(content);
                             String torqueStatus = YgslParam.getTorqueStatus(content);
                             String angleStatus = YgslParam.getAngleStatus(content);
@@ -116,12 +119,16 @@ public class YgslClientHandler extends ChannelInboundHandlerAdapter {
                             String angle = YgslParam.getAngle(content);
                             String jobID = YgslParam.getJobID(content);
                             String tighteningID = YgslParam.getTighteningID(content);
+                            log.info("tighteningID:"+tighteningID);
+                            log.info("pos:A");
+                            log.info("jobID:"+jobID);
+                            log.info("atids:"+MesClient.atids.toString());
                             if(!tighteningID.isEmpty() && !MesClient.atids.contains(tighteningID)){
                                 MesClient.atids.add(tighteningID);
-
                                 String pos = "A";
-
-                                Boolean checkRet = JdbcUtils.checkTighteningById(tighteningID,pos,jobID);
+//                                Boolean checkRet = JdbcUtils.checkTighteningById(tighteningID,pos,jobID);
+//                                log.info("checkRet:"+checkRet);
+                                Boolean checkRet = false;
                                 if(!checkRet){
 
                                     if(tighteningStatus.equals("0")){ // NG
@@ -144,8 +151,10 @@ public class YgslClientHandler extends ChannelInboundHandlerAdapter {
                                     }
 
                                     String serialNumber =  String.valueOf(MesClient.cura);
+                                    log.info("serialNumber:"+serialNumber);
+//                                    String serialNumber =  String.valueOf(MesClient.cura);
                                     if(!tighteningStatus.equals("1")){
-                                        serialNumber =  String.valueOf(MesClient.cura + 1);
+//                                        serialNumber =  String.valueOf(MesClient.cura + 1);
                                     }
 
                                     MesClient.torquea.setText(torque);
@@ -166,12 +175,12 @@ public class YgslClientHandler extends ChannelInboundHandlerAdapter {
                                 }
                             }
 
-                            YgslUtil.lastTighteningResultDataAcknowledge(MesClient.ygslClient);
+//                            YgslUtil.lastTighteningResultDataAcknowledge(MesClient.ygslClient);
 
                             // 两枪都达到预定数量时才自动提交
                             MesClient.tryAutoSubmitWhenBothGunsDone();
                         }else{
-                            YgslUtil.lastTighteningResultDataAcknowledge(MesClient.ygslClient);
+//                            YgslUtil.lastTighteningResultDataAcknowledge(MesClient.ygslClient);
                         }
 
                         break;
@@ -182,6 +191,7 @@ public class YgslClientHandler extends ChannelInboundHandlerAdapter {
             }
         }catch (Exception e){
             e.printStackTrace();
+            log.error("error:"+e.getMessage());
         }
 
     }

+ 17 - 6
src/com/mes/ygsl/YgslClientHandler2.java

@@ -9,6 +9,8 @@ import io.netty.buffer.ByteBuf;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.awt.*;
 import java.nio.charset.StandardCharsets;
@@ -18,7 +20,7 @@ import java.util.Date;
 public class YgslClientHandler2 extends ChannelInboundHandlerAdapter {
 
     private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
+    public static final Logger log =  LoggerFactory.getLogger(YgslClientHandler2.class);
     /**
      * 通道激活时调用
      */
@@ -52,8 +54,11 @@ public class YgslClientHandler2 extends ChannelInboundHandlerAdapter {
                 ByteBuf buf = (ByteBuf) msg;
                 // 将字节流转换为字符串
                 String content = buf.toString(StandardCharsets.UTF_8);
-                // 获取消息ID (MID)
+                log.info("msg2:"+content);
+                log.info("msg-size2:"+content.length());
                 String mid = YgslParam.getMid(content);
+                log.info("MID2:"+mid);
+
                 switch (mid){
                     case "0002":
                         // 通讯启动确认,发起订阅
@@ -83,7 +88,7 @@ public class YgslClientHandler2 extends ChannelInboundHandlerAdapter {
                     case "0061": // 拧紧数据上报
                         // 回复确认收到数据
                         YgslUtil2.lastTighteningResultDataAcknowledge(MesClient.ygslClient2);
-                        if(MesClient.work_status == 1){
+                        if(MesClient.work_status == 1 && MesClient.curb < MesClient.maxb){
                             // 解析拧紧数据字段
                             String tighteningStatus = YgslParam.getTighteningStatus(content);
                             String torqueStatus = YgslParam.getTorqueStatus(content);
@@ -98,14 +103,19 @@ public class YgslClientHandler2 extends ChannelInboundHandlerAdapter {
                             String angle = YgslParam.getAngle(content);
                             String jobID = YgslParam.getJobID(content);
                             String tighteningID = YgslParam.getTighteningID(content);
-                            
+                            log.info("tighteningID2:"+tighteningID);
+                            log.info("pos2:B");
+                            log.info("jobID2:"+jobID);
+                            log.info("btids2:"+MesClient.btids.toString());
+
                             // 过滤重复数据
                             if(!tighteningID.isEmpty() && !MesClient.btids.contains(tighteningID)){
                                 MesClient.btids.add(tighteningID);
                                 String pos = "B";
 
                                 // 检查数据库是否已存在该条拧紧记录
-                                Boolean checkRet = JdbcUtils.checkTighteningById(tighteningID, pos, jobID);
+                                Boolean checkRet = false;
+//                                Boolean checkRet = JdbcUtils.checkTighteningById(tighteningID, pos, jobID);
                                 if(!checkRet){
                                     if(tighteningStatus.equals("0")){ // NG
                                         // 更新UI文字颜色
@@ -120,8 +130,9 @@ public class YgslClientHandler2 extends ChannelInboundHandlerAdapter {
                                         }
                                     }
 
+                                    String serialNumber =  String.valueOf(MesClient.curb);
                                     // 计算序列号并更新UI
-                                    String serialNumber = tighteningStatus.equals("1") ? String.valueOf(MesClient.curb) : String.valueOf(MesClient.curb + 1);
+//                                    String serialNumber = tighteningStatus.equals("1") ? String.valueOf(MesClient.curb) : String.valueOf(MesClient.curb + 1);
                                     MesClient.torqueb.setText(torque);
                                     MesClient.angleb.setText(angle);
                                     MesClient.scheduleb.setText(MesClient.curb + "/" + MesClient.maxb);

+ 44 - 0
src/resources/logback.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration>
+
+    <!-- 定义日志文件的存储位置及文件名 -->
+    <property name="LOG_HOME" value="D:/Logs"/>
+    <property name="PROJECT_NAME" value="mes"/>
+
+    <!-- 控制台输出 -->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level  %logger{36} - %msg%n</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+    </appender>
+
+    <!-- 文件输出 -->
+    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/${PROJECT_NAME}/${PROJECT_NAME}.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/${PROJECT_NAME}/archived/${PROJECT_NAME}_%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 保留最近 6个月内的日志-->
+            <maxHistory>180</maxHistory>  <!-- 如果删除该项配置,则logback无法自动删除旧日志, 导致totalSizeCap也将失去作用-->
+            <!-- 滚动文件总大小不超过2GB-->
+            <totalSizeCap>1GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level  %logger{36} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <!-- 根Logger -->
+    <root level="info">
+        <appender-ref ref="STDOUT" />
+        <appender-ref ref="FILE" />
+    </root>
+
+    <logger name="org.slf4j" level="ERROR"/>
+    <logger name="ch.qos.logback" level="ERROR"/>
+    <logger name="ch.qos.logback.classic.joran.action.ConfigurationAction" level="OFF"/>
+
+</configuration>