using Common; using MeterConditionLibrary; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MeterSceneLibrary { public class InnerFirstGrossSecondlyTare { /// /// InnerMeterInfo 一定会有值,汽车上磅的时候如果是皮重则将毛重信息带入进来 /// /// /// public rtInfo MeterMethod(InnerMeterInfo scale) { DbHelper db = new DbHelper(); rtInfo rt = new rtInfo(); rt.isError = false; /* //验证是否是内倒车辆 string msgInfo = ""; bool isError = false; validCarCard vcc = new validCarCard(); if (!vcc.ValidMethod(scale, out msgInfo, out isError)) { rt.result = false; rt.isError = isError; rt.resultInfo = PbCache.msgInfo; return rt; } //没有物料信息,说明第一没有一次毛重信息(若有的话会自动带到界面上),第二说明车辆应该是要留皮重 if (string.IsNullOrEmpty(scale.matter_no)) { rt.result = false; rt.isError = false; return rt; } //如果有物料信息,有几种可能,第一种就是存在一次计量毛重信息,那么此时做洁净操作(需要验证下当前是不是重量差值1t内,若是的话,则提示不允许重复计量) //第二种可能就是不存在一次计量毛重信息,此时不管是毛还是皮,直接存储到数据表中,等第二次上秤时,若重量差值大于1t则查出并跟后面的数据洁净,同时 //存储轻的为历史皮 MeterWorkCarActualFirstService mwcfs = new MeterWorkCarActualFirstService(); ResultModel> rmX = mwcfs.doQueryWf(new MeterWorkCarActualFirst { value_flag = "0", car_no = scale.carno }); if (rmX.state == "500") { rt.result = false; rt.resultInfo = "获取一次计量数据失败"; rt.isError = true; } //历史皮重 bool isHaveHisTare = false; validWgt validWgt = new validWgt(); MeterBaseHisTareDataService mbtds = new MeterBaseHisTareDataService(); ResultModel> rm = mbtds.doQueryWf(new MeterBaseHisTareData { value_flag = "0", car_no = scale.carno }); if (rm.state == "200") { //存在历史皮 if (rm.data != null && rm.data.Count > 0) { //验证是否是皮重,若为true则是皮,否则无法判断是毛还是皮 validWgt.ValidMethod(new PreTrackScale { car_no = scale.carno }); isHaveHisTare = true; } } //如果没有一次计量数据 if (rmX.data == null || rmX.data.Count == 0) { //如果通过验证发现是皮则不能继续后续流程 if (PbCache.monitorResult.valid_wgt) { rt.result = false; rt.isError = false; return rt; } //验证物料时间段 validMatTime vmt = new validMatTime(); vmt.ValidMethod(new PreTrackScale { matter_no = scale.matter_no }, "1"); if (!PbCache.monitorResult.valid_mat_time) { rt.result = false; rt.isError = true; rt.resultInfo = PbCache.msgInfo; return rt; } //是否增加验证当前重量需大于历史毛重,若无历史毛重也认为是毛重?? //存储一次毛重信息 //验证通过,保存毛重信息*********************** MeterWorkCarActualFirst mwaf = new MeterWorkCarActualFirst(); //相同名称的均赋值一次 EntityBase entityBase = new EntityBase(); mwaf = entityBase.format(scale, mwaf); mwaf.actual_first_no = DateTime.Now.ToString("yyyyMMdd");//10 mwaf.meter_weight = PbCache.lockWgt;//计量重量 mwaf.add_weight = PbCache.addWgt;//附加重量 mwaf.weight_type = "0"; //0=毛重;1=常规皮重;2=期限皮重;3=历史皮重;4=标识皮重;5=自重皮重 mwaf.create_man_no = ""; mwaf.create_man_name = ""; mwaf.create_time = DateTime.Now; mwaf.base_spot_no = PbCache.sportInfo.base_spot_no;//计量点编号 mwaf.base_spot_name = PbCache.sportInfo.base_spot_name; mwaf.memo = ""; mwaf.value_flag = "0"; //0有效 mwaf.update_man_name = ""; mwaf.update_man_no = ""; mwaf.update_time = null; mwaf.check_flag = "0"; //0未审核 mwaf.meter_mode = "2"; //智能计量 bool isHaveTare = false; //是否期限皮计量 MeterBaseTermTareData mb = new MeterBaseTermTareData(); #region 验证是否有期限皮重情况 //验证是否存在期限皮重信息,若存在有效期限皮重,且车辆不在黑名单则调用的应该是内倒车辆洁净方法 //这里还得考虑下如果有洁净环节也得将洁净环节设置为使用 //验证是否存在期限皮重信息,若存在有效期限皮重,且车辆不在黑名单则调用的应该是内倒车辆洁净方法 MeterBaseCarBlacelistService bService = new MeterBaseCarBlacelistService(); ResultModel> rmB = bService.doQueryWf(new MeterBaseCarBlacelist { car_no = scale.carno, value_flag = "0" }); if (rmB.state == "200") { if (rmB.data == null || rmB.data.Count == 0) //不在黑名单内 { MeterBaseTermTareDataService mbttd = new MeterBaseTermTareDataService(); ResultModel> rml = mbttd.doQueryWf(new MeterBaseTermTareData { car_no = scale.carno, value_flag = "0" }); if (rml.state == "200") { if (rml.data != null && rml.data.Count > 0) { mb = rml.data[0]; isHaveTare = true; } } else { rt.result = false; rt.isError = true; rt.resultInfo = PbCache.msgInfo; return rt; } } } else { rt.result = false; rt.isError = true; rt.resultInfo = PbCache.msgInfo; return rt; } #endregion if (isHaveTare) //有期限皮重,做洁净操作 { //洁净数据 MeterWorkCarActual netDb = new MeterWorkCarActual(); EntityBase entityActual = new EntityBase(); netDb = entityBase.format(scale, netDb); //netDb.actual_first1_no = mb.actual_first_no; //皮重计量作业编号 netDb.tare_time = mb.create_time; netDb.tare_weight = mb.meter_weight; netDb.base_spot2_no = mb.base_spot_no; netDb.base_spot2_name = mb.base_spot_name; netDb.tare_mode = "";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配 netDb.tare_man_no = ""; netDb.tare_man_name = ""; netDb.tare_class = ""; netDb.tare_group = ""; netDb.gross_time = DateTime.Now; netDb.gross_weight = PbCache.lockWgt; netDb.base_spot1_no = PbCache.sportInfo.base_spot_no; netDb.base_spot1_name = PbCache.sportInfo.base_spot_name; netDb.gross_mode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配 //净重=毛-皮-附加重量 netDb.net_weight = netDb.gross_weight - netDb.tare_weight - PbCache.addWgt; netDb.net_mode = "1"; //1:正常结净;2:匹配结净 netDb.value_flag = "0"; //0=有效,1=作废 netDb.upload_flag = "0"; //0=待审核;1:待上传;2=已上传 ResultModel rmI = mwcfs.doAddNetInnerWf(mwaf, netDb); if (rmI.state == "200") { rt.result = true; rt.resultInfo = "计量完成"; PbCache.msgInfo = "计量完成"; PbCache.actualFirstNo = rmI.data; } else { rt.result = false; rt.isError = true; rt.resultInfo = "服务端执行失败,计量失败:" + rmI.msgInfo; } } else //没有期限皮,则直接存一次数据 { ResultModel rmI = mwcfs.doAddInnerWf(mwaf); if (rmI.state == "200") { rt.result = true; rt.resultInfo = "计量完成"; PbCache.msgInfo = "计量完成"; PbCache.actualFirstNo = rmI.data; } else { rt.result = false; rt.isError = true; rt.resultInfo = "服务端执行失败,计量失败:" + rmI.msgInfo; } } } else if (rmX.data != null && rmX.data.Count > 0) { //isHaveHisTare 存在历史皮 存在一次计量数据 //一次重量减去当前重量需大于1t if (Math.Abs(rmX.data[0].meter_weight - PbCache.lockWgt) <= AppConfigCache.differenceWgt) { rt.result = false; rt.isError = true; PbCache.msgInfo = "当前车辆不允许重复计量"; return rt; } //当前车辆时间间隔过近 validTimeInterval valid = new validTimeInterval(); valid.ValidMethod(new PreTrackScale { meter_type_no = "001006003" }, "3", rmX.data[0]); if (!PbCache.monitorResult.valid_time_interval) { rt.result = false; rt.isError = true; return rt; } //当前数据是皮重 if (PbCache.monitorResult.valid_wgt) { if (rmX.data[0].weight_type == "0") //存在毛重,那么验证当前重量是否符合皮重,符合则进行洁净操作 { //进行洁净 MeterWorkCarActualFirst mwaf = new MeterWorkCarActualFirst(); //相同名称的均赋值一次 EntityBase entityBase = new EntityBase(); mwaf = entityBase.format(scale, mwaf); mwaf.actual_first_no = DateTime.Now.ToString("yyyyMMdd");//10 mwaf.meter_weight = PbCache.lockWgt;//计量重量 mwaf.add_weight = 0;//附加重量 mwaf.weight_type = "1"; //0=毛重;1=常规皮重;2=期限皮重;3=历史皮重;4=标识皮重;5=自重皮重 mwaf.create_man_no = ""; mwaf.create_man_name = ""; mwaf.create_time = DateTime.Now; mwaf.base_spot_no = PbCache.sportInfo.base_spot_no;//计量点编号 mwaf.base_spot_name = PbCache.sportInfo.base_spot_name; mwaf.memo = ""; mwaf.value_flag = "0"; //0有效 mwaf.update_man_name = ""; mwaf.update_man_no = ""; mwaf.update_time = null; mwaf.check_flag = "0"; //0未审核 mwaf.meter_mode = "2"; //智能计量 //洁净数据 MeterWorkCarActual netDb = new MeterWorkCarActual(); EntityBase entityActual = new EntityBase(); netDb = entityBase.format(scale, netDb); //netDb.actual_first1_no = mb.actual_first_no; //皮重计量作业编号 netDb.tare_time = mb.create_time; netDb.tare_weight = mb.meter_weight; netDb.base_spot2_no = mb.base_spot_no; netDb.base_spot2_name = mb.base_spot_name; netDb.tare_mode = "";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配 netDb.tare_man_no = ""; netDb.tare_man_name = ""; netDb.tare_class = ""; netDb.tare_group = ""; netDb.gross_time = DateTime.Now; netDb.gross_weight = PbCache.lockWgt; netDb.base_spot1_no = PbCache.sportInfo.base_spot_no; netDb.base_spot1_name = PbCache.sportInfo.base_spot_name; netDb.gross_mode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配 //净重=毛-皮-附加重量 netDb.net_weight = netDb.gross_weight - netDb.tare_weight - PbCache.addWgt; netDb.net_mode = "1"; //1:正常结净;2:匹配结净 netDb.value_flag = "0"; //0=有效,1=作废 netDb.upload_flag = "0"; //0=待审核;1:待上传;2=已上传 ResultModel rmI = mwcfs.doAddNetInnerWf(mwaf, netDb); if (rmI.state == "200") { rt.result = true; rt.resultInfo = "计量完成"; PbCache.msgInfo = "计量完成"; PbCache.actualFirstNo = rmI.data; } else { rt.result = false; rt.isError = true; rt.resultInfo = "服务端执行失败,计量失败:" + rmI.msgInfo; } } else //皮皮不能结合,或者之前不满足这边的业务进入到了先皮后毛流程 { rt.result = false; rt.isError = false; return rt; } } else //当前数据不是皮重 { //存在历史皮重,,且当前数据不是皮重 if (isHaveHisTare) { rt.result = false; rt.isError = false; return rt; } else { //不存历史皮,那么两个数据需比较大小,大的为毛,小的为皮,然后将数据洁净并存到一次表跟历史表中 } } //存在历史皮重 if (isHaveHisTare) { if (PbCache.monitorResult.valid_wgt) { rt.result = false; rt.isError = false; return rt; } if (rmX.data[0].weight_type == "0") //存在毛重,那么验证当前重量是否符合皮重,符合则进行洁净操作 { if (scale.matter_no != rmX.data[0].matter_no) { rt.result = false; rt.isError = true; PbCache.msgInfo = string.Format("已存在一条物料为[0]毛重信息", rmX.data[0].matter_name); return rt; } else //认为当前是皮重计量,进行毛皮洁净 { MeterWorkCarActualFirst mwaf = new MeterWorkCarActualFirst(); //相同名称的均赋值一次 EntityBase entityBase = new EntityBase(); mwaf = entityBase.format(scale, mwaf); mwaf.actual_first_no = DateTime.Now.ToString("yyyyMMdd");//10 mwaf.meter_weight = PbCache.lockWgt;//计量重量 mwaf.add_weight = 0;//附加重量 mwaf.weight_type = "0"; //0=毛重;1=常规皮重;2=期限皮重;3=历史皮重;4=标识皮重;5=自重皮重 mwaf.create_man_no = ""; mwaf.create_man_name = ""; mwaf.create_time = DateTime.Now; mwaf.base_spot_no = PbCache.sportInfo.base_spot_no;//计量点编号 mwaf.base_spot_name = PbCache.sportInfo.base_spot_name; mwaf.memo = ""; mwaf.value_flag = "0"; //0有效 mwaf.update_man_name = ""; mwaf.update_man_no = ""; mwaf.update_time = null; mwaf.check_flag = "0"; //0未审核 mwaf.meter_mode = "2"; //智能计量 MeterWorkCarActual netDb = new MeterWorkCarActual(); EntityBase entityActual = new EntityBase(); netDb = entityBase.format(scale, netDb); //netDb.actual_first1_no = mb.actual_first_no; //皮重计量作业编号 netDb.tare_time = rmX.data[0].create_time; netDb.tare_weight = rmX.data[0].meter_weight; netDb.base_spot2_no = rmX.data[0].base_spot_no; netDb.base_spot2_name = rmX.data[0].base_spot_name; netDb.tare_mode = "";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配 netDb.tare_man_no = ""; netDb.tare_man_name = ""; netDb.tare_class = ""; netDb.tare_group = ""; netDb.gross_time = DateTime.Now; netDb.gross_weight = PbCache.lockWgt; netDb.base_spot1_no = PbCache.sportInfo.base_spot_no; netDb.base_spot1_name = PbCache.sportInfo.base_spot_name; netDb.gross_mode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配 //净重=毛-皮-附加重量 netDb.net_weight = netDb.gross_weight - netDb.tare_weight - PbCache.addWgt; netDb.net_mode = "1"; //1:正常结净;2:匹配结净 netDb.value_flag = "0"; //0=有效,1=作废 netDb.upload_flag = "0"; //0=待审核;1:待上传;2=已上传 ResultModel rmI = mwcfs.doAddNetInnerWf(mwaf, netDb); if (rmI.state == "200") { rt.result = true; rt.resultInfo = "计量完成"; PbCache.msgInfo = "计量完成"; PbCache.actualFirstNo = rmI.data; } else { rt.result = false; rt.isError = true; rt.resultInfo = "服务端执行失败,计量失败:" + rmI.msgInfo; } } } else //那么第一次存的皮,此时 { //存在一次计量,则进行洁净操作 //验证两次计量时间间隔 validTimeInterval vti = new validTimeInterval(); //计量类型为内倒计量,一次与二次计量间隔若小于配置值 vti.ValidMethod(new PreTrackScale { meter_type_no = "001006003" }, "3", rmX.data[0]); if (!PbCache.monitorResult.valid_time_interval) { rt.result = false; rt.isError = true; rt.resultInfo = PbCache.msgInfo; return rt; } else { //进行洁净操作 } } } else //不存在历史皮重 { } } //*/ return rt; } } }