作者 钟来

模块整理

1 package com.zhonglai.luhui.smart.feeder.config; 1 package com.zhonglai.luhui.smart.feeder.config;
2 2
3 -import com.ruoyi.common.utils.GsonConstructor;  
4 import com.zhonglai.luhui.smart.feeder.dto.*; 3 import com.zhonglai.luhui.smart.feeder.dto.*;
5 -import com.zhonglai.luhui.smart.feeder.dto.commd.FeederBackstateTtpe;  
6 -import com.zhonglai.luhui.smart.feeder.dto.mqtt.DevicedatRequest;  
7 -import com.zhonglai.luhui.smart.feeder.service.InitService;  
8 -import com.zhonglai.luhui.smart.feeder.util.FeederCommd06ResponseType;  
9 -import com.zhonglai.luhui.smart.feeder.util.FeederCommdUtil;  
10 -import com.zhonglai.luhui.smart.feeder.util.MessageUtil;  
11 4
12 import java.lang.reflect.Field; 5 import java.lang.reflect.Field;
13 6
@@ -22,7 +15,7 @@ public class OperatingData { @@ -22,7 +15,7 @@ public class OperatingData {
22 public static FeederData feederData = new FeederData() ; //投料机配置 15 public static FeederData feederData = new FeederData() ; //投料机配置
23 public static RegisterConfig registerConfig = new RegisterConfig(); //数据解析字典 16 public static RegisterConfig registerConfig = new RegisterConfig(); //数据解析字典
24 17
25 - public static void setClassObjecValue(Object value,IfOperatingDataValueIsNotNull ifOperatingDataValueIsNotNull) throws IllegalAccessException { 18 + public static void setClassObjecValue(Object value,IfOperatingDataValueIsNotNull ifOperatingDataValueIsNotNull) throws IllegalAccessException, InstantiationException {
26 if(null != value) 19 if(null != value)
27 { 20 {
28 OperatingDataType operatingDataType = getOperatingDataType(value); 21 OperatingDataType operatingDataType = getOperatingDataType(value);
@@ -35,8 +28,31 @@ public class OperatingData { @@ -35,8 +28,31 @@ public class OperatingData {
35 Object object = field.get(value); 28 Object object = field.get(value);
36 if(null != object) 29 if(null != object)
37 { 30 {
38 - operatingDataType.setValue(field,object);  
39 - ifOperatingDataValueIsNotNull.exeValue(field.getName(),object); 31 + if(object.getClass().isPrimitive())
  32 + {
  33 + operatingDataType.setValue(field,object);
  34 + ifOperatingDataValueIsNotNull.exeValue(field.getName(),object);
  35 + }else{
  36 + Class attributeCls = object.getClass();
  37 + Field[] attributeFields = attributeCls.getDeclaredFields();
  38 + for(Field attribute:attributeFields)
  39 + {
  40 + attribute.setAccessible(true);
  41 + Object attributeObject = attribute.get(object);
  42 + if(null != attributeObject)
  43 + {
  44 + if(null == field.get(operatingDataType))
  45 + {
  46 + field.set(operatingDataType,attributeCls.newInstance());
  47 + }
  48 + attribute.set(field.get(operatingDataType),attributeObject);
  49 +
  50 + ifOperatingDataValueIsNotNull.exeValue(attribute.getName(),attributeObject);
  51 + }
  52 +
  53 + }
  54 + }
  55 +
40 } 56 }
41 } 57 }
42 58
@@ -6,6 +6,8 @@ import com.zhonglai.luhui.smart.feeder.Main; @@ -6,6 +6,8 @@ import com.zhonglai.luhui.smart.feeder.Main;
6 import com.zhonglai.luhui.smart.feeder.config.OperatingData; 6 import com.zhonglai.luhui.smart.feeder.config.OperatingData;
7 import com.zhonglai.luhui.smart.feeder.domain.Register; 7 import com.zhonglai.luhui.smart.feeder.domain.Register;
8 import com.zhonglai.luhui.smart.feeder.dto.CameraConfig; 8 import com.zhonglai.luhui.smart.feeder.dto.CameraConfig;
  9 +import com.zhonglai.luhui.smart.feeder.dto.FeederConfig;
  10 +import com.zhonglai.luhui.smart.feeder.dto.ModbusDto;
9 import com.zhonglai.luhui.smart.feeder.dto.commd.FeederBackstateTtpe; 11 import com.zhonglai.luhui.smart.feeder.dto.commd.FeederBackstateTtpe;
10 import com.zhonglai.luhui.smart.feeder.dto.commd.FeederTimer; 12 import com.zhonglai.luhui.smart.feeder.dto.commd.FeederTimer;
11 import com.zhonglai.luhui.smart.feeder.dto.mqtt.CameracontrolRequest; 13 import com.zhonglai.luhui.smart.feeder.dto.mqtt.CameracontrolRequest;
@@ -42,12 +44,13 @@ public class CfgdataService { @@ -42,12 +44,13 @@ public class CfgdataService {
42 } 44 }
43 try { 45 try {
44 CfgdataRequest cfgdataRequest = GsonConstructor.get().fromJson(data.toString(), CfgdataRequest.class); 46 CfgdataRequest cfgdataRequest = GsonConstructor.get().fromJson(data.toString(), CfgdataRequest.class);
45 - OperatingData.setClassObjecValue(cfgdataRequest.getCondata(), (fieldname, fieldObject) -> { 47 + FeederConfig feederConfig = new FeederConfig();
  48 + feederConfig.setCondata(cfgdataRequest.getCondata());
  49 + OperatingData.setClassObjecValue(feederConfig, (fieldname, fieldObject) -> {
46 try { 50 try {
47 String commd = FeederCommdUtil.controlData( FeederCommd06ResponseType.valueOf(fieldname),(Integer) fieldObject); 51 String commd = FeederCommdUtil.controlData( FeederCommd06ResponseType.valueOf(fieldname),(Integer) fieldObject);
48 logger.info("远程发送指令{}",commd); 52 logger.info("远程发送指令{}",commd);
49 - InitService.serialPortService.sendStrData(commd); //通知串口  
50 - InitService.dateListenService.reportCondata(); //通知服务器 53 + InitService.serialPortService.sendHexData(commd); //通知串口
51 }catch (Exception e) 54 }catch (Exception e)
52 { 55 {
53 logger.error("发送指令失败:"+GsonConstructor.get().toJson(fieldname),e); 56 logger.error("发送指令失败:"+GsonConstructor.get().toJson(fieldname),e);
@@ -60,21 +63,12 @@ public class CfgdataService { @@ -60,21 +63,12 @@ public class CfgdataService {
60 List<Integer[]> timerList = cfgdataRequest.getTimer(); 63 List<Integer[]> timerList = cfgdataRequest.getTimer();
61 if(null != timerList && timerList.size() != 0 ) 64 if(null != timerList && timerList.size() != 0 )
62 { 65 {
63 - for (int i=0;i<timerList.size();i++) 66 + ModbusDto modbusDto = InitService.serialPortService.sendHexData(FeederCommdUtil.controlTimer(timerList));
  67 + if(0x10==modbusDto.getCommdcode())
64 { 68 {
65 - Integer[] timerNumber = timerList.get(i);  
66 - FeederTimer feederTimer = new FeederTimer();  
67 - feederTimer.setTimer_start_m(timerNumber[1]);  
68 - feederTimer.setTimer_start_h(timerNumber[0]);  
69 - feederTimer.setTimer_if_start(timerNumber[4]);  
70 - feederTimer.setTimer_is_start(1);  
71 - feederTimer.setTimer_close_m(timerNumber[3]);  
72 - feederTimer.setTimer_close_h(timerNumber[2]);  
73 - feederTimer.setTimer_if_close(timerNumber[4]);  
74 - feederTimer.setTimer_is_close(1);  
75 - InitService.serialPortService.sendHexData(FeederCommdUtil.controlTimer((i/2)+1,feederTimer)); 69 + OperatingData.feederConfig.setTimer(timerList);
76 } 70 }
77 - InitService.dateListenService.reportTimer(); //通知服务器 71 +
78 } 72 }
79 MessageUtil.sendFeederResponseMessage(ctx,"cfgdataOK", FeederBackstateTtpe.success,0); 73 MessageUtil.sendFeederResponseMessage(ctx,"cfgdataOK", FeederBackstateTtpe.success,0);
80 }catch (Exception e) 74 }catch (Exception e)
@@ -3,6 +3,7 @@ package com.zhonglai.luhui.smart.feeder.service.feeder; @@ -3,6 +3,7 @@ package com.zhonglai.luhui.smart.feeder.service.feeder;
3 import com.google.gson.JsonObject; 3 import com.google.gson.JsonObject;
4 import com.ruoyi.common.utils.GsonConstructor; 4 import com.ruoyi.common.utils.GsonConstructor;
5 import com.zhonglai.luhui.smart.feeder.config.OperatingData; 5 import com.zhonglai.luhui.smart.feeder.config.OperatingData;
  6 +import com.zhonglai.luhui.smart.feeder.dto.FeederConfig;
6 import com.zhonglai.luhui.smart.feeder.dto.commd.FeederBackstateTtpe; 7 import com.zhonglai.luhui.smart.feeder.dto.commd.FeederBackstateTtpe;
7 import com.zhonglai.luhui.smart.feeder.dto.mqtt.CfgdataRequest; 8 import com.zhonglai.luhui.smart.feeder.dto.mqtt.CfgdataRequest;
8 import com.zhonglai.luhui.smart.feeder.dto.mqtt.CmdDto; 9 import com.zhonglai.luhui.smart.feeder.dto.mqtt.CmdDto;
@@ -37,12 +38,13 @@ public class ManualcontrolService { @@ -37,12 +38,13 @@ public class ManualcontrolService {
37 } 38 }
38 try { 39 try {
39 ManualcontrolRequest manualcontrolRequest = GsonConstructor.get().fromJson(data.toString(), ManualcontrolRequest.class); 40 ManualcontrolRequest manualcontrolRequest = GsonConstructor.get().fromJson(data.toString(), ManualcontrolRequest.class);
40 - OperatingData.setClassObjecValue(manualcontrolRequest.getCondata(), (fieldname, fieldObject) -> { 41 + FeederConfig feederConfig = new FeederConfig();
  42 + feederConfig.setCondata(manualcontrolRequest.getCondata());
  43 + OperatingData.setClassObjecValue(feederConfig, (fieldname, fieldObject) -> {
41 try { 44 try {
42 String commd = FeederCommdUtil.controlData( FeederCommd06ResponseType.valueOf(fieldname),(Integer) fieldObject); 45 String commd = FeederCommdUtil.controlData( FeederCommd06ResponseType.valueOf(fieldname),(Integer) fieldObject);
43 logger.info("远程发送指令{}",commd); 46 logger.info("远程发送指令{}",commd);
44 - InitService.serialPortService.sendStrData(commd);  
45 - InitService.dateListenService.reportCondata(); //通知服务器 47 + InitService.serialPortService.sendHexData(commd);
46 }catch (Exception e) 48 }catch (Exception e)
47 { 49 {
48 logger.error("发送指令失败:"+GsonConstructor.get().toJson(fieldname),e); 50 logger.error("发送指令失败:"+GsonConstructor.get().toJson(fieldname),e);
@@ -54,6 +56,7 @@ public class ManualcontrolService { @@ -54,6 +56,7 @@ public class ManualcontrolService {
54 MessageUtil.sendFeederResponseMessage(ctx,"manualcontrolOK", FeederBackstateTtpe.success,0); 56 MessageUtil.sendFeederResponseMessage(ctx,"manualcontrolOK", FeederBackstateTtpe.success,0);
55 }catch (Exception e) 57 }catch (Exception e)
56 { 58 {
  59 + logger.error("控制出错",e);
57 MessageUtil.sendFeederResponseMessage(ctx,"manualcontrolOK", FeederBackstateTtpe.runErr,0); 60 MessageUtil.sendFeederResponseMessage(ctx,"manualcontrolOK", FeederBackstateTtpe.runErr,0);
58 } 61 }
59 62