| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499 |
- using com.hnshituo.core.webapp.vo;
- using Common;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Windows.Forms;
- namespace MeterSceneLibrary
- {
- /// <summary>
- /// 司秤工远程计量
- /// 没有录入物料或者录入的物料是内倒计量业务编号,则认为是内倒计量
- /// 若是内倒计量,没有录入物料信息,则认为是过皮,录入了认为是过毛
- /// 若存在有效期限皮重,且不存一次计量数据则与期限皮重结合,若没有期限皮重则保存数据
- /// 若保存的时候有一次有效数据则与一次数据结净
- /// </summary>
- public class InnerRemoteMeter
- {
- public rtInfo MeterMethod(InnerMeterInfo scale, CoreAppUser appUser)
- {
- if (appUser == null)
- {
- appUser = new CoreAppUser
- {
- userid = "",
- username = "",
- userGroup = "",
- userClass = ""
- };
- }
- rtInfo rt = new rtInfo();
- rt.isError = false;
- #region 只要是计量员计量则不验证任何条件,只要录入了物料则是毛,否则是皮
- /*
- 验证是否是内倒车辆/是否黑名单等
- string ResultMessage = "";
- bool isError = false;
- validCarCard vcc = new validCarCard();
- if (!vcc.ValidMethod(scale, out ResultMessage, out isError))
- {
- MessageBox.Show(ResultMessage);
- return;
- }
- //*/
- #endregion 只要是计量员计量则不验证任何条件,只要录入了物料则是毛,否则是皮
- #region 获取一次计量数据及期限皮重数据
- //获取一次计量数据
- 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;
- return rt;
- }
- //获取期限皮重
- MeterBaseTermTareDataService mbttd = new MeterBaseTermTareDataService();
- RESTfulResult<List<MeterBaseTermTareData>> rml = mbttd.doQueryWf(new MeterBaseTermTareData { carNo = scale.carNo, valueFlag = "0" });
- if (!rml.Succeed)
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "获取期限皮重异常,计量失败:" + rml.ResultMessage;
- return rt;
- }
- #endregion 获取一次计量数据及期限皮重数据
- #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;
- }
- if (i == 0)
- {
- rml.Data = null;
- }
- #endregion 获取车辆是否能使用中控的皮重信息
- //相同名称的均赋值一次
- 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 = appUser.userid;
- mwaf.createManName = appUser.username;
- mwaf.meterClass = appUser.userClass;
- mwaf.meterGroup = appUser.userGroup;
- 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 = "1"; //智能计量
- //车辆上来后,若scale中的物料没有值,则认为是过皮,此时要去验证下是否存在历史皮,若有且符合则过皮,否则若重量大于提示请录入xxx
- if (string.IsNullOrEmpty(scale.matterNo))
- {
- //如果没有一次计量数据
- 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 = "4";
- monitorNote.meterManNo = appUser.userid;
- monitorNote.meterManName = appUser.username;
- //存储皮重信息及历史皮重信息
- mwaf.weightType = "1";
- RESTfulResult<string> rmI = mwcfs.doAddInnerWf(mwaf, monitorNote, "1");//保存皮重及历史皮重
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = true;//皮重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- }
- else
- {
- if (rmX.Data[0].weightType == "0") //一次为毛,当前为皮
- {
- mwaf.weightType = "1";
- 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 = string.IsNullOrEmpty(appUser.userid) ? "2" : "1";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- netDb.tareClass = appUser.userClass;
- netDb.tareGroup = appUser.userGroup;
- netDb.tareManNo = appUser.userid;
- netDb.tareManName = appUser.username;
- 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 = "4";
- monitorNote.meterManNo = appUser.userid;
- monitorNote.meterManName = appUser.username;
- RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, "1");
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- 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 //若录入了物料等信息认为是毛
- {
- //如果没有一次计量数据
- if (rmX.Data == null || rmX.Data.Count == 0)
- {
- if (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 = string.IsNullOrEmpty(appUser.userid) ? "2" : "1"; //1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- netDb.grossClass = appUser.userClass;
- netDb.grossGroup = appUser.userGroup;
- netDb.grossManNo = appUser.userid;
- netDb.grossManName = appUser.username;
- 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 = "4";
- monitorNote.meterManNo = appUser.userid;
- monitorNote.meterManName = appUser.username;
- RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, "0");
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- 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 = "4";
- monitorNote.meterManNo = appUser.userid;
- monitorNote.meterManName = appUser.username;
- //保存毛重计量信息
- mwaf.weightType = "0";//毛重信息
- RESTfulResult<string> rmI = mwcfs.doAddInnerWf(mwaf, monitorNote, "0");
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- //============无一次计量数据:先毛后皮,单计量毛重:开始===============
- }
- }
- else
- {
- //============当前为毛重+存在一次计量数据:再计量数据:开始===============
- if (rmX.Data[0].weightType == "0" && rmX.Data[0].meterWeight < PbCache.lockWgt) //一次为毛重,且当前重量大于数据库毛重
- {
- DialogResult dr = MessageBox.Show("已经存在一条毛重数据,是否继续保存!", "提示", MessageBoxButtons.OKCancel);
- if (dr == DialogResult.Cancel)
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据取消保存";
- PbCache.ResultMessage = "第一次计量数据为毛重信息,毛毛不能结合";
- return rt;
- }
- }
- mwaf.weightType = "0";//毛重信息
- mwaf.addWeight = PbCache.addWgt;
- // 结净数据
- MeterWorkCarActual netDb = new MeterWorkCarActual();
- EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
- netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
- if (rmX.Data[0].meterWeight < PbCache.lockWgt)
- {
- //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
- netDb.grossTime = DateTime.Now;
- netDb.grossWeight = PbCache.lockWgt;
- netDb.baseSpot1No = PbCache.sportInfo.baseSpotNo;
- netDb.baseSpot1Name = PbCache.sportInfo.baseSpotName;
- netDb.grossMode = string.IsNullOrEmpty(appUser.userid) ? "2" : "1";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- netDb.grossClass = appUser.userClass;
- netDb.grossGroup = appUser.userGroup;
- netDb.grossManNo = appUser.userid;
- netDb.grossManName = appUser.username;
- 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;
- }
- else
- {
- netDb.tareTime = DateTime.Now;
- netDb.tareWeight = PbCache.lockWgt;
- netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
- netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
- netDb.tareMode = string.IsNullOrEmpty(appUser.userid) ? "2" : "1";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
- netDb.tareClass = appUser.userClass;
- netDb.tareGroup = appUser.userGroup;
- netDb.tareManNo = appUser.userid;
- netDb.tareManName = appUser.username;
- 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 = 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 = "4";
- monitorNote.meterManNo = appUser.userid;
- monitorNote.meterManName = appUser.username;
- RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, "0");
- if (rmI.Succeed)
- {
- rt.result = true;
- rt.isError = false;
- rt.resultInfo = "称重完成";
- PbCache.ResultMessage = "称重完成";
- PbCache.actualFirstNo = rmI.Data;
- PbCache.isTareWeight = false;//毛重
- }
- else
- {
- rt.result = false;
- rt.isError = true;
- rt.resultInfo = "称重数据保存失败";
- PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
- }
- //============当前为毛重+存在一次计量数据:再计量数据:结束===============
- }
- }
- return rt;
- }
- }
- }
|