|
|
@@ -178,6 +178,7 @@ namespace CarLocalMeter
|
|
|
blThreadFlag = true;
|
|
|
DataCollectThread = new Thread(new ThreadStart(DataCollect));
|
|
|
start();
|
|
|
+ txtMsgInfo.Focus();
|
|
|
}
|
|
|
|
|
|
#region 本地主逻辑判断线程
|
|
|
@@ -188,7 +189,6 @@ namespace CarLocalMeter
|
|
|
string strOldCarNo = "";
|
|
|
bool isMeasureSuccess = false;
|
|
|
int voiceNum = 0;
|
|
|
- int iImgCnt = 0;
|
|
|
|
|
|
private void start() => DataCollectThread.Start();
|
|
|
|
|
|
@@ -250,7 +250,6 @@ namespace CarLocalMeter
|
|
|
if (CacleCls.weight > 500)
|
|
|
{
|
|
|
iError = 21;
|
|
|
- iImgCnt = 0;
|
|
|
CacleCls.isClear = false;
|
|
|
|
|
|
#region 一些必要验证及提醒
|
|
|
@@ -314,59 +313,6 @@ namespace CarLocalMeter
|
|
|
}
|
|
|
//*/
|
|
|
|
|
|
- #region 一次计量数据跟预报获取一次,有可能稳定特别快导致一次计量数据跟预报还未获取到,所以我这改为去保存按钮处获取
|
|
|
- /*
|
|
|
- if (!string.IsNullOrEmpty(CacleCls.lockCarNo) && CacleCls.serverFlag)
|
|
|
- {
|
|
|
- //查询一次计量数据
|
|
|
- if (!getFirst)
|
|
|
- {
|
|
|
- RESTfulResultOutTimer = workCarActualFirstService.doQueryWf(new MeterWorkCarActualFirst { valueFlag = "1", carNo = CacleCls.lockCarNo });
|
|
|
-
|
|
|
- if (RESTfulResultOutTimer.Succeed)
|
|
|
- {
|
|
|
- if (RESTfulResultOutTimer.Data != null && RESTfulResultOutTimer.Data.Count > 0)
|
|
|
- {
|
|
|
- CacleCls.firstDb = RESTfulResultOutTimer.Data[0];
|
|
|
- if (CacleCls.firstDb.predictionNo != null && !CacleCls.firstDb.predictionNo.Contains("_"))
|
|
|
- {
|
|
|
- txtMATTER_NAME.Text = CacleCls.firstDb.matterName;
|
|
|
- txtFORWARDING_UNIT_NAME.Text = CacleCls.firstDb.forwardingUnitName;
|
|
|
- txtRECEIVING_UINT_NAME.Text = CacleCls.firstDb.receivingUintName;
|
|
|
- txtMETER_TYPE.Text = CacleCls.firstDb.meterTypeName;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- getFirst = true;
|
|
|
- }
|
|
|
- iError = 24;
|
|
|
- //根据网络状态及车号以及是否存在一次计量数据,查询一次预报信息,然后将getPreInfo改为true
|
|
|
- if (!getPreInfo)
|
|
|
- {
|
|
|
- if (CacleCls.firstDb == null || string.IsNullOrEmpty(CacleCls.firstDb?.predictionNo))
|
|
|
- {
|
|
|
- //如果没有一次信息或者一次信息里面没带预报信息,则查询一次预报信息
|
|
|
- rmScaleListCarTimer = PreTrackScaleService.doQueryByFlag(new PreTrackScale { lineDesc = "1", carNo = CacleCls.lockCarNo });
|
|
|
- if (rmScaleListCarTimer.Succeed)
|
|
|
- {
|
|
|
- if (rmScaleListCarTimer.Data != null && rmScaleListCarTimer.Data.Count == 1)
|
|
|
- {
|
|
|
- CacleCls.preTrackScale = rmScaleListCarTimer.Data[0];
|
|
|
-
|
|
|
- txtMATTER_NAME.Text = CacleCls.preTrackScale.matterName;
|
|
|
- txtFORWARDING_UNIT_NAME.Text = CacleCls.preTrackScale.forwardingUnitName;
|
|
|
- txtRECEIVING_UINT_NAME.Text = CacleCls.preTrackScale.receivingUintName;
|
|
|
- txtMETER_TYPE.Text = CacleCls.preTrackScale.meterTypeName;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- getPreInfo = true;
|
|
|
- }
|
|
|
- iError = 25;
|
|
|
- }
|
|
|
- //*/
|
|
|
- #endregion
|
|
|
-
|
|
|
|
|
|
//进行计量称重条件的判断 车号不为空、重量稳定、车辆已停到位
|
|
|
if (CacleCls.isWd == 0 && CacleCls.leftGs != "1" && CacleCls.rightGs != "1" && CacleCls.topJg != "1" && CacleCls.bottomJg != "1")
|
|
|
@@ -407,7 +353,10 @@ namespace CarLocalMeter
|
|
|
{
|
|
|
if (CacleCls.voiceOver)
|
|
|
{
|
|
|
- vicPlayClass.GetVoicePlay(VoiceEnum.计量完成, CacleCls.lockCarNo);
|
|
|
+ if(flagPre)
|
|
|
+ vicPlayClass.GetVoicePlay(VoiceEnum.计量完成, CacleCls.lockCarNo);
|
|
|
+ else
|
|
|
+ vicPlayClass.GetVoicePlay(VoiceEnum.计量完成多委托, CacleCls.lockCarNo);
|
|
|
voiceNum++;
|
|
|
}
|
|
|
}
|
|
|
@@ -426,11 +375,14 @@ namespace CarLocalMeter
|
|
|
flagCaption = false;
|
|
|
isVoiceDownCar = false;
|
|
|
strGuid = "";
|
|
|
+ flagPre = true;
|
|
|
|
|
|
if (!CacleCls.isClear)
|
|
|
{
|
|
|
+
|
|
|
iError = 32;
|
|
|
CacleCls.Clear(); //清理一次数据
|
|
|
+ txtMsgInfo.Focus();
|
|
|
btnSave.Enabled = false;
|
|
|
cbCarNo.Text = "";
|
|
|
cbCarNo.SelectedIndex = -1;
|
|
|
@@ -445,7 +397,7 @@ namespace CarLocalMeter
|
|
|
txtGroess.Text = "";
|
|
|
txtTare.Text = "";
|
|
|
txtNet.Text = "";
|
|
|
-
|
|
|
+ led_controler.setStaticLineMsg(AppConfigCache.ledIp, $"欢迎使用,智能计量");
|
|
|
iError = 33;
|
|
|
//释放一次内存
|
|
|
FlushMemory();
|
|
|
@@ -471,6 +423,7 @@ namespace CarLocalMeter
|
|
|
|
|
|
int lockWgtImg = 0;
|
|
|
string strGuid = "";
|
|
|
+ bool flagPre = true;
|
|
|
private void btnSave_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
try
|
|
|
@@ -534,13 +487,15 @@ namespace CarLocalMeter
|
|
|
|
|
|
if (!CacleCls.isJg && CacleCls.firstDb != null)
|
|
|
{
|
|
|
+ //*
|
|
|
if (Math.Abs(CacleCls.firstDb.meterWeight.Value - CacleCls.lockWgt) < AppConfigCache.differenceWgt)
|
|
|
{
|
|
|
- vicPlayClass.GetVoicePlay(VoiceEnum.洁净重量过小, CacleCls.lockCarNo);
|
|
|
- txtMsgInfo.Text = "计量失败,洁净重量过小";
|
|
|
- led_controler.setStaticLineMsg(AppConfigCache.ledIp, "计量失败,洁净重量过小");
|
|
|
+ vicPlayClass.GetVoicePlay(VoiceEnum.结净重量过小, CacleCls.lockCarNo);
|
|
|
+ txtMsgInfo.Text = "计量失败,结净重量过小";
|
|
|
+ led_controler.setStaticLineMsg(AppConfigCache.ledIp, "计量失败,结净重量过小");
|
|
|
return;
|
|
|
}
|
|
|
+ //*/
|
|
|
}
|
|
|
|
|
|
#region 获取一次数据跟车号
|
|
|
@@ -599,12 +554,38 @@ namespace CarLocalMeter
|
|
|
{
|
|
|
if (rmScaleListCarTimer.Data != null && rmScaleListCarTimer.Data.Count > 0)
|
|
|
{
|
|
|
- CacleCls.preTrackScale = rmScaleListCarTimer.Data[0];
|
|
|
+ CacleCls.preTrackScale = null;
|
|
|
+ if (!string.IsNullOrEmpty(CacleCls.firstDb.predictionNo))
|
|
|
+ {
|
|
|
+ CacleCls.preTrackScale = rmScaleListCarTimer.Data.Where(s => s.predictionNo == CacleCls.firstDb.predictionNo).FirstOrDefault();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ string strMat = "", strFor = "", strRec = "";
|
|
|
+ foreach (PreTrackScale pr in rmScaleListCarTimer.Data)
|
|
|
+ {
|
|
|
+ if (strMat == "")
|
|
|
+ {
|
|
|
+ strMat = pr.matterNo;
|
|
|
+ strFor = pr.forwardingUnitNo;
|
|
|
+ strRec = pr.receivingUintNo;
|
|
|
+ }
|
|
|
+ else if (pr.matterNo != strMat || pr.forwardingUnitNo != strFor || pr.receivingUintNo != strRec)
|
|
|
+ {
|
|
|
+ flagPre = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- txtMATTER_NAME.Text = CacleCls.preTrackScale.matterName;
|
|
|
- txtFORWARDING_UNIT_NAME.Text = CacleCls.preTrackScale.forwardingUnitName;
|
|
|
- txtRECEIVING_UINT_NAME.Text = CacleCls.preTrackScale.receivingUintName;
|
|
|
- txtMETER_TYPE.Text = CacleCls.preTrackScale.meterTypeName;
|
|
|
+ if (flagPre && CacleCls.preTrackScale != null)
|
|
|
+ {
|
|
|
+ txtMATTER_NAME.Text = CacleCls.preTrackScale.matterName;
|
|
|
+ txtFORWARDING_UNIT_NAME.Text = CacleCls.preTrackScale.forwardingUnitName;
|
|
|
+ txtRECEIVING_UINT_NAME.Text = CacleCls.preTrackScale.receivingUintName;
|
|
|
+ txtMETER_TYPE.Text = CacleCls.preTrackScale.meterTypeName;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -661,34 +642,17 @@ namespace CarLocalMeter
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- #region
|
|
|
- /* //下面的代码可实现抓放大的图,不过我这为了时间更准,抓的左侧显示的图
|
|
|
- if (iPic != 0)
|
|
|
- {
|
|
|
- ce.StopRealPlay(iPic);
|
|
|
- }
|
|
|
- ce.RealPlay(pictureShow, AppConfigCache.channel);
|
|
|
- plImgShow.Visible = true;
|
|
|
- Thread.Sleep(200);
|
|
|
- Bitmap bit = new Bitmap(plImgShow.Width, plImgShow.Height);//实例化一个和窗体一样大的bitmap
|
|
|
- Graphics g = Graphics.FromImage(bit);
|
|
|
- g.CompositingQuality = CompositingQuality.HighQuality;//质量设为最高 HighQuality
|
|
|
- g.CopyFromScreen(plImgShow.Left, plImgShow.Top + 25, 0, 0, new Size(plImgShow.Width, plImgShow.Height));//保存整个窗体为图片
|
|
|
- bit.Save($"{AppConfigCache.path}/imgShort/formalImg/{AppConfigCache.pointNo}_C{strGuid}_tempImg_1.jpg");//默认保存格式为PNG,保存成jpg格式质量不是很好
|
|
|
- bit.Dispose();
|
|
|
- plImgShow.Visible = false;
|
|
|
- ce.StopRealPlay(AppConfigCache.channel);
|
|
|
- //*/
|
|
|
- #endregion
|
|
|
+
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
if (CacleCls.serverFlag) //网络正常
|
|
|
{
|
|
|
//没有接管的情况下
|
|
|
- if (!CacleCls.isJg && CacleCls.firstDb != null && Math.Abs(CacleCls.firstDb.meterWeight.Value - AppConfigCache.differenceWgt) < AppConfigCache.differenceWgt)
|
|
|
+ //* 2023-04-22测试时注释,实际应用时需要
|
|
|
+ if (!CacleCls.isJg && CacleCls.firstDb != null && Math.Abs(CacleCls.firstDb.meterWeight.Value - CacleCls.lockWgt) < AppConfigCache.differenceWgt)
|
|
|
{
|
|
|
- string str = "第一次计量重量【" + CacleCls.firstDb.meterWeight.Value / 1000 + "T】和第二次计量重量【" + CacleCls.lockWgt / 1000 + "T】接近,小于结净最小值【" + AppConfigCache.differenceWgt / 1000 + " T】";
|
|
|
+ string str = "第一次计量重量【" + Math.Round((decimal)CacleCls.firstDb.meterWeight.Value / 1000, 2) + "T】和第二次计量重量【" + Math.Round((decimal)CacleCls.lockWgt / 1000, 2) + "T】接近,小于结净最小值【" + Math.Round((decimal)AppConfigCache.differenceWgt / 1000, 2) + " T】";
|
|
|
vicPlayClass.GetVoicePlay(VoiceEnum.两次计量重量接近, CacleCls.lockCarNo);
|
|
|
led_controler.setStaticLineMsg(AppConfigCache.ledIp, $"上次重量与当,前重量接近,需操作工确认");
|
|
|
txtMsgInfo.Text = str;
|
|
|
@@ -696,6 +660,7 @@ namespace CarLocalMeter
|
|
|
CacleCls.isLock = false;
|
|
|
return;
|
|
|
}
|
|
|
+ //*/
|
|
|
|
|
|
|
|
|
//一次计量
|
|
|
@@ -793,28 +758,42 @@ namespace CarLocalMeter
|
|
|
//计量成功
|
|
|
if (isMeasureSuccess)
|
|
|
{
|
|
|
- txtMsgInfo.Text = "计量完成";
|
|
|
+ btnSave.Enabled = false;
|
|
|
+
|
|
|
+ if (!flagPre)
|
|
|
+ {
|
|
|
+ txtMsgInfo.Text = "计量完成,存在多个委托";
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ txtMsgInfo.Text = "计量完成";
|
|
|
+ }
|
|
|
#region 毛皮净赋值
|
|
|
if (CacleCls.firstDb != null && CacleCls.firstDb.meterWeight > 0 && CacleCls.lockWgt > 0)
|
|
|
{
|
|
|
if (CacleCls.firstDb.meterWeight > CacleCls.lockWgt)
|
|
|
{
|
|
|
- txtGroess.Text = $"{CacleCls.firstDb.meterWeight / 1000}";
|
|
|
- txtTare.Text = $"{CacleCls.lockWgt / 1000}";
|
|
|
- txtNet.Text = $"{(CacleCls.firstDb.meterWeight - CacleCls.lockWgt) / 1000}";
|
|
|
+ txtGroess.Text = $"{Math.Round((decimal)CacleCls.firstDb.meterWeight / 1000, 2)}";
|
|
|
+ txtTare.Text = $"{Math.Round((decimal)CacleCls.lockWgt / 1000, 2)}";
|
|
|
+ txtNet.Text = $"{Math.Round((decimal)(CacleCls.firstDb.meterWeight.Value - CacleCls.lockWgt) / 1000, 2)}";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- txtGroess.Text = $"{CacleCls.lockWgt / 1000}";
|
|
|
- txtTare.Text = $"{CacleCls.firstDb.meterWeight / 1000}";
|
|
|
- txtNet.Text = $"{(CacleCls.lockWgt - CacleCls.firstDb.meterWeight) / 1000}";
|
|
|
+ txtGroess.Text = $"{Math.Round((decimal)CacleCls.lockWgt / 1000, 2)}";
|
|
|
+ txtTare.Text = $"{Math.Round((decimal)CacleCls.firstDb.meterWeight / 1000, 2)}";
|
|
|
+ txtNet.Text = $"{Math.Round((decimal)(CacleCls.lockWgt - CacleCls.firstDb.meterWeight) / 1000, 2)}";
|
|
|
}
|
|
|
}
|
|
|
+ if (CacleCls.firstDb == null)
|
|
|
+ {
|
|
|
+ //计量完成多委托
|
|
|
|
|
|
- if (!string.IsNullOrEmpty(CacleCls.LEDResultMessage))
|
|
|
+ led_controler.setStaticLineMsg(AppConfigCache.ledIp, $"车号{CacleCls.lockCarNo},重量{Math.Round((decimal)CacleCls.lockWgt / 1000, 2)}吨,计量完成");
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
- led_controler.setStaticLineMsg(AppConfigCache.ledIp, CacleCls.LEDResultMessage);
|
|
|
+ led_controler.setStaticLineMsg(AppConfigCache.ledIp, $"车号{CacleCls.lockCarNo},重量{Math.Round((decimal)CacleCls.lockWgt / 1000, 2)}吨,净重{Math.Round((decimal)Math.Abs(CacleCls.firstDb.meterWeight.Value - CacleCls.lockWgt) / 1000, 2)}吨,计量完成");
|
|
|
}
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
//屏幕截图操作
|
|
|
@@ -946,7 +925,7 @@ namespace CarLocalMeter
|
|
|
private void cbJg_CheckedChanged(object sender, EventArgs e)
|
|
|
{
|
|
|
CacleCls.isJg = cbJg.Checked;
|
|
|
- btnSave.Enabled = cbJg.Checked;
|
|
|
+ if(!isMeasureSuccess) btnSave.Enabled = cbJg.Checked;
|
|
|
}
|
|
|
|
|
|
private void txtCarNo_TextChanged(object sender, EventArgs e)
|
|
|
@@ -975,7 +954,7 @@ namespace CarLocalMeter
|
|
|
|
|
|
private void txtCarNo_KeyDown(object sender, KeyEventArgs e)
|
|
|
{
|
|
|
- if (e.KeyCode == Keys.Enter) label3.Focus();
|
|
|
+ if (e.KeyCode == Keys.Enter) txtMsgInfo.Focus();
|
|
|
}
|
|
|
|
|
|
private void btnOpenDz_Click(object sender, EventArgs e)
|