using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Web.UI; using DataTransfersLibs.Models; using SysBaseLibs; using SysDataLibs.TableClass; namespace DataTransfersLibs.Service { public class DataUpdateService : IErrorMsg { public DataUpdateService(string pcDataXml) { if (pcDataXml == "") { pcDataXml = lcTemp; } try { rsXmlNode loMainNode = rsXmlNode.ParseGenericXml(pcDataXml); ParseCheckData(loMainNode); } catch (Exception e) { ErrorMsg = e.Message; } } public DataUpdateService(Page poPage) { try { // System.IO.Stream streamMessage = poPage.Request.InputStream; // Encoding encode = Encoding.GetEncoding("GB2312"); // byte[] buff = new byte[4096]; // int nBytesRead = 0; // int nBytes = streamMessage.Read(buff, nBytesRead, 4096); // string strRequest = ""; // while (nBytes > 0) // { // nBytesRead += nBytes; // strRequest += encode.GetString(buff, 0, nBytes); // nBytes = streamMessage.Read(buff, 0, 4096); // } string strRequest; Encoding encode = Encoding.GetEncoding("GB2312"); using (var sr = new StreamReader(poPage.Request.InputStream, encode)) { strRequest = sr.ReadToEnd(); } if (strRequest.Trim().Length > 0) { try { this.LogDebug(strRequest); //SysBaseLibs.AppEnv.Log(strRequest); rsXmlNode loMainNode = rsXmlNode.ParseGenericXml(strRequest); ParseCheckData(loMainNode); } catch (Exception e) { this.LogError(e); ErrorMsg = e.Message; } } } catch (Exception err) { this.LogError(err); } } #region Properties public int Total => _checkDatas.Count; public int Successed { get; set; } = 0; public int Failed { get; set; } = 0; public string ErrorMsg { get; set; } = ""; string _userId = ""; private TransDataService _transDataService; string _password = ""; List _checkDatas; private DBConnSql DBConn { get { DBConnSql loRetVal = new DBConnSql(); if (loRetVal.Open()) { } return loRetVal; } } #endregion /// /// 解析数据 /// /// /// private void ParseCheckData(rsXmlNode poMainNode) { if (poMainNode != null && poMainNode.Nodes.Count > 0) { if (poMainNode.Nodes.Count > 0) { _userId = poMainNode.GetChildValue("UserId"); _password = poMainNode.GetChildValue("password"); rsXmlNode loRecords = poMainNode.GetChildNode("results"); if (loRecords != null && loRecords.Nodes.Count > 0) { _checkDatas = new List(); foreach (rsXmlNode loNode in loRecords.Nodes) { if (loNode != null && loNode.Nodes.Count > 0) { SingleCheckData loRecord = new SingleCheckData(loNode); _checkDatas.Add(loRecord); } } } } } else { this.LogError("没有有效数据"); ErrorMsg = "没有有效数据!"; } } /// /// 检查用户合法性 /// /// public bool CheckUserValid() { bool lbRetVal = false; if (_userId != "" && _password != "" && DBConn != null && DBConn.IsOpened) { string lcSql = "select * from " + Tn.Sys_Users + " where " + Sys_Users_info.cUserCode + "='" + _userId + "'"; rsQuery loQuery = DBConn.OpenQuery(lcSql); if (loQuery != null && loQuery.IsOpened && loQuery.RecCount == 1) { loQuery.MoveFirst(); _transDataService = new TransDataService(loQuery.CurrentRow, DBConn); if (_password == _transDataService.Password) { lbRetVal = true; this.LogInfo("检测数据上传用户验证通过:UserID" + _userId); } else { this.LogError("检测数据上传用户密码不正确:UserID" + _userId); ErrorMsg = "用户密码不正确"; } } else { this.LogError("检测数据上传用户名不正确或该用户已经被锁定:UserID" + _userId); ErrorMsg = "用户名不正确或该用户已经被锁定"; } } return lbRetVal; } /// /// 向数据库中插入数据 /// /// public bool UpdateAllRecords() { bool lbRetVal = false; List loCheckDataList = new List(); if (_transDataService != null && _checkDatas.Count > 0) { ErrorMsg = ""; string errorMsg=""; foreach (SingleCheckData loSingleRecord in _checkDatas) { if (loSingleRecord.IsValid) { try { CheckData_info loCheckData = _transDataService.GetCheckDataInfo(loSingleRecord); if (loCheckData != null) loCheckDataList.Add(loCheckData); if (!_transDataService.InsertCheckData(loSingleRecord)) { ErrorMsg += (ErrorMsg == "" ? "" : ",") + loSingleRecord.SampleNo; errorMsg += (errorMsg == "" ? "" : ",") + loSingleRecord.SampleNo + "@" + loSingleRecord.SampleName; Failed++; } else { Successed++; lbRetVal = true; } } catch (Exception e) { Failed++; this.LogError(e); } } else { Failed++; errorMsg += (errorMsg == "" ? "" : ",") + loSingleRecord.SampleNo + "@" + loSingleRecord.SampleName + "@非法数据"; } } if (ErrorMsg != "") { lbRetVal = false; this.LogInfo(errorMsg); } //ytCheckDataUpload loytCheckDataUpload = new ytCheckDataUpload(); //loytCheckDataUpload.ExcuteBatchUploadYTThread(loCheckDataList); loCheckDataList.DataPush(); } return lbRetVal; } string lcTemp = @" shichang12 123456 100011 佛手瓜 检测仪 合格 复淳科技 复淳科技 北京 东方农场 0 2006-11-28 111_111 10001 118 农药残留 400006 豌豆 检测仪 合格 复淳科技 复淳科技 北京 东方农场 0 2006-11-28 111_111 10001 119 农药残留 400001 毛豆 检测仪 合格 复淳科技 复淳科技 北京 东方农场 0 2006-11-28 111_111 10001 120 农药残留 500005 花椰菜 检测仪 合格 复淳科技 复淳科技 北京 东方农场 0 2006-11-28 111_111 10001 122 农药残留 500004 生菜 检测仪 合格 复淳科技 复淳科技 北京 东方农场 0 2006-11-28 111_111 10001 123 农药残留 500006 甘蓝 检测仪 合格 复淳科技 复淳科技 上海 东方农场 0 2007-05-12 111_111 10001 127 农药残留 500006 甘蓝 检测仪 合格 复淳科技 复淳科技 上海 东方农场 0 2007-05-12 111_111 10001 128 农药残留 500006 甘蓝 检测仪 合格 复淳科技 复淳科技 上海 东方农场 0 2007-05-12 111_111 10001 129 农药残留 500006 甘蓝 检测仪 合格 复淳科技 复淳科技 上海 东方农场 0 2007-05-12 111_111 10001 130 农药残留 "; string TestData = @" shichang1 123456 0001 速测法 绿叶菜类 青菜 残留农药 1 邻里中心新城大厦 上海市 上海市 农夫果园 第一食品公司 公司 88.88 2007-5-12 张三 HW12345678 0002 速测仪 绿叶菜类 青菜 残留农药 1 邻里中心新城大厦 上海市 上海市 农夫果园 第一食品公司 公司 88.88 2007-5-12 张三 HW12345678 "; } }