using com.hnshituo.core.webapp.vo;
using Common;
using MeterConditionLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
namespace MeterSceneLibrary
{
///
/// 内倒计量业务
///
public class InnerMeter
{
///
/// InnerMeterInfo 如果没有一次数据,那么scale的物料会为空,若有一次数据,由于会写到界面上,所以这个也会有值
///
///
///
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> 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> 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 entityBase = new EntityBase();
mwaf = entityBase.format(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 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 entityActual = new EntityBase();
netDb = entityBase.format(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 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 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 entityActual = new EntityBase();
netDb = entityBase.format(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 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 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 entityActual = new EntityBase();
netDb = entityBase.format(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 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> 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> 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 entityActual = new EntityBase();
netDb = entityBase.format(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 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 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 entityActual = new EntityBase();
netDb = entityBase.format(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 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 entityActual = new EntityBase();
netDb = entityBase.format(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 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 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 entityActual = new EntityBase();
netDb = entityBase.format(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 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 entityActual = new EntityBase();
netDb = entityBase.format(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 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;
}
}
}