using Common; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using com.hnshituo.core.webapp.vo; namespace MeterConditionLibrary { public class validPrediction { /// /// 验证预报信息,在扫码的时候验证 /// /// 预报信息 public bool ValidMethod(PreTrackScale scale,out string ResultMessage) { bool flag = false; ResultMessage = ""; //若预报是批次预报PREDICTION_TYPE 0:批次预报;1:单次预报;2:联运预报;3:分检预报,需验证预报类型USED_TYPE 0:次数;1:时间;2:总量 //一次计量类型为次数时,验证EFFECTIVE_NUM-METER_NUM>0,服务端每结净一次++METER_NUM //一次计量类型为时间时,验证当前时间在EFFECTIVE_START_TIME、EFFECTIVE_END_TIME范围内即可 //一次计量类型为总量时,验证EFFECTIVE_WEIGHT-METER_WEIGHT>0,服务端每次结净一次METER_WEIGHT+净重 //一次计量时若预报是分检预报,验证EFFECTIVE_NUM-METER_NUM>0,服务端每结净一次++METER_NUM //一次计量时不是批次预报,则只要有效即可 PreTrackScaleService mwmss = new PreTrackScaleService(); RESTfulResult> rm = mwmss.doQueryWf(new PreTrackScale { predictionNo = scale.predictionNo }); if (!rm.Succeed) { ResultMessage = "未找到有效预报!"; PbCache.ResultMessage = "获取预报信息异常:" + rm.ResultMessage; } else { if (rm.Data == null || rm.Data.Count == 0) { ResultMessage = "【"+ scale.predictionNo + "】未找到有效预报"; } else { switch (rm.Data[0].valueFlag) { case "0": //未配车 ResultMessage = "【" + scale.predictionNo + "】,未找到有效预报,请先进行配车操作!"; break; case "1": //未使用,说明是一次计量 { if (rm.Data[0].predictionType == "0") //0:批次预报 { if (rm.Data[0].usedType == "0") //0:次数; { if (rm.Data[0].effectiveNum - rm.Data[0].meterNum > 0) { flag = true; } else { ResultMessage = "计量预报已经使用";//该预报检斤次数已用完,无法继续使用 PbCache.ResultMessage = "预报【" + scale.predictionNo + "】检斤次数已用完,无法继续使用"; } } else if (rm.Data[0].usedType == "1") //1:时间; { if (rm.Data[0].effectiveStartTime <= DateTime.Now && DateTime.Now <= rm.Data[0].effectiveEndTime) { flag = true; } else { ResultMessage = "计量预报已经过期"; PbCache.ResultMessage = "计量预报【" + scale.predictionNo + "】已经过期"; } } else if (rm.Data[0].usedType == "2") //2:总量 { if (rm.Data[0].effectiveWeight > rm.Data[0].meterWeight) { flag = true; } else { ResultMessage = "计量预报已经使用";// PbCache.ResultMessage = "预报【" + scale.predictionNo + "】有效重量已用完,无法继续使用"; } } } else if (rm.Data[0].predictionType == "1" || rm.Data[0].predictionType == "2") //1:单次预报;2:联运预报 { flag = true; } else if (rm.Data[0].predictionType == "3") //3:分检预报 { if (rm.Data[0].effectiveNum - rm.Data[0].meterNum > 0) { flag = true; } else { ResultMessage = "计量预报已经使用";//该预报检斤次数已用完,无法继续使用 PbCache.ResultMessage = "预报检斤【" + scale.predictionNo + "】次数已用完,无法继续使用"; } } else { ResultMessage = "未找到有效预报"; PbCache.ResultMessage = string.Format("没有预报类型为【{0}】的逻辑", rm.Data[0].predictionType); } }; break; case "2": ResultMessage = "计量预报已经使用";// PbCache.ResultMessage = "计量预报【" + scale.predictionNo + "】已经使用"; //flag = true; break; case "3": ResultMessage = "计量预报已经过期"; PbCache.ResultMessage = "该预报【" + scale.predictionNo + "】已作废"; break; case "4": //正使用 //已使用,则不验证,因为一次计量的时候会验证一次 flag = true; //ResultMessage = "计量预报已经使用";// //PbCache.ResultMessage = "计量预报已经使用"; break; } } } return flag; } } }