diff --git a/pom.xml b/pom.xml index 7924f6a..74a0309 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ifishSocket http://mvnrepository.com - + org.quartz-scheduler quartz @@ -67,29 +67,17 @@ c3p0 0.9.1.2 - + org.slf4j - slf4j-api - 1.7.12 - - - - ch.qos.logback - logback-core - 1.1.2 - - - - ch.qos.logback - logback-classic - 1.1.2 + slf4j-log4j12 + 1.7.13 org.apache.mina mina-core - 2.0.7 + 2.0.17 @@ -101,13 +89,13 @@ org.apache.mina mina-integration-beans - 2.0.7 + 2.0.17 org.apache.mina mina-filter-compression - 2.0.7 + 2.0.17 @@ -156,7 +144,15 @@ 2.5.4 true - + + org.apache.maven.plugins + maven-compiler-plugin + + 1.6 + 1.6 + + + src/main/java diff --git a/src/main/java/com/ifish/dao/DeviceHeaterDao.java b/src/main/java/com/ifish/dao/DeviceHeaterDao.java new file mode 100644 index 0000000..a8a0123 --- /dev/null +++ b/src/main/java/com/ifish/dao/DeviceHeaterDao.java @@ -0,0 +1,26 @@ +package com.ifish.dao; + +import com.ifish.entity.Device; +import com.ifish.entity.DeviceHeater; +import org.hibernate.criterion.Criterion; + +import java.util.List; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 20:06 2018/9/15 + * @Modified by: + */ +public interface DeviceHeaterDao { + + DeviceHeater findById(Integer id); + + DeviceHeater save(DeviceHeater device); + + DeviceHeater update(DeviceHeater device); + + DeviceHeater getUniqueByProperty(String property,Object value); + + List getByCriterion(Criterion... criterions); +} diff --git a/src/main/java/com/ifish/daoImpl/DeviceHeaterDaoImpl.java b/src/main/java/com/ifish/daoImpl/DeviceHeaterDaoImpl.java new file mode 100644 index 0000000..922a11c --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/DeviceHeaterDaoImpl.java @@ -0,0 +1,56 @@ +package com.ifish.daoImpl; + +import com.ifish.dao.DeviceDao; +import com.ifish.dao.DeviceHeaterDao; +import com.ifish.entity.Device; +import com.ifish.entity.DeviceHeater; +import com.ifish.hibernate.HibernateBaseDao; +import org.hibernate.criterion.Criterion; +import org.hibernate.criterion.Restrictions; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @ClassName: DeviceHerterDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository +public class DeviceHeaterDaoImpl extends HibernateBaseDao implements DeviceHeaterDao { + + + @Override + protected Class getEntityClass() { + return DeviceHeater.class; + } + + @Override + public DeviceHeater findById(Integer id) { + return this.get(id); + } + + @Override + public DeviceHeater getUniqueByProperty(String property, Object value) { + return this.findUniqueByProperty(Restrictions.eq(property, value)); + } + + @Override + public DeviceHeater save(DeviceHeater deviceHeater) { + this.getSession().save(deviceHeater); + return deviceHeater; + } + + @Override + public DeviceHeater update(DeviceHeater deviceHeater) { + this.getSession().update(deviceHeater); + return deviceHeater; + } + + @Override + public List getByCriterion(Criterion... criterion) { + return super.findByProperty(criterion); + } +} diff --git a/src/main/java/com/ifish/entity/DeviceHeater.java b/src/main/java/com/ifish/entity/DeviceHeater.java new file mode 100644 index 0000000..7d1bcf3 --- /dev/null +++ b/src/main/java/com/ifish/entity/DeviceHeater.java @@ -0,0 +1,62 @@ +package com.ifish.entity; + +import java.io.Serializable; + +/** + * @author: yan.y + * @Description: + * @Date: Created in 21:00 2018/9/17 + * @Modified by: + */ +public class DeviceHeater implements Serializable{ + + private Integer heaterId; + + private String heaterMacAddress; + + private String heaterWaterTemperature; + + private String heaterPh; + + private String heaterGatheringTime; + + public Integer getHeaterId() { + return heaterId; + } + + public void setHeaterId(Integer heaterId) { + this.heaterId = heaterId; + } + + public String getHeaterMacAddress() { + return heaterMacAddress; + } + + public void setHeaterMacAddress(String heaterMacAddress) { + this.heaterMacAddress = heaterMacAddress; + } + + public String getHeaterWaterTemperature() { + return heaterWaterTemperature; + } + + public void setHeaterWaterTemperature(String heaterWaterTemperature) { + this.heaterWaterTemperature = heaterWaterTemperature; + } + + public String getHeaterPh() { + return heaterPh; + } + + public void setHeaterPh(String heaterPh) { + this.heaterPh = heaterPh; + } + + public String getHeaterGatheringTime() { + return heaterGatheringTime; + } + + public void setHeaterGatheringTime(String heaterGatheringTime) { + this.heaterGatheringTime = heaterGatheringTime; + } +} diff --git a/src/main/java/com/ifish/entity/hbm/DeviceHeater.hbm.xml b/src/main/java/com/ifish/entity/hbm/DeviceHeater.hbm.xml new file mode 100644 index 0000000..e20253d --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/DeviceHeater.hbm.xml @@ -0,0 +1,14 @@ + + + + + false + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/quartz/ExecuteJob.java b/src/main/java/com/ifish/quartz/ExecuteJob.java index d841948..8a0a4fc 100644 --- a/src/main/java/com/ifish/quartz/ExecuteJob.java +++ b/src/main/java/com/ifish/quartz/ExecuteJob.java @@ -35,7 +35,7 @@ public class ExecuteJob implements Job { private UserService userService; @Autowired private DeviceService deviceService; - + public void execute(JobExecutionContext context) throws JobExecutionException { //任务传递的参数 JobDataMap dataMap = context.getJobDetail().getJobDataMap(); diff --git a/src/main/java/com/ifish/quartz/ScheduleJob.java b/src/main/java/com/ifish/quartz/ScheduleJob.java index 55671f4..b1a99eb 100644 --- a/src/main/java/com/ifish/quartz/ScheduleJob.java +++ b/src/main/java/com/ifish/quartz/ScheduleJob.java @@ -1,5 +1,6 @@ package com.ifish.quartz; +import org.apache.log4j.Logger; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.JobKey; @@ -10,8 +11,6 @@ import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.TriggerKey; import org.quartz.impl.StdSchedulerFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; /** @@ -20,7 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class ScheduleJob { - private static Logger log = LoggerFactory.getLogger(ScheduleJob.class); + private static Logger log = Logger.getLogger(ScheduleJob.class); //调度 private Scheduler scheduler = null; @@ -36,7 +35,7 @@ public class ScheduleJob { scheduler.setJobFactory(jobFactory); scheduler.start(); } catch (SchedulerException e) { - log.error("start scheduler error:{}",e.toString()); + log.error(String.format("start scheduler error:{%s}",e.toString())); } } /** @@ -46,7 +45,8 @@ public class ScheduleJob { */ public void addJob(JobGroup jobGroup){ try { - log.info("添加任务:{}.{}",jobGroup.getJobName(),jobGroup.getTriggerName()); + log.info(String.format("添加任务:%s.%s",jobGroup.getJobName(),jobGroup.getTriggerName())); +// log.info("添加任务:{}.{}",jobGroup.getJobName(),jobGroup.getTriggerName()); //任务 JobDetail jobDetail= JobBuilder.newJob(ExecuteJob.class) .usingJobData("macAddress", jobGroup.getMacAddress()) @@ -60,7 +60,8 @@ public class ScheduleJob { //添加触发器 scheduler.scheduleJob(jobDetail,trigger); } catch (SchedulerException e) { - log.error("addJob error【macAddress:{},jobGroup:{},triggerGroup:{},errMsg:{}】",jobGroup.getMacAddress(),jobGroup.getJobName(),jobGroup.getTriggerGroup(),e.toString()); + log.error(String.format("addJob error【macAddress:{%s},jobGroup:{%s},triggerGroup:{%s},errMsg:{%s}】",jobGroup.getMacAddress(),jobGroup.getJobName(),jobGroup.getTriggerGroup(),e.toString())); +// log.error("addJob error【macAddress:{},jobGroup:{},triggerGroup:{},errMsg:{}】",jobGroup.getMacAddress(),jobGroup.getJobName(),jobGroup.getTriggerGroup(),e.toString()); } } /** @@ -70,7 +71,7 @@ public class ScheduleJob { */ public void deleteJob(JobGroup jobGroup){ try { - log.info("移除任务:{}.{}",jobGroup.getJobName(),jobGroup.getTriggerName()); + log.info(String.format("移除任务:%s.%s",jobGroup.getJobName(),jobGroup.getTriggerName())); //触发器 TriggerKey triggerKey = TriggerKey.triggerKey(jobGroup.getTriggerName(),jobGroup.getTriggerGroup()); //停止触发器 @@ -82,7 +83,7 @@ public class ScheduleJob { //删除任务 scheduler.deleteJob(jobKey); } catch (SchedulerException e) { - log.error("deleteJob error【macAddress:{},jobGroup:{},triggerGroup:{},errMsg:{}】",jobGroup.getMacAddress(),jobGroup.getJobName(),jobGroup.getTriggerGroup(),e.toString()); + log.error(String.format("deleteJob error【macAddress:{%s},jobGroup:{%s},triggerGroup:{%s},errMsg:{%s}】",jobGroup.getMacAddress(),jobGroup.getJobName(),jobGroup.getTriggerGroup(),e.toString())); } } @@ -94,7 +95,7 @@ public class ScheduleJob { //关闭任务 scheduler.shutdown(); } catch (SchedulerException e) { - log.error("shutdown scheduler error:{}",e.toString()); + log.error(String.format("shutdown scheduler error:{%s}",e.toString())); } } diff --git a/src/main/java/com/ifish/service/DeviceService.java b/src/main/java/com/ifish/service/DeviceService.java index 5cc6420..0be8a12 100644 --- a/src/main/java/com/ifish/service/DeviceService.java +++ b/src/main/java/com/ifish/service/DeviceService.java @@ -2,11 +2,8 @@ package com.ifish.service; import java.util.List; -import com.ifish.entity.Device; -import com.ifish.entity.DeviceUser; -import com.ifish.entity.FactoryList; -import com.ifish.entity.HardwareType; -import com.ifish.entity.LoginRecord; +import com.ifish.entity.*; +import com.ifish.socketNew.model.receive.BackFunctionCodeHeater; import com.ifish.socketNew.model.send.OrderFunctionCode1; /** @@ -17,23 +14,28 @@ import com.ifish.socketNew.model.send.OrderFunctionCode1; */ public interface DeviceService { - public Device update(Device device); + Device update(Device device); - public Device update(OrderFunctionCode1 model); + Device update(OrderFunctionCode1 model); + + DeviceHeater save(BackFunctionCodeHeater model); + DeviceHeater update(DeviceHeater deviceHeater); + + void updateWarnOnoff(String macAddress,String onOff); - public void updateWarnOnoff(String macAddress,String onOff); + Device getUniqueByProperty(String property,Object value); + + List getByProperty(String property,Object value); + + List getDeviceHeaterByProperty(String hour,String macAddress); + + DeviceUser getUniqueByProperty(String macAddress); - public Device getUniqueByProperty(String property,Object value); + List getListByProperty(Integer deviceId); - public List getByProperty(String property,Object value); + LoginRecord save(LoginRecord loginRecord); - public DeviceUser getUniqueByProperty(String macAddress); + FactoryList getFactoryListById(String factoryCode); - public List getListByProperty(Integer deviceId); - - public LoginRecord save(LoginRecord loginRecord); - - public FactoryList getFactoryListById(String factoryCode); - - public HardwareType getHardwareTypeById(String typeCode); + HardwareType getHardwareTypeById(String typeCode); } diff --git a/src/main/java/com/ifish/serviceImpl/DeviceServiceImpl.java b/src/main/java/com/ifish/serviceImpl/DeviceServiceImpl.java index a458425..c8f2177 100644 --- a/src/main/java/com/ifish/serviceImpl/DeviceServiceImpl.java +++ b/src/main/java/com/ifish/serviceImpl/DeviceServiceImpl.java @@ -1,8 +1,14 @@ package com.ifish.serviceImpl; +import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.List; +import com.ifish.dao.*; +import com.ifish.entity.*; +import com.ifish.socketNew.model.receive.BackFunctionCodeHeater; +import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Restrictions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,16 +16,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.ifish.dao.DeviceDao; -import com.ifish.dao.DeviceUserDao; -import com.ifish.dao.FactoryListDao; -import com.ifish.dao.HardwareTypeDao; -import com.ifish.dao.LoginRecordDao; -import com.ifish.entity.Device; -import com.ifish.entity.DeviceUser; -import com.ifish.entity.FactoryList; -import com.ifish.entity.HardwareType; -import com.ifish.entity.LoginRecord; import com.ifish.enums.BooleanEnum; import com.ifish.service.DeviceService; import com.ifish.socketNew.model.send.OrderFunctionCode1; @@ -41,6 +37,8 @@ public class DeviceServiceImpl implements DeviceService { @Autowired private DeviceDao deviceDao; @Autowired + private DeviceHeaterDao deviceHeaterDao; + @Autowired private LoginRecordDao loginRecordDao; @Autowired private DeviceUserDao deviceUserDao; @@ -168,4 +166,28 @@ public class DeviceServiceImpl implements DeviceService { return this.hardwareTypeDao.findById(typeCode); } + @Override + public DeviceHeater save(BackFunctionCodeHeater model) { + //保存加热棒数据 按天 + DeviceHeater deviceHeater = new DeviceHeater(); + deviceHeater.setHeaterGatheringTime(Calendar.getInstance().get(Calendar.HOUR_OF_DAY) + ""); + deviceHeater.setHeaterMacAddress(ByteUtil.bytesToHexString(model.getSrc())); + deviceHeater.setHeaterPh(String.valueOf(model.getPh())); + deviceHeater.setHeaterWaterTemperature(String.valueOf(model.getWaterTemperature())); + return this.deviceHeaterDao.save(deviceHeater); + } + + @Override + public DeviceHeater update(DeviceHeater deviceHeater) { + return this.deviceHeaterDao.update(deviceHeater); + } + + @Override + public List getDeviceHeaterByProperty(String hour,String macAddress) { + List queryList = new ArrayList(); + queryList.add(Restrictions.eq("heaterMacAddress",macAddress)); + queryList.add(Restrictions.eq("heaterGatheringTime",hour)); + List list = this.deviceHeaterDao.getByCriterion(queryList.toArray(new Criterion[queryList.size()])); + return list; + } } diff --git a/src/main/java/com/ifish/socketNew/MinaServerHandler.java b/src/main/java/com/ifish/socketNew/MinaServerHandler.java index df2e68b..01c9b4e 100644 --- a/src/main/java/com/ifish/socketNew/MinaServerHandler.java +++ b/src/main/java/com/ifish/socketNew/MinaServerHandler.java @@ -57,7 +57,7 @@ public class MinaServerHandler extends IoHandlerAdapter { */ @Override public void sessionClosed(IoSession session) throws Exception { - log.warn("{}:会话关闭,连接数:{}", session.getRemoteAddress(), atomicInt.decrementAndGet()); + log.info("{}:会话关闭,连接数:{}", session.getRemoteAddress(), atomicInt.decrementAndGet()); //旧连接关闭,获取设备mac地址 String oldConnect = session.getRemoteAddress().toString(); String macAddress = SomeServer.remoteAddress.get(oldConnect); @@ -92,7 +92,7 @@ public class MinaServerHandler extends IoHandlerAdapter { //离线时间 jobGroup.setTimestamp(IfishUtil.format(new Date())); //10分钟后推送 - jobGroup.setStartTime(new Date(new Date().getTime() + 600000L)); + jobGroup.setStartTime(new Date(System.currentTimeMillis() + 600000L)); scheduleJob.addJob(jobGroup); } @@ -110,7 +110,7 @@ public class MinaServerHandler extends IoHandlerAdapter { @Override public void sessionIdle(IoSession session, IdleStatus status) throws Exception { - log.warn("空闲超时,服务器主动关闭连接{}", session.getRemoteAddress()); + log.info("空闲超时,服务器主动关闭连接{}", session.getRemoteAddress()); session.close(true); } diff --git a/src/main/java/com/ifish/socketNew/SomeServer.java b/src/main/java/com/ifish/socketNew/SomeServer.java index b650552..8d23520 100644 --- a/src/main/java/com/ifish/socketNew/SomeServer.java +++ b/src/main/java/com/ifish/socketNew/SomeServer.java @@ -1,22 +1,16 @@ package com.ifish.socketNew; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArraySet; +import com.ifish.entity.*; +import com.ifish.socketNew.model.receive.*; import org.apache.mina.core.session.IoSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import com.ifish.entity.Device; -import com.ifish.entity.DeviceUser; -import com.ifish.entity.LoginRecord; -import com.ifish.entity.PushList; -import com.ifish.entity.User; import com.ifish.enums.BooleanEnum; import com.ifish.enums.NeteaseEnum; import com.ifish.enums.PushTypeEnum; @@ -25,9 +19,6 @@ import com.ifish.quartz.JobGroup; import com.ifish.quartz.ScheduleJob; import com.ifish.service.DeviceService; import com.ifish.service.UserService; -import com.ifish.socketNew.model.receive.BackFunctionCode0; -import com.ifish.socketNew.model.receive.BackFunctionCode1; -import com.ifish.socketNew.model.receive.BackFunctionCode8; import com.ifish.socketNew.model.send.OrderFunctionCode0; import com.ifish.socketNew.model.send.OrderFunctionCode1; import com.ifish.socketNew.model.send.OrderFunctionCode15; @@ -58,8 +49,8 @@ public class SomeServer { public static boolean isReplay = true; private static Logger log = LoggerFactory.getLogger(SomeServer.class); - public static ConcurrentHashMap remoteAddress = new ConcurrentHashMap(); - public static ConcurrentHashMap sessions_cz = new ConcurrentHashMap(); + public static final ConcurrentHashMap remoteAddress = new ConcurrentHashMap(); + public static final ConcurrentHashMap sessions_cz = new ConcurrentHashMap(); private ConcurrentHashMap> sessions_sjs = new ConcurrentHashMap>(); /** @@ -70,6 +61,7 @@ public class SomeServer { public void doSome(IoSession session, Object message) { //通配字符串 if(message instanceof byte[]){ + byte[] bytes = (byte[]) message; //长度 int length = bytes[14] & 0xff; @@ -86,6 +78,21 @@ public class SomeServer { else{ sendToDevice(session,strSrc, message); } + } else if (message instanceof BackFunctionCodeHeater) { + //智能加热棒 获取服务器响应数据 以小时分开 mac地址唯一 最多24条数据 + BackFunctionCodeHeater heater = (BackFunctionCodeHeater) message; + String macAddress = ByteUtil.bytesToHexString(heater.getSrc()); + String hour = String.valueOf(Calendar.getInstance().get(Calendar.HOUR_OF_DAY)); + List deviceHeaters = deviceService.getDeviceHeaterByProperty(hour, macAddress); + if (deviceHeaters.size() > 0) { + DeviceHeater deviceHeater = deviceHeaters.get(0); + deviceHeater.setHeaterWaterTemperature(String.valueOf(heater.getWaterTemperature())); + deviceHeater.setHeaterPh(String.valueOf(heater.getPh())); + deviceService.update(deviceHeater); + } else { + deviceService.save(heater); + } + sendToApp(session,macAddress,heater.getByteMessage()); } //设置设备温度报警 else if(message instanceof OrderFunctionCode5) { @@ -101,7 +108,7 @@ public class SomeServer { log.error("error Onoff:{},macAddress:{}",Onoff,strDest); } } catch (Exception e) { - log.warn("set OrderSetWarnModel error:macAddress:{},error msg:{}",strDest,e.toString()); + log.error("set OrderSetWarnModel error:macAddress:{},error msg:{}",strDest,e.toString()); } } //设备温度报警 @@ -154,7 +161,7 @@ public class SomeServer { deviceService.save(loginRecord); // } } catch (Exception e) { - log.warn("save device login error:macAddress:{},error msg:{}",strSrc,e.toString()); + log.error("save device login error:macAddress:{},error msg:{}",strSrc,e.toString()); } } //APP登录服务器 @@ -216,7 +223,7 @@ public class SomeServer { this.deviceService.update(device); } } catch (Exception e) { - log.warn("save device sdk version16 error:macAddress:{},error msg:{}",strSrc,e.toString()); + log.error("save device sdk version16 error:macAddress:{},error msg:{}",strSrc,e.toString()); } } //模块版本号 @@ -248,14 +255,13 @@ public class SomeServer { this.deviceService.update(device); } } catch (Exception e) { - log.warn("save device sdk version17 error:macAddress:{},error msg:{}",strSrc,e.toString()); + log.error("save device sdk version17 error:macAddress:{},error msg:{}",strSrc,e.toString()); } } } /** * 发送数据APP - * @param dest 目的地 * @param message 发送对象 * @return */ @@ -280,7 +286,6 @@ public class SomeServer { } /** * 发送数据给设备 - * @param dest 目的地 * @param message 发送对象 * @return */ @@ -363,7 +368,7 @@ public class SomeServer { } } } catch (Exception e) { - log.warn("pushNotifcation error:macAddress:{},error msg:{}",strSrc,e.toString()); + log.error("pushNotifcation error:macAddress:{},error msg:{}",strSrc,e.toString()); } } } diff --git a/src/main/java/com/ifish/socketNew/codeFactory/ServerDecode.java b/src/main/java/com/ifish/socketNew/codeFactory/ServerDecode.java index 61c617f..06b2276 100644 --- a/src/main/java/com/ifish/socketNew/codeFactory/ServerDecode.java +++ b/src/main/java/com/ifish/socketNew/codeFactory/ServerDecode.java @@ -2,13 +2,13 @@ package com.ifish.socketNew.codeFactory; import java.nio.charset.Charset; +import com.ifish.socketNew.model.receive.BackFunctionCodeHeater; +import org.apache.log4j.Logger; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.session.AttributeKey; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.ProtocolDecoder; import org.apache.mina.filter.codec.ProtocolDecoderOutput; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import com.ifish.socketNew.model.send.OrderFunctionCode0; import com.ifish.socketNew.model.send.OrderFunctionCode1; @@ -28,7 +28,7 @@ public class ServerDecode implements ProtocolDecoder { private final AttributeKey CONTEXT = new AttributeKey(getClass(), "context"); private final Charset charset; - private static Logger log = LoggerFactory.getLogger(ServerDecode.class); + private static Logger log = Logger.getLogger(ServerDecode.class); public ServerDecode() { this(Charset.defaultCharset()); @@ -79,7 +79,8 @@ public class ServerDecode implements ProtocolDecoder { doDecode(buf, out, length ,check_code); } else{ - log.info("length error:length:【{}】,limit:【{}】,HexDump:【{}】",length,limit,buf.getHexDump()); +// log.info(String.format("length error:length:【%s】,limit:【%s】,HexDump:【%s】",length,limit,buf.getHexDump())); +// log.info("length error:length:【{}】,limit:【{}】,HexDump:【{}】",length,limit,buf.getHexDump()); } buf.position(0); buf.clear(); @@ -96,11 +97,15 @@ public class ServerDecode implements ProtocolDecoder { byte[] bytes = new byte[length]; buf.get(bytes); buf.flip(); - //log.info("length:【{}】;limit:【{}】,HexDump:【{}】",length,buf.limit(),buf.getHexDump()); +// log.info("lengthth:【{}】;limit:【{}】,HexDump:【{}】",length,buf.limit(),buf.getHexDump()); //crc16校验 //boolean bln = CRC16.calcCrc16(ByteUtil.hexStringToBytes(hexDump)); switch (length) { //长度为22 + case 31: { + functionBackHeater(bytes,buf, out); + break; + } case 22:{ //设置报警温度 if(check_code==5){ @@ -360,6 +365,42 @@ public class ServerDecode implements ProtocolDecoder { out.write(model); } + private void functionBackHeater(byte[] bytes,IoBuffer buf, ProtocolDecoderOutput out){ + BackFunctionCodeHeater model = new BackFunctionCodeHeater(); + model.setByteMessage(bytes); + + buf.getHexDump(); + + //15字节头 + model.setType(buf.get()); + model.setCheck_code(buf.get()); + byte[] src = model.getSrc(); + for (int i = 0; i < src.length; i++) { + src[i] = buf.get(); + } + model.setSrc(src); + byte[] dest = model.getDest(); + for (int i = 0; i < dest.length; i++) { + dest[i] = buf.get(); + } + model.setDest(dest); + model.setRemote_len(buf.get()); + + model.setMainNumber(buf.get()); + model.setMainSwitch(buf.get()); + model.setControlState(buf.get()); + model.setWaterTemperature(buf.getShort()); + model.setHeatingTemperature(buf.getShort()); + model.setAlarmSwitch(buf.get()); + model.setPh(buf.getShort()); + model.setLowTemperature(buf.getShort()); + model.setHighTemperature(buf.getShort()); + byte[] crc16_code = model.getCrc16_code(); + for (int i = 0; i < crc16_code.length; i++) { + crc16_code[i] = buf.get(); + } + out.write(model); + } @Override public void dispose(IoSession session) throws Exception { Context ctx = (Context) session.getAttribute(CONTEXT); diff --git a/src/main/java/com/ifish/socketNew/model/receive/BackFunctionCodeHeater.java b/src/main/java/com/ifish/socketNew/model/receive/BackFunctionCodeHeater.java new file mode 100644 index 0000000..494310b --- /dev/null +++ b/src/main/java/com/ifish/socketNew/model/receive/BackFunctionCodeHeater.java @@ -0,0 +1,131 @@ +package com.ifish.socketNew.model.receive; + +import com.ifish.socketNew.model.HeadModel; + +import java.io.Serializable; + +/** + * 智能加热棒心跳返回30字节 15数据包头+13内容+2校验码 + * @author guogw + * + */ +public class BackFunctionCodeHeater extends HeadModel implements Serializable { + + private static final long serialVersionUID = 5899193914651159511L; + + private byte[] byteMessage; + + private byte mainNumber; + + private byte mainSwitch; + + private byte controlState; + + private short waterTemperature; + + private short heatingTemperature; + + private byte alarmSwitch; + + private short ph; + + private short lowTemperature; + + private short highTemperature; + + public byte[] getByteMessage() { + return byteMessage; + } + + public void setByteMessage(byte[] byteMessage) { + this.byteMessage = byteMessage; + } + + public byte getMainNumber() { + return mainNumber; + } + + public void setMainNumber(byte mainNumber) { + this.mainNumber = mainNumber; + } + + public byte getMainSwitch() { + return mainSwitch; + } + + public void setMainSwitch(byte mainSwitch) { + this.mainSwitch = mainSwitch; + } + + public byte getControlState() { + return controlState; + } + + public void setControlState(byte controlState) { + this.controlState = controlState; + } + + public short getWaterTemperature() { + return waterTemperature; + } + + public void setWaterTemperature(short waterTemperature) { + this.waterTemperature = waterTemperature; + } + + public short getHeatingTemperature() { + return heatingTemperature; + } + + public void setHeatingTemperature(short heatingTemperature) { + this.heatingTemperature = heatingTemperature; + } + + public byte getAlarmSwitch() { + return alarmSwitch; + } + + public void setAlarmSwitch(byte alarmSwitch) { + this.alarmSwitch = alarmSwitch; + } + + public short getPh() { + return ph; + } + + public void setPh(short ph) { + this.ph = ph; + } + + public short getLowTemperature() { + return lowTemperature; + } + + public void setLowTemperature(short lowTemperature) { + this.lowTemperature = lowTemperature; + } + + public short getHighTemperature() { + return highTemperature; + } + + public void setHighTemperature(short highTemperature) { + this.highTemperature = highTemperature; + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("BackFunctionCodeHeater{"); + sb.append("mainNumber=").append(mainNumber); + sb.append(", mainSwitch=").append(mainSwitch); + sb.append(", controlState=").append(controlState); + sb.append(", waterTemperature=").append(waterTemperature); + sb.append(", heatingTemperature=").append(heatingTemperature); + sb.append(", alarmSwitch=").append(alarmSwitch); + sb.append(", ph=").append(ph); + sb.append(", lowTemperature=").append(lowTemperature); + sb.append(", highTemperature=").append(highTemperature); + sb.append('}'); + return sb.toString(); + } +} diff --git a/src/main/resources/application-context.xml b/src/main/resources/application-context.xml index b61f8d7..91fbaa4 100644 --- a/src/main/resources/application-context.xml +++ b/src/main/resources/application-context.xml @@ -1,18 +1,15 @@ - + diff --git a/src/main/resources/jdbc.properties b/src/main/resources/jdbc.properties index 2b2d014..730b740 100644 --- a/src/main/resources/jdbc.properties +++ b/src/main/resources/jdbc.properties @@ -1,8 +1,11 @@ c3p0.driverClassName=com.mysql.jdbc.Driver c3p0.url=jdbc\:mysql\://localhost\:3306/myfishdb?characterEncoding\=UTF-8 +#c3p0.url=jdbc\:mysql\://139.196.24.156\:3306/myfishdb?characterEncoding\=UTF-8 c3p0.username=ifish c3p0.password=ifish7pwd #c3p0.username=root +#c3p0.password=ifish7mysql +#c3p0.username=root #c3p0.password=123456 c3p0.autoCommitOnClose=true diff --git a/src/main/resources/log4j.properties_bak b/src/main/resources/log4j.properties_bak new file mode 100644 index 0000000..493e7e4 --- /dev/null +++ b/src/main/resources/log4j.properties_bak @@ -0,0 +1,37 @@ +log4j.rootLogger=INFO,CONSOLE,FILE,ROLLING_FILE +################### +# Console Appender +################### +log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender +log4j.appender.Threshold=INFO +log4j.appender.CONSOLE.Target=System.out +log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern=[ifish7Socket][%-5p]%d - (%F:%L) - %m%n +######################## +# [INFO]Daily Rolling File +######################## +log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender +log4j.appender.FILE.Threshold=INFO +log4j.appender.FILE.File=/logs/ifishSocket/ifish7Socket_ALL.log +log4j.appender.FILE.Append=true +log4j.appender.FILE.ImmediateFlush = true +log4j.appender.FILE.DatePattern='.'yyyy-MM-dd +log4j.appender.FILE.layout=org.apache.log4j.PatternLayout +log4j.appender.FILE.layout.ConversionPattern=[Ifish7][%-5p]%d - %c.%t(%F:%L) - %m%n + +######################## +# [ERROR]Rolling File +######################## +log4j.appender.ROLLING_FILE=org.apache.log4j.DailyRollingFileAppender +log4j.appender.ROLLING_FILE.Threshold=ERROR +log4j.appender.ROLLING_FILE.File=/logs/ifishSocket/Ifish7_ERROR.log +log4j.appender.ROLLING_FILE.Append=true +log4j.appender.ROLLING_FILE.ImmediateFlush = true +log4j.appender.ROLLING_FILE.DatePattern='.'yyyy-MM-dd +log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout +log4j.appender.ROLLING_FILE.layout.ConversionPattern=[Ifish7][%-5p]%d - %c.%t(%F:%L) - %m%n + +log4j.logger.org.springframework=INFO +log4j.logger.com.hibernate=INFO +log4j.logger.java.sql=INFO + diff --git a/src/main/resources/mina.xml b/src/main/resources/mina.xml index 87cdc05..afa78da 100644 --- a/src/main/resources/mina.xml +++ b/src/main/resources/mina.xml @@ -65,7 +65,7 @@ - + diff --git a/src/main/resources/property.properties b/src/main/resources/property.properties index 9fae2d4..117e57f 100644 --- a/src/main/resources/property.properties +++ b/src/main/resources/property.properties @@ -1,8 +1,8 @@ #\u672c\u5730 -ifish.ip=192.168.61.128 +#ifish.ip=192.168.31.83 #\u6d4b\u8bd5\u4e91 #ifish.ip=139.196.24.156 #\u6b63\u5f0f\u4e91 -#ifish.ip=120.55.190.56 +ifish.ip=120.55.190.56 #\u670d\u52a1\u5668\u7aef\u53e3 ifish.port=9955 \ No newline at end of file