using com.hnshituo.core.webapp.vo; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace CarLocalMeter { public class DbUpload { Log lg = Log.GetInstance(); private bool blThreadFlag = true; Thread DataCollectThread = null;//采集进程 MeterWorkCarActualFirstService workCarActualFirstService = new MeterWorkCarActualFirstService(); ImageOption imgControl = new ImageOption(); public DbUpload() { DataCollectThread = new Thread(new ThreadStart(DataCollect)); } public void start() { DataCollectThread.Start(); } public void stop() { blThreadFlag = false; } private void DataCollect() { if (!blThreadFlag) return; Dictionary dic = new Dictionary(); while (blThreadFlag) { try { //重量小于500且网络正常时触发 if (CacleCls.weight < 500 && CacleCls.serverFlag) { dic.Clear(); //若本地存在计量数据未进行上传的,则进行数据上传并得到返回的结果 //得到结果后构造成Dictionary然后进行图片操作,修改图片名称及位置 bool bReadFlag = false; string strRtMsgInfo = ""; List lm = FileOption.ReadDb(ref bReadFlag, ref strRtMsgInfo); if (bReadFlag) { //进行数据上传操作 RESTfulResult> rmRst = workCarActualFirstService.doDbUpload(lm); if (rmRst.Succeed) { if (rmRst.Data.Count == lm.Count) { //直接重写文件 FileOption.clearFile(); //然后对图片进行压缩及修改名称处理 foreach (DjPbModel dm in rmRst.Data) { dic.Add(dm.key, dm.value); } } else { //清理下文件 FileOption.clearFile(); //重写下未成功的数据 foreach (MeterWorkCarActualFirst first in lm) { DjPbModel pm = rmRst.Data.Where(s => s.key == first.actualFirstNo).FirstOrDefault(); if (pm == null || string.IsNullOrEmpty(pm.key) || string.IsNullOrEmpty(pm.value)) { //Thread.Sleep(100); bool flag = FileOption.WriterDb(new ActualFirstModel { actualFirstNo = first.actualFirstNo, baseSpotNo = first.baseSpotNo, baseSpotName = first.baseSpotName, carNo = first.carNo, createTime = first.createTime, meterWeight = first.meterWeight }, out string msgInfo); if (!flag) { lg.WriteLog(LogType.serverLog, $"重写失败:{msgInfo},数据:actualFirstNo{first.actualFirstNo},baseSpotNo:{first.baseSpotNo},baseSpotName:{first.baseSpotName},carNo:{first.carNo},createTime:{first.createTime},meterWeight:{first.meterWeight}"); } } else { dic.Add(pm.key, pm.value); } } } if (dic.Count > 0) imgControl.ZipFiles(dic); } else { lg.WriteLog(LogType.serverLog, rmRst.ResultMessage); } } } } catch (Exception ex) { lg.WriteLog(LogType.SystemLog, "数据上传异常:" + ex.Message); } Thread.Sleep(AppConfigCache.sleepUploadTime); } } } }