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