| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- 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
- {
- /// <summary>
- /// 验证预报信息,在扫码的时候验证
- /// </summary>
- /// <param name="scale">预报信息</param>
- 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<List<PreTrackScale>> 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;
- }
- }
- }
|