| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386 |
- using com.hnshituo.core.webapp.vo;
- using Common;
- using MeterConditionLibrary;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace MeterSceneLibrary
- {
- /// <summary>
- /// 内倒计量业务
- /// </summary>
- public class InnerMeter
- {
- /// <summary>
- /// InnerMeterInfo 如果没有一次数据,那么scale的物料会为空,若有一次数据,由于会写到界面上,所以这个也会有值
- /// </summary>
- /// <param name="scale"></param>
- /// <returns></returns>
- public rtInfo MeterMethod(InnerMeterInfo scale)
- {
- Log lg = Log.GetInstance();
- rtInfo rt = new rtInfo();
- rt.isError = false;
- string ResultMessage = "";
- bool isError = false;
- //验证架子号与附加重量的关系;2021年6月23日 发现存在有架子号没重量的情况
- if (PbCache.addWgt == 0 && !string.IsNullOrEmpty(scale.addWgtPk))
- {
- rt.result = false;
- rt.isError = isError;
- rt.resultInfo = "已经输入架子号,但附加重量为 0 ,请重新选择架子号或清空架子号!";
- PbCache.ResultMessage = "已经输入架子号,但附加重量为 0 ,请重新选择架子号或清空架子号!";
- return rt;
- }
- //验证是否是内倒车辆
- //*
- if (string.IsNullOrEmpty(scale.predictionNo) || !scale.predictionNo.StartsWith("000"))
- {
- validCarCard vcc = new validCarCard();
- if (!vcc.ValidMethod(scale, out ResultMessage, out isError))
- {
- rt.result = false;
- rt.isError = isError;
- rt.resultInfo = ResultMessage;
- return rt;
- }
- }
- //*/
- //验证两次计量时间间隔
- PreTrackScale preTrack = new PreTrackScale();
- preTrack.carNo = scale.carNo;
- validTimeInterval vti = new validTimeInterval();
- vti.ValidMethod(preTrack, "1", null);
- if (!PbCache.monitorResult.valid_time_interval)
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- return rt;
- }
- validWgt validWgt = new validWgt();
- //验证是否是皮重,若为true则是皮,否则无法判断是毛还是皮
- validWgt.ValidMethod(new PreTrackScale { carNo = scale.carNo, matterNo = scale.matterNo });
- //查询车辆的历史皮重
- MeterBaseHisTareDataService mbtds = new MeterBaseHisTareDataService();
- RESTfulResult<List<MeterBaseHisTareData>> rm = mbtds.doQueryWf(new MeterBaseHisTareData { valueFlag = "0", carNo = scale.carNo });
- if (!rm.Succeed)
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "没有计量信息点语音求助";
- PbCache.ResultMessage = "获取历史皮重异常!";
- return rt;
- }
- //*
- //厂内车,验证危化品验证,存在物料,且不为皮重
- if (!string.IsNullOrEmpty(scale.matterNo) && !PbCache.monitorResult.valid_wgt)
- {
- validInnerExceedWgt vew = new validInnerExceedWgt();
- vew.validMatMethod(scale, rm);
- if (!PbCache.monitorResult.valid_exceed_wgt)
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- return rt;
- }
- }
- //*/
- //获取一次计量数据
- MeterWorkCarActualFirstService mwcfs = new MeterWorkCarActualFirstService();
- RESTfulResult<List<MeterWorkCarActualFirst>> rmX = mwcfs.doQueryWf(new MeterWorkCarActualFirst { valueFlag = "1", carNo = scale.carNo });
- if (!rmX.Succeed)
- {
- rt.result = false;
- rt.resultInfo = "没有计量信息点语音求助";
- PbCache.ResultMessage = "获取一次计量数据异常!请点[语音求助]";
- rt.isError = true;
- }
- else
- {
- if (rmX.Data != null && rmX.Data.Count == 1 && !"中控倒运".Equals(rmX.Data[0].meterTypeName))
- {
- rt.result = false;
- rt.isError = isError;
- rt.resultInfo = "已经存在一次计量信息";
- lg.WriteLog(3, "一次计量数据的类型[" + rmX.Data[0].meterTypeName + "]与当前的业务类型[中控倒运]不一致,请点击[返回主界面]重新选择业务类型!");
- PbCache.ResultMessage = "一次计量数据的类型[" + rmX.Data[0].meterTypeName + "]与当前的业务类型[中控倒运]不一致,请点击[返回主界面]重新选择业务类型!";
- return rt;
- }
- }
- //相同名称的均赋值一次
- MeterWorkCarActualFirst mwaf = new MeterWorkCarActualFirst();
- EntityBase<InnerMeterInfo> entityBase = new EntityBase<InnerMeterInfo>();
- mwaf = entityBase.format<MeterWorkCarActualFirst>(scale, mwaf);
- mwaf.actualFirstNo = DateTime.Now.ToString("yyyyMMdd");//10
- mwaf.meterWeight = PbCache.lockWgt;//计量重量
- mwaf.addWeight = PbCache.addWgt;//附加重量
- //mwaf.weightType = "0"; //0=毛重;1=常规皮重;2=期限皮重;3=历史皮重;4=标识皮重;5=自重皮重
- mwaf.createManNo = "";
- mwaf.createManName = "";
- mwaf.createTime = DateTime.Now;
- mwaf.baseSpotNo = PbCache.sportInfo.baseSpotNo;//计量点编号
- mwaf.baseSpotName = PbCache.sportInfo.baseSpotName;
- //mwaf.memo = "";
- mwaf.valueFlag = "1"; //1有效
- mwaf.updateManName = "";
- mwaf.updateManNo = "";
- mwaf.updateTime = null;
- mwaf.checkFlag = "0"; //0未审核
- mwaf.meterMode = "2"; //智能计量
- //车辆上来后,若scale中的物料没有值,则认为是过皮,此时要去验证下是否存在历史皮,若有且符合则过皮,否则若重量大于提示请录入xxx
- if (string.IsNullOrEmpty(scale.matterNo))
- {
- //若物料没信息,则认为是过皮重
- //如果是皮重或者计量员勾选了不验证重量
- if (PbCache.monitorResult.valid_wgt)
- {
- //如果没有一次计量数据
- if (rmX.Data == null || rmX.Data.Count == 0)
- {
- //操作日志
- MeterMonitorNote monitorNote = new MeterMonitorNote();
- monitorNote.baseSpotNo = mwaf.baseSpotNo;
- monitorNote.baseSpotName = mwaf.baseSpotName;
- monitorNote.operationContent = string.Format("称重保存");
- monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- monitorNote.carNo = mwaf.carNo;
- monitorNote.meterNoteSource = "0";
- //存储皮重信息
- mwaf.weightType = "1";
- RESTfulResult<string> rmI = mwcfs.doAddInnerWf(mwaf, monitorNote, PbCache.monitor.validWgt);//说明是需验证皮重,且皮重验证通过了
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- rt.message = rmI.Message;
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = true;//皮重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- }
- else //存在一次计量数据
- {
- //看下两次数据差值是否在1t内,若一次减去当前值在1t内则认为是重复计量,若大于1t则比较两者时间差是否满足要求
- //若时满足要求,则可进行计量,否则提示时间异常
- //若时间也正常,则毛皮结合,然后保存历史皮重
- if (Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) >= AppConfigCache.differenceWgt) //一次为毛重
- {
- if (PbCache.lockWgt > rmX.Data[0].meterWeight)
- {
- rt.result = false;
- rt.isError = true;
- PbCache.ResultMessage = "当前重量【" + PbCache.lockWgt / 1000 + "】大于一次计量重量【" + rmX.Data[0].meterWeight / 1000 + "】,系统判断为毛重,计量毛重需要录入业务编号信息";
- rt.resultInfo = "信息输入有误";
- return rt;
- }
- else if (string.IsNullOrEmpty(rmX.Data[0].matterNo)) //一次为毛,且没有物料信息
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "信息输入有误";
- PbCache.ResultMessage = "一次计量毛重时,未录入业务编号信息,所以当前计量皮重需要录入业务编号信息";
- return rt;
- }
- validTimeInterval vtime = new validTimeInterval();
- vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
- if (PbCache.monitorResult.valid_time_interval)
- {
- validTareTime vttime = new validTareTime();
- vttime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003", matterNo = rmX.Data[0].matterNo }, "3", rmX.Data[0]);
- if (PbCache.monitorResult.valid_tare_time)
- {
- scale.matterNo = rmX.Data[0].matterNo;
- scale.matterName = rmX.Data[0].matterName;
- scale.batchNo = rmX.Data[0].batchNo;
- scale.meterTypeNo = "001006003";
- scale.forwardingUnitNo = rmX.Data[0].forwardingUnitNo;
- scale.forwardingUnitName = rmX.Data[0].forwardingUnitName;
- scale.receivingUintNo = rmX.Data[0].receivingUintNo;
- scale.receivingUintName = rmX.Data[0].receivingUintName;
- // 结净数据
- MeterWorkCarActual netDb = new MeterWorkCarActual();
- EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
- netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
- //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
- netDb.tareTime = DateTime.Now;
- netDb.tareWeight = PbCache.lockWgt;
- netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
- netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
- netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- /* netDb.tare_man_no = "";
- netDb.tare_man_name = "";
- netDb.tare_class = "";
- netDb.tare_group = "";*/
- netDb.actualFirst1No = rmX.Data[0].actualFirstNo;
- netDb.grossTime = rmX.Data[0].createTime;
- netDb.grossWeight = rmX.Data[0].meterWeight;
- netDb.baseSpot1No = rmX.Data[0].baseSpotNo;
- netDb.baseSpot1Name = rmX.Data[0].baseSpotName;
- netDb.grossMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- netDb.grossManNo = rmX.Data[0].createManNo;
- netDb.grossManName = rmX.Data[0].createManName;
- netDb.grossClass = rmX.Data[0].meterClass;
- netDb.grossGroup = rmX.Data[0].meterGroup;
- netDb.netTime = DateTime.Now;
- //netDb.netManNo = appUser.userid; //净重计量员编码
- //netDb.netManName = appUser.username; //净重计量员名称
- netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
- netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
- netDb.addWeight = (rmX.Data[0].addWeight == null ? 0 : rmX.Data[0].addWeight.Value);
- //净重=毛-皮-附加重量
- netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
- netDb.netMode = "1"; //1:正常结净;2:匹配结净
- netDb.valueFlag = "0"; //0=有效,1=作废
- netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
- //要判断下当前是否勾选了不验证皮重
- mwaf.weightType = "1";
- //操作日志
- MeterMonitorNote monitorNote = new MeterMonitorNote();
- monitorNote.baseSpotNo = mwaf.baseSpotNo;
- monitorNote.baseSpotName = mwaf.baseSpotName;
- monitorNote.operationContent = string.Format("结净称重保存");
- monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- monitorNote.carNo = mwaf.carNo;
- monitorNote.meterNoteSource = "0";
- RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, PbCache.monitor.validWgt);
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- rt.message = rmI.Message;
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = true;//皮重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- }
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- }
- }
- else
- {
- //重复计量称重完成
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "第一次计量重量和第二次计量重量接近";
- //PbCache.ResultMessage = "第一次计量重量和第二次计量重量接近";
- PbCache.ResultMessage = "第一次计量重量【" + rmX.Data[0].meterWeight.Value / 1000 + "T】和第二次计量重量【" + PbCache.lockWgt / 1000 + "T】接近,小于结净最小值【" + AppConfigCache.differenceWgt / 1000 + " T】,请点击[语音求助],由司秤工过磅!";
- }
- }
- }
- else //皮重验证不通过
- {
- //存在历史皮重
- if (rm.Data != null && rm.Data.Count > 0)
- {
- //有历史皮重,且当前重量不一定是皮重
- //当前重量-历史皮重<1t 则认为是皮重异常,提示
- //当前重量-历史皮重>1t 则认为是过毛重,此时提示计量毛重需要录入物料等信息
- long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? rm.Data[0].upWeight.Value : rm.Data[0].avgWeight.Value);
- if (PbCache.lockWgt - meterWeight >= AppConfigCache.differenceWgt)
- {
- //当前是毛重
- rt.result = false;
- rt.isError = true;
- PbCache.ResultMessage = "当前重量【" + PbCache.lockWgt / 1000 + "T】减历史皮重【" + meterWeight / 1000 + "T】大于结净最低值【" + AppConfigCache.differenceWgt / 1000 + "T】,系统判断为毛重,计量毛重需要录入业务编号信息";
- rt.resultInfo = "信息输入有误";
- }
- }
- else //没有历史皮重信息
- {
- //不存在一次计量数据
- if (rmX.Data == null || rmX.Data.Count == 0)
- {
- //操作日志
- MeterMonitorNote monitorNote = new MeterMonitorNote();
- monitorNote.baseSpotNo = mwaf.baseSpotNo;
- monitorNote.baseSpotName = mwaf.baseSpotName;
- monitorNote.operationContent = string.Format("称重保存");
- monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- monitorNote.carNo = mwaf.carNo;
- monitorNote.meterNoteSource = "0";
- //此时直接存储一条皮重计量数据,等后面二次上秤计量的时候,根据重量差值来判断前一条与当前这条哪个是毛哪个是皮
- //存储皮重信息
- mwaf.weightType = "1";
- mwaf.addWeight = PbCache.addWgt;
- RESTfulResult<string> rmI = mwcfs.doAddInnerWf(mwaf, monitorNote, "0");//
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.resultInfo = "称重完成";
- rt.message = rmI.Message;
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = true;//皮重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- }
- else //存在一次计量数据
- {
- //看下两次数据差值是否在1t内,若一次减去当前值在1t内则认为是重复计量,若大于且1t且一次为毛重则比较两者时间差是否满足要求
- //若满足要求,则可进行计量,否则提示时间异常
- //若时间正常,则毛皮结合,然后保存历史皮重
- if (Math.Abs(PbCache.lockWgt - rmX.Data[0].meterWeight.Value) < AppConfigCache.differenceWgt)
- {
- //重复计量
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "第一次计量重量和第二次计量重量接近";
- //PbCache.ResultMessage = "第一次计量重量和第二次计量重量接近";
- PbCache.ResultMessage = "第一次计量重量【" + rmX.Data[0].meterWeight.Value / 1000 + "T】和第二次计量重量【" + PbCache.lockWgt / 1000 + "T】接近,小于结净最小值【" + AppConfigCache.differenceWgt / 1000 + " T】,请点击[语音求助],由司秤工过磅!";
- }
- else
- {
- //当前是毛重
- if (PbCache.lockWgt > rmX.Data[0].meterWeight)
- {
- rt.result = false;
- rt.isError = true;
- PbCache.ResultMessage = "当前重量【" + PbCache.lockWgt / 1000 + "T】大于一次计量重量【" + rmX.Data[0].meterWeight / 1000 + "T】,系统判断为毛重,计量毛重需要录入业务编号信息";
- rt.resultInfo = "信息输入有误";
- }
- else //当前是皮,第一次是毛
- {
- //没有历史皮,存在一次计量数据,当前是皮,且计量数据没有物料信息
- if (string.IsNullOrEmpty(rmX.Data[0].matterNo))
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "信息输入有误";
- PbCache.ResultMessage = "一次计量毛重时,未录入业务编号信息,所以当前计量皮重需要录入业务编号信息";
- return rt;
- }
- //时间间隔
- validTimeInterval vtime = new validTimeInterval();
- vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
- if (PbCache.monitorResult.valid_time_interval)
- {
- //回皮时间
- validTareTime vttime = new validTareTime();
- vttime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003", matterNo = rmX.Data[0].matterNo }, "3", rmX.Data[0]);
- if (PbCache.monitorResult.valid_tare_time)
- {
- scale.matterNo = rmX.Data[0].matterNo;
- scale.matterName = rmX.Data[0].matterName;
- scale.batchNo = rmX.Data[0].batchNo;
- scale.meterTypeNo = "001006003";
- scale.forwardingUnitNo = rmX.Data[0].forwardingUnitNo;
- scale.forwardingUnitName = rmX.Data[0].forwardingUnitName;
- scale.receivingUintNo = rmX.Data[0].receivingUintNo;
- scale.receivingUintName = rmX.Data[0].receivingUintName;
- // 结净数据
- MeterWorkCarActual netDb = new MeterWorkCarActual();
- EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
- netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
- //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
- netDb.tareTime = DateTime.Now;
- netDb.tareWeight = PbCache.lockWgt;
- netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
- netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
- netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- /* netDb.tare_man_no = "";
- netDb.tare_man_name = "";
- netDb.tare_class = "";
- netDb.tare_group = "";*/
- netDb.actualFirst1No = rmX.Data[0].actualFirstNo;
- netDb.grossTime = rmX.Data[0].createTime;
- netDb.grossWeight = rmX.Data[0].meterWeight;
- netDb.baseSpot1No = rmX.Data[0].baseSpotNo;
- netDb.baseSpot1Name = rmX.Data[0].baseSpotName;
- netDb.grossMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- netDb.grossManNo = rmX.Data[0].createManNo;
- netDb.grossManName = rmX.Data[0].createManName;
- netDb.grossClass = rmX.Data[0].meterClass;
- netDb.grossGroup = rmX.Data[0].meterGroup;
- netDb.netTime = DateTime.Now;
- //netDb.netManNo = appUser.userid; //净重计量员编码
- //netDb.netManName = appUser.username; //净重计量员名称
- netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
- netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
- netDb.addWeight = (rmX.Data[0].addWeight == null ? 0 : rmX.Data[0].addWeight.Value);
- //净重=毛-皮-附加重量
- netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
- netDb.netMode = "1"; //1:正常结净;2:匹配结净
- netDb.valueFlag = "0"; //0=有效,1=作废
- netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
- //要判断下当前是否勾选了不验证皮重
- mwaf.weightType = "1";
- //操作日志
- MeterMonitorNote monitorNote = new MeterMonitorNote();
- monitorNote.baseSpotNo = mwaf.baseSpotNo;
- monitorNote.baseSpotName = mwaf.baseSpotName;
- monitorNote.operationContent = string.Format("结净称重保存");
- monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- monitorNote.carNo = mwaf.carNo;
- monitorNote.meterNoteSource = "0";
- RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, PbCache.monitor.validWgt);
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- rt.message = rmI.Message;
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = true;//皮重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- }
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- }
- }
- }
- }
- }
- }
- }
- else //若录入了物料等信息
- {
- //如果是皮重
- if (PbCache.monitorResult.valid_wgt)
- {
- //如果没有一次计量数据
- if (rmX.Data == null || rmX.Data.Count == 0)
- {
- //操作日志
- MeterMonitorNote monitorNote = new MeterMonitorNote();
- monitorNote.baseSpotNo = mwaf.baseSpotNo;
- monitorNote.baseSpotName = mwaf.baseSpotName;
- monitorNote.operationContent = string.Format("称重保存");
- monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- monitorNote.carNo = mwaf.carNo;
- monitorNote.meterNoteSource = "0";
- //存储皮重信息及历史皮重信息
- mwaf.weightType = "1";
- RESTfulResult<string> rmI = mwcfs.doAddInnerWf(mwaf, monitorNote, PbCache.monitor.validWgt);
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.resultInfo = "称重完成";
- rt.message = rmI.Message;
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = true;//皮重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "服务端执行失败,计量失败:" + rmI.ResultMessage;
- }
- }
- else //存在一次计量数据
- {
- //如果车辆上磅,且重量稳定,当司机点了内倒计量后,判断是内倒业务的车辆后,如果有一次过毛信息,则会锁定界面上的物料信息,按钮不可编辑
- //两次数据差值是否在1t内,若一次减去当前值在1t内则认为是重复计量,若一次计量减去当前重量>1t 则比较两者时间差是否满足要求,否则
- //若时间满足要求则看物料是否处于可计量的时间范围内,若时间不允许物料计量,则提示
- //若时间正常则进行 保存二次计量、历史皮重、结净操作
- if (rmX.Data[0].meterWeight.Value - PbCache.lockWgt >= AppConfigCache.differenceWgt) //一次为毛,当前为皮 先毛后皮流程
- {
- //时间间隔
- validTimeInterval vtime = new validTimeInterval();
- vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
- if (PbCache.monitorResult.valid_time_interval)
- {
- //回皮时间
- validTareTime vttime = new validTareTime();
- vttime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003", matterNo = rmX.Data[0].matterNo }, "3", rmX.Data[0]);
- if (PbCache.monitorResult.valid_tare_time)
- {
- // 结净数据
- MeterWorkCarActual netDb = new MeterWorkCarActual();
- EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
- netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
- //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
- netDb.tareTime = DateTime.Now;
- netDb.tareWeight = PbCache.lockWgt;
- netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
- netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
- netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- /* netDb.tare_man_no = "";
- netDb.tare_man_name = "";
- netDb.tare_class = "";
- netDb.tare_group = "";*/
- netDb.actualFirst1No = rmX.Data[0].actualFirstNo;
- netDb.grossTime = rmX.Data[0].createTime;
- netDb.grossWeight = rmX.Data[0].meterWeight;
- netDb.baseSpot1No = rmX.Data[0].baseSpotNo;
- netDb.baseSpot1Name = rmX.Data[0].baseSpotName;
- netDb.grossMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- netDb.grossManNo = rmX.Data[0].createManNo;
- netDb.grossManName = rmX.Data[0].createManName;
- netDb.grossClass = rmX.Data[0].meterClass;
- netDb.grossGroup = rmX.Data[0].meterGroup;
- netDb.netTime = DateTime.Now;
- //netDb.netManNo = appUser.userid; //净重计量员编码
- //netDb.netManName = appUser.username; //净重计量员名称
- netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
- netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
- netDb.addWeight = (rmX.Data[0].addWeight == null ? 0 : rmX.Data[0].addWeight.Value);
- //净重=毛-皮-附加重量
- netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
- netDb.netMode = "1"; //1:正常结净;2:匹配结净
- netDb.valueFlag = "0"; //0=有效,1=作废
- netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
- //要判断下当前是否勾选了不验证皮重
- mwaf.weightType = "1";
- //操作日志
- MeterMonitorNote monitorNote = new MeterMonitorNote();
- monitorNote.baseSpotNo = mwaf.baseSpotNo;
- monitorNote.baseSpotName = mwaf.baseSpotName;
- monitorNote.operationContent = string.Format("结净称重保存");
- monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- monitorNote.carNo = mwaf.carNo;
- monitorNote.meterNoteSource = "0";
- RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, PbCache.monitor.validWgt);
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- rt.message = rmI.Message;
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = true;//皮重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- }
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- }
- }
- else
- {
- //重复计量
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "第一次计量重量和第二次计量重量接近";
- //PbCache.ResultMessage = "第一次计量重量和第二次计量重量接近";
- PbCache.ResultMessage = "第一次计量重量【" + rmX.Data[0].meterWeight.Value / 1000 + "T】和第二次计量重量【" + PbCache.lockWgt / 1000 + "T】接近,小于结净最小值【" + AppConfigCache.differenceWgt / 1000 + " T】,请点击[语音求助],由司秤工过磅!";
- }
- }
- }
- else //录入了物料等信息 不确定是皮重还是毛重
- {
- //存在历史皮重
- if (rm.Data != null && rm.Data.Count > 0)
- {
- //如果没有一次计量数据
- if (rmX.Data == null || rmX.Data.Count == 0)
- {
- //存在历史皮重信息,若当前车辆重量大于历史皮重1t,则认为是过毛,否则提示皮重异常,所有皮重异常都可以跳过验证
- //如果是过毛则物料是否处于可计量的时间范围内,若时间不允许物料计量,则提示
- //若时间正常则查看是否存在期限皮重,若存在期限皮重,则当前重量与期限皮结合进行结净
- //若没有期限皮重,则直接存储毛重信息
- long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? rm.Data[0].upWeight.Value : rm.Data[0].avgWeight.Value);
- if (PbCache.lockWgt - meterWeight >= AppConfigCache.differenceWgt) //当前过毛
- {
- //验证物料时间段
- validMatTime vmt = new validMatTime();
- vmt.ValidMethod(new PreTrackScale { matterNo = scale.matterNo }, "1");
- if (!PbCache.monitorResult.valid_mat_time)
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- return rt;
- }
- #region 获取车辆是否能使用中控的皮重信息
- int i = 0;
- MeterBaseTermTareCarService carService = new MeterBaseTermTareCarService();
- RESTfulResult<List<MeterBaseTermTareCar>> rmCar = carService.doQueryWf(new MeterBaseTermTareCar { carNo = scale.carNo, valueFlag = "0" });
- if (rmCar.Succeed)
- {
- if (rmCar.Data != null && rmCar.Data.Count > 0)
- {
- i = rmCar.Data.Where(s => s.meterNatureName !=null && s.meterNatureName.Contains("中控")).Count();
- }
- }
- else
- {
- //获取服务端数据异常!
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败,获取期限皮重车辆信息:" + rmCar.ResultMessage;
- return rt;
- }
- #endregion 获取车辆是否能使用中控的皮重信息
- //查下是否有期限皮重
- MeterBaseTermTareDataService mbttd = new MeterBaseTermTareDataService();
- RESTfulResult<List<MeterBaseTermTareData>> rml = mbttd.doQueryWf(new MeterBaseTermTareData { carNo = scale.carNo, valueFlag = "0" });
- if (rml.Succeed)
- {
- //存在有效的期限皮重,且物料可用期限皮重
- if (i > 0 && rml.Data != null && rml.Data.Count > 0 && PbCache.isTermTare)
- {
- mwaf.weightType = "0";//毛重信息
- mwaf.addWeight = PbCache.addWgt;
- // 结净数据
- MeterWorkCarActual netDb = new MeterWorkCarActual();
- EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
- netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
- //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
- netDb.grossTime = DateTime.Now;
- netDb.grossWeight = PbCache.lockWgt;
- netDb.baseSpot1No = PbCache.sportInfo.baseSpotNo;
- netDb.baseSpot1Name = PbCache.sportInfo.baseSpotName;
- netDb.grossMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- /* netDb.tare_man_no = "";
- netDb.tare_man_name = "";
- netDb.tare_class = "";
- netDb.tare_group = "";*/
- netDb.actualFirst2No = rml.Data[0].dataNo;
- netDb.tareTime = rml.Data[0].createTime;
- netDb.tareWeight = rml.Data[0].meterWeight;
- netDb.baseSpot2No = rml.Data[0].baseSpotNo;
- netDb.baseSpot2Name = rml.Data[0].baseSpotName;
- /*netDb.tareMode = "9";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- netDb.tare_man_no = "";
- netDb.tare_man_name = "";
- netDb.tare_class = "";
- netDb.tare_group = "";*/
- netDb.netTime = DateTime.Now;
- //netDb.netManNo = appUser.userid; //净重计量员编码
- //netDb.netManName = appUser.username; //净重计量员名称
- netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
- netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
- netDb.addWeight = PbCache.addWgt;
- //净重=毛-皮-附加重量
- netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
- netDb.netMode = "1"; //1:正常结净;2:匹配结净
- netDb.valueFlag = "0"; //0=有效,1=作废
- netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
- //操作日志
- MeterMonitorNote monitorNote = new MeterMonitorNote();
- monitorNote.baseSpotNo = mwaf.baseSpotNo;
- monitorNote.baseSpotName = mwaf.baseSpotName;
- monitorNote.operationContent = string.Format("结净称重保存");
- monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- monitorNote.carNo = mwaf.carNo;
- monitorNote.meterNoteSource = "0";
- RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, "0");
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- rt.message = rmI.Message;
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = false;//毛重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- }
- else
- {
- //操作日志
- MeterMonitorNote monitorNote = new MeterMonitorNote();
- monitorNote.baseSpotNo = mwaf.baseSpotNo;
- monitorNote.baseSpotName = mwaf.baseSpotName;
- monitorNote.operationContent = string.Format("称重保存");
- monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- monitorNote.carNo = mwaf.carNo;
- monitorNote.meterNoteSource = "0";
- //保存毛重计量信息
- mwaf.weightType = "0";//毛重信息
- RESTfulResult<string> rmI = mwcfs.doAddInnerWf(mwaf, monitorNote, "0");
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- rt.message = rmI.Message;
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- }
- }
- else
- {
- //获取服务端数据异常!
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rml.ResultMessage;
- return rt;
- }
- }
- else //当前过皮,且皮重验证未通过
- {
- //皮重异常不允许计量
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "皮重已经超出偏差";
- PbCache.ResultMessage = "当前重量【" + PbCache.lockWgt / 1000 + "T】减历史皮重【" + meterWeight / 1000 + "T】小于毛重、皮重判断标准【" + AppConfigCache.differenceWgt / 1000 + "T】,请点击语音求助,由计量员进行远程计量!";
- }
- }
- else //存在历史皮重信息,存在一次计量数据
- {
- //若一次计量数据为皮重,且当前重量-一次重量大于1t,则认为当前过毛,此时毛皮结合,小于1t则提示不允许重复计量
- //若一次计量数据为毛重,且一次重量-当前重量大于1t,则认为当前过皮,此时皮毛结合,小于1t则提示不允许重复计量
- //毛皮结合后,若不是勾选的不验证皮重,则还需存储历史皮重到表中
- //rmX 一次数据 rm为历史数据
- if (rmX.Data[0].weightType == "1") //一次为皮
- {
- if (PbCache.lockWgt - rmX.Data[0].meterWeight.Value >= AppConfigCache.differenceWgt) //当前重量-一次重量大于1t
- {
- //当前为毛,验证物料条件
- //验证物料时间段
- validMatTime vmt = new validMatTime();
- vmt.ValidMethod(new PreTrackScale { matterNo = scale.matterNo }, "1");
- if (!PbCache.monitorResult.valid_mat_time)
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- return rt;
- }
- //两次计量时间间隔
- validTimeInterval vtime = new validTimeInterval();
- vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
- if (PbCache.monitorResult.valid_time_interval)
- {
- mwaf.weightType = "0";//毛重信息
- mwaf.addWeight = PbCache.addWgt;
- // 结净数据
- MeterWorkCarActual netDb = new MeterWorkCarActual();
- EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
- netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
- //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
- netDb.grossTime = DateTime.Now;
- netDb.grossWeight = PbCache.lockWgt;
- netDb.baseSpot1No = PbCache.sportInfo.baseSpotNo;
- netDb.baseSpot1Name = PbCache.sportInfo.baseSpotName;
- netDb.grossMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- /* netDb.tare_man_no = "";
- netDb.tare_man_name = "";
- netDb.tare_class = "";
- netDb.tare_group = "";*/
- netDb.actualFirst2No = rmX.Data[0].actualFirstNo;
- netDb.tareTime = rmX.Data[0].createTime;
- netDb.tareWeight = rmX.Data[0].meterWeight;
- netDb.baseSpot2No = rmX.Data[0].baseSpotNo;
- netDb.baseSpot2Name = rmX.Data[0].baseSpotName;
- netDb.tareMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- netDb.tareManNo = rmX.Data[0].createManNo;
- netDb.tareManName = rmX.Data[0].createManName;
- netDb.tareClass = rmX.Data[0].meterClass;
- netDb.tareGroup = rmX.Data[0].meterGroup;
- netDb.netTime = DateTime.Now;
- //netDb.netManNo = appUser.userid; //净重计量员编码
- //netDb.netManName = appUser.username; //净重计量员名称
- netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
- netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
- netDb.addWeight = PbCache.addWgt;
- //净重=毛-皮-附加重量
- netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
- netDb.netMode = "1"; //1:正常结净;2:匹配结净
- netDb.valueFlag = "0"; //0=有效,1=作废
- netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
- //操作日志
- MeterMonitorNote monitorNote = new MeterMonitorNote();
- monitorNote.baseSpotNo = mwaf.baseSpotNo;
- monitorNote.baseSpotName = mwaf.baseSpotName;
- monitorNote.operationContent = string.Format("结净称重保存");
- monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- monitorNote.carNo = mwaf.carNo;
- monitorNote.meterNoteSource = "0";
- RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, "0");
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- rt.message = rmI.Message;
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = false;//毛重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- }
- }
- else
- {
- if (PbCache.lockWgt - rmX.Data[0].meterWeight.Value < 0)
- {
- //如果第一个是皮,第二个重量又小于第一个
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "存在一次皮重信息,当前重量小于一次皮重皮皮不能结合";
- PbCache.ResultMessage = "存在一次皮重信息,当前重量小于一次皮重皮皮不能结合";
- }
- else
- {
- //重复计量
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "第一次计量重量和第二次计量重量接近";
- //PbCache.ResultMessage = "第一次计量重量和第二次计量重量接近";
- PbCache.ResultMessage = "第一次计量重量【" + rmX.Data[0].meterWeight.Value / 1000 + "T】和第二次计量重量【" + PbCache.lockWgt / 1000 + "T】接近,小于结净最小值【" + AppConfigCache.differenceWgt / 1000 + " T】,请点击[语音求助],由司秤工过磅!";
- }
- }
- }
- else //存在历史皮重信息,存在一次计量数据 一次为毛 当前不确定是毛还是皮
- {
- if (rmX.Data[0].meterWeight - PbCache.lockWgt >= AppConfigCache.differenceWgt) //一次-当前> 1t
- {
- long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? rm.Data[0].upWeight.Value : rm.Data[0].avgWeight.Value);
- //先验证 Math.Abs(当前重-历史皮重)<1t 认为是皮,否则提示 毛毛不能结合
- if (Math.Abs(PbCache.lockWgt - meterWeight) < AppConfigCache.differenceWgt)
- {
- //当前为皮
- //两次计量时间间隔
- validTimeInterval vtime = new validTimeInterval();
- vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
- if (PbCache.monitorResult.valid_time_interval)
- {
- //回皮时间
- validTareTime vttime = new validTareTime();
- vttime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003", matterNo = rmX.Data[0].matterNo }, "3", rmX.Data[0]);
- if (PbCache.monitorResult.valid_tare_time)
- {
- mwaf.weightType = "1";//皮重信息
- //*
- // 结净数据
- MeterWorkCarActual netDb = new MeterWorkCarActual();
- EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
- netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
- //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
- netDb.tareTime = DateTime.Now;
- netDb.tareWeight = PbCache.lockWgt;
- netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
- netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
- netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- /* netDb.tare_man_no = "";
- netDb.tare_man_name = "";
- netDb.tare_class = "";
- netDb.tare_group = "";
- */
- netDb.actualFirst1No = rmX.Data[0].actualFirstNo;
- netDb.grossTime = rmX.Data[0].createTime;
- netDb.grossWeight = rmX.Data[0].meterWeight;
- netDb.baseSpot1No = rmX.Data[0].baseSpotNo;
- netDb.baseSpot1Name = rmX.Data[0].baseSpotName;
- netDb.grossMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- netDb.grossManNo = rmX.Data[0].createManNo;
- netDb.grossManName = rmX.Data[0].createManName;
- netDb.grossClass = rmX.Data[0].meterClass;
- netDb.grossGroup = rmX.Data[0].meterGroup;
- netDb.netTime = DateTime.Now;
- //netDb.netManNo = appUser.userid; //净重计量员编码
- //netDb.netManName = appUser.username; //净重计量员名称
- netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
- netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
- netDb.addWeight = (rmX.Data[0].addWeight == null ? 0 : rmX.Data[0].addWeight.Value);
- //净重=毛-皮-附加重量
- netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
- netDb.netMode = "1"; //1:正常结净;2:匹配结净
- netDb.valueFlag = "0"; //0=有效,1=作废
- netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
- //操作日志
- MeterMonitorNote monitorNote = new MeterMonitorNote();
- monitorNote.baseSpotNo = mwaf.baseSpotNo;
- monitorNote.baseSpotName = mwaf.baseSpotName;
- monitorNote.operationContent = string.Format("结净称重保存");
- monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- monitorNote.carNo = mwaf.carNo;
- monitorNote.meterNoteSource = "0";
- RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, PbCache.monitor.validWgt);
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- rt.message = rmI.Message;
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = true;//皮重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- }
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- }
- }
- else
- {
- if (PbCache.lockWgt < meterWeight)
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "不允许毛重跟毛重计量";
- PbCache.ResultMessage = "保存失败:存在一条未结净毛重记录,请语音求助"; //一次为毛,且当前重量-历史> 1t
- }
- }
- }
- else
- {
- //重复计量
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "当前重量为【" + PbCache.lockWgt / 1000 + "T】,一次计量重量为【" + rmX.Data[0].meterWeight / 1000 + "】差值小于结净最低值【" + AppConfigCache.differenceWgt / 1000 + "T】,不允许毛重跟毛重计量";
- PbCache.ResultMessage = "保存失败:存在一条未结净毛重记录,请语音求助";
- }
- }
- }
- }
- else //录入了物料等信息 当前皮重验证不通过 不存在历史皮重
- {
- //如果没有一次计量数据
- if (rmX.Data == null || rmX.Data.Count == 0)
- {
- //操作日志
- MeterMonitorNote monitorNote = new MeterMonitorNote();
- monitorNote.baseSpotNo = mwaf.baseSpotNo;
- monitorNote.baseSpotName = mwaf.baseSpotName;
- monitorNote.operationContent = string.Format("称重保存");
- monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- monitorNote.carNo = mwaf.carNo;
- monitorNote.meterNoteSource = "0";
- //存储一次毛重信息
- mwaf.weightType = "0";
- RESTfulResult<string> rmI = mwcfs.doAddInnerWf(mwaf, monitorNote, "0");
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- rt.message = rmI.Message;
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = false;//毛重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- }
- else
- {
- //有一次信息,则当前重量与一次进行比较,若Math.Abs(当前-一次)>1t ,当前大则一次为皮,当前为毛,将一次存储为历史皮,且毛皮结合结净
- //当前小则一次为毛,当前为皮,将当前存储为历史皮,且毛皮结合结净
- //若 Math.Abs(当前-一次)<=1t 则提示不允许重复计量
- if (Math.Abs(PbCache.lockWgt - rmX.Data[0].meterWeight.Value) >= AppConfigCache.differenceWgt)
- {
- if (PbCache.lockWgt > rmX.Data[0].meterWeight)
- {
- //一次weightType修改为皮1
- if (rmX.Data[0].weightType == "0")
- {
- mwcfs.doUpdateWf(new MeterWorkCarActualFirst { actualFirstNo = rmX.Data[0].actualFirstNo, weightType = "1" });
- lg.WriteLog(3, string.Format("车辆[{0}]计量时,无历史皮重,存在一次记录,当前记录小于一次记录,修改一次weightType[{1}]为1", scale.carNo, rmX.Data[0].weightType));
- }
- //当前为毛,验证物料条件
- //验证物料时间段
- validMatTime vmt = new validMatTime();
- vmt.ValidMethod(new PreTrackScale { matterNo = scale.matterNo }, "1");
- if (!PbCache.monitorResult.valid_mat_time)
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- return rt;
- }
- //两次计量时间间隔
- validTimeInterval vtime = new validTimeInterval();
- vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
- if (PbCache.monitorResult.valid_time_interval)
- {
- mwaf.weightType = "0";//毛重信息
- mwaf.addWeight = PbCache.addWgt;
- // 结净数据
- MeterWorkCarActual netDb = new MeterWorkCarActual();
- EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
- netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
- //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
- netDb.grossTime = DateTime.Now;
- netDb.grossWeight = PbCache.lockWgt;
- netDb.baseSpot1No = PbCache.sportInfo.baseSpotNo;
- netDb.baseSpot1Name = PbCache.sportInfo.baseSpotName;
- netDb.grossMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- /* netDb.tare_man_no = "";
- netDb.tare_man_name = "";
- netDb.tare_class = "";
- netDb.tare_group = "";*/
- netDb.actualFirst2No = rmX.Data[0].actualFirstNo;
- netDb.tareTime = rmX.Data[0].createTime;
- netDb.tareWeight = rmX.Data[0].meterWeight;
- netDb.baseSpot2No = rmX.Data[0].baseSpotNo;
- netDb.baseSpot2Name = rmX.Data[0].baseSpotName;
- netDb.tareMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- netDb.tareManNo = rmX.Data[0].createManNo;
- netDb.tareManName = rmX.Data[0].createManName;
- netDb.tareClass = rmX.Data[0].meterClass;
- netDb.tareGroup = rmX.Data[0].meterGroup;
- netDb.netTime = DateTime.Now;
- //netDb.netManNo = appUser.userid; //净重计量员编码
- //netDb.netManName = appUser.username; //净重计量员名称
- netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
- netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
- netDb.addWeight = PbCache.addWgt;
- //净重=毛-皮-附加重量
- netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
- netDb.netMode = "1"; //1:正常结净;2:匹配结净
- netDb.valueFlag = "0"; //0=有效,1=作废
- netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
- //操作日志
- MeterMonitorNote monitorNote = new MeterMonitorNote();
- monitorNote.baseSpotNo = mwaf.baseSpotNo;
- monitorNote.baseSpotName = mwaf.baseSpotName;
- monitorNote.operationContent = string.Format("结净称重保存");
- monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- monitorNote.carNo = mwaf.carNo;
- monitorNote.meterNoteSource = "0";
- RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, PbCache.monitor.validWgt);
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- rt.message = rmI.Message;
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = false;//毛重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- }
- }
- else
- {
- //一次weightType修改为毛
- if (rmX.Data[0].weightType != "0")
- {
- mwcfs.doUpdateWf(new MeterWorkCarActualFirst { actualFirstNo = rmX.Data[0].actualFirstNo, weightType = "0" });
- lg.WriteLog(3, string.Format("车辆[{0}]计量时,无历史皮重,存在一次记录,当前记录小于一次记录,修改一次weightType[{1}]为0", scale.carNo, rmX.Data[0].weightType));
- }
- //当前为皮重
- //两次计量时间间隔
- validTimeInterval vtime = new validTimeInterval();
- vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
- if (PbCache.monitorResult.valid_time_interval)
- {
- //验证回皮时间,必须是先毛后皮的流程才验证回皮时间
- validTareTime vttime = new validTareTime();
- vttime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003", matterNo = rmX.Data[0].matterNo }, "3", rmX.Data[0]);
- if (PbCache.monitorResult.valid_tare_time)
- {
- mwaf.weightType = "1";
- // 结净数据
- MeterWorkCarActual netDb = new MeterWorkCarActual();
- EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
- netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
- //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
- netDb.tareTime = DateTime.Now;
- netDb.tareWeight = PbCache.lockWgt;
- netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
- netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
- netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- /* netDb.tare_man_no = "";
- netDb.tare_man_name = "";
- netDb.tare_class = "";
- netDb.tare_group = "";*/
- netDb.actualFirst1No = rmX.Data[0].actualFirstNo;
- netDb.grossTime = rmX.Data[0].createTime;
- netDb.grossWeight = rmX.Data[0].meterWeight;
- netDb.baseSpot1No = rmX.Data[0].baseSpotNo;
- netDb.baseSpot1Name = rmX.Data[0].baseSpotName;
- netDb.grossMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- netDb.grossManNo = rmX.Data[0].createManNo;
- netDb.grossManName = rmX.Data[0].createManName;
- netDb.grossClass = rmX.Data[0].meterClass;
- netDb.grossGroup = rmX.Data[0].meterGroup;
- netDb.netTime = DateTime.Now;
- //netDb.netManNo = appUser.userid; //净重计量员编码
- //netDb.netManName = appUser.username; //净重计量员名称
- netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
- netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
- netDb.addWeight = (rmX.Data[0].addWeight == null ? 0 : rmX.Data[0].addWeight.Value);
- //净重=毛-皮-附加重量
- netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
- netDb.netMode = "1"; //1:正常结净;2:匹配结净
- netDb.valueFlag = "0"; //0=有效,1=作废
- netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
- //操作日志
- MeterMonitorNote monitorNote = new MeterMonitorNote();
- monitorNote.baseSpotNo = mwaf.baseSpotNo;
- monitorNote.baseSpotName = mwaf.baseSpotName;
- monitorNote.operationContent = string.Format("结净称重保存");
- monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- monitorNote.carNo = mwaf.carNo;
- monitorNote.meterNoteSource = "0";
- RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, PbCache.monitor.validWgt);
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- rt.message = rmI.Message;
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = true;//皮重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- }
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = PbCache.ResultMessage;
- }
- }
- }
- else
- {
- //重复计量
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "第一次计量重量和第二次计量重量接近";
- //PbCache.ResultMessage = "第一次计量重量和第二次计量重量接近";
- PbCache.ResultMessage = "第一次计量重量【" + rmX.Data[0].meterWeight.Value / 1000 + "T】和第二次计量重量【" + PbCache.lockWgt / 1000 + "T】接近,小于结净最小值【" + AppConfigCache.differenceWgt / 1000 + " T】,请点击[语音求助],由司秤工过磅!";
- }
- }
- }
- }
- }
- return rt;
- }
- }
- }
|