123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439 |
- using log4net;
- using Newtonsoft.Json;
- using Quartz;
- using RDIFramework.Utilities;
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Data;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using TimedUpload.WebReference;
- namespace TimedUpload.QuartzJobs
- {
- [DisallowConcurrentExecution]
- public class DataUploadJob : IJob
- {
- private readonly ILog log = LogManager.GetLogger(typeof(IJob));
-
- public static string str_ApiUrl = Constants.str_Url;
-
- public static string str_Company = Constants.str_Company;
- public void Execute(IJobExecutionContext context)
- {
-
- DateTime date = DateTime.Now;
- log.Info("数据上传任务开始执行.................\r\n");
- try
- {
-
-
-
-
-
- UpDataValveControlState();
-
- }
- catch (Exception ex)
- {
- log.Error("任务上传异常:" + ex.Message);
- }
- log.InfoFormat("数据上传任务执行结束.................\r\n");
- }
-
- public void UpdateMeterDread()
- {
-
- Int32 i_Count = 0;
- i_Count = Convert.ToInt32(ConfigurationManager.AppSettings["Count"]);
-
- try
- {
- List<meterRead> meterList = new List<meterRead>();
- meterRead[] meters = new meterRead[] { };
- WebReference.MeterReadingImplService wm = new WebReference.MeterReadingImplService();
-
-
- String sql = "select t.表地址, t.ReviseDT, t.表读数 from Bsc_MeterInfo t inner join ( select 表地址, max(ReviseDT) as MaxDate from Bsc_MeterInfo group by 表地址) tm on t.表地址 = tm.表地址 and t.ReviseDT = tm.MaxDate ";
- DataTable dt = dbHelper.Fill(sql);
- StringBuilder sb_Info = new StringBuilder();
- if (dt.Rows.Count > 0)
- {
- for (int i = 0; i < dt.Rows.Count; i++)
- {
-
- meterRead meter = new meterRead();
- meter.meterAddress = dt.Rows[i]["表地址"].ToString();
- meter.readDate = dt.Rows[i]["ReviseDT"].ToString();
- meter.readNum = Convert.ToDouble(dt.Rows[i]["表读数"].ToString());
- meter.metersort_id = "2";
- meter.meterState = "3";
- meterList.Add(meter);
- sb_Info.Append(meter.meterAddress + "|" + meter.readDate + "|" + meter.readNum + "\r\n");
- if (meterList.Count == i_Count || (meterList.Count != i_Count && i == dt.Rows.Count - 1))
-
- {
- meters = meterList.ToArray();
- String ss = wm.UPMeterRead(meters, "2");
- if (ss == "true")
- {
-
- log.Info(DateTime.Now.ToString() + sb_Info.ToString()+ "_上传成功");
-
- sb_Info = new StringBuilder();
- }
- else if (ss == "")
- {
- log.Info("接口返回空" + sb_Info.ToString() +"上传成功");
- sb_Info = new StringBuilder();
- }
- else
- {
-
- log.Info(DateTime.Now.ToString() +sb_Info.ToString() + "_上传失败" + ss);
- sb_Info = new StringBuilder();
- }
- meterList = new List<meterRead>();
- }
-
- }
-
- }
- }
- catch (Exception ex)
- {
- log.Info("接口返回:" + ex.ToString() + "_" + "上传失败");
- }
- }
- #region 2019-10-10 大表对接
- public void UpdateMeterDreadOfBigMeter()
- {
- try
- {
- List<meterRead> meterList = new List<meterRead>();
- meterRead[] meters = new meterRead[] { };
- WebReference.MeterReadingImplService wm = new WebReference.MeterReadingImplService();
-
-
- StringBuilder sb_Sql = new StringBuilder();
- sb_Sql.Append(" select C.值 as 表地址,A.正累计流量 as 表读数,A.采集时间 as ReviseDT,D.值 as SIM,A.电池电压, ");
- sb_Sql.Append("ISNULL(A.GPRS信号质量,0) as 信号,ISNULL(A.压力,0) as 供水压力,A.瞬时流量 from 最后状态 A ");
- sb_Sql.Append("inner join (");
- sb_Sql.Append("select MAX(A.id) as max_Id ,A.设备ID from 最后状态 A left join ");
- sb_Sql.Append("设备信息 B on B.ID = A.设备ID where B.管理ID = 125 Group by A.设备ID ");
- sb_Sql.Append(") b on A.id = b.max_Id and A.设备ID = B.设备ID ");
- sb_Sql.Append("left join 设备辅助信息 C on C.设备ID = B.设备ID and C.名称 = '表身号' ");
- sb_Sql.Append("left join 设备辅助信息 D on D.设备ID = B.设备ID and D.名称 = '手机卡号' ");
- DataTable dt = dbHelperNB.Fill(sb_Sql.ToString());
- StringBuilder sb_Info = new StringBuilder();
- if (dt.Rows.Count > 0)
- {
- for (int i = 0; i < dt.Rows.Count; i++)
- {
-
- meterRead meter = new meterRead();
- meter.meterAddress = dt.Rows[i]["表地址"].ToString();
- meter.readDate = dt.Rows[i]["ReviseDT"].ToString();
- meter.readNum = Convert.ToDouble(dt.Rows[i]["表读数"].ToString());
- sb_Info.Append(meter.meterAddress + "|" + meter.readDate + "|" + meter.readNum + "\r\n");
- meter.metersort_id = "8";
- meter.meterState = "3";
- meterList.Add(meter);
-
- if (meterList.Count == 100 || (meterList.Count != 100 && i == dt.Rows.Count - 1))
- {
- meters = meterList.ToArray();
- String ss = wm.UPMeterRead(meters, "8");
- if (ss == "true")
- {
-
- log.Info(DateTime.Now.ToString() + sb_Info + "_上传成功(大表)");
- sb_Info = new StringBuilder();
- }
- else
- {
- log.Info(DateTime.Now.ToString() + sb_Info + "_上传失败(大表)" + ss);
- sb_Info = new StringBuilder();
- }
- meterList = new List<meterRead>();
- }
- }
- }
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- #endregion
- #region 2021-01-23 移动NB水表对接
- public void UpdateNBMeter()
- {
- #region 变量
- String str_Sql;
- DataTable dt = new DataTable();
- String meterTypeNotValve = ConfigurationManager.AppSettings["meterTypeNotValve"];
- String meterTypeValve = ConfigurationManager.AppSettings["meterTypeValve"];
- #endregion
- #region 逻辑
- log.Debug("~~~~~~NB非阀控水表~~~~~");
- str_Sql = "select ElecAddress as 表地址,NowRadingDT as ReviseDT,NowReading as 表读数 from ONET_RMRS_MeterInfo where CompanyID ='6e50093a-2b74-4e3e-9993-c3bd1f23979a' and DeleteMark = 0 and MeterComTypeId<>6";
- dt = dbHelperNBYd.Fill(str_Sql);
-
- insertData(dt, meterTypeNotValve);
-
- log.Debug("~~~~~~NB阀控水表~~~~~");
- str_Sql = "select ElecAddress as 表地址,NowRadingDT as ReviseDT,NowReading as 表读数 from ONET_RMRS_MeterInfo where CompanyID ='6e50093a-2b74-4e3e-9993-c3bd1f23979a' and DeleteMark = 0 and MeterComTypeId=6";
- dt = dbHelperNBYd.Fill(str_Sql);
- insertData(dt, meterTypeValve);
- #endregion
- }
- #endregion
- private void insertData(DataTable dt,String meterType) {
- List<meterRead> meterList = new List<meterRead>();
-
- Int32 i_Count = Convert.ToInt32(ConfigurationManager.AppSettings["Count"]);
- StringBuilder sb_Info = new StringBuilder();
- meterRead[] meters = new meterRead[] { };
-
- WebReference.MeterReadingImplService wm = new WebReference.MeterReadingImplService();
- if (dt.Rows.Count > 0)
- {
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- try
- {
-
- meterRead meter = new meterRead();
- meter.meterAddress = dt.Rows[i]["表地址"].ToString();
- meter.readDate = dt.Rows[i]["ReviseDT"].ToString();
- meter.readNum = Convert.ToDouble(dt.Rows[i]["表读数"].ToString());
- meter.metersort_id = meterType;
- meter.meterState = "3";
- meterList.Add(meter);
- sb_Info.Append(meter.meterAddress + "|" + meter.readDate + "|" + meter.readNum + "\r\n");
- if (meterList.Count == i_Count || (meterList.Count != i_Count && i == dt.Rows.Count - 1))
-
- {
-
- meters = meterList.ToArray();
- String ss = wm.UPMeterRead(meters, meterType);
- if (ss == "true")
- {
-
- log.Info(DateTime.Now.ToString() + sb_Info.ToString() + "_上传成功");
-
- sb_Info = new StringBuilder();
- }
- else if (ss == "")
- {
- log.Info("接口返回空" + sb_Info.ToString() + "上传成功");
- sb_Info = new StringBuilder();
- }
- else
- {
-
- log.Info(DateTime.Now.ToString() + sb_Info.ToString() + "_上传失败" + ss);
- sb_Info = new StringBuilder();
- }
- meterList = new List<meterRead>();
- }
- }
- catch (Exception ex)
- {
- log.Debug("~~~~~~~~" + dt.Rows[i]["表地址"].ToString() + ",报错:" + ex.ToString());
- }
- }
- }
- }
-
-
-
- private void UpDataValveControlState()
- {
-
- String metersortId = "13";
- StringBuilder sql = new StringBuilder();
- List<valveControlState> vcStateList = new List<valveControlState>();
- valveControlState[] valveControlStates = new valveControlState[] { };
- valveControlState vcState = new valveControlState();
- WebReference.MeterReadingImplService wm = new WebReference.MeterReadingImplService();
- sql.Append("select distinct c.id,a.MeterID,c.meteraddress, a.ValveStatus,b.CmdResult,c.updateTime,ReturnCode from ONET_RMRS_MeterInfo a ");
- sql.Append("inner join ONET_RMRS_SendCmdRecord b on a.MeterID = b.MeterId ");
- sql.Append("inner join TempValveControlData c on a.ElecAddress = c.meteraddress ");
- sql.Append("where a.DeleteMark = 0 and CmdType = 1002 ");
- DataTable dt = dbHelperNBYd.Fill(sql.ToString());
- if (dt.Rows.Count > 0)
- {
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- vcState.id = dt.Rows[i]["id"].ToString();
-
- if (dt.Rows[i]["ValveStatus"].ToString() == "00")
- {
- vcState.meterState = "开阀";
- }
- else
- {
- vcState.meterState = "关阀";
- }
-
-
- String returnCode = dt.Rows[i]["ReturnCode"] == null ? null : dt.Rows[i]["ReturnCode"].ToString();
- if (returnCode == "0")
- {
- vcState.state = "1";
- log.Debug("########指令ID:"+ vcState.id+",水表地址:"+dt.Rows[i]["meteraddress"] +"执行成功");
- }
- else
- {
- vcState.state = "0";
- vcState.result = "指令超时";
- log.Debug("########指令ID:" + vcState.id + ",水表地址:" + dt.Rows[i]["meteraddress"] + "执行失败");
- }
- vcState.controlTime = dt.Rows[i]["updateTime"].ToString();
-
- vcStateList.Add(vcState);
- }
-
- Boolean result = wm.UPValveControlState(valveControlStates, metersortId);
- if (result)
- {
- log.Info("上传成功");
- }
- else
- {
- log.Info("上传失败");
- }
- }
-
- }
- static IDbProvider dbHelper
- {
- get
- {
- var DbDefine = DbFactoryProvider.GetProvider(CurrentDbType.SqlServer, Constants.DBUrl);
- return DbDefine;
- }
- }
- static IDbProvider dbHelperNB
- {
- get
- {
- var DbDefine = DbFactoryProvider.GetProvider(CurrentDbType.SqlServer, Constants.DBUrlNb);
- return DbDefine;
- }
- }
- static IDbProvider dbHelperNBYd
- {
- get
- {
- var DbDefine = DbFactoryProvider.GetProvider(CurrentDbType.SqlServer, Constants.DBUrlNbYd);
- return DbDefine;
- }
- }
- }
- public class MeterInfo
- {
-
- public String CBNY { get; set; }
-
- public String JYDM { get; set; }
-
- public String CJDM { get; set; }
- public List<DATA> DATA { get; set; }
- }
- public class DATA
- {
-
- public String SYBS { get; set; }
-
- public String CBRQ { get; set; }
-
- public String SBBH { get; set; }
-
- public String CUSERID { get; set; }
-
- public String CBZT { get; set; }
-
- public double BYBS { get; set; }
-
- public Int32 CCOPY { get; set; }
-
- public double JJSL { get; set; }
-
- public String REMARK { get; set; }
- }
- public class ValueControlInfo
- {
- public String ManufacturerCode { get; set; }
- public String MeterAddress { get; set; }
- public String CommandType { get; set; }
- public String ValueState { get; set; }
- }
- }
|