| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- using com.hnshituo.core.webapp.vo;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- namespace RailLocalMeter
- {
- public class DbUpload
- {
- Log lg = Log.GetInstance();
- private bool blThreadFlag = true;
- Thread DataCollectThread = null;//采集进程
- MeterWorkRailwayActFirstService firstService = new MeterWorkRailwayActFirstService();
- MeterWorkRailwayActualService netService = new MeterWorkRailwayActualService();
- 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<string, string> dic = new Dictionary<string, string>();
- while (blThreadFlag)
- {
- try
- {
- //重量小于500且网络正常时触发
- if (CacleCls.weight < 500 && CacleCls.serverFlag)
- {
- dic.Clear();
- //若本地存在计量数据未进行上传的,则进行数据上传并得到返回的结果
- //得到结果后构造成Dictionary然后进行图片操作,修改图片名称及位置
- bool bReadFlag = false;
- string strRtMsgInfo = "";
- try
- {
- List<MeterWorkRailwayActFirst> lm = FileOption.ReadDb<MeterWorkRailwayActFirst>(FileTypeEnum.一次数据, ref bReadFlag, ref strRtMsgInfo);
- if (bReadFlag)
- {
- CacleCls.isUploadFirstOver = false;
- //进行数据上传操作
- RESTfulResult<List<DjPbModel>> rmRst = firstService.doDbUpload(lm);
- if (rmRst.Succeed)
- {
- if (rmRst.Data.Count == lm.Count)
- {
- //直接重写文件
- FileOption.clearFile(FileTypeEnum.一次数据);
- //然后对图片进行压缩及修改名称处理
- foreach (DjPbModel dm in rmRst.Data)
- {
- dic.Add(dm.key, dm.value);
- }
- }
- else
- {
- //清理下文件
- FileOption.clearFile(FileTypeEnum.一次数据);
- //重写下未成功的数据
- foreach (MeterWorkRailwayActFirst 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(first, FileTypeEnum.一次数据, out string msgInfo);
- if (!flag)
- {
- lg.WriteLog(LogType.serverLog, $"重写失败:{msgInfo},数据:{JsonConvert.SerializeObject(first, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }) }");
- }
- }
- else
- {
- dic.Add(pm.key, pm.value);
- }
- }
- }
- if (dic.Count > 0) imgControl.ZipFiles(dic);
- CacleCls.isUploadFirstOver = true;
- }
- else
- {
- //计量失败,播报失败,然后写led屏幕及日志
- lg.WriteLog(LogType.serverLog, rmRst.ResultMessage);
- }
- }
- }
- catch (Exception e)
- {
- lg.WriteLog(LogType.serverLog, "一次数据上传异常:" + e.Message);
- }
- bReadFlag = false;
- strRtMsgInfo = "";
- try
- {
- List<MeterWorkRailwayActual> lmNet = FileOption.ReadDb<MeterWorkRailwayActual>(FileTypeEnum.结净数据, ref bReadFlag, ref strRtMsgInfo);
- if (bReadFlag)
- {
- CacleCls.isUploadNetOver = false;
- //进行数据上传操作
- RESTfulResult<List<DjPbModel>> rmRst = netService.doDbUpload(lmNet);
- if (rmRst.Succeed)
- {
- if (rmRst.Data.Count == lmNet.Count)
- {
- //直接重写文件
- FileOption.clearFile(FileTypeEnum.结净数据);
- //然后对图片进行压缩及修改名称处理
- foreach (DjPbModel dm in rmRst.Data)
- {
- dic.Add(dm.key, dm.value);
- }
- }
- else
- {
- //清理下文件
- FileOption.clearFile(FileTypeEnum.结净数据);
- //重写下未成功的数据
- foreach (MeterWorkRailwayActual net in lmNet)
- {
- DjPbModel pm = rmRst.Data.Where(s => s.key == net.actualNo).FirstOrDefault();
- if (pm == null || string.IsNullOrEmpty(pm.key) || string.IsNullOrEmpty(pm.value))
- {
- //Thread.Sleep(100);
- bool flag = FileOption.WriterDb(net, FileTypeEnum.结净数据, out string msgInfo);
- if (!flag)
- {
- lg.WriteLog(LogType.serverLog, $"重写失败:{msgInfo},数据:{JsonConvert.SerializeObject(net, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }) }");
- }
- }
- else
- {
- dic.Add(pm.key, pm.value);
- }
- }
- }
- if (dic.Count > 0) imgControl.ZipFiles(dic);
- CacleCls.isUploadNetOver = true;
- }
- else
- {
- //计量失败,播报失败,然后写led屏幕及日志
- lg.WriteLog(LogType.serverLog, rmRst.ResultMessage);
- }
- }
- }
- catch (Exception e)
- {
- lg.WriteLog(LogType.serverLog, "结净数据上传异常:" + e.Message);
- }
- }
- }
- catch (Exception ex)
- {
- lg.WriteLog(LogType.SystemLog, "数据上传异常:" + ex.Message);
- }
- Thread.Sleep(AppConfigCache.sleepUploadTime);
- }
- }
- }
- }
|