作者 钟来

模块整理

package com.zhonglai.luhui.smart.feeder.config;
import com.ruoyi.common.utils.GsonConstructor;
import com.zhonglai.luhui.smart.feeder.dto.*;
import com.zhonglai.luhui.smart.feeder.dto.commd.FeederBackstateTtpe;
import com.zhonglai.luhui.smart.feeder.dto.mqtt.DevicedatRequest;
import com.zhonglai.luhui.smart.feeder.service.InitService;
import com.zhonglai.luhui.smart.feeder.util.FeederCommd06ResponseType;
import com.zhonglai.luhui.smart.feeder.util.FeederCommdUtil;
import com.zhonglai.luhui.smart.feeder.util.MessageUtil;
import java.lang.reflect.Field;
... ... @@ -22,7 +15,7 @@ public class OperatingData {
public static FeederData feederData = new FeederData() ; //投料机配置
public static RegisterConfig registerConfig = new RegisterConfig(); //数据解析字典
public static void setClassObjecValue(Object value,IfOperatingDataValueIsNotNull ifOperatingDataValueIsNotNull) throws IllegalAccessException {
public static void setClassObjecValue(Object value,IfOperatingDataValueIsNotNull ifOperatingDataValueIsNotNull) throws IllegalAccessException, InstantiationException {
if(null != value)
{
OperatingDataType operatingDataType = getOperatingDataType(value);
... ... @@ -35,8 +28,31 @@ public class OperatingData {
Object object = field.get(value);
if(null != object)
{
if(object.getClass().isPrimitive())
{
operatingDataType.setValue(field,object);
ifOperatingDataValueIsNotNull.exeValue(field.getName(),object);
}else{
Class attributeCls = object.getClass();
Field[] attributeFields = attributeCls.getDeclaredFields();
for(Field attribute:attributeFields)
{
attribute.setAccessible(true);
Object attributeObject = attribute.get(object);
if(null != attributeObject)
{
if(null == field.get(operatingDataType))
{
field.set(operatingDataType,attributeCls.newInstance());
}
attribute.set(field.get(operatingDataType),attributeObject);
ifOperatingDataValueIsNotNull.exeValue(attribute.getName(),attributeObject);
}
}
}
}
}
... ...
... ... @@ -6,6 +6,8 @@ import com.zhonglai.luhui.smart.feeder.Main;
import com.zhonglai.luhui.smart.feeder.config.OperatingData;
import com.zhonglai.luhui.smart.feeder.domain.Register;
import com.zhonglai.luhui.smart.feeder.dto.CameraConfig;
import com.zhonglai.luhui.smart.feeder.dto.FeederConfig;
import com.zhonglai.luhui.smart.feeder.dto.ModbusDto;
import com.zhonglai.luhui.smart.feeder.dto.commd.FeederBackstateTtpe;
import com.zhonglai.luhui.smart.feeder.dto.commd.FeederTimer;
import com.zhonglai.luhui.smart.feeder.dto.mqtt.CameracontrolRequest;
... ... @@ -42,12 +44,13 @@ public class CfgdataService {
}
try {
CfgdataRequest cfgdataRequest = GsonConstructor.get().fromJson(data.toString(), CfgdataRequest.class);
OperatingData.setClassObjecValue(cfgdataRequest.getCondata(), (fieldname, fieldObject) -> {
FeederConfig feederConfig = new FeederConfig();
feederConfig.setCondata(cfgdataRequest.getCondata());
OperatingData.setClassObjecValue(feederConfig, (fieldname, fieldObject) -> {
try {
String commd = FeederCommdUtil.controlData( FeederCommd06ResponseType.valueOf(fieldname),(Integer) fieldObject);
logger.info("远程发送指令{}",commd);
InitService.serialPortService.sendStrData(commd); //通知串口
InitService.dateListenService.reportCondata(); //通知服务器
InitService.serialPortService.sendHexData(commd); //通知串口
}catch (Exception e)
{
logger.error("发送指令失败:"+GsonConstructor.get().toJson(fieldname),e);
... ... @@ -60,21 +63,12 @@ public class CfgdataService {
List<Integer[]> timerList = cfgdataRequest.getTimer();
if(null != timerList && timerList.size() != 0 )
{
for (int i=0;i<timerList.size();i++)
ModbusDto modbusDto = InitService.serialPortService.sendHexData(FeederCommdUtil.controlTimer(timerList));
if(0x10==modbusDto.getCommdcode())
{
Integer[] timerNumber = timerList.get(i);
FeederTimer feederTimer = new FeederTimer();
feederTimer.setTimer_start_m(timerNumber[1]);
feederTimer.setTimer_start_h(timerNumber[0]);
feederTimer.setTimer_if_start(timerNumber[4]);
feederTimer.setTimer_is_start(1);
feederTimer.setTimer_close_m(timerNumber[3]);
feederTimer.setTimer_close_h(timerNumber[2]);
feederTimer.setTimer_if_close(timerNumber[4]);
feederTimer.setTimer_is_close(1);
InitService.serialPortService.sendHexData(FeederCommdUtil.controlTimer((i/2)+1,feederTimer));
OperatingData.feederConfig.setTimer(timerList);
}
InitService.dateListenService.reportTimer(); //通知服务器
}
MessageUtil.sendFeederResponseMessage(ctx,"cfgdataOK", FeederBackstateTtpe.success,0);
}catch (Exception e)
... ...
... ... @@ -3,6 +3,7 @@ package com.zhonglai.luhui.smart.feeder.service.feeder;
import com.google.gson.JsonObject;
import com.ruoyi.common.utils.GsonConstructor;
import com.zhonglai.luhui.smart.feeder.config.OperatingData;
import com.zhonglai.luhui.smart.feeder.dto.FeederConfig;
import com.zhonglai.luhui.smart.feeder.dto.commd.FeederBackstateTtpe;
import com.zhonglai.luhui.smart.feeder.dto.mqtt.CfgdataRequest;
import com.zhonglai.luhui.smart.feeder.dto.mqtt.CmdDto;
... ... @@ -37,12 +38,13 @@ public class ManualcontrolService {
}
try {
ManualcontrolRequest manualcontrolRequest = GsonConstructor.get().fromJson(data.toString(), ManualcontrolRequest.class);
OperatingData.setClassObjecValue(manualcontrolRequest.getCondata(), (fieldname, fieldObject) -> {
FeederConfig feederConfig = new FeederConfig();
feederConfig.setCondata(manualcontrolRequest.getCondata());
OperatingData.setClassObjecValue(feederConfig, (fieldname, fieldObject) -> {
try {
String commd = FeederCommdUtil.controlData( FeederCommd06ResponseType.valueOf(fieldname),(Integer) fieldObject);
logger.info("远程发送指令{}",commd);
InitService.serialPortService.sendStrData(commd);
InitService.dateListenService.reportCondata(); //通知服务器
InitService.serialPortService.sendHexData(commd);
}catch (Exception e)
{
logger.error("发送指令失败:"+GsonConstructor.get().toJson(fieldname),e);
... ... @@ -54,6 +56,7 @@ public class ManualcontrolService {
MessageUtil.sendFeederResponseMessage(ctx,"manualcontrolOK", FeederBackstateTtpe.success,0);
}catch (Exception e)
{
logger.error("控制出错",e);
MessageUtil.sendFeederResponseMessage(ctx,"manualcontrolOK", FeederBackstateTtpe.runErr,0);
}
... ...