Bladeren bron

2021-07-12 环控命令分类判断

523096025 4 jaren geleden
bovenliggende
commit
56ac6f3223

+ 542 - 0
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/constant/XtAppConstant.java

@@ -0,0 +1,542 @@
+package com.huimv.datacollection.constant;
+
+/**
+ * 系统应用相关常量
+ * 
+ * @author hongjun.hu
+ * @version 1.0
+ * @history
+ */
+public interface XtAppConstant {
+	public static final Integer PAGE_SIZE = 10;		// 翻页数
+	
+	public static final Integer ZFBZ_VALID = 0;		// 作废标识 有效
+	public static final Integer ZFBZ_INVALID = 1;	// 作废标识 无效
+	
+	public static final Integer KQBZ_VALID = 1;	// 开启标识 开启
+	
+	public static final String MCZS_CDZS = "1,2"; 	//普通猪舍和测定猪舍
+	public static final String MCZS_BJZS = "5" ; 	//报警舍
+	public static final String SSQY_QB = "1" ;		//所属区域_全部
+	public static final String MCZS_Q = "4";		//牧场猪舍 区
+	public static final String MCZS_QK = "3"; 		//牧场区域 全控
+
+	// 输入器输入值
+	public static final String SRQ_ZXG = "/";		// 查询全部信息
+	public static final String SRQ_PYM = "1";		// 拼音码
+	public static final String SRQ_WBM = "2";		// 五笔码
+	
+	/** 公用代码 start **/
+	public static final String CODE_ZW = "职务";
+	public static final String CODE_DQMS = "当前模式";
+	public static final String CODE_DWXB = "动物性别";
+	public static final String CODE_DWZT = "动物状态";
+	public static final String CODE_DWPZ = "动物品种";
+	public static final String CODE_DWQX = "动物去向";
+	public static final String CODE_BZZZY = "标识左中右";
+	public static final String CODE_QHLX = "区划类型";
+	public static final String CODE_BZSF = "标识是否";
+	public static final String CODE_LRBJSMS = "料肉比计算模式";
+	public static final String CODE_TXFS = "挑选方式";
+	public static final String CODE_CLMS = "出栏模式";
+	public static final String CODE_XXLX = "消息类型";
+	public static final String CODE_SLBZ = "上料标识";
+	public static final String CODE_SFKQYCZD = "是否开启远程诊断";
+	public static final String CODE_ZDDZ = "诊断动作";
+	public static final String CODE_YMZL = "疫苗种类";
+	public static final String CODE_JBZL = "疾病种类";
+	public static final String CODE_YPZL = "药品种类";
+	public static final String CODE_QY = "区域";
+	public static final String CODE_BZKG = "标识开关";
+	public static final String CODE_BZGZ = "标识故障";
+	public static final String CODE_HKSB = "环控设备";
+	public static final String CODE_GZLX = "故障类型";
+	public static final String CODE_GZJB = "故障级别";
+	public static final String CODE_GZXW = "故障行为";
+	public static final String CODE_FLZGZLX = "分栏站故障类型";
+	public static final String CODE_FLZGZBZ = "分栏站故障备注";
+	public static final String CODE_SJLR_SL = "数据录入_舍栏";
+	public static final String CODE_SJLR_DQZT = "数据录入_当前状态";
+	public static final String CODE_SJLR_ZZPZ = "数据录入_猪只品种";
+	public static final String CODE_SFHG = "是否合格";
+	public static final String CODE_ZCYC = "正常异常";
+	public static final String CODE_SJLR_PZSM = "数据录入_配种说明";
+	public static final String CODE_SJLR_RSJG = "数据录入_妊娠结果";
+	public static final String CODE_SJLR_FMZT = "数据录入_分娩状态";
+	public static final String CODE_SJLR_ZZZQLC = "数据录入_种猪转群流程";
+	public static final String CODE_SJLR_FZZQLC = "数据录入_肥猪转群流程";
+	public static final String CODE_SJLR_ZZLX = "数据录入_猪只类型";
+	public static final String CODE_SJLR_SWLX = "数据录入_死亡类型";
+	public static final String CODE_SJLR_TTLX = "数据录入_淘汰类型";
+	public static final String CODE_SJLR_TTFS = "数据录入_淘汰方式";
+	public static final String CODE_SJLR_YMMC = "数据录入_疫苗名称";
+	public static final String CODE_SJLR_SLPZ = "数据录入_饲料品种";
+	public static final String CODE_SJLR_SLLX = "数据录入_销售类型";
+	public static final String CODE_SJLR_ZZLY = "数据录入_猪只来源";
+	public static final String CODE_SJLR_GZZT = "数据录入_公猪状态";
+	public static final String CODE_SJLR_MZZT = "数据录入_母猪状态";
+	public static final String CODE_SJLR_GZSXZT = "数据录入_公猪筛选状态";
+	public static final String CODE_WHH_CLFS = "无害化_处理方式";
+	public static final String CODE_WSCL_BJLX = "污水报警类型";
+	public static final String CODE_SJLR_DN_DMID = "4";//断奶的代码ID
+	
+	public static final String CODE_SJLR_DQZT_HY = "2";	//数据录入_当前状态_怀孕
+	public static final String CODE_SJLR_DQZT_BR = "3";	//数据录入_当前状态_哺乳
+	public static final String CODE_SJLR_DQZT_KH = "5";	//数据录入_当前状态_空怀
+	public static final String CODE_SJLR_DQZT_TT = "6";	//数据录入_当前状态_淘汰
+	public static final String CODE_SJLR_DQZT_SW = "7";	//数据录入_当前状态_死亡
+	public static final String CODE_SJLR_DQZT_YS = "10";//数据录入_当前状态_已售
+	public static final String CODE_SJLR_DQZT_HB = "1";//数据录入_当前状态_后备
+	public static final String CODE_SJLR_DQZT_QT = "11";//数据录入_当前状态_其他
+	public static final String CODE_SJLR_DQZT_DN = "4";//数据录入_当前状态_断奶
+	public static final String CODE_SJLR_DQZT_LC = "13";//数据录入_当前状态_流产
+	public static final String CODE_SJLR_DQZT_FQ = "14";//数据录入_当前状态_返情
+	public static final String CODE_SJLR_DQZT_ZC = "9";//数据录入_当前状态_在场
+	
+	public static final String CODE_SJLR_RSJG_HY = "2";	//数据录入_妊娠結果_怀孕
+	public static final String CODE_SJLR_RSJG_KT = "5";	//数据录入_妊娠結果_空胎
+	public static final String CODE_SJLR_RSJG_LC = "13";//数据录入_妊娠結果_流产
+	public static final String CODE_SJLR_RSJG_FQ = "14";//数据录入_妊娠結果_返情
+	
+	
+	
+	public static final String SFHG_HG = "1";	//是否合格_合格
+	//分娩
+	/** 公用代码 end **/
+	
+	// 默认密码
+	public static final String DEFAULT_YHMM = "123456";
+	
+	// 26色
+	public static final String[] COLORS = {"f01818", "f04e18", "f08418", "f0ba18", "f0f018",
+		"baf018", "84f018", "4ef018", "18f018", "18f04e", "18f084", "18f0ba", "18f0f0",
+		"18baf0", "1884f0", "184ef0", "1818f0", "4e18f0", "8418f0", "ba18f0", "f018f0",
+		"f018ba", "f01884", "f0184e", "2d527c", "a9b2cf", "FEA386", "29C6CD", "F6E4C4",
+		"560764", "913175", "DD5B82", "FE9797", "616EEF", "09A8FA", "41C5D3", "D0F1CF",
+		"F6378F", "FFDD00", "FF8FE5", "B31313", "B74242", "57D1C9", "442A9D"};
+	
+	public static final String[] TJTCOLORS = {"3a8ecf", "f6bd0f", "8bba00", "a9b2cf", "18f084", "f0184e", "18f018", "ba18f0", "2d527c", "184ef0"};
+	
+	//无耳标动物
+	public static final String WEBDW = "000000000000000";
+	
+	// 区划类型
+	public static final String QHLX_1 = "1";	// 省
+	public static final String QHLX_2 = "2";	// 地市
+	public static final String QHLX_3 = "3";	// 区县
+	public static final String QHLX_4 = "4";	// 乡镇街道
+	public static final String QHLX_5 = "5";	// 村居委会
+	
+	// 档案信息
+	public static final String DEFAULT_YHID = "666666";	//默认用户ID
+	public static final String LQJSBZ = "1";	// 栏期结束
+	public static final String DQLQ = "1";		// 当前栏期
+	public static final String BZSF_YES = "1";	// 标识是否:是
+	public static final String BZSF_NO = "2";	// 标识是否:否
+	public static long ZERO_L = 0L;	// 长整形数值0
+	
+	public static final String DQMS_CL = "3";		// 出栏模式
+	public static final String CLZT_DOING = "2";	// 出栏:否
+	
+	// 牧场数据计算模式
+	public static final String QCJSMS = "3"; //全程计算模式
+	public static final String WJSMS = "2";	//每窝计算
+	public static final String RJSMS = "1"; //周计算模式(其实是按一周计算)
+	public static final String QBJSMS = "0"; //显示全部曲线,包括全程和周
+	
+	// apk存储路径
+	public static final String UPLOAD_PATH_APK = "download";
+	
+	// 系统参数
+	public static final String XTCS_DA_ZDLQS = "档案_最大栏期数";
+	public static final String XTCS_XT_YM = "系统_域名";
+	public static final String XTCS_XT_SFHQYHXX = "系统_是否获取用户信息";
+	public static final String XTCS_SJ_ZSJTJSJJG = "数据_周数据统计时间间隔";
+	public static final String XTCS_SJ_TJTQCXXSTS = "数据_统计图全程线显示天数";
+	public static final String XTCS_XT_SFDYWSRZ = "系统_是否打印WS日志";
+	public static final String XTCS_XXTS_SFXSSBGZXX = "消息推送_是否显示设备故障消息";
+	
+	public static final String TIME_FORMAT0 = "MM/dd";
+	public static final String TIME_FORMAT = "yyyy-MM-dd";
+	public static final String TIME_FORMAT1 = "yyyy-MM-dd HH:mm:ss";
+	public static final String TIME_FORMAT2 = " 00:00:00";
+	public static final String TIME_FORMAT3 = " 23:59:59";
+	public static final String TIME_FORMAT4 = "yyyy-MM-dd 00:00:00";
+	public static final String TIME_FORMAT5 = "MM-dd HH:mm";
+	public static final String TIME_FORMAT6 = "HH:mm";
+	public static final String TIME_FORMAT7 = "yy/MM/dd";
+	public static final String TIME_FORMAT8 = "0000-00-00";
+	public static final String TIME_FORMAT9 = "HH:mm:ss";
+	public static final String TIME_FORMAT10 = "yyyy";
+	public static final String TIME_FORMAT11 = "yyyyMMddHHmmss";
+	public static final String TIME_FORMAT12 = "MMddHHmmss";
+	public static final String TIME_FORMAT13 = "yyyyMMdd";
+	public static final String TIME_FORMAT14 = "MM.dd HH:mm";
+	public static final String TIME_FORMAT15 = "yyyy/MM/dd HH:mm:ss";
+	public static final String TIME_FORMAT16 = "yyyy-MM-dd HH:00:00";
+	public static final String TIME_FORMAT17 = " 23:00:00";
+	public static final String YY = "20";
+	
+	public static final String FWFS_LLQ = "浏览器";
+	public static final String FWFS_APP = "APP";
+	
+	public static final String DLFS_ZH = "帐号登录";
+	public static final String DLFS_FK = "访客登录";
+	
+	public static final String SBLX_PC = "电脑";
+	public static final String SBLX_SJ = "手机";
+	public static final String SBLX_PBDN = "平板电脑";
+	
+	public static final String ADMIN_GH = "10000";
+	public static final String GUEST_GH = "h000";
+	public static final String GUEST_MCID = "5"; // 嵊州
+	public static final String GUEST_YHMC = "guest"; // 嵊州
+	public static final String GUEST_STR = "********";
+	public static final int ADMIN_QYID = 0;
+	public static final int ADMIN_MCID = 0;
+	
+	/** 消息报警的级别 **/
+	public static final String XXTZ_XXBZ_1 = "1"; //一般
+	public static final String XXTZ_XXBZ_2 = "2"; //警告
+	public static final String XXTZ_XXBZ_3 = "3"; //严重
+	
+	/** 消息修复状态**/
+	public static final String XXTZ_XFZT_1 = "1"; //未修复
+	public static final String XXTZ_XFZT_2 = "2"; //已修复
+	
+	/** 消息处理状态**/
+	public static final String XXTZ_CLZT_1 = "1"; //未处理
+	public static final String XXTZ_CLZT_2 = "2"; //处理中
+	public static final String XXTZ_CLZT_3 = "3"; //已处理
+	
+	/** 操作日志类型 **/
+	public static final String CZRZ_CSQ = "CZRZ_CSQ"; //操作日志-采食区
+	public static final String CZRZ_TZBG = "CZRZ_TZBG"; //操作日志-挑选体重变更
+	public static final String CZRZ_TSBG = "CZRZ_TSBG"; //操作日志-当前在栏头数变更
+	public static final String CZRZ_FLLJZ = "CZRZ_FLLJZ"; //操作日志-分栏临界值
+	
+	/** 智能舍标识 **/
+	public static final String DA_ZSBZ_ZNS = "1";	//智能舍
+	public static final String DA_ZSBZ_FZNS = "2";	//非智能舍 
+	public static final String DA_ZSBZ_QKS = "3";	//全控舍
+	public static final String DA_ZSBZ_QY = "4";	//区域
+	
+	public static final String XX_XXTS_QTTZ = "QTTZ"; //群体体重
+	public static final String XX_XXTS_TZBH = "TZBH"; //体重变化
+	public static final String XX_XXTS_TZBHQS = "TZBHQS"; //体重变化趋势
+	public static final String XX_XXTS_CLTZ = "CLTZ"; //出栏体重
+	public static final String XX_XXTS_QTRPJFW = "QTRPJFW"; //群体日平均访问
+	public static final String XX_XXTS_QTRPJFWBH = "QTRPJFWBH"; //群体日平均访问变化
+	public static final String XX_XXTS_SFW = "SFW"; //时访问
+	public static final String XX_XXTS_QCLRB = "QCLRB"; //全程料肉比
+	public static final String XX_XXTS_QCLRBBH = "QCLRBBH"; //全程料肉比变化
+	public static final String XX_XXTS_RSL = "RSL"; //日饲料
+	public static final String XX_XXTS_RSLBH = "RSLBH"; //日饲料变化
+	public static final String XX_XXTS_SWD = "SWD"; //时温度
+	public static final String XX_XXTS_WLGZ = "WLGZ"; //网络故障
+	public static final String XX_XXTS_GZH = "GZH"; //故障号
+	public static final String XX_XXTS_SJH = "SJH"; //事件号
+	public static final String XX_XXTS_AIFM = "AIFM"; //系统升级公告
+	public static final String XX_XXTS_BJQ = "BJQ"; //系统升级公告
+	
+	public static final int XXTS_TSBZ_WTS = 1; //未推送
+	public static final int XXTS_TSBZ_YTS = 2; //已推送
+	public static final int XXTS_TSBZ_TSSB = 3; //推送失败
+	/**
+	 * 消息分类
+	 */
+	public static final String XXTS_XXFL_SBXX = "1"; //设备消息
+	public static final String XXTS_XXFL_SCXX = "2"; //生产消息
+	public static final String XXTS_XXFL_TGXX = "3"; //通告消息
+	/** 微信消息模板类型 start **/
+	public static final String WX_XXLX_GZTBTZ = "LKfRBdU46ZeaV88M5cToodIovInqCCuKoGeFzNLfo4g"; // 故障通报通知
+	public static final String WX_XXLX_GJTZ = "LBevBuMSE6SQJ3NgxokePSZtdy-S81DqRNE-GscoTVo"; // 告警通知
+	public static final String WX_XXLX_FWZTTX = "5Q3YqzkPcLjvryMAJMX-p9CtiTN1ouj6auidIad1MEU"; // 服务状态提醒
+	/** 微信消息模板类型 end **/
+	
+	/** 微信绑定标识 **/
+	public static final int WX_WBD = 0;		// 未绑定
+	public static final int WX_SQBD = 1;	// 申请绑定
+	public static final int WX_JJBD = 2;	// 拒绝绑定
+	public static final int WX_YBD = 3;		// 已绑定
+	
+	/**
+	 * 温度分布颜色(由冷到暖排列)
+	 */
+	public static final String[] WD_CLOLRS = {
+		"004AFF", "0080FF", "00C0FF", "00FFFF", "00FFC0",
+		"00FF80", "00FF4A", "00FF00", "4AFF00", "80FF00",
+		"C0FF00", "FFFF00", "FFC000", "FF8000", "FF4A00"
+	};
+	// WD_MAX - WD_MIN = 4.2
+	public static final double WD_STEP = 0.3;	// 温度间隔
+	public static final double WD_MIN = 37.0;	// 定义猪的最低体温
+	public static final double WD_MAX = 41.2;	// 定义猪的最高体温
+	
+	
+	/** 统计图耳标标识 **/
+	public static final String YWEB_W = "0";	// 无耳标
+	public static final String YWEB_Y = "1"; 	// 有耳标
+	public static final String YWEB_JRMS = "2"; // 兼容模式
+	
+	public static final int XFZT_XF = 1;		// 下发
+	public static final int XFZT_BXF = 0;		// 不下发
+	
+	public static final int DWQX_ZL = 1;		// 在栏
+	public static final int DWQX_MC = 2;		// 卖出
+	public static final int DWQX_CLZ = 6;		// 出栏中
+	
+	public static final int MIN_FWS = 0;  //最小访问数
+	
+	/** 个推 **/
+	public static final String GT_ALIAS = "HUIMV";
+	public static final String RESULT_OK = "ok";
+	public static final int[] tsfs = {0, 1, 2}; //推送方式 0-单用户 1-别名 2-标签
+	public static final String SUCCESSED_ONLINE = "successed_online";
+	public static final String SUCCESSED_OFFLINE = "successed_offline";
+	
+	public static final String APP_LOGIN = "1";
+	public static final String PHONE_LOGIN = "2";
+	public static final String HKCLIENT_LOGIN = "3";
+	public static final String WX_LOGIN = "4";
+	public static final String HAIFMP_LOGIN = "5";
+	
+	/** 环控上传设备来源 **/
+	public static final int SBLY_WEB = 1;
+	public static final int SBLY_JQ = 2;
+	public static final int SBLY_YA = 3;//来自来源
+	/** 配置是否开启 **/
+	public static final int SFKQ_YES = 2;		//开启
+	public static final int SFKQ_NO = 1;		//不开启
+	
+	/** 猪舍标志 **/
+	public static final String HKBZ_ZNHK = "1";	//智能环控
+	public static final String HKBZ_PTHK = "2";	//普通环控
+	public static final String LCBZ_JLLC = "1";	//计量料槽
+	public static final String LCBZ_PTLC = "2";	//普通料槽
+	
+	/** 网络标识 **/
+	public static final String WLZT_ZC = "1";	//网络正常
+	public static final String WLZT_YC = "0";	//网络异常
+	
+	public static final String LSJL_DLFS_EJCS = "ejcs";	//E家菜蔬
+	
+	
+	public static final int DLLX_KDMC = 1;	//登录类型-口袋牧场
+	public static final int DLLX_HTHK = 3;	//登录类型-华腾环控
+	
+	public static final String DQMS_SYYQ = "1";	//适应一期
+	public static final String DQMS_SYEQ = "2";	//适应二期
+	public static final String DQMS_ZCQ = "3";	//注册去
+	public static final String DQMS_TXMS = "4";	//分栏模式
+	public static final String DQMS_CLMS = "5";	//出栏模式
+	
+	public static final String XZRY_TYPE_YDL = "1";	//运动量
+	public static final String XZRY_TYPE_CSL = "2";	//采食量
+	public static final String XZRY_TYPE_TZ = "3";	//体重
+	public static final String XZRY_TYPE_TW = "4";	//体温
+	
+	/***** socket数据上传 start *****/
+	public static final String SOCKET_SJSC_START = "hm";	//socket数据上传命令头
+	public static final String SOCKET_SJSC_END = "end";		//socket数据上传命令尾
+	public static final String SOCKET_SJSC_CMD_1 = "1";		//时间同步
+	public static final String SOCKET_SJSC_CMD_2 = "2";		//料槽数据上传
+	public static final String SOCKET_SJSC_CMD_3 = "3";		//短信发送
+	public static final String SOCKET_SJSC_CMD_4 = "4";		//声光报警短信发送
+	public static final String SOCKET_SJSC_CMD_5 = "5";		//报警器短信发送
+	public static final String SOCKET_SJSC_CMD_6 = "6";		//温度上传
+	
+	public static final String SOCKET_SJSC_CMD_7 = "7";		//温度上传2
+	public static final String SOCKET_SJSC_CMD_8 = "8";		//湿度上传
+	public static final String SOCKET_SJSC_CMD_9 = "9";		//氨气上传
+	public static final String SOCKET_SJSC_CMD_10 = "10";	//风机配置同步
+	public static final String SOCKET_SJSC_CMD_11 = "11";	//蓝牙修改风机配置同步
+	public static final String SOCKET_SJSC_CMD_12 = "12";	//平台修改风机配置同步
+	public static final String SOCKET_SJSC_CMD_14 = "14";	//报警使能
+	public static final String SOCKET_SJSC_CMD_15 = "15";	//短信发送2
+	public static final String SOCKET_SJSC_CMD_16 = "16";	//声光报警短信发送2
+	public static final String SOCKET_SJSC_CMD_17 = "17";	//报警器打电话2
+	public static final String SOCKET_SJSC_CMD_18 = "18";	//高温,低温报警参数
+	public static final String SOCKET_SJSC_CMD_19 = "19";	//平台消息推送
+	public static final String SOCKET_SJSC_CMD_20 = "20";	//电压上传
+	public static final String SOCKET_SJSC_CMD_21 = "21";	//地暖上传
+	public static final String SOCKET_SJSC_CMD_22 = "22";	//远程JQID获取
+	public static final String SOCKET_SJSC_CMD_30 = "30";	//加热器下发
+	public static final String SOCKET_SJSC_CMD_23 = "23";	//云端接入氨气上传
+	public static final String SOCKET_SJSC_CMD_24 = "24";	//PH上传
+	public static final String SOCKET_SJSC_CMD_25 = "25";	//水压上传
+	public static final String SOCKET_SJSC_CMD_26 = "26";	//氧气上传
+	public static final String SOCKET_SJSC_CMD_27 = "27";	//二氧化碳上传
+	public static final String SOCKET_SJSC_CMD_28 = "28";	//硫化氢上传
+	
+	public static final String SOCKET_SJSC_CMD_40 = "40";	//采食计量上传记录
+	public static final String SOCKET_SJSC_CMD_41 = "41";	//同步校准砝码重量及允许校准误差
+	public static final String SOCKET_SJSC_CMD_42 = "42";	//获取运行参数
+	public static final String SOCKET_SJSC_CMD_44 = "44";	//上传设备状态
+	public static final String SOCKET_SJSC_CMD_45 = "45";	//下发下料重量
+	//2017-9-19
+	public static final String SOCKET_SJSC_CMD_46 = "46";	//室外温度
+	public static final String SOCKET_SJSC_CMD_47 = "47";	//室外湿度
+	
+	public static final String SOCKET_SJSC_CMD_60 = "60";	//上料
+	public static final String SOCKET_SJSC_CMD_61 = "61";	//耗水
+	public static final String SOCKET_SJSC_CMD_62 = "62";	//耗电
+	
+	public static final String SOCKET_SJSC_CMD_70 = "70";	//液位数据上传
+	public static final String SOCKET_SJSC_CMD_71 = "71";	//同步液位阈值
+	public static final String SOCKET_SJSC_CMD_72 = "72";	//上传驱动板状态
+	
+	public static final String SOCKET_SJSC_CMD_64 = "64";	//移动版版本信息上传 (不做业务处理)
+	
+	public static final String SOCKET_SJSC_CMD_80 = "80";	//喷雾除臭
+	public static final String SOCKET_SJSC_CMD_81 = "81";	//同步关闭延时参数
+	public static final String SOCKET_SJSC_CMD_82 = "82";	//料控
+	public static final String SOCKET_SJSC_CMD_83 = "83";	//上报打料失败事件
+
+	public static final String SOCKET_SJSC_CMD_90 = "90";	//同步料线定时配置
+	public static final String SOCKET_SJSC_CMD_91 = "91";	//料线远程控制
+	public static final String SOCKET_SJSC_CMD_92 = "92";	//同步灯光控制定时配置
+	public static final String SOCKET_SJSC_CMD_93 = "93";	//灯光远程控制
+	
+	public static final String SOCKET_SJSC_CMD_94 = "94";	//获取设备模块信息
+	
+	public static final String SOCKET_SJSC_CMD_200 = "200";	//上报电推杆设备状态
+	public static final String SOCKET_SJSC_CMD_201 = "201";	//同步电推杆配置
+	
+	public static final String SOCKET_SJSC_GZBZ_0 = "0";	//正常
+	public static final String SOCKET_SJSC_GZBZ_1 = "1";	//校验失败
+	public static final String SOCKET_SJSC_GZBZ_2 = "2";	//平台数据异常
+	
+	public static final String SOCKET_SJSC_DBJG_1 = "1";	//不需要同步
+	public static final String SOCKET_SJSC_DBJG_2 = "2";	//设备内的配置为最新
+	public static final String SOCKET_SJSC_DBJG_3 = "3";	//平台的配置为最新的
+	
+	public static final String SOCKET_SJSC_TLGTB_0 = "0";	//不需要同步
+	public static final String SOCKET_SJSC_TLGTB_1 = "1";	//需要同步
+	
+	
+	public static final String[] SOCKET_SJSC_GZLX = {"初始化", "断电报警", "风机报警", "高温报警", "温度传感器故障", "湿度传感器故障", 
+											"氨气传感器故障", "PH传感器故障", "水压传感器故障", "低温报警", "温差过大报警", "高湿报警",
+											"高氨报警", "断网报警", "称重故障", "入口门故障", "旋转门故障", "分离门故障",
+											"动物长时间不离开", "光电传感器故障", "配置异常", "上传故障", "", "电流检测传感器故障",
+											"上挡板故障", "下挡板故障", "称重故障", "自动校准故障", "喷雾除臭通信故障", "",};
+	public static final String SOCKET_SJSC_DZLX_1 = "1";	//动作报警
+	public static final String SOCKET_SJSC_DZLX_2 = "2";	//动作恢复
+	
+	public static final String SOCKET_SJSC_URLENCODE_1 = "<";		//<%3C
+	public static final String SOCKET_SJSC_URLENCODE_2 = ">";		//%3e
+	public static final String SOCKET_SJSC_URLENCODE_3 = "";		//空格+
+	
+	public static final String SJLR_MYLX_PTMY = "0";	//普通免疫
+	public static final String SJLR_MYLX_ZZMY = "1";	//种猪免疫
+	public static final String SJLR_MYLX_FZMY = "2";	//肥猪免疫
+	
+	public static final String[] SJRL_XS_KEMC = {"张三","李四","王五"};
+	/***** socket数据上传 end *****/
+	public static final String HAIFMP_SEARCH_FLAG_RFID = "0";//页面收索条件:耳标
+	public static final String HAIFMP_SEARCH_FLAG_DATE = "1";//页面收索条件:日期
+
+	public static final String CLIENT_ID = "64a3472a-5fc1-4cad-a29a-ec7f797b4d0e";
+	public static final String CLIENT_SECRET = "f4c19c58-4a2f-4e5d-9834-2d7cca6288ee";
+	
+	public static final String WHH_STBZ_WTJ = "0";  //无害化_死淘标志_未处理提交
+	public static final String WHH_STBZ_YTJ = "1";	//无害化_死淘标志_已处理提交
+	
+	public static final int WHH_SHBZ_WSH = 0;//无害化_审核标志_未审核
+	public static final int WHH_SHBZ_TG = 1;//无害化_审核标志_审核通过
+	public static final int WHH_SHBZ_WTG = 2;//无害化_审核标志_审核未通过
+	
+	public static final int WHH_ERROR_CODE_1 = 1;//成功
+	public static final int WHH_ERROR_CODE_2 = 2;//数据接收错误 请联系开发人员-1
+	public static final int WHH_ERROR_CODE_3 = 3;//数据接收错误 请联系开发人员-0
+	public static final int WHH_ERROR_CODE_4 = 4;//没有牧场ID 请联系管理员;
+	
+	//服务器地址
+	/*public static final String URL_LOCALHOST = "http://192.168.1.137:8084/ifm/";*/
+	public static final String URL_LOCALHOST = "http://localhost:8080/ifm/";
+	//public static final String URL_LOCALHOST = "http://192.168.1.116:8082/ifm/";
+	//public static final String URL_LOCALHOST = "http://122.112.219.87/ifm/";
+	
+	
+	
+	//文件上传默认临时目录
+	public static final String URL_UPLOAD_PIC = "whhImg/";
+	public static final String URL_UPLOAD_VIDEO = "whhVideo/";
+	
+	//文件上传默认临时目录
+	public static final String URL_UPLOAD_TEMP = "upload/temp/";
+	public static final int Whh_CLBZ_YCL = 1;//无害化已经处理
+	public static final int Whh_CLBZ_WCL = 2;//无害化没有处理
+	public static final int WHH_SELECT_ONCE = 8;
+	
+	public static final String WHH_FROM_SQ = "0"; //无害化申请
+	public static final String WHH_FROM_SH = "1"; //无害化审核
+	public static final String WHH_FROM_CL = "2"; //无害化处理
+	
+	public static final String WHH_TYPE_DSH = "0";//无害化小标签状态 _待审核
+	public static final String WHH_TYPE_YSH = "1";//无害化小标签状态 _已审核
+	public static final String WHH_TYPE_YCL = "3";//无害化小标签状态 _已处理
+	public static final String WHH_TYPE_YBH = "2";//无害化小标签状态 _已驳回
+	
+	public static final int WHH_LIMIT = 15;//一次查询几条
+	public static final String WHH_CLFS = "无害化_处理方式";
+	
+	
+	/** 数据获取上传链接 start **/
+	public static final int POST_HKSJ_LIMIT = 1000;						//每次获取条目
+	public static final String POST_RESULTCODE_SUCCESS = "0";			//返回成功
+	public static final String POST_RESULTCODE_ERRPARAM = "1";			//参数缺失
+	public static final String POST_RESULTCODE_ERRUSER = "2";			//账号错误
+	public static final String POST_RESULTCODE_ERRCONTENT = "3";		//信息错误
+	public static final String POST_RESULTCODE_NODATA = "4";			//无数据
+	
+	public static final String POST_HKSJ_ZSLB = "zslb.htm";				//获取猪舍列表
+	public static final String POST_HKSJ_HKSJ = "hksj.htm";				//猪舍传感器数据获取
+	public static final String POST_HKSJ_BJXX = "bjxx.htm";				//报警信息查询
+	public static final String POST_HKSJ_BJSNGET = "bjsnget.htm";		//获取报警使能信息
+	public static final String POST_HKSJ_BJSNSET = "bjsnset.htm";		//报警使能设置
+	public static final String POST_HKSJ_BJCSGET = "bjcsget.htm";		//获取报警参数
+	public static final String POST_HKSJ_BJCSSET = "bjcsset.htm";		//报警参数设置
+	public static final String POST_HKSJ_BJHMGET = "bjhmget.htm";		//获取报警联系号码参数
+	public static final String POST_HKSJ_BJHMSET = "bjhmset.htm";		//报警联系人号码参数设置
+	public static final String POST_HKSJ_SBYXCSGET = "sbyxcsget.htm";	//获取风机运行参数
+	public static final String POST_HKSJ_SBYXCSSET = "sbyxcsset.htm";	//风机运行参数设置
+	public static final String POST_HKSJ_SBYXZTGET = "sbyxztget.htm";	//获取设备运行状态
+	/** 数据获取上传链接 end **/
+	
+	/** 污水处理功能码 start **/
+	public static final int WSCL_GNM_1 = 1;						//心跳请求帧
+	public static final int WSCL_GNM_2 = 2;						//实时数据帧
+	public static final int WSCL_GNM_3 = 3;						//实时状态帧
+	public static final int WSCL_GNM_4 = 4;						//远程控制回应帧
+	public static final int WSCL_GNM_5 = 5;						//AGPS 定位帧
+	public static final int WSCL_GNM_81 = 81;					//心跳回应帧
+	public static final int WSCL_GNM_82 = 82;					//同步时间帧
+	public static final int WSCL_GNM_83 = 83;					//远程控制请求帧
+	public static final int WSCL_GNM_84 = 84;					//触发级数据启停控制帧
+	public static final int WSCL_GNM_85 = 85;					//同步点表帧
+	/** 污水处理功能码 end **/
+	
+	public static final String WSCL_GZLX = "污水故障类型";
+	
+	//远程控制临时目录
+	public static final String URL_UPLOAD_YCKZ = "upload/yckzText/";
+	
+	public static final String HHF = "\r\n";
+	
+	//污水处理时时状态
+	public static final String WSCL_SSZT_GB_LX_TZ = "1";			//污水处理——关闭、离线、停止
+	public static final String WSCL_SSZT_ZX_YX_ZC_DK = "0" ;			//污水处理——在线、运行、正常、打开
+	public static final String WSCL_SSZT_GZ = "2";			//污水处理——故障
+	public static final String WSCL_SSZT_GD = "3";			//污水处理——过低
+	public static final String WSCL_SSZT_GG = "4";			//污水处理——过高
+	public static final String WSCL_SSZT_SFX = "5";			//污水处理——上反洗
+	public static final String WSCL_SSZT_XFX = "6";			//污水处理——下反洗
+	public static final String WSCL_SSZT_ZX = "7";			//污水处理——正洗
+	public static final String WSCL_SSZT_FX = "8";			//污水处理——反洗
+	public static final String WSCL_SSZT_DJ = "9";			//污水处理——待机
+	public static final String WSCL_SSZT_KJCX = "10";			//污水处理——开机冲洗
+	public static final String WSCL_SSZT_GJCX = "11";			//污水处理——关机冲洗
+	public static final String WSCL_SSZT_YC = "12";			//污水处理——异常
+	public static final String WSCL_SSZT_BQD = "13";			//污水处理——不确定
+}

File diff suppressed because it is too large
+ 1357 - 18
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/service/impl/ClientDataPacketServiceImpl.java


+ 1 - 0
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/tcp/Server.java

@@ -30,6 +30,7 @@ public class Server implements CommandLineRunner {
             System.out.println("****** I am Server, now begin to wait the client ******");
             int count = 0;
 
+
             // 处理socket请求
             Socket socket;
             while (true) {

+ 707 - 0
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/utils/DateUtil.java

@@ -0,0 +1,707 @@
+package com.huimv.datacollection.utils;
+
+
+import com.huimv.datacollection.constant.XtAppConstant;
+
+import java.math.BigDecimal;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * 日期工具类
+ * 
+ * @author hongjun.hu
+ * @version 1.0
+ * @history
+ */
+public class DateUtil {
+	/**
+	 * 定义一天的毫妙数
+	 */
+	public static final long MILLSECOND_OF_DAY = 86400000;
+
+	/**
+	 * 格式化日期
+	 * 
+	 * @param strDate
+	 *            符合格式的字符串
+	 * @return 格式后的日期
+	 */
+	public static Date parser(String strDate) {
+		SimpleDateFormat sdf = new SimpleDateFormat(XtAppConstant.TIME_FORMAT1);
+		try {
+			return sdf.parse(strDate);
+		} catch (Exception e) {
+			return null;
+		}
+	}
+
+	/**
+	 * 格式化日期
+	 * 
+	 * @param
+	 *
+	 * @return 格式后的日期
+	 */
+	public static Date parser(Date testDate) {
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(testDate);
+		calendar.clear(Calendar.MILLISECOND);
+		calendar.clear(Calendar.SECOND);
+		calendar.clear(Calendar.MINUTE);
+		calendar.clear(Calendar.HOUR_OF_DAY);
+		SimpleDateFormat sdf = new SimpleDateFormat(XtAppConstant.TIME_FORMAT);
+		try {
+			return sdf.parse(sdf.format(calendar.getTime()));
+		} catch (Exception e) {
+			return null;
+		}
+	}
+
+	/**
+	 * 格式化日期
+	 * 
+	 * @param strDate
+	 *            符合格式的字符串
+	 * @return 格式后的日期
+	 */
+	public static Date parserTo(String strDate) {
+		SimpleDateFormat sdf = new SimpleDateFormat(XtAppConstant.TIME_FORMAT);
+		try {
+			return sdf.parse(strDate);
+		} catch (Exception e) {
+			return null;
+		}
+	}
+	
+	/**
+	 * 格式化日期
+	 * 
+	 * @param strDate
+	 *            符合格式的字符串
+	 * @return 格式后的日期
+	 */
+	public static Date parserDateToPatternString(String strDate, String pattern) {
+		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
+		try {
+			return sdf.parse(strDate);
+		} catch (Exception e) {
+			return null;
+		}
+	}
+
+	/**
+	 * date to string ,默认 格式 yyyy-MM-dd
+	 * 
+	 * @param date
+	 * @return
+	 */
+	public static String parserDateToDefaultString(Date date) {
+		SimpleDateFormat sdf = new SimpleDateFormat(XtAppConstant.TIME_FORMAT);
+		try {
+			return sdf.format(date);
+		} catch (Exception e) {
+			return null;
+		}
+	}
+	
+	/**
+	 * date to string ,默认 格式 yyyy-MM-dd HH:mm:ss
+	 * 
+	 * @param date
+	 * @return
+	 */
+	public static String parserDateToDefaultString2(Date date) {
+		SimpleDateFormat sdf = new SimpleDateFormat(XtAppConstant.TIME_FORMAT1);
+		try {
+			return sdf.format(date);
+		} catch (Exception e) {
+			return null;
+		}
+	}
+	/**
+	 * date to string ,自定义格式
+	 * 
+	 * @param date
+	 * @return
+	 */
+	public static String parserDateToPatternString(Date date, String pattern) {
+		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
+		try {
+			return sdf.format(date);
+		} catch (Exception e) {
+			return null;
+		}
+	}
+
+	/**
+	 * 将long类型的时间转换成标准格式(yyyy-MM-dd HH:mm:ss)
+	 * @param longTime
+	 * @return 格式后的日期字符串
+	 */
+	public static String parser(long longTime) {
+		DateFormat format = new SimpleDateFormat(XtAppConstant.TIME_FORMAT1);
+		try {
+			return format.format(new Date(longTime));
+		} catch (Exception e) {
+			return null;
+		}
+	}
+	
+	
+	/**
+	 * 将long类型的时间转换成标准格式(MM-dd HH:mm:ss)
+	 * @param longTime
+	 * @return 格式后的日期字符串
+	 */
+	public static String parser3(long longTime) {
+		DateFormat format = new SimpleDateFormat(XtAppConstant.TIME_FORMAT12);
+		try {
+			return format.format(new Date(longTime));
+		} catch (Exception e) {
+			return null;
+		}
+	}
+	
+	/**
+	 * 将long类型的时间转换成格式 自定义格式
+	 * @param longTime
+	 * @return 格式后的日期字符串
+	 */
+	public static String parserToPatternString(long longTime, String pattern) {
+		DateFormat format = new SimpleDateFormat(pattern);
+		try {
+			return format.format(new Date(longTime));
+		} catch (Exception e) {
+			return null;
+		}
+	}
+
+	/**
+	 * 得到当前月份的周期开始日期
+	 * 
+	 * @param currentDate
+	 *            当前日期
+	 * @return 当前月份的周期开始日期
+	 */
+	public static Date getCurBeginCycleDate(Date currentDate) {
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(currentDate);
+
+		String year = "" + calendar.get(Calendar.YEAR);
+		String month = (calendar.get(Calendar.MONTH) + 1) + "";
+		if (month.length() < 2) {
+			month = "0" + month;
+		}
+		String dateStr = year + "-" + month + "-01 00:00:00";
+		return DateUtil.parser(dateStr);
+	}
+
+	/**
+	 * 取得当前周期的周期结束日期
+	 * 
+	 * @param currentDate
+	 *            当前日期
+	 * @return 当前周期的周期结束日期
+	 */
+	public static Date getCurEndCycleDate(Date currentDate) {
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(currentDate);
+
+		String year = "" + calendar.get(Calendar.YEAR);
+		String month = (calendar.get(Calendar.MONTH) + 2) + "";
+		if (month.length() < 2) {
+			month = "0" + month;
+		}
+		String dateStr = year + "-" + month + "-01 23:59:59";
+		calendar.setTime(DateUtil.parser(dateStr));
+		calendar.add(Calendar.DAY_OF_MONTH, -1);
+		return calendar.getTime();
+	}
+
+	/**
+	 * 得到下nextCycle周期的月份
+	 * 
+	 * @param currentDate
+	 *            当前日期
+	 * @param nextCycle
+	 *            下nextCycle周期
+	 * @return 下nextCycle周期
+	 */
+	public static Date getNextCycleDate(Date currentDate, long nextCycle) {
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(currentDate);
+
+		String year = "" + calendar.get(Calendar.YEAR);
+		nextCycle++;
+		String month = (calendar.get(Calendar.MONTH) + nextCycle) + "";
+		if (month.length() < 2) {
+			month = "0" + month;
+		}
+		String dateStr = year + "-" + month + "-01 00:00:00";
+		return DateUtil.parser(dateStr);
+	}
+
+	/**
+	 * 获取开始和结束日期之间的间隔日期
+	 * 
+	 * @param startDate
+	 *            开始日期
+	 * @param endDate
+	 *            结束日期
+	 * @param roundingMode
+	 *            舍入方式 见 BigDecimal的定义
+	 * @return 相隔的日期数
+	 */
+	public static long getDaysBetweenDate(Date startDate, Date endDate,
+			int roundingMode) {
+		BigDecimal bStart = new BigDecimal(startDate.getTime());
+		BigDecimal bEnd = new BigDecimal(endDate.getTime());
+		BigDecimal bUnit = new BigDecimal(MILLSECOND_OF_DAY);
+		return (bEnd.subtract(bStart)).divide(bUnit, roundingMode).longValue();
+	}
+
+	/**
+	 * 获取开始和结束日期之间的间隔日期
+	 * 
+	 * @param startDate
+	 *            开始日期
+	 * @param endDate
+	 *            结束日期
+	 * @return 相隔的日期数
+	 */
+	public static long getDaysBetweenDateWithoutTime(Date startDate,
+			Date endDate) {
+		Calendar cal1 = Calendar.getInstance();
+		Calendar cal2 = Calendar.getInstance();
+		cal1.setTime(startDate);
+		cal2.setTime(endDate);
+
+		cal1.clear(Calendar.MILLISECOND);
+		cal1.clear(Calendar.SECOND);
+		cal1.clear(Calendar.MINUTE);
+		cal1.clear(Calendar.HOUR_OF_DAY);
+
+		cal2.clear(Calendar.MILLISECOND);
+		cal2.clear(Calendar.SECOND);
+		cal2.clear(Calendar.MINUTE);
+		cal2.clear(Calendar.HOUR_OF_DAY);
+
+		return (cal2.getTime().getTime() - cal1.getTime().getTime()) / MILLSECOND_OF_DAY;
+	}
+
+	/**
+	 * 获得明天的日期
+	 * 
+	 * @param date
+	 * @return
+	 */
+	public static Date getTomorrowDate(Date date) {
+		Calendar cal = Calendar.getInstance();
+		cal.setTime(date);
+		cal.add(Calendar.DAY_OF_MONTH, 1);
+		cal.set(Calendar.HOUR_OF_DAY, 0);
+		cal.set(Calendar.MINUTE, 0);
+		cal.set(Calendar.SECOND, 0);
+		return cal.getTime();
+	}
+
+	/**
+	 * 获取两个日期之间相差的月份数
+	 * 
+	 * @param startDate
+	 *            开始日期
+	 * @param endDate
+	 *            结束日期
+	 * @param flag
+	 *            false 为全月舍
+	 * @return 返回的月份数
+	 */
+	public static long getMonthsBetweenDate(Date startDate, Date endDate,
+			boolean flag) {
+		Calendar cal1 = Calendar.getInstance();
+
+		Calendar cal2 = Calendar.getInstance();
+		cal1.setTime(startDate);
+		cal2.setTime(endDate);
+		if (endDate.before(startDate)) {
+			cal1.setTime(endDate);
+			cal2.setTime(startDate);
+		}
+
+		cal1.clear(Calendar.MILLISECOND);
+		cal1.clear(Calendar.SECOND);
+		cal1.clear(Calendar.MINUTE);
+		cal1.clear(Calendar.HOUR_OF_DAY);
+
+		cal2.clear(Calendar.MILLISECOND);
+		cal2.clear(Calendar.SECOND);
+		cal2.clear(Calendar.MINUTE);
+		cal2.clear(Calendar.HOUR_OF_DAY);
+
+		return getMonthsBetweenDate(cal1, cal2, flag);
+	}
+
+	/**
+	 * 获取两个日期之间相差的月份数
+	 * 
+	 * @param cal1
+	 *            开始日期
+	 * @param cal2
+	 *            结束日期
+	 * @param flag
+	 *            false 为全月舍
+	 * @return 返回的月份数
+	 */
+	public static long getMonthsBetweenDate(Calendar cal1, Calendar cal2,
+			boolean flag) {
+		long month = 0L;
+		while (cal1.before(cal2)) {
+			cal1.add(Calendar.MONTH, 1);
+			month++;
+			if (flag) {
+				if ((cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH))
+						&& (cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR))
+						&& (cal1.get(Calendar.DAY_OF_MONTH) > cal2
+								.get(Calendar.DAY_OF_MONTH))) {
+					month--;
+					break;
+				}
+				if ((cal1.get(Calendar.MONTH) > cal2.get(Calendar.MONTH))
+						&& (cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR))) {
+					month--;
+					break;
+				}
+			}
+		}
+		return month;
+	}
+
+	/**
+	 * 获得日期的年或月或日
+	 * 
+	 * @param date
+	 * @param field
+	 * @return
+	 */
+	public static long getDateField(Date date, int field) {
+		Calendar cal = Calendar.getInstance();
+		cal.setTime(date);
+		if (field == Calendar.MONTH) {
+			return cal.get(field) + 1;
+		} else {
+			return cal.get(field);
+		}
+	}
+
+	/**
+	 * 计算从出生时间到指定时间的年龄 年龄=当前年份-出生年份-if((当前日期>=出生日期),0,1))
+	 * 
+	 * @param birthday
+	 *            出生时间
+	 * @param endDate
+	 *            计算的终止时间
+	 * @return int
+	 */
+	public static int getAge(Date birthday, Date endDate) {
+		boolean endDateDYBirthdayMonthAndDay = true;
+		if (getDateField(endDate, Calendar.MONTH) > getDateField(birthday,
+				Calendar.MONTH)) {
+			endDateDYBirthdayMonthAndDay = true;
+		} else if (getDateField(endDate, Calendar.MONTH) == getDateField(
+				birthday, Calendar.MONTH)) {
+			if (getDateField(endDate, Calendar.DAY_OF_MONTH) >= getDateField(
+					birthday, Calendar.DAY_OF_MONTH)) {
+				endDateDYBirthdayMonthAndDay = true;
+			} else {
+				endDateDYBirthdayMonthAndDay = false;
+			}
+		} else if (getDateField(endDate, Calendar.MONTH) < getDateField(
+				birthday, Calendar.MONTH)) {
+			endDateDYBirthdayMonthAndDay = false;
+		}
+
+		int age = new Long(
+				(getDateField(endDate, Calendar.YEAR) - getDateField(birthday,
+						Calendar.YEAR))
+						- (endDateDYBirthdayMonthAndDay == true ? 0 : 1))
+				.intValue();
+
+		return age;
+	}
+
+	final static long[] lunarInfo = new long[] { 0x04bd8, 0x04ae0, 0x0a570,
+			0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2,
+			0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0,
+			0x0ada2, 0x095b0, 0x14977, 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50,
+			0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, 0x06566,
+			0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0,
+			0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4,
+			0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, 0x06ca0, 0x0b550,
+			0x15355, 0x04da0, 0x0a5d0, 0x14573, 0x052d0, 0x0a9a8, 0x0e950,
+			0x06aa0, 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260,
+			0x0f263, 0x0d950, 0x05b57, 0x056a0, 0x096d0, 0x04dd5, 0x04ad0,
+			0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0, 0x195a6,
+			0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40,
+			0x0af46, 0x0ab60, 0x09570, 0x04af5, 0x04970, 0x064b0, 0x074a3,
+			0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0, 0x0c960,
+			0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0,
+			0x092d0, 0x0cab5, 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9,
+			0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, 0x07954, 0x06aa0,
+			0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65,
+			0x0d530, 0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0,
+			0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, 0x0b5a0, 0x056d0, 0x055b2,
+			0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0 };
+
+	final public static int lYearDays(int y) {
+		// ====== 传回农历 y年的总天数
+		int i, sum = 348;
+		for (i = 0x8000; i > 0x8; i >>= 1) {
+			if ((lunarInfo[y - 1900] & i) != 0)
+				sum += 1;
+		}
+		return (sum + leapDays(y));
+	}
+
+	final public static int leapDays(int y) {
+		// ====== 传回农历 y年闰月的天数
+		if (leapMonth(y) != 0) {
+			if ((lunarInfo[y - 1900] & 0x10000) != 0) {
+				return 30;
+			} else {
+				return 29;
+			}
+		} else {
+			return 0;
+		}
+	}
+
+	/**
+	 * 传回农历 y年闰哪个月 1-12 , 没闰传回 0
+	 * 
+	 * @param y
+	 * @return
+	 */
+	final public static int leapMonth(int y) {
+		return (int) (lunarInfo[y - 1900] & 0xf);
+	}
+
+	/**
+	 * 传回农历 y年m月的总天数
+	 * 
+	 * @param y
+	 * @param m
+	 * @return
+	 */
+	final public static int monthDays(int y, int m) {
+		if ((lunarInfo[y - 1900] & (0x10000 >> m)) == 0)
+			return 29;
+		else
+			return 30;
+	}
+
+	/**
+	 * 
+	 * @param y
+	 * @param m
+	 * @param d
+	 * @return
+	 */
+	@SuppressWarnings("deprecation")
+	final public static long[] calElement(int y, int m, int d) {
+		long[] nongDate = new long[7];
+		int i = 0, temp = 0, leap = 0;
+		Date baseDate = new Date(0, 0, 31);
+		Date objDate = new Date(y - 1900, m - 1, d);
+		long offset = (objDate.getTime() - baseDate.getTime()) / 86400000L;
+		nongDate[5] = offset + 40;
+		nongDate[4] = 14;
+		for (i = 1900; i < 2050 && offset > 0; i++) {
+			temp = lYearDays(i);
+			offset -= temp;
+			nongDate[4] += 12;
+		}
+		if (offset < 0) {
+			offset += temp;
+			i--;
+			nongDate[4] -= 12;
+		}
+		nongDate[0] = i;
+		nongDate[3] = i - 1864;
+		leap = leapMonth(i); // 闰哪个月
+		nongDate[6] = 0;
+		for (i = 1; i < 13 && offset > 0; i++) {
+			// 闰月
+			if (leap > 0 && i == (leap + 1) && nongDate[6] == 0) {
+				--i;
+				nongDate[6] = 1;
+				temp = leapDays((int) nongDate[0]);
+			} else {
+				temp = monthDays((int) nongDate[0], i);
+			}
+			// 解除闰月
+			if (nongDate[6] == 1 && i == (leap + 1))
+				nongDate[6] = 0;
+			offset -= temp;
+			if (nongDate[6] == 0)
+				nongDate[4]++;
+		}
+		if (offset == 0 && leap > 0 && i == leap + 1) {
+			if (nongDate[6] == 1) {
+				nongDate[6] = 0;
+			} else {
+				nongDate[6] = 1;
+				--i;
+				--nongDate[4];
+			}
+		}
+		if (offset < 0) {
+			offset += temp;
+			--i;
+			--nongDate[4];
+		}
+		nongDate[1] = i;
+		nongDate[2] = offset + 1;
+		return nongDate;
+	}
+
+	/**
+	 * 根据指定日期获取农历
+	 * 
+	 * @param date
+	 *            日期
+	 * @return 农历
+	 */
+	public static String getNongLi(Date date) {
+		Calendar cld = Calendar.getInstance();
+		cld.setTime(date);
+		int year = cld.get(Calendar.YEAR);
+		int month = cld.get(Calendar.MONTH) + 1;
+		int day = cld.get(Calendar.DAY_OF_MONTH);
+		long[] l = calElement(year, month, day);
+		String n = "";
+		switch ((int) (l[1])) {
+		case 1:
+			n = "一";
+			break;
+		case 2:
+			n = "二";
+			break;
+		case 3:
+			n = "三";
+			break;
+		case 4:
+			n = "四";
+			break;
+		case 5:
+			n = "五";
+			break;
+		case 6:
+			n = "六";
+			break;
+		case 7:
+			n = "七";
+			break;
+		case 8:
+			n = "八";
+			break;
+		case 9:
+			n = "九";
+			break;
+		case 10:
+			n = "十";
+			break;
+		case 11:
+			n = "十一";
+			break;
+		case 12:
+			n = "十二";
+			break;
+		}
+		String m = "";
+		if (l[2] == 10)
+			return "初十";
+		int two = (int) ((l[2]) / 10);
+		if (two == 0)
+			m = "初";
+		if (two == 1)
+			m = "十";
+		if (two == 2)
+			m = "廿";
+		int one = (int) (l[2] % 10);
+		switch (one) {
+		case 1:
+			m += "一";
+			break;
+		case 2:
+			m += "二";
+			break;
+		case 3:
+			m += "三";
+			break;
+		case 4:
+			m += "四";
+			break;
+		case 5:
+			m += "五";
+			break;
+		case 6:
+			m += "六";
+			break;
+		case 7:
+			m += "七";
+			break;
+		case 8:
+			m += "八";
+			break;
+		case 9:
+			m += "九";
+			break;
+		}
+		return n + "月" + m;
+	}
+
+	/**
+	 * 根据指定日期获取星期
+	 * 
+	 * @param date
+	 *            日期
+	 * @return 农历
+	 */
+	public static String getWeek(Date date) {
+		String week = "";
+		Calendar cld = Calendar.getInstance();
+		cld.setTime(date);
+		switch (cld.get(Calendar.DAY_OF_WEEK)) {
+		case 1:
+			week += "日";
+			break;
+		case 2:
+			week += "一";
+			break;
+		case 3:
+			week += "二";
+			break;
+		case 4:
+			week += "三";
+			break;
+		case 5:
+			week += "四";
+			break;
+		case 6:
+			week += "五";
+			break;
+		case 7:
+			week += "六";
+			break;
+		}
+		return week;
+	}
+
+	public static void main(String[] args) {
+		System.out.println("农历" + DateUtil.getCurBeginCycleDate(new Date())
+				+ DateUtil.getCurEndCycleDate(new Date()));
+	}
+}

File diff suppressed because it is too large
+ 3174 - 0
huimv-smart-datacollection/src/main/java/com/huimv/datacollection/utils/StringUtils.java


+ 1 - 1
huimv-smart-management/src/main/resources/application-dev.yml

@@ -21,7 +21,7 @@ spring:
   cloud:
     nacos:
       discovery:
-        server-addr: 192.168.1.57:8848
+        server-addr: 127.0.0.1:8848
 
   # 数据源
   datasource: