|
|
@@ -66,7 +66,7 @@ namespace RailLocalMeter
|
|
|
/// <summary>
|
|
|
/// rfid车号识别
|
|
|
/// </summary>
|
|
|
- RfIdCarNo rfid = new RfIdCarNo();
|
|
|
+ RfidRailWayNo rfid = new RfidRailWayNo();
|
|
|
|
|
|
/// <summary>
|
|
|
/// Ping服务器服务是否通
|
|
|
@@ -87,13 +87,23 @@ namespace RailLocalMeter
|
|
|
int iPic = 0;
|
|
|
|
|
|
int lockWgtImg = 0;
|
|
|
- string strGuid = "";
|
|
|
+
|
|
|
|
|
|
//导出代码,如果要用,则丢到按钮事件中即可
|
|
|
//ClsControlPack.ExportDataWithSaveDialog2(ref ultraGridFirst, DateTime.Now.ToString("yyyyMMddHHmmss"));
|
|
|
|
|
|
private void frmMain_Load(object sender, EventArgs e)
|
|
|
{
|
|
|
+ if (AppConfigCache.openCom == "0")
|
|
|
+ {
|
|
|
+ rfid.StartThreadSweep(out string msg);
|
|
|
+ if (!string.IsNullOrEmpty(msg))
|
|
|
+ {
|
|
|
+ MessageBox.Show(msg);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
try
|
|
|
{
|
|
|
IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
|
|
|
@@ -109,7 +119,7 @@ namespace RailLocalMeter
|
|
|
|
|
|
CacleCls.isJg = true;
|
|
|
CacleCls.updateRfidInfoTime = DateTime.Now;
|
|
|
- if (!string.IsNullOrEmpty(AppConfigCache.ledIp))
|
|
|
+ if (!string.IsNullOrEmpty(AppConfigCache.ledIp) && AppConfigCache.ledStart == "0")
|
|
|
{
|
|
|
led_controler = new LED_Control(AppConfigCache.ledIp);
|
|
|
}
|
|
|
@@ -166,7 +176,6 @@ namespace RailLocalMeter
|
|
|
//*
|
|
|
ping.start();
|
|
|
mx.start();
|
|
|
- rfid.Start();
|
|
|
imgControl.Start();
|
|
|
upload.start();
|
|
|
|
|
|
@@ -174,8 +183,8 @@ namespace RailLocalMeter
|
|
|
DataCollectThread = new Thread(new ThreadStart(DataCollect));
|
|
|
start();
|
|
|
|
|
|
- BindTable<MeterWorkRailwayActFirst>(ultraGridLocalFirst, dataTableWaitFirst, "localFirst");
|
|
|
- BindTable<MeterWorkRailwayActual>(ultraGridLocalNet, dataTableWaitNet, "localNet");
|
|
|
+ BindTable<MeterWorkRailwayActFirst>(ultraGridLocalFirst, dataTableLocalFirst, "localFirst");
|
|
|
+ BindTable<MeterWorkRailwayActual>(ultraGridLocalNet, dataTableLocalNet, "localNet");
|
|
|
}
|
|
|
|
|
|
#region 语音控制
|
|
|
@@ -222,11 +231,12 @@ namespace RailLocalMeter
|
|
|
bool blThreadFlag;//数据采集线程开关
|
|
|
Thread DataCollectThread = null;//采集进程
|
|
|
|
|
|
- bool flagCaption = false, isVoiceDownCar = false;
|
|
|
+ bool isVoiceDownCar = false;
|
|
|
string strOldCarNo = "";
|
|
|
bool isMeasureSuccess = false;
|
|
|
+ string strFinishCarNo = "";//计量成功的车号
|
|
|
int voiceNum = 0;
|
|
|
- int iImgCnt = 0;
|
|
|
+
|
|
|
|
|
|
private void start() => DataCollectThread.Start();
|
|
|
|
|
|
@@ -265,10 +275,13 @@ namespace RailLocalMeter
|
|
|
}
|
|
|
if (strOldCarNo != CacleCls.lockCarNo)
|
|
|
{
|
|
|
+ txtMsgInfo.Text = "";//车号不同的情况下清理下保存按钮
|
|
|
isUseLabelTare = false;
|
|
|
strOldCarNo = CacleCls.lockCarNo;
|
|
|
flagQuery = false;
|
|
|
CacleCls.isLock = false;//车号不同了则不锁定
|
|
|
+ voiceNum = 0;
|
|
|
+ isMeasureSuccess = false;
|
|
|
}
|
|
|
|
|
|
#region 获取一次数据跟车号
|
|
|
@@ -291,7 +304,6 @@ namespace RailLocalMeter
|
|
|
if (CacleCls.weight > 1000)
|
|
|
{
|
|
|
iError = 21;
|
|
|
- iImgCnt = 0;
|
|
|
CacleCls.isClear = false;
|
|
|
|
|
|
#region 如果是自动计量
|
|
|
@@ -301,7 +313,7 @@ namespace RailLocalMeter
|
|
|
{
|
|
|
txtMsgInfo.Text = "车号未识别";
|
|
|
vicPlayClass.GetVoicePlay(VoiceEnum.车号未识别, "");
|
|
|
- led_controler.setStaticLineMsg(AppConfigCache.ledIp, "车号未识别");
|
|
|
+ led_controler?.setStaticLineMsg(AppConfigCache.ledIp, "车号未识别");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -309,7 +321,7 @@ namespace RailLocalMeter
|
|
|
{
|
|
|
txtMsgInfo.Text = "车号不为7位";
|
|
|
vicPlayClass.GetVoicePlay(VoiceEnum.车号未识别, "");
|
|
|
- led_controler.setStaticLineMsg(AppConfigCache.ledIp, "车号不为7位");
|
|
|
+ led_controler?.setStaticLineMsg(AppConfigCache.ledIp, "车号不为7位");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -319,7 +331,7 @@ namespace RailLocalMeter
|
|
|
//超量程
|
|
|
vicPlayClass.GetVoicePlay(VoiceEnum.车辆超重, CacleCls.lockCarNo);
|
|
|
txtMsgInfo.Text = "当前重量已超量程,秤体量程为【" + AppConfigCache.maxRange + "】T";
|
|
|
- led_controler.setStaticLineMsg(AppConfigCache.ledIp, "当前重量已超量程,秤体量程为【" + AppConfigCache.maxRange + "】T");
|
|
|
+ led_controler?.setStaticLineMsg(AppConfigCache.ledIp, "当前重量已超量程,秤体量程为【" + AppConfigCache.maxRange + "】T");
|
|
|
CacleCls.isLock = false;
|
|
|
return;
|
|
|
}
|
|
|
@@ -329,7 +341,7 @@ namespace RailLocalMeter
|
|
|
//重量稳定,且对射验证不合格
|
|
|
vicPlayClass.GetVoicePlay(VoiceEnum.车辆未停到位, CacleCls.lockCarNo);
|
|
|
txtMsgInfo.Text = "车辆超出秤台,请调整车位";
|
|
|
- led_controler.setStaticLineMsg(AppConfigCache.ledIp, "车辆超出秤台,请调整车位");
|
|
|
+ led_controler?.setStaticLineMsg(AppConfigCache.ledIp, "车辆超出秤台,请调整车位");
|
|
|
CacleCls.isLock = false;
|
|
|
return;
|
|
|
}
|
|
|
@@ -343,6 +355,10 @@ namespace RailLocalMeter
|
|
|
|
|
|
lg.WriteLog(LogType.SystemLog, CacleCls.lockCarNo + "开始保存:" + DateTime.Now.ToLongTimeString());
|
|
|
}
|
|
|
+ if (CacleCls.lockCarNo == strFinishCarNo && isMeasureSuccess)
|
|
|
+ {
|
|
|
+ return; //如果车号相同,且计量成功了,那么此时不应该触发自动计量
|
|
|
+ }
|
|
|
btnSave_Click(null, null);
|
|
|
}
|
|
|
#endregion
|
|
|
@@ -368,9 +384,7 @@ namespace RailLocalMeter
|
|
|
voiceNum = 0;
|
|
|
isMeasureSuccess = false;
|
|
|
lockWgtImg = CacleCls.weight;
|
|
|
- flagCaption = false;
|
|
|
isVoiceDownCar = false;
|
|
|
- strGuid = "";
|
|
|
|
|
|
if (!CacleCls.isClear)
|
|
|
{
|
|
|
@@ -382,7 +396,6 @@ namespace RailLocalMeter
|
|
|
txtFORWARDING_UNIT_NAME.Text = "";
|
|
|
txtRECEIVING_UINT_NAME.Text = "";
|
|
|
txtMETER_TYPE.Text = "";
|
|
|
- txtCarNo.Enabled = true;
|
|
|
txtMsgInfo.Text = "";
|
|
|
txtGroess.Text = "";
|
|
|
txtTare.Text = "";
|
|
|
@@ -392,10 +405,6 @@ namespace RailLocalMeter
|
|
|
//释放一次内存
|
|
|
FlushMemory();
|
|
|
iError = 34;
|
|
|
-
|
|
|
- //
|
|
|
- imgControl.ZipFiles();
|
|
|
- iError = 35;
|
|
|
}
|
|
|
}
|
|
|
}));
|
|
|
@@ -432,15 +441,15 @@ namespace RailLocalMeter
|
|
|
|
|
|
private void cbJg_CheckedChanged(object sender, EventArgs e)
|
|
|
{
|
|
|
- CacleCls.isJg = cbJg.Checked;
|
|
|
- btnSave.Enabled = cbJg.Checked;
|
|
|
+ CacleCls.isJg = !cbJg.Checked;
|
|
|
+ btnSave.Enabled = !cbJg.Checked;
|
|
|
}
|
|
|
|
|
|
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
|
|
|
{
|
|
|
stop();
|
|
|
try { mx?.ClosingCollect(); } catch { }
|
|
|
- try { rfid?.ClosingCollect(); } catch { }
|
|
|
+ try { rfid?.CloseThread(); } catch { }
|
|
|
try { if (bVoice) ce?.StopTalk(); } catch { }
|
|
|
try { upload?.stop(); } catch { }
|
|
|
|
|
|
@@ -470,6 +479,8 @@ namespace RailLocalMeter
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
+ isMeasureSuccess = false;
|
|
|
+
|
|
|
#region 下面是业务逻辑代码
|
|
|
string msgInfo = "";
|
|
|
if (txtCarNo.Focused) return; //如果正在修改车号,就必须等光标离开后再保存,否则容易导致车号输入了一半保存了
|
|
|
@@ -489,7 +500,7 @@ namespace RailLocalMeter
|
|
|
}
|
|
|
|
|
|
|
|
|
- if (CacleCls.isJg)
|
|
|
+ if (CacleCls.isJg)
|
|
|
{
|
|
|
//接管状态点的保存
|
|
|
if (!isUseLabelTare && MessageBox.Show("是否确认保存当前计量数据?", "提示", MessageBoxButtons.OKCancel) != DialogResult.OK)
|
|
|
@@ -502,13 +513,13 @@ namespace RailLocalMeter
|
|
|
txtMsgInfo.Text = "没有车号,无法保存";
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (CacleCls.lockWgt < 1000)
|
|
|
{
|
|
|
txtMsgInfo.Text = "重量过小,无法保存";
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (CacleCls.isWd != 0)
|
|
|
{
|
|
|
DialogResult dr = MessageBox.Show($"[{CacleCls.lockCarNo}]重量不稳定,请确认是否保存当前计量数据?", "提示", MessageBoxButtons.OKCancel);
|
|
|
@@ -517,7 +528,7 @@ namespace RailLocalMeter
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (CacleCls.topJg == "1" || CacleCls.bottomJg == "1")
|
|
|
{
|
|
|
DialogResult dr = MessageBox.Show($"[{CacleCls.lockCarNo}]未停到位,请确认是否保存当前计量数据?", "提示", MessageBoxButtons.OKCancel);
|
|
|
@@ -537,7 +548,7 @@ namespace RailLocalMeter
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
|
|
|
/*
|
|
|
//存在零点,且不为接管状态则禁止计量
|
|
|
@@ -545,7 +556,7 @@ namespace RailLocalMeter
|
|
|
{
|
|
|
vicPlayClass.GetVoicePlay(VoiceEnum.仪表未归零, CacleCls.lockCarNo);
|
|
|
txtMsgInfo.Text = "仪表未归零,无法计量"; //btnSave_Click
|
|
|
- led_controler.setStaticLineMsg(AppConfigCache.ledIp, "仪表未归零,无法计量");
|
|
|
+ led_controler?.setStaticLineMsg(AppConfigCache.ledIp, "仪表未归零,无法计量");
|
|
|
return;
|
|
|
}
|
|
|
//*/
|
|
|
@@ -554,7 +565,7 @@ namespace RailLocalMeter
|
|
|
CacleCls.firstDb = null;
|
|
|
CacleCls.preTrackScale = null;
|
|
|
//如果是自动计量的,只保存一次数据,且不匹配预报
|
|
|
- if (CacleCls.isJg)
|
|
|
+ if (CacleCls.isJg)
|
|
|
{
|
|
|
ultraGridFirst.UpdateData();
|
|
|
foreach (UltraGridRow ugr in ultraGridFirst.Rows)
|
|
|
@@ -576,7 +587,7 @@ namespace RailLocalMeter
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
|
|
|
if (CacleCls.firstDb != null && !isUseLabelTare)
|
|
|
{
|
|
|
@@ -591,48 +602,12 @@ namespace RailLocalMeter
|
|
|
}
|
|
|
|
|
|
lg.WriteLog(LogType.SystemLog, $"锁定车号:{CacleCls.lockCarNo},锁定重量:{CacleCls.lockWgt},rfid编号:{CacleCls.rfidEpc},rfid车号:{CacleCls.rfidCarNo}");
|
|
|
-
|
|
|
txtMsgInfo.Text = "称重保存中......";
|
|
|
|
|
|
CacleCls.isLock = true;
|
|
|
txtCarNo.Enabled = false;
|
|
|
|
|
|
- strGuid = strGuid == "" ? Guid.NewGuid().ToString() : strGuid;
|
|
|
- #region 截图
|
|
|
- if (!flagCaption)
|
|
|
- {
|
|
|
- for (int i = 0; i < lc.Count(); i++)
|
|
|
- {
|
|
|
- //从_2开始,因为_1是仪表图片 2是车号快照抓拍
|
|
|
- ce.CapPic((uint)lc[i], $"{AppConfigCache.path}/imgShort/formalImg/{AppConfigCache.pointNo}_C{strGuid}_tempImg_{i + 2}.jpg");
|
|
|
- }
|
|
|
- flagCaption = true;
|
|
|
- }
|
|
|
-
|
|
|
- if (lockWgtImg != CacleCls.lockWgt)
|
|
|
- {
|
|
|
- lockWgtImg = CacleCls.lockWgt;
|
|
|
-
|
|
|
- foreach (Control cn in panel1.Controls)
|
|
|
- {
|
|
|
- if (cn.Name.Substring(cn.Name.Length - 1) == $"{AppConfigCache.channel}")
|
|
|
- {
|
|
|
- if (cn is PictureBox)
|
|
|
- {
|
|
|
- Bitmap bit = new Bitmap(cn.Width, cn.Height);//实例化一个和窗体一样大的bitmap
|
|
|
- Graphics g = Graphics.FromImage(bit);
|
|
|
- g.CompositingQuality = CompositingQuality.HighQuality;//质量设为最高 HighQuality
|
|
|
- g.CopyFromScreen(panel1.Left, panel1.Top + 25, 0, 0, new Size(cn.Width, cn.Height));//保存整个窗体为图片
|
|
|
- bit.Save($"{AppConfigCache.path}/imgShort/formalImg/{AppConfigCache.pointNo}_C{strGuid}_tempImg_1.jpg");//默认保存格式为PNG,保存成jpg格式质量不是很好
|
|
|
- bit.Dispose();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- #endregion
|
|
|
-
|
|
|
-
|
|
|
+ string strGuid = Guid.NewGuid().ToString();
|
|
|
|
|
|
if (isUseLabelTare) //如果是用期限皮结净
|
|
|
{
|
|
|
@@ -640,25 +615,27 @@ namespace RailLocalMeter
|
|
|
{
|
|
|
MeterWorkRailwayActFirst firstDb = new MeterWorkRailwayActFirst();
|
|
|
CreateFirst(ref firstDb);
|
|
|
-
|
|
|
+
|
|
|
if (CacleCls.preTrackScale != null)
|
|
|
{
|
|
|
CacleCls.preTrackScale.format(firstDb);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
firstDb.weightType = "0";
|
|
|
- firstDb.railwayFactoryWeight = Convert.ToDouble((txtTare.Value * 1000).ToString());
|
|
|
+ firstDb.railwayFactoryWeight = Convert.ToDouble(txtTare.Value * 1000);
|
|
|
firstDb.valueFlag = "2";
|
|
|
|
|
|
- if (firstService.doIdentifyWeight(firstDb).Succeed)
|
|
|
+ RESTfulResult<ResponseData> rt = firstService.doIdentifyWeight(firstDb, out msgInfo);
|
|
|
+ if (rt.Succeed)
|
|
|
{
|
|
|
//保存成功
|
|
|
isMeasureSuccess = true;
|
|
|
+ CaptionImg(rt.Data.actuals[0].actualFirst1No);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
vicPlayClass.GetVoicePlay(VoiceEnum.程序处理异常, CacleCls.lockCarNo);
|
|
|
- led_controler.setStaticLineMsg(AppConfigCache.ledIp, "计量失败,请联系管理员");
|
|
|
+ led_controler?.setStaticLineMsg(AppConfigCache.ledIp, "计量失败,请联系管理员");
|
|
|
txtMsgInfo.Text = "计量失败写入,本地文件异常:" + msgInfo;
|
|
|
lg.WriteLog(LogType.serverLog, "计量失败,写入本地文件异常:" + msgInfo);
|
|
|
CacleCls.isLock = false;
|
|
|
@@ -669,6 +646,7 @@ namespace RailLocalMeter
|
|
|
{
|
|
|
//断网只有一种结净,就是标识皮结净
|
|
|
MeterWorkRailwayActual netDb = new MeterWorkRailwayActual();
|
|
|
+ netDb.actualNo = strGuid;
|
|
|
netDb.baseSpot1No = AppConfigCache.pointNo;
|
|
|
netDb.baseSpot1Name = AppConfigCache.pointName;
|
|
|
netDb.baseSpot2No = AppConfigCache.pointNo;
|
|
|
@@ -681,7 +659,7 @@ namespace RailLocalMeter
|
|
|
netDb.conveyanceType = CacleCls.carType;
|
|
|
netDb.railwayNo = CacleCls.lockCarNo;
|
|
|
netDb.lcNo = "无列次";
|
|
|
- netDb.tareWeight = Convert.ToDouble(txtTare.Value);
|
|
|
+ netDb.tareWeight = Convert.ToDouble(txtTare.Value * 1000);
|
|
|
netDb.tareManNo = "system";
|
|
|
netDb.tareManName = "system";
|
|
|
netDb.tareTime = DateTime.Now;
|
|
|
@@ -694,7 +672,7 @@ namespace RailLocalMeter
|
|
|
netDb.netManNo = "system";
|
|
|
netDb.netManName = "system";
|
|
|
netDb.netTime = DateTime.Now;
|
|
|
- netDb.netWeight = Convert.ToDouble(CacleCls.lockWgt - txtTare.Value);
|
|
|
+ netDb.netWeight = Convert.ToDouble(CacleCls.lockWgt - txtTare.Value * 1000);
|
|
|
|
|
|
netDb.dataSource = "3";
|
|
|
netDb.noticeNo = $"{ip},{Thread.CurrentThread.Name}";
|
|
|
@@ -703,8 +681,9 @@ namespace RailLocalMeter
|
|
|
{
|
|
|
//保存成功
|
|
|
isMeasureSuccess = true;
|
|
|
+ CaptionImg(strGuid);
|
|
|
}
|
|
|
- else
|
|
|
+ else
|
|
|
{
|
|
|
vicPlayClass.GetVoicePlay(VoiceEnum.程序处理异常, CacleCls.lockCarNo);
|
|
|
lg.WriteLog(LogType.SystemLog, "计量失败1:" + msg);
|
|
|
@@ -726,15 +705,17 @@ namespace RailLocalMeter
|
|
|
CacleCls.preTrackScale.format(firstDb);
|
|
|
}
|
|
|
|
|
|
- if (firstService.add(firstDb).Succeed)
|
|
|
+ RESTfulResult<ResponseData> rt = firstService.add(firstDb, out msgInfo);
|
|
|
+ if (rt.Succeed)
|
|
|
{
|
|
|
//保存成功
|
|
|
isMeasureSuccess = true;
|
|
|
+ CaptionImg(rt.Data.firsts[0].actualFirstNo);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
vicPlayClass.GetVoicePlay(VoiceEnum.程序处理异常, CacleCls.lockCarNo);
|
|
|
- led_controler.setStaticLineMsg(AppConfigCache.ledIp, "计量失败,请联系管理员");
|
|
|
+ led_controler?.setStaticLineMsg(AppConfigCache.ledIp, "计量失败,请联系管理员");
|
|
|
txtMsgInfo.Text = "计量失败写入,本地文件异常:" + msgInfo;
|
|
|
lg.WriteLog(LogType.serverLog, "计量失败,写入本地文件异常:" + msgInfo);
|
|
|
CacleCls.isLock = false;
|
|
|
@@ -750,7 +731,7 @@ namespace RailLocalMeter
|
|
|
|
|
|
MeterWorkRailwayActFirst mwraf = new MeterWorkRailwayActFirst();
|
|
|
CreateFirst(ref mwraf);
|
|
|
-
|
|
|
+
|
|
|
if (CacleCls.preTrackScale != null)
|
|
|
{
|
|
|
CacleCls.preTrackScale.format(mwraf);
|
|
|
@@ -778,14 +759,16 @@ namespace RailLocalMeter
|
|
|
gross = CacleCls.firstDb;
|
|
|
}
|
|
|
|
|
|
- if (firstService.doAddWfStaticTwo(CacleCls.preTrackScale, gross, tare).Succeed)
|
|
|
+ RESTfulResult<ResponseData> rt = firstService.doAddWfStaticTwo(CacleCls.preTrackScale, gross, tare, out msgInfo);
|
|
|
+ if (rt.Succeed)
|
|
|
{
|
|
|
isMeasureSuccess = true; //保存成功
|
|
|
+ CaptionImg(rt.Data.firsts[0].actualFirstNo);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
vicPlayClass.GetVoicePlay(VoiceEnum.程序处理异常, CacleCls.lockCarNo);
|
|
|
- led_controler.setStaticLineMsg(AppConfigCache.ledIp, "计量失败,请联系管理员");
|
|
|
+ led_controler?.setStaticLineMsg(AppConfigCache.ledIp, "计量失败,请联系管理员");
|
|
|
txtMsgInfo.Text = "计量失败写入,本地文件异常:" + msgInfo;
|
|
|
lg.WriteLog(LogType.serverLog, "计量失败,写入本地文件异常:" + msgInfo);
|
|
|
CacleCls.isLock = false;
|
|
|
@@ -802,14 +785,17 @@ namespace RailLocalMeter
|
|
|
CacleCls.preTrackScale.format(firstDb);
|
|
|
}
|
|
|
|
|
|
- if (firstService.add(firstDb).Succeed)
|
|
|
+ RESTfulResult<ResponseData> rt = firstService.add(firstDb, out msgInfo);
|
|
|
+ if (rt.Succeed)
|
|
|
{
|
|
|
- isMeasureSuccess = true; //保存成功
|
|
|
+ //保存成功
|
|
|
+ isMeasureSuccess = true;
|
|
|
+ CaptionImg(rt.Data.firsts[0].actualFirstNo);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
vicPlayClass.GetVoicePlay(VoiceEnum.程序处理异常, CacleCls.lockCarNo);
|
|
|
- led_controler.setStaticLineMsg(AppConfigCache.ledIp, "计量失败,请联系管理员");
|
|
|
+ led_controler?.setStaticLineMsg(AppConfigCache.ledIp, "计量失败,请联系管理员");
|
|
|
txtMsgInfo.Text = "计量失败写入,本地文件异常:" + msgInfo;
|
|
|
lg.WriteLog(LogType.serverLog, "计量失败,写入本地文件异常:" + msgInfo);
|
|
|
CacleCls.isLock = false;
|
|
|
@@ -823,15 +809,16 @@ namespace RailLocalMeter
|
|
|
{
|
|
|
MeterWorkRailwayActFirst firstDb = new MeterWorkRailwayActFirst();
|
|
|
CreateFirst(ref firstDb);
|
|
|
-
|
|
|
+ firstDb.actualFirstNo = strGuid;
|
|
|
if (FileOption.WriterDb(firstDb, FileTypeEnum.一次数据, out string msg))
|
|
|
{
|
|
|
isMeasureSuccess = true;
|
|
|
+ CaptionImg(strGuid);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
vicPlayClass.GetVoicePlay(VoiceEnum.程序处理异常, CacleCls.lockCarNo);
|
|
|
- led_controler.setStaticLineMsg(AppConfigCache.ledIp, "计量失败,请联系管理员");
|
|
|
+ led_controler?.setStaticLineMsg(AppConfigCache.ledIp, "计量失败,请联系管理员");
|
|
|
txtMsgInfo.Text = "计量失败写入,本地文件异常:" + msgInfo;
|
|
|
lg.WriteLog(LogType.serverLog, "计量失败,写入本地文件异常:" + msgInfo);
|
|
|
CacleCls.isLock = false;
|
|
|
@@ -844,6 +831,7 @@ namespace RailLocalMeter
|
|
|
//计量成功
|
|
|
if (isMeasureSuccess)
|
|
|
{
|
|
|
+ strFinishCarNo = txtCarNo.Text.Trim();
|
|
|
txtMsgInfo.Text = "计量完成";
|
|
|
#region 毛皮净赋值
|
|
|
if (CacleCls.firstDb != null && CacleCls.firstDb.meterWeight > 0 && CacleCls.lockWgt > 0)
|
|
|
@@ -864,18 +852,17 @@ namespace RailLocalMeter
|
|
|
|
|
|
if (!string.IsNullOrEmpty(CacleCls.LEDResultMessage))
|
|
|
{
|
|
|
- led_controler.setStaticLineMsg(AppConfigCache.ledIp, CacleCls.LEDResultMessage);
|
|
|
+ led_controler?.setStaticLineMsg(AppConfigCache.ledIp, CacleCls.LEDResultMessage);
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
- //屏幕截图操作
|
|
|
- _ = BeginInvoke(new Action(() => { shotImageScreen(strGuid); }));
|
|
|
+
|
|
|
|
|
|
|
|
|
BindTable<PreRailwayScale>(ultraGridWaitFirst, dataTableWaitFirst, "firstWait");
|
|
|
BindTable<MeterWorkRailwayActual>(ultraGridWaitNet, dataTableWaitNet, "netWait");
|
|
|
- BindTable<MeterWorkRailwayActFirst>(ultraGridLocalFirst, dataTableWaitFirst, "localFirst");
|
|
|
- BindTable<MeterWorkRailwayActual>(ultraGridLocalNet, dataTableWaitNet, "localNet");
|
|
|
+ BindTable<MeterWorkRailwayActFirst>(ultraGridLocalFirst, dataTableLocalFirst, "localFirst");
|
|
|
+ BindTable<MeterWorkRailwayActual>(ultraGridLocalNet, dataTableLocalNet, "localNet");
|
|
|
}
|
|
|
#endregion
|
|
|
}
|
|
|
@@ -883,10 +870,48 @@ namespace RailLocalMeter
|
|
|
{
|
|
|
vicPlayClass.GetVoicePlay(VoiceEnum.程序处理异常, CacleCls.lockCarNo);
|
|
|
lg.WriteLog(LogType.SystemLog, "计量失败1:" + ex.Message);
|
|
|
+ }
|
|
|
+ finally
|
|
|
+ {
|
|
|
CacleCls.isLock = false;
|
|
|
+ txtCarNo.Enabled = true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ private void CaptionImg(string actNo)
|
|
|
+ {
|
|
|
+ #region 截图
|
|
|
+ //屏幕截图操作
|
|
|
+ //_ = BeginInvoke(new Action(() => { shotImageScreen(actNo); }));
|
|
|
+
|
|
|
+ for (int i = 0; i < lc.Count(); i++)
|
|
|
+ {
|
|
|
+ //从_2开始,因为_1是仪表图片 2是车号快照抓拍
|
|
|
+ ce.CapPic((uint)lc[i], $"{AppConfigCache.path}/imgShort/formalImg/{AppConfigCache.pointNo}_R{actNo}{(CacleCls.serverFlag?"":"_tempImg")}_{i + 2}.jpg");
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach (Control cn in panel1.Controls)
|
|
|
+ {
|
|
|
+ if (cn.Name.Substring(cn.Name.Length - 1) == $"{AppConfigCache.channel}")
|
|
|
+ {
|
|
|
+ if (cn is PictureBox)
|
|
|
+ {
|
|
|
+ Bitmap bit = new Bitmap(cn.Width, cn.Height);//实例化一个和窗体一样大的bitmap
|
|
|
+ Graphics g = Graphics.FromImage(bit);
|
|
|
+ g.CompositingQuality = CompositingQuality.HighQuality;//质量设为最高 HighQuality
|
|
|
+ g.CopyFromScreen(panel1.Left, panel1.Top + 25, 0, 0, new Size(cn.Width, cn.Height));//保存整个窗体为图片
|
|
|
+ bit.Save($"{AppConfigCache.path}/imgShort/formalImg/{AppConfigCache.pointNo}_R{actNo}{(CacleCls.serverFlag ? "" : "_tempImg")}_1.jpg");//默认保存格式为PNG,保存成jpg格式质量不是很好
|
|
|
+ bit.Dispose();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
bool isUseLabelTare = false;
|
|
|
private void btnTareSaveOver_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
@@ -897,7 +922,7 @@ namespace RailLocalMeter
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if (CacleCls.weight - txtTare.Value <= 0)
|
|
|
+ if (CacleCls.weight - txtTare.Value * 1000 <= 0)
|
|
|
{
|
|
|
MessageBox.Show("结净重量过小无法结净");
|
|
|
txtTare.Focus();
|
|
|
@@ -909,7 +934,7 @@ namespace RailLocalMeter
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if (CacleCls.weight - txtTare.Value < AppConfigCache.differenceWgt)
|
|
|
+ if (CacleCls.weight - txtTare.Value * 1000 < AppConfigCache.differenceWgt)
|
|
|
{
|
|
|
DialogResult dr = MessageBox.Show("净重小于" + AppConfigCache.differenceWgt / 1000 + "吨,请确认是否保存当前计量数据?", "提示", MessageBoxButtons.OKCancel);
|
|
|
if (dr == DialogResult.Cancel)
|
|
|
@@ -917,7 +942,8 @@ namespace RailLocalMeter
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ voiceNum = 0;
|
|
|
+ isMeasureSuccess = false;
|
|
|
txtMsgInfo.Text = "";
|
|
|
isUseLabelTare = true;
|
|
|
btnSave.PerformClick();
|
|
|
@@ -1007,6 +1033,26 @@ namespace RailLocalMeter
|
|
|
if (lm != null && lm.Count > 0)
|
|
|
{
|
|
|
dtV = lm.ListToDataTable<T>();
|
|
|
+
|
|
|
+ List<string> ls = new List<string>();
|
|
|
+ foreach (DataColumn dc in dtV.Columns)
|
|
|
+ {
|
|
|
+ if (dc.ColumnName == "meterWeight"|| dc.ColumnName == "grossWeight" || dc.ColumnName == "tareWeight" || dc.ColumnName == "netWeight")
|
|
|
+ {
|
|
|
+ ls.Add(dc.ColumnName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach (DataRow dr in dtV.Rows)
|
|
|
+ {
|
|
|
+ foreach (string str in ls)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(dr[str]?.ToString()))
|
|
|
+ {
|
|
|
+ dr[str] = Convert.ToDouble(dr[str]) / 1000;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
ClsControlPack.CopyDataToDatatable(ref dtV, ref dtDatabase, true);
|
|
|
ClsControlPack.RefreshAndAutoSize(ug);
|
|
|
@@ -1101,14 +1147,68 @@ namespace RailLocalMeter
|
|
|
private void btnSubmitFirstWait_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
ultraGridWaitFirst.UpdateData();
|
|
|
+ if (dataTableWaitFirst != null && dataTableWaitFirst.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ List<MeterWorkRailwayActFirst> ltAdd = new List<MeterWorkRailwayActFirst>();
|
|
|
+ List<MeterWorkRailwayActFirst> lt = dataTableWaitFirst.TableToDataList<MeterWorkRailwayActFirst>();
|
|
|
+ foreach (UltraGridRow ugr in ultraGridWaitFirst.Rows)
|
|
|
+ {
|
|
|
+ if (ugr.Cells["UNCK"].Value.ToString().ToUpper() == "TRUE")
|
|
|
+ {
|
|
|
+ MeterWorkRailwayActFirst first = lt.Where(s=>s.actualFirstNo== ugr.Cells["actualFirstNo"].Text.Trim()).FirstOrDefault();
|
|
|
+ if (first != null) ltAdd.Add(first);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
+ if (ltAdd.Count > 0)
|
|
|
+ {
|
|
|
+ if (firstService.BatchUpdateLcNo(ltAdd,out string msgInfo).Succeed)
|
|
|
+ {
|
|
|
+ isMeasureSuccess = true; //保存成功
|
|
|
+ MessageBox.Show("操作成功");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("操作失败:" + msgInfo);
|
|
|
+ lg.WriteLog(LogType.serverLog, "操作失败:" + msgInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private void btnNetSubmit_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
+ //先提交一次,然后再提交结净。按目前的搞法是如此
|
|
|
+ btnSubmitFirstWait_Click(null, null);
|
|
|
+
|
|
|
ultraGridWaitNet.UpdateData();
|
|
|
+ if (dataTableWaitNet != null && dataTableWaitNet.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ List<MeterWorkRailwayActual> ltAdd = new List<MeterWorkRailwayActual>();
|
|
|
+ List<MeterWorkRailwayActual> lt = dataTableWaitNet.TableToDataList<MeterWorkRailwayActual>();
|
|
|
+ foreach (UltraGridRow ugr in ultraGridWaitNet.Rows)
|
|
|
+ {
|
|
|
+ if (ugr.Cells["UNCK"].Value.ToString().ToUpper() == "TRUE")
|
|
|
+ {
|
|
|
+ MeterWorkRailwayActual net = lt.Where(s => s.actualNo == ugr.Cells["actualNo"].Text.Trim()).FirstOrDefault();
|
|
|
+ if (net != null) ltAdd.Add(net);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ if (ltAdd.Count > 0)
|
|
|
+ {
|
|
|
+ if (netService.BatchUpdateLcNo(ltAdd, out string msgInfo).Succeed)
|
|
|
+ {
|
|
|
+ isMeasureSuccess = true; //保存成功
|
|
|
+ MessageBox.Show("操作成功");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ MessageBox.Show("操作失败:" + msgInfo);
|
|
|
+ lg.WriteLog(LogType.serverLog, "操作失败:" + msgInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -1189,7 +1289,7 @@ namespace RailLocalMeter
|
|
|
mwraf.noticeNo = $"{ip},{Thread.CurrentThread.Name}";
|
|
|
if (isUseLabelTare)
|
|
|
{
|
|
|
- mwraf.railwayFactoryWeight = Convert.ToDouble(txtTare.Value.ToString());
|
|
|
+ mwraf.railwayFactoryWeight = Convert.ToDouble(txtTare.Value * 1000);
|
|
|
}
|
|
|
}
|
|
|
#endregion
|