using com.hnshituo.core.webapp.vo; using Common; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Drawing; using System.IO; using System.IO.Ports; using System.Linq; using System.Text; using System.Windows.Forms; namespace FrmStandAloneMetering { /// /// 仪表状态 /// public enum MeterStatus { /// /// Stable 稳定 /// Stable, /// /// 不稳定 /// UnStable, /// /// 空磅 /// Null, ///// ///// 未连接 ///// UnConnect, ///// ///// 已连接 ///// Connect } public partial class FrmStandAloneMetering : Form { private string strComPara; //仪表参数 private int messageLength; //报文长度 private string strSeparate;//分割符 private int startPosition; //开始取值位置 private int dataLength; //数据长度 private int sleepTime; //采样频率 private int stableTime; //稳定时间 private int stableCount; //稳定次数 private int stableDiff; //稳定次数 private double tmpWeight; //临时重量,用于判断是否稳定状态 private int weightStabCount; //波动次数 private BaseDbCls bd = new BaseDbCls(); private SerialPort serialPort1; //数据采集串口 private bool blThreadFlag;//数据采集线程开关 private StringBuilder weightLog = new StringBuilder(); //重量日志的文件 private MeterWorkCarActualFirstService actualFirstService = new MeterWorkCarActualFirstService(); public FrmStandAloneMetering() { InitializeComponent(); } private void FrmStandAloneMetering_Load(object sender, EventArgs e) { strComPara = ConfigurationManager.AppSettings["ComPara"].ToString().Trim(); //仪表参数COM口 messageLength = Convert.ToInt32(ConfigurationManager.AppSettings["MessageLength"].ToString().Trim()); //报文长度 strSeparate = ConfigurationManager.AppSettings["Separate"].ToString().Trim();//分割符 startPosition = Convert.ToInt32(ConfigurationManager.AppSettings["StartPosition"].ToString().Trim());//开始取值位置 dataLength = Convert.ToInt32(ConfigurationManager.AppSettings["DataLength"].ToString().Trim());// 数据长度 sleepTime = Convert.ToInt32(ConfigurationManager.AppSettings["SleepTime"].ToString().Trim());//采样频率 stableTime = Convert.ToInt32(ConfigurationManager.AppSettings["StableTime"].ToString().Trim());//稳定时间 stableDiff = Convert.ToInt32(ConfigurationManager.AppSettings["StableDiff"].ToString().Trim());//稳定重量 stableCount = stableTime * 1000 / sleepTime;//稳定次数 //界面COM赋值 if (!String.IsNullOrEmpty(strComPara) && strComPara.Contains(",")) { string[] strParams = strComPara.Split(new char[] { ',' }); cbChooseCom.Text = strParams[0]; } //物料下拉框赋值 DataTable dtMatterInfo = selectMatterInfo(); this.cbMatterName.DataSource = dtMatterInfo; this.cbMatterName.DisplayMember = "name"; this.cbMatterName.ValueMember = "value"; //发货单位下拉框赋值 DataTable dtForwardingUnit = selectCustomerInfo(); this.cbForwardingUnitName.DataSource = dtForwardingUnit; this.cbForwardingUnitName.DisplayMember = "name"; this.cbForwardingUnitName.ValueMember = "value"; //收货单位下拉框赋值 DataTable dtReceivingUint = selectCustomerInfo(); this.cbReceivingUintName.DataSource = dtReceivingUint; this.cbReceivingUintName.DisplayMember = "name"; this.cbReceivingUintName.ValueMember = "value"; //计量点下拉框赋值 DataTable dtSpotInfo = selectSpotInfo(); this.cbBaseSpot.DataSource = dtSpotInfo; this.cbBaseSpot.DisplayMember = "name"; this.cbBaseSpot.ValueMember = "value"; //界面稳定时间赋值 cbStableSchedule.Text = stableTime.ToString(); tmpWeight = 0;//临时重量 weightStabCount = 0; //波动次数 } #region 用户控件的事件 /// /// 开启数据采集 /// /// /// private void btnCollection_Click(object sender, EventArgs e) { if (blThreadFlag) { MessageBox.Show("采集程序已经运行,禁止重新进行采集!"); return; } blThreadFlag = true; System.Threading.Thread DataCollectThread = new System.Threading.Thread(new System.Threading.ThreadStart(DataCollect)); DataCollectThread.Start(); } /// /// 上传本地的计量数据 /// /// /// private void btnUploadData_Click(object sender, EventArgs e) { uploadData(); } /// /// 下载服务器的基础数据 /// /// /// private void btnDownloadData_Click(object sender, EventArgs e) { // 删除CSV文件 Utils.FileUtil.DeleteFile(AppDomain.CurrentDomain.BaseDirectory + "baseData\\MeterBaseMatterInfo.csv"); // 获取物料信息 MeterBaseMatterInfoService meterBaseMatterInfo = new MeterBaseMatterInfoService();//物料服务 MeterBaseMatterInfo MatterInfo1 = new MeterBaseMatterInfo(); MatterInfo1.validFlag = "1"; MatterInfo1.pageNum = 1; MatterInfo1.pageSize = 9999; RESTfulResult> rmx = meterBaseMatterInfo.doQueryListLike(MatterInfo1); // 重新保存CSV文件 saveMatterInfo(rmx); // 删除CSV文件 Utils.FileUtil.DeleteFile(AppDomain.CurrentDomain.BaseDirectory + "baseData\\MeterBaseCustomerSupplier.csv"); // 获取客商信息 MeterBaseCustomerSupplierService service2 = new MeterBaseCustomerSupplierService();//物料服务 MeterBaseCustomerSupplier customerInfo1 = new MeterBaseCustomerSupplier(); customerInfo1.validFlag = "1"; RESTfulResult> rmx2 = service2.doQuery(customerInfo1); // 重新保存CSV文件 saveCustomerInfo(rmx2); // 删除CSV文件 Utils.FileUtil.DeleteFile(AppDomain.CurrentDomain.BaseDirectory + "baseData\\MeterBaseSpotInfo.csv"); // 获取客商信息 MeterBaseSpotInfoService service3 = new MeterBaseSpotInfoService();//物料服务 MeterBaseSpotInfo customerInfo2 = new MeterBaseSpotInfo(); customerInfo2.validFlag = "1"; RESTfulResult> rmx3 = service3.doQueryWf(customerInfo2); // 重新保存CSV文件 saveSpotInfo(rmx3); //物料下拉框赋值 DataTable dtMatterInfo = selectMatterInfo(); this.cbMatterName.DataSource = dtMatterInfo; this.cbMatterName.DisplayMember = "name"; this.cbMatterName.ValueMember = "value"; //发货单位下拉框赋值 DataTable dtForwardingUnit = selectCustomerInfo(); this.cbForwardingUnitName.DataSource = dtForwardingUnit; this.cbForwardingUnitName.DisplayMember = "name"; this.cbForwardingUnitName.ValueMember = "value"; //收货单位下拉框赋值 DataTable dtReceivingUint = selectCustomerInfo(); this.cbReceivingUintName.DataSource = dtReceivingUint; this.cbReceivingUintName.DisplayMember = "name"; this.cbReceivingUintName.ValueMember = "value"; //计量点下拉框赋值 DataTable dtSpotInfo = selectSpotInfo(); this.cbBaseSpot.DataSource = dtSpotInfo; this.cbBaseSpot.DisplayMember = "name"; this.cbBaseSpot.ValueMember = "value"; } /// /// 数据查询 /// /// /// private void btQuery_Click(object sender, EventArgs e) { doQuery(); } /// /// 毛重保存 /// /// /// private void btSaveGross_Click(object sender, EventArgs e) { saveData("0"); //毛重保存(0=毛重;1=常规皮重) doQuery(); } /// /// 皮重保存 /// /// /// private void btSaveTare_Click(object sender, EventArgs e) { saveData("1"); //毛重保存(0=毛重;1=常规皮重) doQuery(); } /// /// 界面关闭 /// /// /// private void FrmStandAloneMetering_FormClosing(object sender, FormClosingEventArgs e) { blThreadFlag = false; System.Threading.Thread.Sleep(sleepTime * 2); if (serialPort1 != null) { serialPort1.Close(); } Application.Exit(); } /// /// 稳定时间选择事件 /// /// /// private void cbStableSchedule_TextChanged(object sender, EventArgs e) { stableTime = Convert.ToInt32(cbStableSchedule.Text.Trim());//稳定时间 stableCount = stableTime * 1000 / sleepTime;//稳定次数 } /// /// COM口下拉事件 /// /// /// private void cbChooseCom_TextChanged(object sender, EventArgs e) { if (blThreadFlag) { MessageBox.Show("采集程序已经运行,禁止重新调整COM口!"); return; } } #endregion 用户控件的事件 #region 数据采集 /// /// 数据采集线程 /// private void DataCollect() { if (!blThreadFlag) return; string[] strParams = strComPara.Split(new char[] { ',' }); Parity parity = Parity.None; if (strParams[2].ToUpper() == "ODD") { parity = Parity.Odd; } if (strParams[2].ToUpper() == "EVEN") { parity = Parity.Even; } StopBits stopBits = StopBits.None; if (strParams[4] == "1") { stopBits = StopBits.One; } if (strParams[4] == "1.5") { stopBits = StopBits.OnePointFive; } if (strParams[4] == "2") { stopBits = StopBits.Two; } serialPort1 = new SerialPort(strParams[0], Int32.Parse(strParams[1]), parity, Int32.Parse(strParams[3]), stopBits); while (!serialPort1.IsOpen) { try { serialPort1.Open(); } catch (Exception err) { WriteCatchLog(err.ToString()); } System.Threading.Thread.Sleep(500); } StringBuilder stringBuilder = new StringBuilder(); string strtmp = ""; while (blThreadFlag) { try { System.Threading.Thread.Sleep(sleepTime); if (serialPort1.BytesToRead > 0) { strtmp = serialPort1.ReadExisting(); stringBuilder.Append(strtmp); //"US,GS,+0073.34 t\r\nUS,GS,+0073.96 t\r\nUS,GS,+0071.36 t\r\nUS,GS,+0070.40 t\r\nUS,GS,+0073.06 t\r\nUS,GS,+0073.16 t\r\nUS,GS,+0071.72 t\r\nUS,GS,+0073.30 t\r\nUS,GS,+0074.16 t\r\n" //0252.50 kg //20 20 0D 0A 7F 30 32 35 32 2E 35 30 20 6B 67 //03 04 0D 0A FF 30 30 30 30 31 35 20 6B 67 //char strSeparate = (char)0x6B; if (stringBuilder.ToString().LastIndexOf(strSeparate) >= 0) { if (stringBuilder.ToString().LastIndexOf(strSeparate) < messageLength)//不完整报文,抛掉 { stringBuilder.Remove(0, stringBuilder.ToString().LastIndexOf(strSeparate) + strSeparate.Length); //stringBuilder.Remove(0, stringBuilder.ToString().LastIndexOf(strSeparate) + strSeparate.Length); } int index = stringBuilder.ToString().LastIndexOf(strSeparate); if ((index - messageLength) < 0) continue; string strData = stringBuilder.ToString().Substring(index - messageLength, messageLength + strSeparate.Length); // WriteCatchLog("strData " + strData); string weight = strData.Substring(startPosition, dataLength); if ("T".Equals(strSeparate.ToUpper())) { //单位为T是做特殊处理,界面显示的是T weight = (Convert.ToDouble(weight) * 1000) + ""; } //WriteCatchLog("weight " + weight); stringBuilder.Remove(0, stringBuilder.Length); ucStorageWeightT1.setWgt(Math.Round(Convert.ToDouble(weight), 3)); DoShowWeightStatus(Convert.ToDouble(weight)); } } } catch (Exception err) { MessageBox.Show("串口打开异常!异常原因" + err.ToString()); WriteCatchLog("DataCollect1" + err.ToString()); } } } /// /// 重量稳定判断 /// /// public void DoShowWeightStatus(double _weight) { if (Math.Abs(_weight) < 50) { //不稳定状态;红灯 ucStorageWeightT1.setStable(false); return; } //波动在范围内时,稳定次数+1,临时重量不变;波动范围超出时,稳定次数清零,更新临时重量, int inDiff = Math.Abs(Convert.ToInt32(tmpWeight - _weight)); if (inDiff < stableDiff) { weightStabCount += 1; } else { weightStabCount = 0; } //WriteCatchLog("_tmpWeight: " + _tmpWeight + " _weight: " + _weight + " inDiff: "+inDiff+ " StabCount : " + weightStabCount); tmpWeight = Convert.ToSingle(_weight); //重量30kg内波动超过10次认为重量稳定 if (weightStabCount > stableCount) { //稳定状态;绿灯 ucStorageWeightT1.setStable(true); weightStabCount = stableCount; } else { ucStorageWeightT1.setStable(false); } } #endregion 数据采集 /// /// 重量保存:0=毛重;1=常规皮重 /// /// private void saveData(string strWeightType) { try { MeterWorkCarActualFirst actualFirst = new MeterWorkCarActualFirst(); //一次计量实体 actualFirst.actualFirstNo = "CAR" + DateTime.Now.ToString("yyyyMMddHHmmssfff"); //主键 actualFirst.carNo = tbCarNo.Text.Trim();//车号 actualFirst.baseSpotNo = cbBaseSpot.SelectedValue.ToString().Trim();//计量点 actualFirst.baseSpotName = cbBaseSpot.Text.ToString().Trim();//计量点 //actualFirst.meterTypeName = cbMeterTypeName.Text.Trim();//业务类型 //actualFirst.contractNo = cbContractNo.Text.Trim();//合同号 //actualFirst.batchNo = tbBatchNo.Text.Trim();//批次号 //actualFirst.heatNo = tbHeatNo.Text.Trim();//炉号 //actualFirst.shipmentNum = Convert.ToInt32(string.IsNullOrEmpty(tbShipmentNum.Text.Trim()) ? "0" : tbShipmentNum.Text.Trim());//包数/数量 actualFirst.matterNo = cbMatterName.SelectedValue.ToString().Trim();//物资名称 actualFirst.matterName = cbMatterName.Text.ToString().Trim();//物资名称 actualFirst.receivingUintNo = cbReceivingUintName.SelectedValue.ToString().Trim();//收货单位 actualFirst.receivingUintName = cbReceivingUintName.Text.ToString().Trim();//收货单位 actualFirst.forwardingUnitNo = cbForwardingUnitName.SelectedValue.ToString().Trim();//发货单位 actualFirst.forwardingUnitName = cbForwardingUnitName.Text.ToString().Trim();//发货单位 //actualFirst.customerSupplierName = cbCustomerSupplierName.Text.Trim();//供应商 //actualFirst.loadPointName = cbLoadPointName.Text.Trim();//卸货地点 actualFirst.memo = tbMemo.Text.Trim();//备注 actualFirst.weightType = strWeightType;//重量类型 actualFirst.meterWeight = ucStorageWeightT1.getWgt() * 1000; //DataTable csvDataTable = OpenCSV(AppDomain.CurrentDomain.BaseDirectory + "alonData\\" + DateTime.Now.ToString("yyyy-MM-dd") + "\\actualFirst.csv"); if (System.IO.Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "alonData\\" + DateTime.Now.ToString("yyyy-MM-dd")) == false || System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + "alonData\\" + DateTime.Now.ToString("yyyy-MM-dd") + "\\actualFirst.csv") == false) { StringBuilder actualFirstLogHead = new StringBuilder(); //一次计量数据保存文件 actualFirstLogHead.Append("createTime,");//若第一行默认为当前时间则第一行多个逗号 actualFirstLogHead.Append("actualFirstNo,"); actualFirstLogHead.Append("carNo,"); actualFirstLogHead.Append("baseSpotNo,"); actualFirstLogHead.Append("baseSpotName,"); //actualFirstLogHead.Append("meterTypeName,"); //actualFirstLogHead.Append("contractNo,"); //actualFirstLogHead.Append("batchNo,"); //actualFirstLogHead.Append("heatNo,"); //actualFirstLogHead.Append("shipmentNum,"); actualFirstLogHead.Append("matterNo,"); actualFirstLogHead.Append("matterName,"); actualFirstLogHead.Append("receivingUintNo,"); actualFirstLogHead.Append("receivingUintName,"); actualFirstLogHead.Append("forwardingUnitNo,"); actualFirstLogHead.Append("forwardingUnitName,"); //actualFirstLogHead.Append("customerSupplierName,"); //actualFirstLogHead.Append("loadPointName,"); actualFirstLogHead.Append("memo,"); actualFirstLogHead.Append("weightType,"); //最后一行不要逗号 actualFirstLogHead.Append("meterWeight"); logCsv.WriteDataLog("actualFirst", actualFirstLogHead.ToString()); } StringBuilder actualFirstLog = new StringBuilder(); //一次计量数据保存文件 actualFirstLog.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ","); actualFirstLog.Append(actualFirst.actualFirstNo.ToString() + ","); actualFirstLog.Append(actualFirst.carNo.ToString() + ","); actualFirstLog.Append(actualFirst.baseSpotNo.ToString() + ","); actualFirstLog.Append(actualFirst.baseSpotName.ToString() + ","); // actualFirstLog.Append(actualFirst.meterTypeName.ToString() + ","); //actualFirstLog.Append(actualFirst.contractNo.ToString() + ","); //actualFirstLog.Append(actualFirst.batchNo.ToString() + ","); //actualFirstLog.Append(actualFirst.heatNo.ToString() + ","); //actualFirstLog.Append(actualFirst.shipmentNum.ToString() + ","); actualFirstLog.Append(actualFirst.matterNo.ToString() + ","); actualFirstLog.Append(actualFirst.matterName.ToString() + ","); actualFirstLog.Append(actualFirst.receivingUintNo.ToString() + ","); actualFirstLog.Append(actualFirst.receivingUintName.ToString() + ","); actualFirstLog.Append(actualFirst.forwardingUnitNo.ToString() + ","); actualFirstLog.Append(actualFirst.forwardingUnitName.ToString() + ","); //actualFirstLog.Append(actualFirst.customerSupplierName.ToString() + ","); //actualFirstLog.Append(actualFirst.loadPointName.ToString() + ","); actualFirstLog.Append(actualFirst.memo.ToString() + ","); actualFirstLog.Append(actualFirst.weightType.ToString() + ","); actualFirstLog.Append(actualFirst.meterWeight.ToString()); logCsv.WriteDataLog("actualFirst", actualFirstLog.ToString()); //截图初始化 bd.setBaseDb(); bd.getBaseDb(); //图片截图保存 shotImage(actualFirst.actualFirstNo.ToString()); MessageBox.Show("保存成功"); } catch (Exception e) { MessageBox.Show("保存失败:" + e.Message); } } /// /// 上传数据 /// private void uploadData() { openFileDialogUpData.Filter = "csv文件|*.csv";//只允许csv文件;*.csv;*.xlsx openFileDialogUpData.Title = "选择要导入的计量数据文件"; //弹出框头部显示 openFileDialogUpData.AddExtension = true; //自动增加后缀 openFileDialogUpData.AutoUpgradeEnabled = true; //是否随系统自动升级弹出窗口样式 openFileDialogUpData.InitialDirectory = Application.StartupPath + "\\alonData\\" + DateTime.Now.ToString("yyyy-MM-dd");//默认打开当前目录 //openFileDialog1.Multiselect = true;//该值确定是否可以选择多个文件 if (openFileDialogUpData.ShowDialog() == DialogResult.OK) { DataTable csvDataTable = OpenCSV(openFileDialogUpData.FileName); int rowCount = csvDataTable.Rows.Count; if (csvDataTable != null && csvDataTable.Rows.Count > 0) { List lp = csvDataTable.TableToDataList(); DialogResult dr = MessageBox.Show("共 " + lp.Count + " 条计量数据,是否继续上传?", "提示", MessageBoxButtons.OKCancel); if (dr != DialogResult.OK) { return; } //操作日志 RESTfulResult rES = actualFirstService.addEmergency(lp); if (rES.Succeed) { MessageBox.Show("数据上传成功!"); } else { MessageBox.Show("数据上传失败:" + rES.Message); } } }; } public static DataTable OpenCSV(string filePath) { Encoding encoding = Encoding.UTF8; //Common.GetType(filePath); //Encoding.ASCII;// DataTable dt = new DataTable(); FileStream fs = new FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read); //StreamReader sr = new StreamReader(fs, Encoding.UTF8); StreamReader sr = new StreamReader(fs, encoding); //string fileContent = sr.ReadToEnd(); //encoding = sr.CurrentEncoding; //记录每次读取的一行记录 string strLine = ""; //记录每行记录中的各字段内容 string[] aryLine = null; string[] tableHead = null; //标示列数 int columnCount = 0; //标示是否是读取的第一行 bool IsFirst = true; //逐行读取CSV中的数据 while ((strLine = sr.ReadLine()) != null) { //strLine = Common.ConvertStringUTF8(strLine, encoding); //strLine = Common.ConvertStringUTF8(strLine); if (IsFirst == true) { tableHead = strLine.Split(','); IsFirst = false; columnCount = tableHead.Length; //创建列 for (int i = 0; i < columnCount; i++) { DataColumn dc = new DataColumn(tableHead[i]); //DataColumn dc = new DataColumn(i.ToString()); dt.Columns.Add(dc); switch (i) { } } } else { aryLine = strLine.Split(','); DataRow dr = dt.NewRow(); for (int j = 0; j < columnCount; j++) { dr[j] = aryLine[j]; } dt.Rows.Add(dr); } } //if (aryLine != null && aryLine.Length > 0) //{ // dt.DefaultView.Sort = tableHead[0] + " " + "asc"; //} sr.Close(); fs.Close(); return dt; } /// /// 数据查询 /// private void doQuery() { if (System.IO.Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "alonData\\" + DateTime.Now.ToString("yyyy-MM-dd")) == true && System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + "alonData\\" + DateTime.Now.ToString("yyyy-MM-dd") + "\\actualFirst.csv") == true) { DataTable csvDataTable = OpenCSV(AppDomain.CurrentDomain.BaseDirectory + "alonData\\" + DateTime.Now.ToString("yyyy-MM-dd") + "\\actualFirst.csv"); int rowCount = csvDataTable.Rows.Count; if (csvDataTable != null && csvDataTable.Rows.Count > 0) { List lp = csvDataTable.TableToDataList(); rowCount = lp.Count; //毛重数据查询 DataTable dtGross = csvDataTable.Clone(); List lpGross = lp.Where(s => s.weightType == "0").ToList(); if (lpGross != null && lpGross.Count > 0) { dtGross = lpGross.ListToDataTable(); } ClsControlPack.CopyDataToDatatable(ref dtGross, ref this.dtCarActFirstGross, true); foreach (var item in this.ultraGridGross.Rows) { item.Cells["weightType"].Value = GetWeightType(item.Cells["weightType"].Value.ToString()); } ClsControlPack.RefreshAndAutoSize(ultraGridGross); //皮重数据查询 DataTable dtTare = csvDataTable.Clone(); List lpTare = lp.Where(s => s.weightType == "1").ToList(); if (lpTare != null && lpTare.Count > 0) { dtTare = lpTare.ListToDataTable(); } ClsControlPack.CopyDataToDatatable(ref dtTare, ref this.dtCarActFirstTare, true); foreach (var item in this.ultraGridTare.Rows) { item.Cells["weightType"].Value = GetWeightType(item.Cells["weightType"].Value.ToString()); } ClsControlPack.RefreshAndAutoSize(ultraGridTare); } } else { MessageBox.Show("未查询到当天的数据文件!"); } } /// /// 重量类型 /// /// /// public static string GetWeightType(string strCode) { string weightType = ""; //重量类型(0:毛重;1:皮重) switch (strCode) { case "0": weightType = "毛重"; break; case "1": weightType = "皮重"; break; default: break; } return weightType; } /// /// 记录错误日志 /// /// private void WriteCatchLog(string str) { try { string m_szRunPath = System.Environment.CurrentDirectory.ToString(); if (!(System.IO.Directory.Exists(m_szRunPath + "\\log"))) { System.IO.Directory.CreateDirectory(m_szRunPath + "\\log"); } string strDate = System.DateTime.Now.ToString("yyyyMMddhh"); System.IO.TextWriter tw = new System.IO.StreamWriter(m_szRunPath + "\\log\\catch.log", true); tw.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\t" + str); tw.Close(); } catch { } } /// /// 保存物料信息到csv文件 /// /// private void saveMatterInfo(RESTfulResult> result) { StringBuilder materInfoHead = new StringBuilder(); // 物料头 materInfoHead.Append("matterNo,");//若第一行默认为当前时间则第一行多个逗号 materInfoHead.Append("matterName"); logCsv.WriteBaseData("MeterBaseMatterInfo", materInfoHead.ToString()); if (result.Succeed) { StringBuilder materInfo = new StringBuilder(); // 物料体 List list = result.Data; foreach (MeterBaseMatterInfo info in list) { materInfo.Clear(); materInfo.Append(info.matterNo + ","); materInfo.Append(info.matterName + ","); logCsv.WriteBaseData("MeterBaseMatterInfo", materInfo.ToString()); } } } /// /// 保存收发货单位信息到csv文件 /// /// private void saveCustomerInfo(RESTfulResult> result) { StringBuilder customerInfoHead = new StringBuilder(); // 客商头 customerInfoHead.Append("customerSupplierNo,");//若第一行默认为当前时间则第一行多个逗号 customerInfoHead.Append("customerSupplierName"); logCsv.WriteBaseData("MeterBaseCustomerSupplier", customerInfoHead.ToString()); if (result.Succeed) { StringBuilder customerInfo = new StringBuilder(); // 物料体 List list = result.Data; if(result.Data != null) { foreach (MeterBaseCustomerSupplier info in list) { customerInfo.Clear(); customerInfo.Append(info.customerSupplierNo + ","); customerInfo.Append(info.customerSupplierName + ","); logCsv.WriteBaseData("MeterBaseCustomerSupplier", customerInfo.ToString()); } } } } /// /// 保存计量点信息到csv文件 /// /// private void saveSpotInfo(RESTfulResult> result) { StringBuilder spotInfoHead = new StringBuilder(); // 客商头 spotInfoHead.Append("spotNo,");//若第一行默认为当前时间则第一行多个逗号 spotInfoHead.Append("spotName"); logCsv.WriteBaseData("MeterBaseSpotInfo", spotInfoHead.ToString()); if (result.Succeed) { StringBuilder spotInfo = new StringBuilder(); // 物料体 List list = result.Data; if (result.Data != null) { foreach (MeterBaseSpotInfo info in list) { spotInfo.Clear(); spotInfo.Append(info.baseSpotNo + ","); spotInfo.Append(info.baseSpotName + ","); logCsv.WriteBaseData("MeterBaseSpotInfo", spotInfo.ToString()); } } } } /// /// 从csv文件读取物料信息 /// /// private DataTable selectMatterInfo() { if (System.IO.Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "baseData") == true && System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + "baseData\\MeterBaseMatterInfo.csv") == true) { string path = AppDomain.CurrentDomain.BaseDirectory + "baseData\\MeterBaseMatterInfo.csv"; DataTable csvDataTable = OpenCSV(path); int rowCount = csvDataTable.Rows.Count; if (csvDataTable != null && csvDataTable.Rows.Count > 0) { DataTable newCsvDataTable = new DataTable(); newCsvDataTable.Columns.Add("name"); newCsvDataTable.Columns.Add("value"); for (int i = 1; i < csvDataTable.Rows.Count; i++) { DataRow dr = newCsvDataTable.NewRow(); dr[0] = csvDataTable.Rows[i]["matterName"].ToString(); dr[1] = csvDataTable.Rows[i]["matterNo"].ToString(); newCsvDataTable.Rows.Add(dr); } return newCsvDataTable; } else { return null; } } else { return null; } } /// /// 从csv文件读取收发货单位信息 /// /// private DataTable selectCustomerInfo() { if (System.IO.Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "baseData") == true && System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + "baseData\\MeterBaseCustomerSupplier.csv") == true) { string path = AppDomain.CurrentDomain.BaseDirectory + "baseData\\MeterBaseCustomerSupplier.csv"; DataTable csvDataTable = OpenCSV(path); int rowCount = csvDataTable.Rows.Count; if (csvDataTable != null && csvDataTable.Rows.Count > 0) { DataTable newCsvDataTable = new DataTable(); newCsvDataTable.Columns.Add("name"); newCsvDataTable.Columns.Add("value"); for (int i = 1; i < csvDataTable.Rows.Count; i++) { DataRow dr = newCsvDataTable.NewRow(); dr[0] = csvDataTable.Rows[i]["customerSupplierName"].ToString(); dr[1] = csvDataTable.Rows[i]["customerSupplierNo"].ToString(); newCsvDataTable.Rows.Add(dr); } return newCsvDataTable; } else { return null; } } else { return null; } } /// /// 从csv文件读取计量点信息 /// /// private DataTable selectSpotInfo() { if (System.IO.Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "baseData") == true && System.IO.File.Exists(AppDomain.CurrentDomain.BaseDirectory + "baseData\\MeterBaseSpotInfo.csv") == true) { string path = AppDomain.CurrentDomain.BaseDirectory + "baseData\\MeterBaseSpotInfo.csv"; DataTable csvDataTable = OpenCSV(path); int rowCount = csvDataTable.Rows.Count; if (csvDataTable != null && csvDataTable.Rows.Count > 0) { DataTable newCsvDataTable = new DataTable(); newCsvDataTable.Columns.Add("name"); newCsvDataTable.Columns.Add("value"); for (int i = 1; i < csvDataTable.Rows.Count; i++) { DataRow dr = newCsvDataTable.NewRow(); dr[0] = csvDataTable.Rows[i]["spotName"].ToString(); dr[1] = csvDataTable.Rows[i]["spotNo"].ToString(); newCsvDataTable.Rows.Add(dr); } return newCsvDataTable; } else { return null; } } else { return null; } } /// /// 终端截图 /// public void shotImage(string actualFirstNo) { try { string spotNo = ConfigurationManager.AppSettings["spotNo"].ToString().Trim(); #region 截取图片信息 //截取屏幕信息 Point screenPoint = this.PointToScreen(new Point()); Rectangle rect = new Rectangle(screenPoint, this.Size); Image img = new Bitmap(rect.Width, rect.Height); Graphics g = Graphics.FromImage(img); g.CopyFromScreen(rect.X - 1, rect.Y - 1, 0, 0, rect.Size);//"D://file/1.jpg" img.Save(string.Format("{0}baseData\\imgShort\\formalImg\\{1}_{2}_{3}.jpg", AppDomain.CurrentDomain.SetupInformation.ApplicationBase, spotNo, actualFirstNo, 7), System.Drawing.Imaging.ImageFormat.Jpeg); //(PbCache.videoChild.Count + 1)), System.Drawing.Imaging.ImageFormat.Jpeg); //* //最后进行截图操作 CameraShotCls cameraShot = new CameraShotCls(); cameraShot.CapMethod(actualFirstNo); //*/ #endregion 截取图片信息 } catch (Exception ex) { } } } }