using com.hnshituo.core.webapp.vo; using Common; using System; using System.Collections.Generic; using System.Linq; namespace MeterConditionLibrary { /// /// 验证危化品超重,是否可运危化品 /// 这个类应该是在计量验证重量及 /// 验证流程后,从计量场景库的类中调用过来的 /// public class validExceedWgt { private Log lg = Log.GetInstance(); /// /// 验证物料是否是危化品(是否在物资限载配配置表:meter_base_limit_chemical中配置数据) /// /// 预报信息 /// 计量类型,1过毛重,2过皮重,3结净 /// 一次计量信息,若为结净状态才有值 public void validMatMethod(PreTrackScale scale, string sMeterType, MeterWorkCarActualFirst fristMeter) { //未锁定的情况下 //if (!PbCache.isLockFrm) { //验证危化品 if (PbCache.monitor.validExceedWgt == "1" && !PbCache.isNotValid) { if (PbCache.limit != null && PbCache.limit.Count > 0) { List mblc = PbCache.limit.Where(s => s.matterNo == scale.matterNo).ToList(); //该物料是危化品 if (mblc.Count > 0) { PbCache.monitorResult.valid_exceed_mat = true; validTransMethod(scale, sMeterType, fristMeter); } else { PbCache.monitorResult.valid_exceed_mat = false; PbCache.monitorResult.valid_exceed_train = false; PbCache.monitorResult.valid_exceed_wgt = true; } } else { PbCache.monitorResult.valid_exceed_mat = false; PbCache.monitorResult.valid_exceed_train = false; PbCache.monitorResult.valid_exceed_wgt = true; } } else { PbCache.monitorResult.valid_exceed_mat = false; PbCache.monitorResult.valid_exceed_train = false; PbCache.monitorResult.valid_exceed_wgt = true; } } } /// /// 验证该车是否能拖危化品 /// 这个需要在得到预报的情况下开始验证,且要比所有其它的验证要靠前一点,且只验证一次 /// /// 预报信息 /// 计量类型,1过毛重,2过皮重,3结净 private void validTransMethod(PreTrackScale scale, string sMeterType, MeterWorkCarActualFirst fristMeter) { MeterWorkCarCheckService service = new MeterWorkCarCheckService(); MeterWorkCarCheck oci = new MeterWorkCarCheck(); oci.predictionNo = scale.predictionNo; RESTfulResult> rlm = service.doQueryWf(oci); if (rlm.Succeed) { if (rlm.Data != null && rlm.Data.Count > 0) { PbCache.monitorResult.valid_exceed_train = true; //验证危化品是否超重 validWgtMethod(scale, rlm.Data[0], sMeterType, fristMeter); } else { PbCache.monitorResult.valid_exceed_train = false; PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = "未找到预报对应的物资限载配置信息"; } } else { PbCache.monitorResult.valid_exceed_train = false; PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = rlm.ResultMessage; } } /// /// 危化品是否超重 /// /// 预报信息 /// 计量类型,1过毛重,2过皮重,3结净 private void validWgtMethod(PreTrackScale scale, MeterWorkCarCheck data, string sMeterType, MeterWorkCarActualFirst fristMeter) { //配置了危化品验证信息 if (PbCache.limit != null && PbCache.limit.Count > 0) { List mblc = PbCache.limit.Where(s => s.matterNo == scale.matterNo).ToList(); if (mblc != null) { if (mblc.Count == 1) { //******** eason 2020-10-10 001015002为毛重计量类型 001015001净重计量类型 if (sMeterType == "1" && mblc[0].limitTypeNo == "001015002") { //mblc[0].limit_class_no 001016001固定重量 001016002跟车重量 if (mblc[0].limitClassNo == "001016001") //固定重量 { if (mblc[0].limitWeight > PbCache.lockWgt) { PbCache.monitorResult.valid_exceed_wgt = true; } else { PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = "车辆重量超过物资限载重量[" + mblc[0].limitWeight / 1000 + "T]"; } } else if (mblc[0].limitClassNo == "001016002") //跟车重量 { if (data.limitWeight > PbCache.lockWgt) { PbCache.monitorResult.valid_exceed_wgt = true; } else { PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = "车辆重量超过跟车重量[" + mblc[0].limitWeight / 1000 + "T]"; } } else { PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = "没有限载种类的逻辑请远程求助"; lg.WriteLog(3, "没有限载种类[" + mblc[0].limitClassName + "]的逻辑"); } } //出净重时,毛重限载 else if (sMeterType == "3" && mblc[0].limitTypeNo == "001015002") { //mblc[0].limit_class_no 001016001固定重量 001016002跟车重量 if (mblc[0].limitClassNo == "001016001") //固定重量 { if (mblc[0].limitWeight > PbCache.lockWgt) { PbCache.monitorResult.valid_exceed_wgt = true; } else { PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = "车辆重量超过物资限载重量[" + mblc[0].limitWeight / 1000 + "T]"; } } else if (mblc[0].limitClassNo == "001016002") //跟车重量 { if (data.limitWeight > PbCache.lockWgt) { PbCache.monitorResult.valid_exceed_wgt = true; } else { PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = "车辆重量超过跟车重量[" + mblc[0].limitWeight / 1000 + "T]"; } } else { PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = "没有限载种类的逻辑请远程求助"; lg.WriteLog(3, "没有限载种类[" + mblc[0].limitClassName + "]的逻辑"); } } else if (sMeterType == "3" && mblc[0].limitTypeNo == "001015001") { //mblc[0].limit_class_no 001016001固定重量 001016002跟车重量 if (mblc[0].limitClassNo == "001016001") { if (mblc[0].limitWeight > Math.Abs(fristMeter.meterWeight.Value - PbCache.lockWgt - (fristMeter.addWeight == null ? 0 : fristMeter.addWeight.Value))) //毛重-皮重的值- 附加重量 { PbCache.monitorResult.valid_exceed_wgt = true; } else { PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = "车辆重量超过物资限载重量[" + mblc[0].limitWeight / 1000 + "T]"; } } else if (mblc[0].limitClassNo == "001016002") //跟车重量 { if (data.limitWeight > Math.Abs(fristMeter.meterWeight.Value - PbCache.lockWgt - (fristMeter.addWeight == null ? 0 : fristMeter.addWeight.Value))) //毛重-皮重的值- 附加重量 { PbCache.monitorResult.valid_exceed_wgt = true; } else { PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = "车辆重量超过跟车重量[" + mblc[0].limitWeight / 1000 + "T]"; } } else { PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = "没有限载种类的逻辑请远程求助"; lg.WriteLog(3, "没有限载种类[" + mblc[0].limitClassName + "]的逻辑"); } } else { PbCache.monitorResult.valid_exceed_wgt = false; lg.WriteLog(3, string.Format("未找到物料为[{0}],限制类型为[{0}],的物资限载配置信息", mblc[0].matterName, (sMeterType == "1" ? "毛重" : "净重"))); PbCache.ResultMessage = string.Format("未找到物料为[{0}],限制类型为[{0}],的物资限载配置信息", mblc[0].matterName, (sMeterType == "1" ? "毛重" : "净重")); } } else { PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = "该物料配置了多条物资限载配置信息"; } } else { PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = "未配置物资限载配置信息"; } } else { PbCache.monitorResult.valid_exceed_wgt = false; PbCache.ResultMessage = "未配置物资限载配置信息"; } } } }