Преглед изворни кода

Merge branch 'master' of http://47.100.37.243:10080/ZHOU/yunsu

# Conflicts:
#	target/classes/main/resources/mapper/MouldEquipmentMapper.xml
#	target/classes/main/resources/mapper/MouldMapper.xml
пре 5 година
родитељ
комит
09307efe82

+ 2 - 2
cloud-model/src/main/resources/application-prod.properties

@@ -14,9 +14,9 @@ spring.thymeleaf.jackson.date-format=yyyy-MM-dd HH:mm:ss
 # 数据源配置
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
 # 云模服务器对应的数据库
-spring.datasource.url=jdbc:mysql://118.190.47.230:3306/cloud_model?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+#spring.datasource.url=jdbc:mysql://118.190.47.230:3306/cloud_model?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
 # 我们测试的自己服务器数据库
-#spring.datasource.url=jdbc:mysql://118.190.47.230:3306/new_cloud_model?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+spring.datasource.url=jdbc:mysql://118.190.47.230:3306/new_cloud_model?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
 spring.datasource.username=root
 spring.datasource.password=p011430seya1026
 #spring.datasource.druid.test-on-borrow=true

+ 2 - 2
cloud-socket/.settings/org.eclipse.wst.common.component

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
-    <wb-module deploy-name="JSKBT">
+    <wb-module deploy-name="yscloud">
         <wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
         <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
         <property name="java-output-path" value="/JSKBT/build/classes"/>
-        <property name="context-root" value="JSKBT"/>
+        <property name="context-root" value="yscloud"/>
     </wb-module>
 </project-modules>

+ 4 - 1
cloud-socket/src/com/js/kbt/controller/WeiXinUserInfoController.java

@@ -29,6 +29,7 @@ import com.js.kbt.model.TbMouldEquipment;
 import com.js.kbt.model.TbMouldEquipmentExample;
 import com.js.kbt.model.TbUser;
 import com.js.kbt.model.TbUserExample;
+import com.js.kbt.socket.UserHandler;
 import com.js.kbt.util.CRC16Util;
 import com.js.kbt.util.MD5Util;
 import com.js.kbt.util.ProjectConst;
@@ -51,6 +52,8 @@ public class WeiXinUserInfoController {
 	private MouldDownPacketMapper mouldDownPacketMapper;
 	@Resource
 	private TbMouldEquipmentMapper tbMouldEquipmentMapper;
+	@Resource
+	private UserHandler userHandler;
 
 //	@Autowired
 //	private WeiXinPlatformService weiXinPlatformService;
@@ -282,7 +285,7 @@ public class WeiXinUserInfoController {
 			tExp.createCriteria().andEquipmentNoEqualTo(string);
 			TbMouldEquipment equipment = tbMouldEquipmentMapper.selectByExample(tExp).get(0);
 			equipment.setIsUse(isUse);
-			equipment.setHillNumber(lowPowerLimit+"%");
+			equipment.setHillNumber(lowPowerLimit+"");
 			equipment.setTemperature(hotAlarmLimit);
 			//更新云模盒的报警温度和电量
 			tbMouldEquipmentMapper.updateByPrimaryKey(equipment);

+ 75 - 41
cloud-socket/src/com/js/kbt/socket/UserHandler.java

@@ -43,7 +43,7 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
 	private static final Logger logger = Logger.getLogger(UserHandler.class);
 
 	private ChannelHandlerContext ctx;
-	
+
 	@Resource
 	private MouldHistoryMapper mouldHistoryMapper;
 	@Resource
@@ -60,17 +60,16 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
 	private MouldDownPacketMapper mouldDownPacketMapper;
 	@Resource
 	private TimeCalibrationRecordMapper timeCalibrationRecordMapper;
-	
 
 	@Override
 	protected void channelRead0(ChannelHandlerContext arg0, String arg1) {
 		String pack = "FAAF0007001e781e50003C37D5";
-		//校准时间
-//		timeCalibration();
+		// 校准时间
+		timeCalibration();
 		System.out.println("收到===" + arg1 + "\n");
 		String equipmentNo = processMsg(arg1);
-		//以下是配置下行数据
-//		sendPackage(equipmentNo);
+		// 以下是配置下行数据
+		// sendPackage(equipmentNo);
 	}
 
 	private String processMsg(String input) {
@@ -93,23 +92,24 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
 		String deviceNum = getStringFromHexStr(deviceNumPart);
 		System.out.println("设备No=" + deviceNum);
 		item.setEquipmentNo(deviceNum);
-		// 软件版本号25
-		String version = input.substring(25 * 2, 26 * 2);
-		System.out.println("软件版本号=" + version);
-		item.setVersion(version);
-		String status = input.substring(26 * 2, 27 * 2);
-		System.out.println("工作状态=" + status);
+		// 发送数据包
 		MouldDownPacketExample pExp = new MouldDownPacketExample();
 		pExp.createCriteria().andEquipmentNoEqualTo(deviceNum);
 		List<MouldDownPacket> packetList = mouldDownPacketMapper.selectByExample(pExp);
-		if(packetList.size()>0){
+		if (packetList.size() > 0) {
 			MouldDownPacket packet = packetList.get(0);
-			if(!("0"+packet.getIsUse()).equals(status)){
-				logger.info("开始下发数据包==>"+packet.getPacketStr());
-				sendMsg(packet.getPacketStr());
-			}
+			logger.info("开始下发数据包==>" + packet.getPacketStr());
+			sendMsg(packet.getPacketStr());
+			//下发完就将数据删除(防止后续数据过大造成性能的影响)
+			mouldDownPacketMapper.deleteByPrimaryKey(packet.getId());
 			logger.info("判断是否开启或关闭已结束==>");
 		}
+		// 软件版本号25
+		String version = input.substring(25 * 2, 26 * 2);
+		System.out.println("软件版本号=" + version);
+		item.setVersion(version);
+		String status = input.substring(26 * 2, 27 * 2);
+		System.out.println("工作状态=" + status);
 		item.setStatus(Integer.decode("0x" + status).toString());
 		// 经度27-37
 		String longitude = getStringFromHexStr(input.substring(27 * 2, 38 * 2));
@@ -196,50 +196,53 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
 			avgTime = totalTime / list.size();
 		}
 		handleModLogic(item, avgTime);
-		//判断预留字节的
-		if("02".equals(mobilePart)){
-			//丢包数据已占满缓存,调用读取命令
-			sendMsg("#PRINTFALL;");
+		// 判断预留字节的
+		if ("02".equals(mobilePart)) {
+			// 丢包数据已占满缓存,调用读取命令
+			String strHexStr16 = strHexStr16("#PRINTFALL;");
+			logger.info("丢包数据已占满缓存下发调用读取命令#PRINTFALL;==>" + strHexStr16);
+			sendMsg(strHexStr16);
 			return deviceNum;
 		}
-		//返回设备编号
+		// 返回设备编号
 		return deviceNum;
 	}
-	
-	public void sendPackage(String equipmentNo){
-		if(equipmentNo.indexOf("FAAF") != -1){
+
+	public void sendPackage(String equipmentNo) {
+		if (equipmentNo.indexOf("FAAF") != -1) {
 			logger.info("非法云模盒编号,不作下发处理");
 			return;
 		}
 		MouldDownPacketExample exp = new MouldDownPacketExample();
 		exp.createCriteria().andEquipmentNoEqualTo(equipmentNo);
 		List<MouldDownPacket> list = mouldDownPacketMapper.selectByExample(exp);
-		if(list.size()>0){
+		if (list.size() > 0) {
 			MouldDownPacket packet = list.get(0);
-			if(0==packet.getIsUse()){
-				logger.info("开始下发数据包==>"+packet.getPacketStr());
+			if (0 == packet.getIsUse()) {
+				logger.info("开始下发数据包==>" + packet.getPacketStr());
 				sendMsg(packet.getPacketStr());
 			}
 		}
 	}
-	
-	public void timeCalibration(){
+
+	public void timeCalibration() {
 		Integer count = timeCalibrationRecordMapper.selectCountByToday();
-		if(count==0){
+		if (count == 0) {
 			Date date = new Date();
 			SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd,HH:mm:ss");
 			String dateStr = sdf.format(date);
-			dateStr = "#TIME="+dateStr+";";
-			//#TIME=18-03-06,15:31:48;
-			logger.info("校准系统模块时间==>"+dateStr);
-			sendMsg(dateStr);
+			dateStr = "#TIME=" + dateStr + ";";
+			// #TIME=18-03-06,15:31:48;
+			logger.info("校准系统模块时间==>" + dateStr);
+			// 将字符串转成16进制字符串
+			String strHexStr16 = strHexStr16(dateStr);
+			logger.info("校准系统模块时间转成16进制的字符串==>" + strHexStr16);
+			sendMsg(strHexStr16);
 			TimeCalibrationRecord timeCalibrationRecord = new TimeCalibrationRecord();
 			timeCalibrationRecordMapper.insertSelective(timeCalibrationRecord);
 		}
 	}
 
-	
-
 	private void handleModLogic(MouldHistory item, int avgTime) {
 		TbMouldEquipmentExample meqExp = new TbMouldEquipmentExample();
 		meqExp.createCriteria().andEquipmentNoEqualTo(item.getEquipmentNo());
@@ -260,8 +263,8 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
 			if (tbMouldMapper.countByExample(tExp) > 0) {
 				TbMould tm = tbMouldMapper.selectByExample(tExp).get(0);
 				tm.setState(item.getStatus());
-				//云模盒运行次数+模具的历史运行次数
-				tm.setRunTimes(item.getRunCnt()+tm.getHistoryRunTimes());
+				// 云模盒运行次数+模具的历史运行次数
+				tm.setRunTimes(item.getRunCnt() + tm.getHistoryRunTimes());
 				// 处理每模平均周期(单位秒)
 				BigDecimal bd = new BigDecimal(avgTime * 1.00 / 1000);
 				tm.setOcCycle(bd);
@@ -328,7 +331,7 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
 		return parseDate;
 	}
 
-	private String getStringFromHexStr(String hexStr) {
+	private static String getStringFromHexStr(String hexStr) {
 		StringBuilder sb = new StringBuilder();
 		for (int i = 0; i < hexStr.length() / 2; i++) {
 			String str = "0x" + hexStr.substring(i * 2, i * 2 + 2);
@@ -348,7 +351,6 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
 		byte[] buffer = hexStrToBinaryStr(hexString);
 		ByteBuf bf = Unpooled.buffer(hexString.length() / 2);
 		bf.writeBytes(buffer);
-
 		ctx.writeAndFlush(bf);
 		// ctx.close();
 	}
@@ -442,7 +444,39 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
 		return result;
 	}
 
+	/**
+	 * 普通字符串转16进制字符串
+	 * 
+	 * @param str
+	 * @return
+	 */
+
+	public static String strHexStr16(String str) {
+		char[] chars = "0123456789ABCDEF".toCharArray();
+		StringBuilder sb = new StringBuilder("");
+		byte[] bs = str.getBytes();
+		int bit;
+		for (int i = 0; i < bs.length; i++) {
+			bit = (bs[i] & 0x0f0) >> 4;
+			sb.append(chars[bit]);
+			bit = bs[i] & 0x0f;
+			sb.append(chars[bit]);
+			// sb.append(' ');
+		}
+		return sb.toString().trim();
+	}
+
 	public static void main(String[] args) {
+		// Date date = new Date();
+		// SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd,HH:mm:ss");
+		// String dateStr = sdf.format(date);
+		// dateStr = "#TIME="+dateStr+";";
+		// System.out.println(dateStr);
+		// //#TIME=18-03-06,15:31:48;
+		// logger.info("校准系统模块时间==>"+dateStr);
+		// String reverseParseHex = strHexStr16(dateStr);
+		// System.out.println("reverseParseHex-----"+reverseParseHex);
+
 		// String str = "1F51";
 		String input = "FAAF530000000000000000000000003137333030303239343310010000000000000000000000000000000000000000001F51E85F00000000000045004A54000100110000001308160F171F1308160F2D188FCA";
 		// String temp = "0x"+str;

+ 1 - 1
cloud-socket/src/com/js/kbt/util/CRC16Util.java

@@ -67,7 +67,7 @@ public class CRC16Util {
 //        System.out.println(getCRC("01 03 20 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF 7F FF"));
 //        System.out.println(getCRC("01 03 00 00 00 08"));
 //        System.out.println(getCRC("01 03 10 00 8F 02 4E 00 91 02 44 00 92 02 5A 00 8B 02 47"));
-    	String crc = getCRC("FA AF 00 07 00 1e 78"+" 1e"+" "+"50"+" 00 3C");
+    	String crc = getCRC("FA AF 00 07 01 1e 78 1e 50 00 3C");
         System.out.println(crc);
     }
 }

+ 2 - 2
target/classes/main/resources/application-prod.properties

@@ -14,9 +14,9 @@ spring.thymeleaf.jackson.date-format=yyyy-MM-dd HH:mm:ss
 # 数据源配置
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
 # 云模服务器对应的数据库
-spring.datasource.url=jdbc:mysql://118.190.47.230:3306/cloud_model?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+#spring.datasource.url=jdbc:mysql://118.190.47.230:3306/cloud_model?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
 # 我们测试的自己服务器数据库
-#spring.datasource.url=jdbc:mysql://118.190.47.230:3306/new_cloud_model?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
+spring.datasource.url=jdbc:mysql://118.190.47.230:3306/new_cloud_model?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
 spring.datasource.username=root
 spring.datasource.password=p011430seya1026
 #spring.datasource.druid.test-on-borrow=true