using CarMeterSystem.OptionCls; using com.hnshituo.core.webapp.vo; using Common; using iCore.Rtdb.RtdbTable; using MeterConditionLibrary; using MeterModelLibrary; using MeterModuleLibrary.uc; using MeterPlugInLibrary; using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Net.NetworkInformation; using System.Windows.Forms; using SystemOffLine; namespace CarMeterSystem { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private Log l = Log.GetInstance(); private Print printClass = new Print();//打印 //内存表 private MemoryTableDataSocket MemoClass = new MemoryTableDataSocket(""); //实时表数据采集 private DataCollectionControl collection = new DataCollectionControl(); //图片控制器含图片压缩及上传curl private ImageCurlControl imageCurlControl = new ImageCurlControl(); //与监控界面对接的表 private MeterWorkMonitorService meterWorkMonitor = new MeterWorkMonitorService(); //零点报警表 private meterworkzeroalarmservice zeroAlarmService = new meterworkzeroalarmservice(); //车号修正 private CarNoModfiy modfiy = new CarNoModfiy(); //一码通接口调用 private HttpRequest httpRequest = new HttpRequest(); /// /// 这个是保存前一次采集中的车号信息 /// private string preCarNo = ""; //验证对射 private validParkStatus valid = new validParkStatus(); //语音播报 private VoicePlay vicPlayClass = new VoicePlay(); private LED_Control led_controler = null; //监控表操作 private MeterMonitorWeightService monitorWeightService = new MeterMonitorWeightService(); private MeterWorkScheduledHelpService meterWorkScheduledHelpService = new MeterWorkScheduledHelpService(); //验证校秤数据 private validCalibration vCalib = new validCalibration(); private MeterWorkCarActualFirstService workCarActualFirstService = new MeterWorkCarActualFirstService(); //一次计量数据 //查询当前是否校秤 private bool bRelation = true; /// /// 欢迎界面 /// private frmWelcome_Jisco frmWelcome = new frmWelcome_Jisco();//欢迎 /// /// 计量页 /// private frmOneYardToEnd fcc = null; /// /// 基础数据载入 /// private BaseDbCls bd = new BaseDbCls(); //扫码修正车号标识 private bool codeFlag = false; private List lu = new List(); private bool isVoiceDownCar = false;//车上人员请下车播放一次 private bool isShowFrmWelcome = false; //是否显示欢迎界面 private bool isOpened = false;//是否已经打开了扫码计量界面 private bool noteCode = false; string validParkStatuConfig = ConfigurationManager.AppSettings["validParkStatuConfig"].ToString(); //扫码器 private SerialPortES sweepCodeClass = new SerialPortES(); private SerialPortES sweepCodeClass2 = new SerialPortES(); private void Form1_Load(object sender, EventArgs e) { //* try { //CollectModel temp = new CollectModel(); //temp.weight = 501; //PbCache.collect = temp; //frmMatMsgInfo frmMatMsgInfo = new frmMatMsgInfo(); //frmMatMsgInfo.Show(); // 计量页 fcc = new frmOneYardToEnd(); timer1.Start(); //2021年6月21日 杨秀东添加 if (isShowFrmWelcome) { frmWelcome.Show(); frmWelcome.Visible = true; } LoginCls lg = new LoginCls(); if (lg.LoginIn()) { //if (SystemUpdate(false)) //{ // return; //} // 加载并验证基本配置 if (bd.setBaseDb() && bd.getBaseDb()) { if (!string.IsNullOrEmpty(PbCache.sportInfo.ledIp)) { led_controler = new LED_Control(PbCache.sportInfo.ledIp); } //调用该方法时已赋值 RESTfulResult> rm = meterWorkMonitor.doQueryOneWf(new MeterWorkMonitor { validFlag = "1", pointNo = PbCache.sportInfo.baseSpotNo }); if (!rm.Succeed) { l.WriteLog(1, "载入监控表数据异常"); return; } else if (rm.Data != null && rm.Data.Count > 0) { if (string.IsNullOrEmpty(PbCache.collect_no)) { PbCache.collect_no = rm.Data[0].collectionCode; MemoClass = new MemoryTableDataSocket(PbCache.collect_no); } } else { //l.WriteLog(1, "为配置监控数据"); //return; } //若未校秤的话,也不允许计量 //载入界面业务按钮 if (PbCache.businessType != null && PbCache.businessType.Count > 0) { foreach (ComBaseInfo info in PbCache.businessType) { ucBusinessType uc = new ucBusinessType(); switch (info.baseCode) { case "001006003": uc.setControl(info.baseName, info.memo, info.baseCode); break; case "001006001": case "001006002": uc.setControl(info.baseName, info.memo, info.baseCode); break; default: uc.setControl(info.baseName, info.memo, info.baseCode); break; } uc.Dock = DockStyle.Top; //uc.setControl("","","",); uc.ucEvent += new EventHandler(ucEvents); lu.Add(uc); panel7.Controls.Add(uc); } } //开启基础进程 l.WriteLog(0, "系统登录成功"); collection.EventDataCollectionArgs += new EventDataCollection(EventData);//数据采集 collection.Start(PbCache.sportInfo.baseSpotNo, PbCache.sportInfo.baseSpotName); imageCurlControl.Start(); //图片采集线程 //新扫码线程 if (AppConfigCache._comPara?.Split(new char[] { ',' })?.Length == 5) { sweepCodeClass.StartThreadSweep(AppConfigCache._comPara); //扫码线程 } if (AppConfigCache._comPara2?.Split(new char[] { ',' })?.Length == 5) { sweepCodeClass2.StartThreadSweep(AppConfigCache._comPara2); //扫码线程 } } else { l.WriteLog(0, "系统登录失败"); } } else { l.WriteLog(0, "按IP地址找不到计量点信息,系统登录失败,ip:" + IpAddress.getIp); } } catch (Exception ex) { l.WriteLog(0, "系统加载失败:" + ex.Message); } //*/ } #region //* /// /// 委托的方式调用控件的点击事件 /// /// /// public void ucEvents(object sender, EventArgs e) { Control control = (Control)sender; ucBusinessType um = control.Parent.Parent as ucBusinessType; try { switch (control.Name) { case "btnContext": case "btnPurchase": { PbCache.bussinessTypeName = um._bussiness == null ? "" : um._bussiness; PbCache.bussinessTypeCode = um._code; switch (um._code) { case "001006003": frmInternalTransport frm = new frmInternalTransport(); frm.ShowDialog(); break; /* case "001006001": case "001006002": frmCarSalePurchase frmCar = new frmCarSalePurchase(); frmCar.ShowDialog(); break; //*/ default: frmCarSalePurchase frmCar = new frmCarSalePurchase(); frmCar.ShowDialog(); break; } }; break; default: break; } } catch (Exception ex) { //MessageBox.Show("操作异常:" + ex.Message); } } //*/ #endregion #region private void setWelecomeVis(bool visb) { /* if (frmWelcome.InvokeRequired) { Action action = new Action(setWelecomeVis); Invoke(action, new object[] { visb }); } else { if (frmWelcome.Visible != visb) { frmWelcome.Visible = visb; frmWelcome.setLogin(); } } //*/ } #endregion private int iCount = 0, iHodeTime = 0; private bool flagCarMonit = false;//车号修正 private bool bEditCar = false; //手动修正车号 private bool isOpenMeter = false; //是否已打开计量界面,若已经打开则这里关于超量程及红外的语音将停止播报 private string firstCode = "";//上次扫码的信息 private string ledTxt = ""; private bool isLedWrite = false;//是否写入一次LED private string sPreNo = ""; //记录重量曲线变化 private int preWgt = 0;//前一次重量,用于重量曲线 private string sCarNo = ""; private int iCountPark = 0; private string editCarNo = ""; private bool isCarSource = false; private bool isResFlag = true; private string RFIDCarNo = ""; private string isWriteRFID = AppConfigCache.isWriteRFID; //EventData实例化 RESTfulResult rmsEventDataLastTime = new RESTfulResult(); RESTfulResult> rmUpdateEventDataMonitor = new RESTfulResult>(); MeterWorkMonitor updateEventDataMonitor = new MeterWorkMonitor(); MeterMonitorWeight meterMonitorWeightEventData1 = new MeterMonitorWeight(); MeterMonitorWeight meterMonitorWeightEventData2 = new MeterMonitorWeight(); MeterWorkMonitor mwUpdate = new MeterWorkMonitor(); PbModelDbService> pbpRFIDEventData = new PbModelDbService>(); RESTfulResult> rmTRFIDEventData = new RESTfulResult>(); RESTfulResult rmsmwUpdateEventData = new RESTfulResult(); MeterWorkScheduledHelp meterWorkScheduledHelp1 = new MeterWorkScheduledHelp(); MeterWorkScheduledHelp meterWorkScheduledHelpRFID = new MeterWorkScheduledHelp(); RESTfulResult rmsdoUpdateWfEventData = new RESTfulResult(); RESTfulResult rmssEventData = new RESTfulResult(); MeterWorkMonitor meterWorkMonitorEventDataI = new MeterWorkMonitor(); MeterWorkCarActualFirstService mwcfs = new MeterWorkCarActualFirstService(); RESTfulResult rmsSweepCodeClass = new RESTfulResult(); frmOneYardToEnd frmOneYardToEnd = new frmOneYardToEnd(); private int num = 0; private void EventData(object o, DataCollectionArgs e) { if (!timer1.Enabled) { timer1.Enabled = true; //l.WriteLog(32, "定时器重启(timer1_Tick:frmMain),车号:" + PbCache.resultCarNo + "||" + (PbCache.collect == null ? "" : PbCache.collect.carno)); } #region //num++; //e.carno = "湘G88888"; //e.weight = 23580; //e.weightStatus = 0; //if (num < 20) //{ // e.weight = 23580; // e.weightStatus = 1; //} //else if (num < 26) //{ // e.weight = 23580; // e.weightStatus = 0; //} //else if (num < 39) //{ // e.weight = 23580; // e.weightStatus = 0; //} //else if (num < 45) //{ // e.weight = 15000; // e.weightStatus = 1; //} //else //{ // e.weight = 400; //} #endregion //这里每隔0.5秒执行一次 try { if (PbCache.carNoSource == 0) { PbCache.carNoSource = 1; } if (e.carno == "nown") { e.carno = ""; } #region 扫码信息 //if (string.IsNullOrEmpty(sweepCodeClass.StrCode)) //{ // if (string.IsNullOrEmpty(PbCache.strCode)) // { // codeFlag = false; // firstCode = ""; // PbCache.strCode = ""; // l.WriteLog(12, "主线程扫码值为空时清空;sweepCodeClass.StrCode值为" + sweepCodeClass.StrCode + " ;PbCache.strCode值为:" + PbCache.strCode); // } //} //else //{ // codeFlag = true; // frmOneYardToEnd frmOneYardToEnd = new frmOneYardToEnd(); // Hashtable hashTable = new Hashtable(); // hashTable.Add("message", sweepCodeClass.StrCode); // rmsSweepCodeClass = mwcfs.DecryptionForWfTest(hashTable); // if (rmsSweepCodeClass.Code == "0") // { // PbCache.collect.carno = rmsSweepCodeClass.Data; // PbCache.strCode = rmsSweepCodeClass.Data; // } // if (rmsSweepCodeClass.Code == "1") // { // vicPlayClass.GetVoicePlay("车号二维码已过期", PbCache.collect.carno); // frmOneYardToEnd.setMsgInfo("车号二维码已过期"); // } // if (rmsSweepCodeClass.Code == "2") // { // vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno); // frmOneYardToEnd.setMsgInfo("不是有效车号二维码"); // } // if (rmsSweepCodeClass.Code == "9") // { // vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno); // frmOneYardToEnd.setMsgInfo("不是有效车号二维码"); // } // l.WriteLog(12, "测试扫码值" + rmsSweepCodeClass.Data); //} // 司机扫码为空,取工控机二维码 if (PbCache.sportInfo.scanRequireValid == "1") { if (PbCache.monitor.isValidScan == "0") { PbCache.isValidScan = true; if (string.IsNullOrEmpty(sweepCodeClass2.StrCode)) { if (string.IsNullOrEmpty(sweepCodeClass.StrCode)) { if (string.IsNullOrEmpty(PbCache.strCode)) { codeFlag = false; firstCode = ""; PbCache.strCode = ""; //l.WriteLog(12, "主线程扫码值为空时清空;sweepCodeClass.StrCode值为" + sweepCodeClass.StrCode + " ;PbCache.strCode值为:" + PbCache.strCode); } } else { l.WriteLog(0, sweepCodeClass.StrCode); if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass.StrCode.Substring(0, 3) == "TWB") { DecodeQRCodeYMT(sweepCodeClass.StrCode); } else { DecodeQRCode(sweepCodeClass.StrCode); } } } else { l.WriteLog(0, sweepCodeClass.StrCode); if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass2.StrCode.Substring(0, 3) == "TWB") { DecodeQRCodeYMT(sweepCodeClass2.StrCode); } else { DecodeQRCode(sweepCodeClass2.StrCode); } } } else { PbCache.isValidScan = false; if (string.IsNullOrEmpty(sweepCodeClass2.StrCode)) { if (string.IsNullOrEmpty(sweepCodeClass.StrCode)) { if (string.IsNullOrEmpty(PbCache.strCode)) { codeFlag = false; firstCode = ""; PbCache.strCode = ""; //l.WriteLog(12, "主线程扫码值为空时清空;sweepCodeClass.StrCode值为" + sweepCodeClass.StrCode + " ;PbCache.strCode值为:" + PbCache.strCode); } } else { l.WriteLog(0, sweepCodeClass.StrCode); if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass.StrCode.Substring(0, 3) == "TWB") { DecodeQRCodeYMT(sweepCodeClass.StrCode); } else { DecodeQRCode(sweepCodeClass.StrCode); } } } else { l.WriteLog(0, sweepCodeClass.StrCode); if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass2.StrCode.Substring(0, 3) == "TWB") { DecodeQRCodeYMT(sweepCodeClass2.StrCode); } else { DecodeQRCode(sweepCodeClass2.StrCode); } } } } else { PbCache.isValidScan = true; if (string.IsNullOrEmpty(sweepCodeClass2.StrCode)) { if (string.IsNullOrEmpty(sweepCodeClass.StrCode)) { if (string.IsNullOrEmpty(PbCache.strCode)) { codeFlag = false; firstCode = ""; PbCache.strCode = ""; //l.WriteLog(12, "主线程扫码值为空时清空;sweepCodeClass.StrCode值为" + sweepCodeClass.StrCode + " ;PbCache.strCode值为:" + PbCache.strCode); } } else { l.WriteLog(0, sweepCodeClass.StrCode); if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass.StrCode.Substring(0, 3) == "TWB") { DecodeQRCodeYMT(sweepCodeClass.StrCode); } else { DecodeQRCode(sweepCodeClass.StrCode); } } } else { l.WriteLog(0, sweepCodeClass.StrCode); if (sweepCodeClass.StrCode.Length > 3 && sweepCodeClass2.StrCode.Substring(0, 3) == "TWB") { DecodeQRCodeYMT(sweepCodeClass2.StrCode); } else { DecodeQRCode(sweepCodeClass2.StrCode); } } } #endregion #region 秤上无车10分钟获取一次基础数据 if (iCount < 1200) { iCount++; } else { try { //秤上没有车时,每隔10分钟获取一次基础数据 if (e.weight < 500) { if (bd.setBaseDb()) { l.WriteLog(0, "十分钟获取基础数据成功"); } else { l.WriteLog(0, "十分钟获取基础数据失败"); } iCount = 0; } } catch (Exception ex) { l.WriteLog(0, "十分钟获取基础数据失败:" + ex.Message); iCount = 0; } } #endregion #region 每10秒写入一次当前时间 if (iCount % 20 == 0) { //更新在线时间 rmsEventDataLastTime = meterWorkMonitor.doUpdateWfBySpotNo(new MeterWorkMonitor { pointNo = PbCache.sportInfo.baseSpotNo }); if (!rmsEventDataLastTime.Succeed) { l.WriteLog(0, "frmMain.EventData异常:写入时间异常,原因:" + rmsEventDataLastTime.ResultMessage); } } #endregion #region //一旦界面锁定则不采集数据 PbCache.collect.pointid = PbCache.sportInfo.baseSpotNo; PbCache.collect.parkStatus = e.parkStatus; PbCache.collect.datetime = e.datetime; PbCache.collect.licType = e.licType; if (testFlag) { sCarNo = testCarNo; //PbCache.collect.carno = testCarNo; PbCache.collect.weight = testWgt; PbCache.collect.weightStatus = 0; PbCache.monitorResult.valid_park_status = true; PbCache.collect.parkStatus = 0; if (PbCache.collect.weight > e.weight) e.weight = PbCache.collect.weight; PbCache.strCode = testPlanNo; //e.carno = testCarNo; //PbCache.strQRCode = testCode; } else if (!PbCache.isLockFrm) { PbCache.collect.weight = e.weight; PbCache.collect.weight = e.weight; PbCache.collect.weightStatus = e.weightStatus; PbCache.collect.parkStatus = e.parkStatus; PbCache.collect.datetime = e.datetime; PbCache.collect.licType = e.licType; if (!bEditCar && !codeFlag && String.IsNullOrEmpty(RFIDCarNo)) { PbCache.collect.carno = e.carno; } PbCache.collect.videoCarNo1 = e.videoCarNo1; PbCache.collect.videoCarNo2 = e.videoCarNo2; PbCache.collect.rfidCarNo = e.RfidNos; PbCache.collect.carnoAlert = e.carnoAlert; } //界面锁定后,仍然更新判稳状态 //BourneCao 20221230 else { PbCache.collect.weightStatus = e.weightStatus; PbCache.collect.parkStatus = e.parkStatus; } if (PbCache.collect != null && PbCache.collect.weightStatus == 0) { if (string.IsNullOrEmpty(PbCache.resultWgt)) { PbCache.resultWgt = e.weight + ""; } if (!string.IsNullOrEmpty(PbCache.resultWgt) && e.weight > Convert.ToInt32(PbCache.resultWgt)) { PbCache.resultWgt = e.weight + ""; } if (!string.IsNullOrEmpty(e.carno) && PbCache.resultCarNo != e.carno) { PbCache.resultCarNo = e.carno + ""; //l.WriteLog(28, "车号賦值跟蹤:PbCache.resultCarNo" + PbCache.resultCarNo + "||e.carno" + e.carno); } } //*/ // 更新监控表 //doLive(); //重量大于500的情况下 if (e.weight > 500) { isResFlag = true; isCarSource = true; if (PbCache.dtStartTime == null) PbCache.dtStartTime = DateTime.Now; isLedWrite = true; PbCache.strState = "0"; #region 车上人员请下车 try { //界面未锁定的情况下,有车号,如果重量稳定了,停车线验证通过,未超量程的情况下,则按钮可用 if (PbCache.collect != null && !string.IsNullOrEmpty(PbCache.collect.carno) && PbCache.collect.weightStatus == 0 && PbCache.monitorResult.valid_park_status && PbCache.collect.weight < PbCache.range.upperRange) { if (!isVoiceDownCar) { isVoiceDownCar = true; vicPlayClass.GetVoicePlay("车上人员请下车", PbCache.collect.carno); } } } catch { } #endregion setWelecomeVis(false); //每隔1秒刷一次计量实时监控表数据值 if (iCount % 2 == 0) { //调用该方法时已赋值 updateEventDataMonitor.validFlag = "1"; updateEventDataMonitor.pointNo = PbCache.sportInfo.baseSpotNo; rmUpdateEventDataMonitor = meterWorkMonitor.doQueryOneWf(updateEventDataMonitor); if (!rmUpdateEventDataMonitor.Succeed) { l.WriteLog(0, "frmMain.EventData异常419:" + rmUpdateEventDataMonitor.ResultMessage); } else { if (rmUpdateEventDataMonitor.Data != null && rmUpdateEventDataMonitor.Data.Count > 0) { PbCache.monitor = rmUpdateEventDataMonitor.Data[0]; if (string.IsNullOrEmpty(PbCache.collect_no)) { PbCache.collect_no = rmUpdateEventDataMonitor.Data[0].collectionCode; } if (ledTxt != rmUpdateEventDataMonitor.Data[0].ledWriter && rmUpdateEventDataMonitor.Data[0].ledWriter != "") { //调用LED信息写入****************************** ledTxt = rmUpdateEventDataMonitor.Data[0].ledWriter; } if (string.IsNullOrEmpty(ledTxt)) { ledTxt = "欢迎使用酒钢汽车衡智能计量系统!"; } } } #region 2021-03-29 #region 摄像头当前采集的车号与上次采集的不一样且当前未勾选不验证,且当前车号未进行手动修正的情况下 if (preCarNo != e.carno && PbCache.monitor != null && PbCache.monitor.validCarno != "0" && !bEditCar) { flagCarMonit = false; } preCarNo = e.carno; #endregion if (!flagCarMonit) { sCarNo = e.carno; } //* //有车号,且重量稳定的情况下,只修正一次车号 if (!string.IsNullOrEmpty(e.carno) && e.weightStatus == 0 && !flagCarMonit && PbCache.monitor != null && PbCache.monitor.carMonitor == "1" && PbCache.monitor.carMonitorLvl > 0) { flagCarMonit = true; string methods = ""; for (int i = 0; i <= PbCache.monitor.carMonitorLvl; i++) { methods += "CarNoTrustCorrect" + i + ","; } l.WriteLog(0, "methods:" + methods); editCarNo = modfiy.CarNoCorrect(e.carno, methods.Substring(0, methods.Length - 1)); sCarNo = editCarNo; //mwUpdate } //勾选了不验证车号的情况 if (PbCache.monitor.validCarno == "0") { flagCarMonit = true; } #endregion #region 每隔1秒写入一次重量曲线 try { if (preWgt != e.weight) { preWgt = e.weight; sPreNo = PbCache.sportInfo.baseSpotNo + DateTime.Now.ToString("yyyyMMddHHmmssfff"); meterMonitorWeightEventData1.weightNo = sPreNo; meterMonitorWeightEventData1.baseSpotNo = PbCache.sportInfo.baseSpotNo; meterMonitorWeightEventData1.baseSpotName = PbCache.sportInfo.baseSpotName; meterMonitorWeightEventData1.collectWeight = e.weight + ""; meterMonitorWeightEventData1.collectStartTime = PbCache.dtStartTime.Value; meterMonitorWeightEventData1.collectEndTime = DateTime.Now; meterMonitorWeightEventData1.spotTypeNo = "001002001"; meterMonitorWeightEventData1.spotTypeName = "汽车衡"; meterMonitorWeightEventData1.actualFirstNo = PbCache.actualFirstNo; monitorWeightService.doAddWf(meterMonitorWeightEventData1); } else { if (!string.IsNullOrEmpty(sPreNo)) { meterMonitorWeightEventData2.weightNo = sPreNo; meterMonitorWeightEventData2.collectEndTime = DateTime.Now; monitorWeightService.doUpdateWf(meterMonitorWeightEventData2); } } } catch { } #endregion #region 停留超时 iHodeTime++; mwUpdate.pointNo = PbCache.sportInfo.baseSpotNo; mwUpdate.editCar = editCarNo; if (PbCache.holdTime != null && PbCache.holdTime.Count > 0) { if (PbCache.holdTime[0].retentionTime != null) { if (PbCache.holdTime[0].retentionTime.Value < iHodeTime) { l.WriteLog(33, "iHodeTime:" + iHodeTime + ",PbCache.holdTime[0].retentionTime.Value:" + PbCache.holdTime[0].retentionTime.Value + ",mwUpdate.stopOverTime:" + mwUpdate.stopOverTime); PbCache.isOvertimeAlarm = true; //是否超时报警 mwUpdate.stopOverTime = "1"; //写入一次停留超时 //mwUpdate.isHelp = "1";//派位 //mwUpdate.isTakeOver = "1"; iHodeTime = 99999;//不再增长避免超出 } } } #endregion #region RFID识别车号信息 mwUpdate.rfidCar = ""; mwUpdate.photoCar = e.videoCarNo1; mwUpdate.photoCar2 = e.videoCarNo2; mwUpdate.scanCar = ""; if (codeFlag) { mwUpdate.scanCar = PbCache.collect.carno; } //mwUpdate.photoCar = PbCache.collect.carno; if (!string.IsNullOrEmpty(e.RfidNos)) { string sqls = @"SELECT RFID_ID id,CAR_NO text FROM METER_BASE_RFID_INFO where RFID_CODE = '" + e.RfidNos + "'"; rmTRFIDEventData = pbpRFIDEventData.executeSqlDataWf(sqls); if (rmTRFIDEventData.Data == null || rmTRFIDEventData.Data.Count == 0) { } else { if (PbCache.carNoSource == 1) { PbCache.carNoSource = 2; } mwUpdate.rfidCar = rmTRFIDEventData.Data[0].text; sCarNo = rmTRFIDEventData.Data[0].text; RFIDCarNo = rmTRFIDEventData.Data[0].text; } } #endregion #region 计量员修改的车号信息 if (PbCache.monitor != null && !string.IsNullOrEmpty(PbCache.monitor.setCar)) { PbCache.carNoSource = 4; sCarNo = PbCache.monitor.setCar; bEditCar = true; flagCarMonit = true; codeFlag = false; sweepCodeClass.StrCode = ""; sweepCodeClass2.StrCode = ""; } #endregion #region 重量信息 if (!PbCache.isLockFrm) { mwUpdate.wgt = e.weight; } else { mwUpdate.wgt = Convert.ToInt32(PbCache.lockWgt); } #endregion #region 写入一次监控表,将重量/车号停留超时等信息写入 mwUpdate.msgInfo = PbCache.ResultMessage; mwUpdate.weightStatus = PbCache.collect.weightStatus; //另外初始化一次监控数据 rmsmwUpdateEventData = meterWorkMonitor.doUpdateWf(mwUpdate); if (!rmsmwUpdateEventData.Succeed) { l.WriteLog(0, "frmMain.EventData异常583:写入信息异常" + mwUpdate); } #endregion //验证对射 valid.ValidMethod(); if (!isOpenMeter) { //if (PbCache.range != null && PbCache.range.upperRange < e.weight) if (PbCache.range != null && PbCache.range.upperRange < e.weight) { //超量程 vicPlayClass.GetVoicePlay("已超量程", e.carno); //return; } else if (e.weightStatus == 0) { if (!PbCache.monitorResult.valid_park_status && validParkStatuConfig == "true") { iCountPark++; if (iCountPark > 9 && !string.IsNullOrEmpty(PbCache.collect.carno)) { PbCache.ResultMessage = "车辆超出秤台,请调整车位1"; //btnSave_Click //重量稳定,且对射验证不合格 vicPlayClass.GetVoicePlay("车辆超出秤台,请调整车位", e.carno); led_controler.setStaticLineMsg(PbCache.sportInfo.ledIp, "车辆超出秤台,请调整车位1"); //return; iCountPark = 0; //2021年7月27日5s播一次,然后重新在播 } } else { iCountPark = 0; } } } if (!lu[0].bcEnable) { foreach (ucBusinessType uc in lu) { uc.setControlEnable(true); } } if ((sweepCodeClass.StrCode == "" || sweepCodeClass2.StrCode == "") && !codeFlag) { PbCache.collect.carno = sCarNo; } if (codeFlag && !noteCode) { noteCode = true; meterWorkScheduledHelp1.baseSpotNo = PbCache.sportInfo.baseSpotNo; meterWorkScheduledHelp1.baseSpotName = PbCache.sportInfo.baseSpotName; meterWorkScheduledHelp1.carNo = string.IsNullOrEmpty(PbCache.collect.carno) ? PbCache.resultCarNo : PbCache.collect.carno; meterWorkScheduledHelp1.helpContent = "车号:" + sCarNo + "扫码过秤"; meterWorkScheduledHelp1.warmType = "2"; meterWorkScheduledHelp1.warmTypeName = "智能终端报警"; meterWorkScheduledHelpService.add(meterWorkScheduledHelp1); } } PbCache.collect.carno = sCarNo; //写入LED信息 //if (PbCache.sportInfo != null && PbCache.ledInfo != PbCache.OldLedInfo) //{ // PbCache.OldLedInfo = PbCache.ledInfo; // if (PbCache.monitor != null && PbCache.monitor.ledKeep == "0") // { // //led_controler.setOneLineMsg(PbCache.sportInfo.ledIp, PbCache.ledInfo); // } //} } else { isOpened = false; //下次上秤直接打开主界面 if (e.weight > 10 && e.weight < 500) { //重量小于500,大于10 MeterWorkMonitor mwUpdate = new MeterWorkMonitor(); mwUpdate.pointNo = PbCache.sportInfo.baseSpotNo; mwUpdate.wgt = e.weight; rmsdoUpdateWfEventData = meterWorkMonitor.doUpdateWf(mwUpdate); } if (e.weight > 0 && e.weight < 200) { doOperateLive(); } if (e.weight == 0) { PbCache.isZeroAlarm = false; } editCarNo = ""; firstCode = ""; //历史的扫码枪的值 preCarNo = ""; sCarNo = ""; sPreNo = ""; preWgt = 0; //不等于空的时候说明写过一次日志了 if (isResFlag) { isResFlag = false; meterWorkScheduledHelp1.baseSpotNo = PbCache.sportInfo.baseSpotNo; meterWorkScheduledHelp1.baseSpotName = PbCache.sportInfo.baseSpotName; meterWorkScheduledHelp1.carNo = string.IsNullOrEmpty(PbCache.collect.carno) ? PbCache.resultCarNo : PbCache.collect.carno; meterWorkScheduledHelp1.helpContent = "车号:" + (string.IsNullOrEmpty(PbCache.collect.carno) ? (string.IsNullOrEmpty(PbCache.resultCarNo) ? "未识别" : PbCache.resultCarNo) : PbCache.collect.carno) + ";重量:" + (PbCache.lockWgt == 0 ? PbCache.resultWgt : PbCache.lockWgt + "") + ";提示信息:" + PbCache.resultMsgAll; meterWorkScheduledHelp1.warmType = "5"; meterWorkScheduledHelp1.warmTypeName = "计量提示跟踪"; meterWorkScheduledHelpService.add(meterWorkScheduledHelp1); //l.WriteLog(28, "车号:" + (string.IsNullOrEmpty(PbCache.collect.carno) ? (string.IsNullOrEmpty(PbCache.resultCarNo) ? "未识别" : PbCache.resultCarNo) : PbCache.collect.carno) + ";重量:" + (PbCache.lockWgt == 0 ? PbCache.resultWgt : PbCache.lockWgt + "") + ";提示信息:" + PbCache.resultMsgAll); } //不等于空的时候说明写过一次日志了 if (!string.IsNullOrEmpty(RFIDCarNo) && isWriteRFID == "1") { meterWorkScheduledHelp1.baseSpotNo = PbCache.sportInfo.baseSpotNo; meterWorkScheduledHelp1.baseSpotName = PbCache.sportInfo.baseSpotName; meterWorkScheduledHelp1.carNo = string.IsNullOrEmpty(PbCache.collect.carno) ? PbCache.resultCarNo : PbCache.collect.carno; meterWorkScheduledHelp1.helpContent = RFIDCarNo; meterWorkScheduledHelp1.warmType = "7"; meterWorkScheduledHelp1.warmTypeName = "RFID识别率"; meterWorkScheduledHelpService.add(meterWorkScheduledHelp1); RFIDCarNo = ""; } //车号来源记录 if (isCarSource) { meterWorkScheduledHelp1.baseSpotNo = PbCache.sportInfo.baseSpotNo; meterWorkScheduledHelp1.baseSpotName = PbCache.sportInfo.baseSpotName; meterWorkScheduledHelp1.carNo = string.IsNullOrEmpty(PbCache.collect.carno) ? PbCache.resultCarNo : PbCache.collect.carno; meterWorkScheduledHelp1.helpContent = PbCache.carNoSource.ToString(); meterWorkScheduledHelp1.warmType = "8"; meterWorkScheduledHelp1.warmTypeName = "车号来源记录"; meterWorkScheduledHelpService.add(meterWorkScheduledHelp1); isCarSource = false; PbCache.carNoSource = 0; } PbCache.isOvertimeAlarm = false; //是否超时报警 PbCache.strCode = ""; PbCache.strState = ""; PbCache.ResultMessage = ""; PbCache.resultMsgAll = ""; PbCache.resultCarNo = ""; PbCache.resultWgt = ""; bEditCar = false; isVoiceDownCar = false; flagCarMonit = false; iHodeTime = 0; isOpenMeter = false; PbCache.isLockFrm = false; PbCache.dtStartTime = null; PbCache.voiceOver = true; if (PbCache.collect != null && !string.IsNullOrEmpty(PbCache.collect.carno)) { PbCache.collect.carno = ""; } setWelecomeVis(true); if (lu[0].bcEnable) { foreach (ucBusinessType uc in lu) { uc.setControlEnable(false); } } noteCode = false; meterWorkMonitorEventDataI.pointNo = PbCache.sportInfo.baseSpotNo; meterWorkMonitorEventDataI.validWgt = "1"; meterWorkMonitorEventDataI.validCarno = "1"; meterWorkMonitorEventDataI.validTareTime = "1"; meterWorkMonitorEventDataI.validMatTime = "1"; meterWorkMonitorEventDataI.validTimeInterval = "1"; meterWorkMonitorEventDataI.validParkStatus = "1"; meterWorkMonitorEventDataI.validExceedWgt = "1"; meterWorkMonitorEventDataI.validPredictionDiff = "1"; meterWorkMonitorEventDataI.validLianda = "1"; meterWorkMonitorEventDataI.validMatClick = "1"; meterWorkMonitorEventDataI.setCar = ""; meterWorkMonitorEventDataI.isValidScan = "1"; meterWorkMonitorEventDataI.rfidCar = ""; meterWorkMonitorEventDataI.photoCar = ""; meterWorkMonitorEventDataI.scanCar = ""; meterWorkMonitorEventDataI.editCar = ""; meterWorkMonitorEventDataI.zeroState = "0"; meterWorkMonitorEventDataI.carErr = "0"; meterWorkMonitorEventDataI.ferroalloyResult = "0"; meterWorkMonitorEventDataI.wgtErr = "0"; meterWorkMonitorEventDataI.stopOverTime = "0"; meterWorkMonitorEventDataI.msgInfo = ""; meterWorkMonitorEventDataI.ledWriter = ""; meterWorkMonitorEventDataI.isOverWgt = ""; meterWorkMonitorEventDataI.isHelp = "0"; meterWorkMonitorEventDataI.wgt = e.weight; // DVR,MOXA,PLC状态监控 // 20220928 by BourneCao bool DVR_Online = PingIp(PbCache.sportInfo.videoIp); meterWorkMonitorEventDataI.dvrState = DVR_Online == true ? "0" : "1"; bool Power_Online = PingIp(PbCache.sportInfo.controlIp); meterWorkMonitorEventDataI.powerState = Power_Online == true ? "0" : "1"; bool MOXA_Online = PingIp(PbCache.sportInfo.moxaIp); meterWorkMonitorEventDataI.moxaState = MOXA_Online == true ? "0" : "1"; bool PLC_Online = PingIp(PbCache.sportInfo.plcIp); meterWorkMonitorEventDataI.plcState = PLC_Online == true ? "0" : "1"; //* //另外初始化一次监控数据 RESTfulResult rmssEventData = meterWorkMonitor.doUpdateWf(meterWorkMonitorEventDataI); if (!rmssEventData.Succeed) { l.WriteLog(0, "frmMain.EventData异常754:写入信息异常"); } //*/ //LED写入 if (isLedWrite) { isLedWrite = false; } } #endregion } catch (Exception ex) { l.WriteLog(0, "frmMain.EventData异常:" + ex.Message); } } private void DecodeQRCodeYMT(string strCode) { try { string test = strCode.Substring(0, 3); codeFlag = true; string token = httpRequest.GetToken(); string carNo = httpRequest.getCarNo(strCode,token); PbCache.collect.carno = carNo; PbCache.strCode = carNo; } catch (Exception e) { } } private void DecodeQRCode(string strCode) { codeFlag = true; //frmOneYardToEnd frmOneYardToEnd = new frmOneYardToEnd(); Hashtable hashTable = new Hashtable(); hashTable.Add("message", strCode); rmsSweepCodeClass = mwcfs.DecryptionForWfTest(hashTable); if (rmsSweepCodeClass.Code == "0") { PbCache.collect.carno = rmsSweepCodeClass.Data; PbCache.strCode = rmsSweepCodeClass.Data; } if (rmsSweepCodeClass.Code == "1") { vicPlayClass.GetVoicePlay("车号二维码已过期", PbCache.collect.carno); frmOneYardToEnd.setMsgInfo("车号二维码已过期"); } if (rmsSweepCodeClass.Code == "2") { vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno); frmOneYardToEnd.setMsgInfo("不是有效车号二维码"); } if (rmsSweepCodeClass.Code == "9") { vicPlayClass.GetVoicePlay("不是有效车号二维码", PbCache.collect.carno); frmOneYardToEnd.setMsgInfo("不是有效车号二维码"); } l.WriteLog(12, "测试扫码值" + rmsSweepCodeClass.Data); } private delegate void ShowBtnTare(bool flag);//定义委托 期限皮重按钮 private int testWgt = 0; private string testCarNo = "", testPlanNo = ""; private bool testFlag = true; /// /// 截图测试 /// /// /// private void button2_Click(object sender, EventArgs e) { CameraShotCls cameraShot = new CameraShotCls(); //cameraShot.CapMethod("1"); _ = Invoke(new Action(() => { cameraShot.CapMethod("15"); })); } //测试打印 private string strFirstNo = ""; private void btnTestPrint_Click(object sender, EventArgs e) { Print1(txtPlanNo.Text); } //弹窗 private static FrmMessage FrmMess(string strMess, string strBtnSaveInfo) { FrmMessage frmMessage = new FrmMessage(); frmMessage.StartPosition = FormStartPosition.Manual; frmMessage.Location = new Point(350, 450); frmMessage.ShowMessage = strMess; frmMessage.BtnSaveText = strBtnSaveInfo; frmMessage.BtnCancelText = "取消"; return frmMessage; } private class PrintCls { public int printNum { get; set; } public MeterWorkCarActual printDb { get; set; } public int iType { get; set; } //0毛 1 皮 2净 public string qrCode { get; set; } } private PrintCls printData = new PrintCls(); private void Print1(string firstNo) { try { //lg.WriteLog(1, "打印开始"); #region 获取打印信息,若需要打印则调用打印操作 List prrintC = new List(); string sql = @"select actual_no actualNo, prediction_no predictionNo, car_no carNo, matter_no matterNo, matter_name matterName, gross_weight grossWeight, gross_time grossTime, tare_weight tareWeight, tare_time tareTime, net_weight netWeight, net_Time netTime, 'x' meterTypeNo, meter_type_name meterTypeName, spec_name specName, forwarding_unit_name forwardingUnitName, receiving_uint_name receivingUintName, load_point_name loadPointName, add_weight addWeight, '1' uploadFlag --1结净数据 0一次表数据 from meter_work_car_actual where actual_first1_no = '" + firstNo + @"' or actual_first2_no='" + firstNo + @"' union all select t.actual_first_no actualNo, t.prediction_no predictionNo, t.car_no carNo, t.matter_no matterNo, t.matter_name matterName, t.meter_weight grossWeight, t.create_time grossTime, 0 tareWeight, t.create_time tareTime, 0 netWeight, null netTime, t.weight_type meterTypeNo, --0毛重 否则皮重 t.meter_type_name meterTypeName, t.spec_name specName, t.forwarding_unit_name forwardingUnitName, t.receiving_uint_name receivingUintName, t.load_point_name loadPointName, t.add_weight addWeight, '0' uploadFlag from METER_WORK_CAR_ACTUAL_FIRST t where t.actual_first_no = '" + firstNo + "' or t.actual_first_no = (select max(actual_first2_no) from meter_work_car_actual where actual_first1_no='" + firstNo + "')"; //查下如果有毛重或者结净数据,则可进入打印判断 PbModelDbService> pbModelDbService = new PbModelDbService>(); RESTfulResult> rm = pbModelDbService.executeSqlDataWf(sql); //lg.WriteLog(1, "打印第一个sql:" + sql); if (rm.Succeed) { if (rm.Data != null && rm.Data.Count > 0) { //2021年6月26日 对一车联运的进行处理;用一次计量编号查二次计量数据, sql = @"select t3.actual_no actualNo, t3.prediction_no predictionNo, t3.car_no carNo, t3.matter_no matterNo, t3.matter_name matterName, t3.gross_weight grossWeight, t3.gross_time grossTime, t3.tare_weight tareWeight, t3.tare_time tareTime, t3.net_weight netWeight, t3.net_Time netTime, 'x' meterTypeNo, t3.meter_type_name meterTypeName, t3.spec_name specName, t3.forwarding_unit_name forwardingUnitName, t3.receiving_uint_name receivingUintName, t3.load_point_name loadPointName, t3.add_weight addWeight, '1' uploadFlag from meter_work_car_actual_first t2 left join meter_work_car_actual t3 on t2.actual_first_no = t3.actual_first1_no where t2.prediction_combination in (select t.prediction_combination from meter_work_car_actual_first t where t3.value_flag = '0' and t.actual_first_no = '" + firstNo + @"' and instr(t.prediction_combination, '20') > 0) order by t3.net_time desc"; RESTfulResult> rmLy = pbModelDbService.executeSqlDataWf(sql); if (rmLy.Succeed && rmLy.Data != null && rmLy.Data.Count == 1) { rm.Data = rmLy.Data; //一车联运,将毛重替换为净重数据 } //若有毛重或者净重,找到对应数据的物料信息,若有,那么去找打印配置信息数据 List mwa = rm.Data.Where(s => !string.IsNullOrEmpty(s.matterNo) && (s.meterTypeNo == "x" || s.meterTypeNo == "0")).ToList(); if (mwa != null && mwa.Count > 0 && !string.IsNullOrEmpty(mwa[0].matterNo)) { sql = @"select BASE_SPOT_NO baseSpotNo, load_point_no loadPointNo, matter_no matterNo, METER_TYPE_NO meterTypeNo, weight_type_name weightTypeName, PRINT_NUM printNum from METER_BASE_BILL_PRINT where matter_no = '" + mwa[0].matterNo + @"' and nvl(BASE_SPOT_NO, '" + PbCache.sportInfo.baseSpotNo + @"') = '" + PbCache.sportInfo.baseSpotNo + @"' and nvl(load_point_no, '" + (mwa[0].loadPointNo == null ? "1" : mwa[0].loadPointNo) + @"') = '" + (mwa[0].loadPointNo == null ? "1" : mwa[0].loadPointNo) + @"'"; //lg.WriteLog(1, "打印第二个sql:" + sql); and nvl(METER_TYPE_NO, '" + PbCache.bussinessTypeCode + @"') = '" + PbCache.bussinessTypeCode + @"' //and nvl(METER_TYPE_NO, '') = '' PbModelDbService> pbPrintService = new PbModelDbService>(); RESTfulResult> rmPint = pbPrintService.executeSqlDataWf(sql); if (rmPint.Succeed) { if (rmPint.Data != null && rmPint.Data.Count > 0) { //若有净重信息:1毛重时间晚于皮重时间,则打印毛、皮、净重,2毛重早于皮重,打印皮、净 //若只有毛重信息则打印毛重 List lGrossprint = rmPint.Data.Where(s => s.weightTypeName.Contains("毛")).ToList(); List lTarePrint = rmPint.Data.Where(s => s.weightTypeName.Contains("皮")).ToList(); List lNetprint = rmPint.Data.Where(s => s.weightTypeName.Contains("净")).ToList(); List mwaChild = mwa.Where(s => s.meterTypeNo == "x").ToList(); if (mwaChild != null && mwaChild.Count > 0) //若有净重信息 { if (lTarePrint != null && lTarePrint.Count > 0) { //获取非毛,非净重信息如果没有则用的期限皮,此时不打,否则则打印 MeterWorkCarActual mwca = rm.Data.Where(s => s.meterTypeNo != "x" && s.meterTypeNo != "0").FirstOrDefault(); if (mwca != null) { PrintCls cls = new PrintCls(); cls.printNum = (int)(lTarePrint[0].printNum == null ? 0 : lTarePrint[0].printNum.Value); cls.iType = 1;//皮重 cls.printDb = mwca; prrintC.Add(cls); } } if (lGrossprint != null && lGrossprint.Count > 0) { //获取毛重信息 MeterWorkCarActual mwca = rm.Data.Where(s => s.meterTypeNo == "0").FirstOrDefault(); if (mwca != null) { PrintCls cls = new PrintCls(); cls.printNum = (int)(lGrossprint[0].printNum == null ? 0 : lGrossprint[0].printNum.Value); cls.iType = 0;//毛重 cls.printDb = mwca; prrintC.Add(cls); } } if (lNetprint != null && lNetprint.Count > 0) { //获取净重信息 MeterWorkCarActual mwca = rm.Data.Where(s => s.meterTypeNo == "x").FirstOrDefault(); if (mwca != null) { PrintCls cls = new PrintCls(); cls.printNum = (int)(lNetprint[0].printNum == null ? 0 : lNetprint[0].printNum.Value); cls.iType = 2;//净重 cls.printDb = mwca; prrintC.Add(cls); } } } else //只有毛重信息则打印毛重 { if (lGrossprint != null && lGrossprint.Count > 0) { //获取毛重信息 MeterWorkCarActual mwca = rm.Data.Where(s => s.meterTypeNo == "0").FirstOrDefault(); if (mwca != null) { PrintCls cls = new PrintCls(); cls.printNum = (int)(lGrossprint[0].printNum == null ? 0 : lGrossprint[0].printNum.Value); cls.iType = 0;//毛重 cls.printDb = mwca; prrintC.Add(cls); } } } if (prrintC != null && prrintC.Count > 0) { FrmMessage frmMessage = FrmMess("是否打印第【1】张票据!", "打印"); if (frmMessage.ShowDialog(this) == DialogResult.OK) { l.WriteLog(10, "车号【" + PbCache.lockCarNo + "】是否打印选择了【是】"); l.WriteLog(15, PbCache.lockCarNo + "是否打印选择了【是】"); strFirstNo = firstNo; //printDocument1.PrinterSettings.PrinterName = PbCache.sportInfo.printerName;//strPntSvrName; System.Drawing.Printing.PaperSize customSize1 = new System.Drawing.Printing.PaperSize("TestPaper", 398, 433); //101mm*110mm,换算成英寸 printDocument1.DefaultPageSettings.PaperSize = customSize1;//将自定义的Papersize赋给PrintDocument System.Drawing.Printing.Margins marginss = new System.Drawing.Printing.Margins(0, 0, 0, 0); printDocument1.DefaultPageSettings.Margins = marginss; printDocument1.PrintController = new System.Drawing.Printing.StandardPrintController(); foreach (PrintCls db in prrintC) { switch (db.printDb.meterTypeNo) { case "0": //毛 db.qrCode = db.printDb.actualNo + "," + db.printDb.grossWeight + "," + "1"; break; case "x": //净 db.qrCode = db.printDb.actualNo + "," + db.printDb.netWeight + "," + "2"; break; default: //皮 db.qrCode = db.printDb.actualNo + "," + db.printDb.grossWeight + "," + "1"; break; } RESTfulResult rQRCode = workCarActualFirstService.doQRCodeWf(db.qrCode); db.qrCode = rQRCode.Data; for (int i = 0; i < db.printNum; i++) { if (i == 0) { printData = db; printDocument1.Print(); l.WriteLog(10, "当前第" + (i + 1) + "次打印:" + printData.iType + " 车号:" + db.printDb.carNo + ",二维码:" + db.qrCode); } else { FrmMessage frmMessageContinue = FrmMess("已打印【" + i + "】张,是否继续打印第【" + (i + 1) + "】张票据!", "打印"); if (frmMessageContinue.ShowDialog(this) == DialogResult.OK) { printData = db; printDocument1.Print(); l.WriteLog(10, "当前第" + (i + 1) + "次打印:" + printData.iType + " 车号:" + db.printDb.carNo + ",二维码:" + db.qrCode); } else { l.WriteLog(10, "车号【" + PbCache.lockCarNo + "】第" + i + "次是否打印,选择了【否】"); } } //printData = db; //printDocument1.Print(); //lg.WriteLog(11, "当前打印:" + printData.iType + " 车号:" + db.printDb.carNo); } } } else { l.WriteLog(10, "车号【" + PbCache.lockCarNo + "】是否打印选择了【否】"); l.WriteLog(15, PbCache.lockCarNo + "是否打印选择了【否】"); } } } } else { l.WriteLog(10, "车号【" + PbCache.lockCarNo + "】获取打印配置数据信息异常sql:【" + sql + "】"); } } } } else { l.WriteLog(10, "车号【" + PbCache.lockCarNo + "】获取计量数据信息异常sql:【" + sql + "】"); } #endregion 获取打印信息,若需要打印则调用打印操作 } catch (Exception ex) { l.WriteLog(10, "车号【" + PbCache.lockCarNo + "】打印异常" + ex); } } private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { try { if (printData != null && printData.printDb != null) { printClass.PrintAllPage(e, printData.printDb, printData.qrCode); /* //结净打印 if (printData.iType == 2) { printClass.PrintPage(e, printData.printDb, PbCache.strQRCode); } else //非结净打印 { printClass.PrintWgtPage(e, printData.printDb, PbCache.strQRCode); } //*/ } } catch (Exception ex) { l.WriteLog(11, "打印异常" + ex); } } /// /// 重量大于500,直接打开主界面 /// /// /// private void timer1_Tick(object sender, EventArgs e) { //timer1.Stop(); try { if (!isOpened && PbCache.collect?.weight > 500) { PbCache.bussinessTypeName = ""; PbCache.bussinessTypeCode = ""; if (fcc.Visible == false) { fcc.Visible = true; fcc.init(); } } timer1.Interval = 1000; } catch (Exception ee) { //GlobalInstanceController.Instance.LastCallMessage = ee.Message; timer1.Interval = 1000; } //timer1.Start(); } /// /// 操作Live表的数据:零点报警 /// private void doOperateLive() { if (PbCache.collect_no == null) { return; } List ll = MemoClass.getWarnInfo(PbCache.collect_no); if (ll != null) { foreach (LiveData lv in ll) { switch (lv.Tagname.Replace(PbCache.collect_no, "")) { case "StaticStatus"://车辆检测 "0、东西方向激光均无报警;否则报警 break; case "SwitchLight"://PLC红绿灯控制模式状态 "PLC有三种控制模式:1、自动、2、远控;3、检修 break; case "LightWest"://红绿灯:1、为绿灯;2、为红灯;" break; case "ZeroWeightStatus": //0、其它,1、零点报警,红绿灯变红, if (((lv.Value ?? "0") + "").Equals("1")) { doInsertZeroAlarm(); PbCache.isZeroAlarm = true; } else { PbCache.isZeroAlarm = false; } break; } } } } /// /// 操作Live表的数据:零点报警 /// private void doLive() { if (PbCache.collect_no == null) { return; } List ll = MemoClass.getWarnInfo(PbCache.collect_no); MeterWorkMonitor mwm = new MeterWorkMonitor(); mwm.pointNo = PbCache.sportInfo.baseSpotNo; mwm.redGreenLightState = "0"; if (ll != null) { foreach (LiveData lv in ll) { switch (lv.Tagname.Replace(PbCache.collect_no, "")) { case "PowerStatus": mwm.powerState = lv.Value.ToString(); break; case "PlcWatchDog": if (int.Parse(lv.Value.ToString()) >= 0 && int.Parse(lv.Value.ToString()) <= 0) { mwm.plcState = 0.ToString(); } break; case "InfraredWest": if (lv.Value.ToString() == "2") { mwm.leftInfraredRayState = "0"; } else { mwm.leftInfraredRayState = lv.Value.ToString(); } break; case "InfraredEast": if (lv.Value.ToString() == "2") { mwm.rightInfraredRayState = "0"; } else { mwm.rightInfraredRayState = lv.Value.ToString(); } break; case "AmplifierState": mwm.amplifierState = lv.Value.ToString(); break; case "LampState": if (lv.Value.ToString() == "2") { mwm.lampState = "0"; } else { mwm.lampState = lv.Value.ToString(); } break; case "InfraredLeft": if (lv.Value.ToString() == "2") { mwm.frontInfraredRayState = "0"; } else { mwm.frontInfraredRayState = lv.Value.ToString(); } break; case "InfraredRight": if (lv.Value.ToString() == "2") { mwm.rearInfraredRayState = "0"; } else { mwm.rearInfraredRayState = lv.Value.ToString(); } break; case "ZeroWeightStatus": mwm.zeroState = lv.Value.ToString(); break; case "RfidState": mwm.rfidState = lv.Value.ToString(); if (((lv.Value ?? "0") + "").Equals("1")) { doInsertZeroAlarm(); PbCache.isZeroAlarm = true; } else { PbCache.isZeroAlarm = false; } break; } } } RESTfulResult rms = meterWorkMonitor.doUpdateWf(mwm); } /// /// 新增零点报警的数据 /// private void doInsertZeroAlarm() { if (!PbCache.isZeroAlarm) { PbCache.isZeroAlarm = true; MeterWorkZeroAlarm workZeroAlarm = new MeterWorkZeroAlarm(); workZeroAlarm.zeroWeight = PbCache.collect.weight; workZeroAlarm.spotTypeNo = PbCache.sportInfo.spotTypeNo; workZeroAlarm.spotTypeName = PbCache.sportInfo.spotTypeName; workZeroAlarm.baseSpotNo = PbCache.sportInfo.baseSpotNo; workZeroAlarm.baseSpotName = PbCache.sportInfo.baseSpotName; workZeroAlarm.scalePointNo = PbCache.collect_no; workZeroAlarm.createManNo = PbCache.sportInfo.baseSpotNo; workZeroAlarm.createManName = PbCache.sportInfo.baseSpotName; RESTfulResult rms = zeroAlarmService.doInsertZeroAlarm(workZeroAlarm); if (rms.Succeed) { l.WriteLog(20, "新增成功:" + workZeroAlarm.baseSpotName + ":" + workZeroAlarm.zeroWeight); } else { l.WriteLog(20, "操作失败:" + workZeroAlarm.baseSpotName + ":" + workZeroAlarm.zeroWeight + rms.Data + rms.Message); } } } private void button3_Click(object sender, EventArgs e) { string limsResult = ""; JGLimsInterface gLimsInterface = new JGLimsInterface(); } /// /// 查询重量信息,显示在界面上面 /// /// /// private void button4_Click(object sender, EventArgs e) { try { string sqls = @"select '毛重:' || t.gross_weight / 1000 || ' T / 皮重:' || t.tare_weight / 1000 || ' T / 净重:' || t.net_weight / 1000 || ' T ' as text from meter_work_car_actual t where t.value_flag = '0' and T.Prediction_No = '" + txtPlanNo.Text + @"'"; PbModelDbService> pbRelation = new PbModelDbService>(); RESTfulResult> rmRelation = pbRelation.executeSqlDataWf(sqls); if (rmRelation.Succeed && rmRelation.Data != null && rmRelation.Data.Count > 0) { MessageBox.Show(rmRelation.Data[0].text); } else { MessageBox.Show("空"); } } catch (Exception ex) { } } private void button1_Click(object sender, EventArgs e) { isOpened = false; testFlag = true; PbCache.isTest= true; testWgt = (int)numericUpDown1.Value; //CollectModel model = new CollectModel(); //model.weight = testWgt; //PbCache.collect = model; testCarNo = textBox1.Text.Trim(); testPlanNo = txtPlanNo.Text.Trim(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { collection.Stop(); imageCurlControl.Stop(); sweepCodeClass.CloseThread(); sweepCodeClass2.CloseThread(); timer1.Stop(); timer1.Dispose(); } private bool SystemUpdate(bool isMessage) { ReleaseList releaseList = new ReleaseList(Application.StartupPath + @"\" + GlobalVariable.Instance.ReleaseFileName); DownloadTools dt = new DownloadTools(); try { bool isDownload = dt.IsDownloadFile(GlobalVariable.Instance.LocalPath, GlobalVariable.Instance.ReleaseURL, GlobalVariable.Instance.ReleaseFileName); if (!isDownload) { if (isMessage) MessageBox.Show("无法连接到远程主机!", Application.ProductName); return false; } } catch (Exception e) { MessageBox.Show(e.Message); } bool flag = this.CheckUpdate(releaseList); if (flag) { MessageBox.Show("有新版本,现在更新"); string t = dt.DownloadFile(Application.StartupPath, GlobalVariable.Instance.ReleaseURL, GlobalVariable.Instance.ApplicationUpdater); this.Close(); Application.Exit(); GC.Collect(); Process.Start(Application.StartupPath + @"\" + GlobalVariable.Instance.ApplicationUpdater); return true; } else { if (isMessage) MessageBox.Show("你的系统已经是最新版本,不需要更新!", Application.ProductName); return false; } } private bool CheckUpdate(ReleaseList localRelease) { try { string fileNameAll = Application.StartupPath + "\\" + GlobalVariable.Instance.LocalPath + "\\" + GlobalVariable.Instance.ReleaseFileName; ReleaseList remoteRelease = new ReleaseList(fileNameAll); return (((localRelease != null) && (remoteRelease != null)) && localRelease.ReleaseDate.CompareTo(remoteRelease.ReleaseDate) < 0); } catch (Exception exception) { MessageBox.Show(exception.Message); } return false; } #region PING IP /// /// ping ip,测试能否ping通 /// /// IP地址 /// private bool PingIp(string strIP) { bool bRet = false; try { Ping pingSend = new Ping(); PingReply reply = pingSend.Send(strIP, 1000); if (reply.Status == IPStatus.Success) bRet = true; } catch (Exception) { bRet = false; } return bRet; } #endregion } }