duyong 4 år sedan
förälder
incheckning
2139cff625

+ 1 - 1
CarMeterSystem/Form1.cs

@@ -695,7 +695,7 @@ namespace CarMeterSystem
                         {
                             if (PbCache.monitor == null || string.IsNullOrEmpty(PbCache.monitor.ledWriter))
                             {
-                                PbCache.ledInfo = "车号甘A12345,重量98.76吨,计量完成";
+                                PbCache.ledInfo = "车号甘A12345,重量98.76吨,之前存在一个未结净的毛重,请联系";
                             }
                             else
                             {

+ 29 - 31
CarMeterSystem/frmOneYardToEnd.cs

@@ -289,11 +289,8 @@ namespace CarMeterSystem
                                 {
                                     btnSave.Enabled = false;
                                     strRm = em.GetAndExecuteMethod<rtInfo>("MeterSceneLibrary", "InnerCarJISCO", "MeterMethod", new object[] { new PreTrackScale { } });
-                                    if (PbCache.ResultMessage != "")
-                                    {
-
-                                    }
                                     setMsg(strRm.ResultMessage);
+                                    strMsg = strRm.ResultMessage;
                                     if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
                                     {
                                         led_controler.setOneLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
@@ -321,6 +318,7 @@ namespace CarMeterSystem
                                     btnSave.Enabled = false;
                                     strRm = em.GetAndExecuteMethod<rtInfo>("MeterSceneLibrary", "OuterCarJISCO", "MeterMethod", new object[] { new PreTrackScale { } });
                                     setMsg(strRm.ResultMessage);
+                                    strMsg = strRm.ResultMessage;
                                     if (!string.IsNullOrEmpty(PbCache.LEDResultMessage))
                                     {
                                         led_controler.setOneLineMsg(PbCache.sportInfo.ledIp, PbCache.LEDResultMessage);
@@ -439,31 +437,31 @@ namespace CarMeterSystem
 
                     #region 期限皮显示及保存
 
-                    //留期限皮提醒
-                    string sql = @"select base_spot_no   baseSpotNo,
-                                       base_spot_name baseSpotName,
-                                       warn_time      warnTime,
-                                       end_time    endTime,
-                                       car_no         carNo
-                                  from Meter_Base_Term_Tare_Data
-                                  where car_no='" + PbCache.lockCarNo + "' and value_flag='0' order by METER_TIME desc ";
-                    PbModelDbService<List<MeterBaseTermTareData>> pbModelDbService = new PbModelDbService<List<MeterBaseTermTareData>>();
-                    RESTfulResult<List<MeterBaseTermTareData>> rES = pbModelDbService.executeSqlDataWf(sql);
-
-                    if (rES.Succeed)
-                    {
-                        if (rES.Data != null && rES.Data.Count > 0)
-                        {
-                            if (DateTime.Now.CompareTo(rES.Data[0].endTime) >= 0)
-                            {
-                                PbCache.ResultMessage += "\n\r提醒:期限皮重已过期,请及时留期限皮";
-                            }
-                            else if (DateTime.Now.CompareTo(rES.Data[0].warnTime) >= 0)
-                            {
-                                PbCache.ResultMessage += "\n\r提醒:期限皮重将要过期,请及时留期限皮";
-                            }
-                        }
-                    }
+                    ////留期限皮提醒
+                    //string sql = @"select base_spot_no   baseSpotNo,
+                    //                   base_spot_name baseSpotName,
+                    //                   warn_time      warnTime,
+                    //                   end_time    endTime,
+                    //                   car_no         carNo
+                    //              from Meter_Base_Term_Tare_Data
+                    //              where car_no='" + PbCache.lockCarNo + "' and value_flag='0' order by METER_TIME desc ";
+                    //PbModelDbService<List<MeterBaseTermTareData>> pbModelDbService = new PbModelDbService<List<MeterBaseTermTareData>>();
+                    //RESTfulResult<List<MeterBaseTermTareData>> rES = pbModelDbService.executeSqlDataWf(sql);
+
+                    //if (rES.Succeed)
+                    //{
+                    //    if (rES.Data != null && rES.Data.Count > 0)
+                    //    {
+                    //        if (DateTime.Now.CompareTo(rES.Data[0].endTime) >= 0)
+                    //        {
+                    //            PbCache.ResultMessage += "\n\r提醒:期限皮重已过期,请及时留期限皮";
+                    //        }
+                    //        else if (DateTime.Now.CompareTo(rES.Data[0].warnTime) >= 0)
+                    //        {
+                    //            PbCache.ResultMessage += "\n\r提醒:期限皮重将要过期,请及时留期限皮";
+                    //        }
+                    //    }
+                    //}
 
                     //语音提醒部分
                     //flag =true表示称重成功
@@ -1076,8 +1074,8 @@ namespace CarMeterSystem
                             // 如果计量点配置中,设置了秤点计量类型为智能计量(下秤),验证扫码信息是否与识别车号一致。
                             // 如果为是,自动保存
                             //3秒后自动执行保存方法
-                            Thread.Sleep(3000);
-                            this.btnSave.PerformClick();
+                            //Thread.Sleep(3000);
+                            //this.btnSave.PerformClick();
 
                          }
                         else if (PbCache.monitor.validMatClick == "0")

+ 1 - 1
Common/DbOption/work/MeterWorkCarActualService.cs

@@ -250,7 +250,7 @@ namespace Common
         }
 
         /// <summary>
-        /// 双委托逻辑
+        /// 期限皮逻辑
         /// </summary>
         /// <param name="scale">List<PreTrackScale></param>
         /// <param name="actualFirst">一次计量数据</param>

+ 17 - 15
MeterPlugInLibrary/LED/LED_Control.cs

@@ -291,7 +291,7 @@ namespace MeterPlugInLibrary
             string[] list = ledInfo.Split(',');
 
 
-            for(int i=0; i<list.Length; i++)
+            for (int i = 0; i < list.Length; i++)
             {
                 if (i == 0) info1 = list[0];
                 if (i == 1) info2 = list[1];
@@ -322,7 +322,15 @@ namespace MeterPlugInLibrary
             }
             LedDll.AREARECT AreaRect = new LedDll.AREARECT();//区域坐标属性结构体变量
 
+            AreaRect.left = 0;
+            AreaRect.top = 0;
+            AreaRect.width = 192;
+            AreaRect.height = 16;
+            //nResult = LedDll.LV_QuickAddSingleLineTextArea(hProgram, 1, 2, ref AreaRect, LedDll.ADDTYPE_STRING, ledInfo, ref FontProp, 4);//快速通过字符添加一个单行文本区域,函数见函数声明注示
+
+
             LedDll.FONTPROP FontProp = new LedDll.FONTPROP();//文字属性
+
             FontProp.FontName = "宋体";
             FontProp.FontSize = 10;
             FontProp.FontColor = LedDll.COLOR_RED;
@@ -331,33 +339,27 @@ namespace MeterPlugInLibrary
 
             nResult = LedDll.LV_AddImageTextArea(hProgram, 1, 2, ref AreaRect, 0);
 
-            //nResult = LedDll.LV_QuickAddSingleLineTextArea(hProgram, 1, 2, ref AreaRect, LedDll.ADDTYPE_STRING, ledInfo, ref FontProp, 4);//快速通过字符添加一个单行文本区域,函数见函数声明注示
-            AreaRect.left = 0;
-            AreaRect.top = 0;
-            AreaRect.width = 192;
-            AreaRect.height = 15;
-
-            nResult = LedDll.LV_AddStaticTextToImageTextArea(hProgram, 1, 2, LedDll.ADDTYPE_STRING, info1, ref FontProp, 1, 2, 1);//快速通过字符添加一个单行文本区域,函数见函数声明注示
-
+            nResult = LedDll.LV_AddStaticTextToImageTextArea(hProgram, 1, 2, LedDll.ADDTYPE_STRING, ledInfo, ref FontProp, 1, 2, 1);//快速通过字符添加一个单行文本区域,函数见函数声明注示
 
             AreaRect.left = 0;
-            AreaRect.top = 15;
+            AreaRect.top = 16;
             AreaRect.width = 192;
-            AreaRect.height = 15;
+            AreaRect.height = 16;
+
 
             nResult = LedDll.LV_AddStaticTextToImageTextArea(hProgram, 1, 2, LedDll.ADDTYPE_STRING, info2, ref FontProp, 1, 2, 1);//快速通过字符添加一个单行文本区域,函数见函数声明注示
 
             AreaRect.left = 0;
-            AreaRect.top = 30;
+            AreaRect.top = 32;
             AreaRect.width = 192;
-            AreaRect.height = 15;
+            AreaRect.height = 16;
 
             nResult = LedDll.LV_AddStaticTextToImageTextArea(hProgram, 1, 2, LedDll.ADDTYPE_STRING, info3, ref FontProp, 1, 2, 1);//快速通过字符添加一个单行文本区域,函数见函数声明注示
 
             AreaRect.left = 0;
-            AreaRect.top = 45;
+            AreaRect.top = 48;
             AreaRect.width = 192;
-            AreaRect.height = 15;
+            AreaRect.height = 16;
 
             nResult = LedDll.LV_AddStaticTextToImageTextArea(hProgram, 1, 2, LedDll.ADDTYPE_STRING, info4, ref FontProp, 1, 2, 1);//快速通过字符添加一个单行文本区域,函数见函数声明注示
 

+ 395 - 37
MeterSceneLibrary/JISCO/InnerCarJISCO.cs

@@ -223,6 +223,7 @@ namespace MeterSceneLibrary
                                                             meterBaseUnitInfo.forwardingUnitNo = rmScale.Data[0].forwardingUnitNo;
                                                             meterBaseUnitInfo.receivingUnitName = rmScale.Data[0].receivingUintName;
                                                             meterBaseUnitInfo.receivingUnitNo = rmScale.Data[0].receivingUintNo;
+                                                            meterBaseUnitInfo.allowedTareWeight = "1";
                                                             RESTfulResult<List<MeterBaseUnitInfo>> tareUnitResult = meterBaseUnitInfoService.doQueryWf(meterBaseUnitInfo);
                                                             if (tareUnitResult.Succeed)
                                                             {
@@ -244,7 +245,9 @@ namespace MeterSceneLibrary
                                                                             mwaf.weightType = "0";
                                                                             // 只保存一次计量数据
                                                                             rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
+                                                                            rt.resultInfo += ",期限皮不存在或者已过期,请留存期限皮";
                                                                             PbCache.ResultMessage = "计量成功,期限皮不存在或者已过期,请留存期限皮";
+                                                                            PbCache.monitorResultMessage = "计量成功,期限皮不存在或者已过期,请留存期限皮";
                                                                             PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮不存在或者已过期请留存期限皮", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                                                                         }
                                                                         else
@@ -257,11 +260,12 @@ namespace MeterSceneLibrary
                                                                             mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
                                                                             mwaf.isPreScale = "1";
                                                                             mwaf.weightType = "0";
-
+                                                                            rt = saveMethod.doNetTermTare(rmScale.Data[0], mwaf);
+                                                                            rt.resultInfo += ",期限皮结净";
                                                                             PbCache.ResultMessage = "计量成功,期限皮结净";
                                                                             PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
 
-                                                                            rt = saveMethod.doNetTermTare(rmScale.Data[0], mwaf);
+
                                                                         }
                                                                     }
                                                                 }
@@ -296,6 +300,7 @@ namespace MeterSceneLibrary
                                                                             mwaf.weightType = "0";
                                                                             // 只保存一次计量数据
                                                                             rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
+                                                                            rt.resultInfo += ",期限皮不存在或者已过期,请留存期限皮";
                                                                             PbCache.ResultMessage = "计量成功,期限皮不存在或者已过期,请留存期限皮";
                                                                             PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮不存在或者已过期请留存期限皮", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                                                                         }
@@ -314,6 +319,7 @@ namespace MeterSceneLibrary
                                                                             PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
 
                                                                             rt = saveMethod.doNetTermTare(rmScale.Data[0], mwaf);
+                                                                            rt.resultInfo += ",期限皮结净";
                                                                         }
                                                                     }
                                                                 }
@@ -358,7 +364,7 @@ namespace MeterSceneLibrary
                                     {
                                         //判断上一次的一次数据是为皮重的,这次为毛重,上一次重量比这一次大;
                                         //上一次为皮重4200,这一次是毛重3200
-                                        if (firstList[0].weightType == "1" && list[0].weightTypeNo == "001033001" &&  rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt > 0)
+                                        if (firstList[0].weightType == "1" && list[0].weightTypeNo == "001033001" && rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt > 0)
                                         {
                                             EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
                                             mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
@@ -366,7 +372,7 @@ namespace MeterSceneLibrary
                                             mwaf.isPreScale = "1";
                                             mwaf.actualFirstNo = "";
 
-                                            rt = saveMethod.doNetError(rmScale.Data[0], firstList[0], mwaf,  mwaf);
+                                            rt = saveMethod.doNetError(rmScale.Data[0], firstList[0], mwaf, mwaf);
                                             return rt;
                                         }
                                         //判断上一次的一次数据是为毛重的,这次为皮重,上一次重量比这一次小;
@@ -378,7 +384,7 @@ namespace MeterSceneLibrary
                                             mwaf.isPreScale = "1";
                                             mwaf.actualFirstNo = "";
 
-                                            rt = saveMethod.doNetError(rmScale.Data[0],  mwaf, firstList[0], mwaf);
+                                            rt = saveMethod.doNetError(rmScale.Data[0], mwaf, firstList[0], mwaf);
                                             return rt;
                                         }
                                         // 查询当前秤点是否启用历史皮重判断(暂时不考虑此限制)By BourneCao
@@ -397,7 +403,7 @@ namespace MeterSceneLibrary
                                             mwaf.isPreScale = "1";
 
                                             rt = saveMethod.doNet(rmScale.Data[0], firstList[0], mwaf);
-                                            
+
                                             PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
                                         }
                                         // 重量类型为皮重且不在皮重误差内
@@ -414,16 +420,189 @@ namespace MeterSceneLibrary
                                         {
                                             if (firstList[0].weightType == "0")
                                             {
-                                                mwaf.weightType = "0";
-                                                rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
-                                                rt.resultInfo = "之前存在一个未结净的毛重";
-                                                PbCache.ResultMessage = "之前存在一个未结净的毛重";
-                                                PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,之前存在一个未结净的毛重,请联系",PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
-                                                PbCache.monitorResultMessage = "之前存在一个未结净的毛重";
-                                                rt.isWarn = true;
-                                                rt.WarnContent = "validWgt";
+                                                RESTfulResult<List<PreTrackScale>> scales = preTrackScaleService.doQueryWf(new PreTrackScale { predictionNo = firstList[0].predictionNo });
+                                                // 判断车辆是否具有期限皮重权限
+                                                MeterBaseTermTareCarService meterBaseTermTareCarService = new MeterBaseTermTareCarService();
+                                                RESTfulResult<List<MeterBaseTermTareCar>> tareCarResult = meterBaseTermTareCarService.doQueryWf(new MeterBaseTermTareCar { carNo = PbCache.lockCarNo, valueFlag = "0" });
+
+                                                if (tareCarResult.Succeed)
+                                                {
+                                                    // 没有期限皮重权限
+                                                    if (tareCarResult.Data == null || tareCarResult.Data.Count == 0)
+                                                    {
+                                                        mwaf.weightType = "0";
+                                                        rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
+                                                        rt.resultInfo = "之前存在一个未结净的毛重";
+                                                        PbCache.ResultMessage = "之前存在一个未结净的毛重";
+                                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,之前存在一个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                                        PbCache.monitorResultMessage = "之前存在一个未结净的毛重";
+                                                        rt.isWarn = true;
+                                                        rt.WarnContent = "validWgt";
+                                                    }
+                                                    // 有期限皮重权限 
+                                                    else if (tareCarResult.Data.Count >= 1)
+                                                    {
+                                                        //查下当前拖的物料是否可用期限皮;验证业务类型是否允许使用期限皮重
+                                                        string sqls = @"select t.matter_no id, t.matter_name text
+                                                                        from meter_base_matter_info t
+                                                                        where t.allowed_tare_weight = '1'
+                                                                        and t.valid_flag = '1'
+                                                                        and t.matter_no='" + scales.Data[0].matterNo + "'";
+
+                                                        PbModelDbService<List<PbModelDb>> pbp = new PbModelDbService<List<PbModelDb>>();
+                                                        RESTfulResult<List<PbModelDb>> rmT = pbp.executeSqlDataWf(sqls);
+                                                        if (rmT.Succeed)
+                                                        {
+                                                            // 存在使用期限皮重权限,并使用期限皮重洁净
+                                                            if (rmT.Data != null && rmT.Data.Count > 0)
+                                                            {
+                                                                //判断是使用车号-物料-称点,还是使用车号-物料-路线判断期限皮
+                                                                #region 车号-物料-路线
+                                                                if (AppConfigCache.TareControlType == "1")
+                                                                {
+                                                                    // 判断收发货单位是否具有期限皮重权限
+                                                                    MeterBaseUnitInfoService meterBaseUnitInfoService = new MeterBaseUnitInfoService();
+                                                                    MeterBaseUnitInfo meterBaseUnitInfo = new MeterBaseUnitInfo();
+                                                                    meterBaseUnitInfo.forwardingUnitName = scales.Data[0].forwardingUnitName;
+                                                                    meterBaseUnitInfo.forwardingUnitNo = scales.Data[0].forwardingUnitNo;
+                                                                    meterBaseUnitInfo.receivingUnitName = scales.Data[0].receivingUintName;
+                                                                    meterBaseUnitInfo.receivingUnitNo = scales.Data[0].receivingUintNo;
+                                                                    meterBaseUnitInfo.allowedTareWeight = "1";
+                                                                    RESTfulResult<List<MeterBaseUnitInfo>> tareUnitResult = meterBaseUnitInfoService.doQueryWf(meterBaseUnitInfo);
+                                                                    if (tareUnitResult.Succeed)
+                                                                    {
+                                                                        if (tareUnitResult.Data == null || tareUnitResult.Data.Count == 0)
+                                                                        {
+                                                                            mwaf.weightType = "0";
+                                                                            rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
+                                                                            rt.resultInfo = "之前存在一个未结净的毛重";
+                                                                            PbCache.ResultMessage = "之前存在一个未结净的毛重";
+                                                                            PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,之前存在一个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                                                            PbCache.monitorResultMessage = "之前存在一个未结净的毛重";
+                                                                            rt.isWarn = true;
+                                                                            rt.WarnContent = "validWgt";
+                                                                        }
+                                                                        else
+                                                                        {
+
+                                                                            MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
+                                                                            RESTfulResult<MeterBaseTermTareData> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
+                                                                            if (termTareData.Succeed)
+                                                                            {
+                                                                                if (termTareData.Data == null)
+                                                                                {
+                                                                                    mwaf.weightType = "0";
+                                                                                    rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
+                                                                                    rt.resultInfo = "期限皮过期并之前存在一个未结净的毛重";
+                                                                                    PbCache.ResultMessage = "期限皮过期并之前存在一个未结净的毛重";
+                                                                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,期限皮过期并之前存在一个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                                                                    PbCache.monitorResultMessage = "期限皮过期并之前存在一个未结净的毛重";
+                                                                                    rt.isWarn = true;
+                                                                                    rt.WarnContent = "validWgt";
+
+                                                                                }
+                                                                                else
+                                                                                {
+                                                                                    // 存在使用期限皮重权限,并使用期限皮重洁净
+                                                                                    List<string> l = new List<string>();
+                                                                                    l.Add("create");
+                                                                                    //给一次数据匹配委托
+                                                                                    EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
+                                                                                    mwaf = entityBase1.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
+                                                                                    mwaf.isPreScale = "1";
+                                                                                    mwaf.weightType = "0";
+
+                                                                                    PbCache.ResultMessage = "计量成功,期限皮结净";
+                                                                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+
+                                                                                    rt = saveMethod.doNetTermTare(scales.Data[0], mwaf);
+                                                                                    rt.resultInfo += ",期限皮结净";
+                                                                                }
+                                                                            }
+                                                                        }
+                                                                    }
+                                                                }
+                                                                #endregion
+                                                                #region 车号-物料-称点
+                                                                if (AppConfigCache.TareControlType == "2")
+                                                                {
+                                                                    // 判断收发货单位是否具有期限皮重权限
+                                                                    // 判断称点是否具有期限皮重权限
+                                                                    MeterBaseSpotInfo meterBaseSpotInfo = new MeterBaseSpotInfo();
+                                                                    meterBaseSpotInfo.baseSpotNo = PbCache.sportInfo.baseSpotNo;
+                                                                    meterBaseSpotInfo.allowedTareWeight = "1";
+                                                                    RESTfulResult<List<MeterBaseSpotInfo>> tareSpotResult = meterBaseSpotInfoService.doQueryWf(meterBaseSpotInfo);
+                                                                    if (tareSpotResult.Succeed)
+                                                                    {
+                                                                        if (tareSpotResult.Data == null || tareSpotResult.Data.Count == 0)
+                                                                        {
+                                                                            // 正常结净
+                                                                            //给一次数据匹配委托
+                                                                            EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
+                                                                            mwaf = entityBase3.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
+                                                                            mwaf.isPreScale = "1";
+                                                                            mwaf.weightType = "1";
+
+                                                                            rt = saveMethod.doNet(scales.Data[0], firstList[0], mwaf);
+                                                                            PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
+                                                                        }
+                                                                        else
+                                                                        {
+
+                                                                            MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
+                                                                            RESTfulResult<MeterBaseTermTareData> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
+                                                                            if (termTareData.Succeed)
+                                                                            {
+                                                                                if (termTareData.Data == null)
+                                                                                {
+                                                                                    mwaf.weightType = "0";
+                                                                                    rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
+                                                                                    rt.resultInfo = "期限皮过期并之前存在一个未结净的毛重";
+                                                                                    PbCache.ResultMessage = "期限皮过期并之前存在一个未结净的毛重";
+                                                                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,期限皮过期并之前存在一个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                                                                    PbCache.monitorResultMessage = "期限皮过期并之前存在一个未结净的毛重";
+                                                                                    rt.isWarn = true;
+                                                                                    rt.WarnContent = "validWgt";
+                                                                                }
+                                                                                else
+                                                                                {
+                                                                                    // 存在使用期限皮重权限,并使用期限皮重洁净
+                                                                                    List<string> l = new List<string>();
+                                                                                    l.Add("create");
+                                                                                    //给一次数据匹配委托
+                                                                                    EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
+                                                                                    mwaf = entityBase1.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
+                                                                                    mwaf.isPreScale = "1";
+                                                                                    mwaf.weightType = "1";
+
+                                                                                    PbCache.ResultMessage = "计量成功,期限皮结净";
+                                                                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+
+                                                                                    rt = saveMethod.doNetTermTare(scales.Data[0], mwaf);
+                                                                                    rt.resultInfo += ",期限皮结净";
+                                                                                }
+                                                                            }
+                                                                        }
+                                                                    }
+                                                                }
+                                                                #endregion
+                                                            }
+                                                            else
+                                                            {
+                                                                mwaf.weightType = "0";
+                                                                rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
+                                                                rt.resultInfo = "之前存在一个未结净的毛重";
+                                                                PbCache.ResultMessage = "之前存在一个未结净的毛重";
+                                                                PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,之前存在一个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                                                PbCache.monitorResultMessage = "之前存在一个未结净的毛重";
+                                                                rt.isWarn = true;
+                                                                rt.WarnContent = "validWgt";
+                                                            }
+                                                        }
+                                                    }
+                                                }
                                             }
-                                            else if(firstList[0].weightType == "1")
+                                            else
                                             {
                                                 // 判断车辆是否具有期限皮重权限
                                                 MeterBaseTermTareCarService meterBaseTermTareCarService = new MeterBaseTermTareCarService();
@@ -504,11 +683,10 @@ namespace MeterSceneLibrary
                                                                                     mwaf.isPreScale = "1";
                                                                                     mwaf.weightType = "0";
 
-                                                                                    rt = saveMethod.doTermTareNet(rmScale.Data[0], firstList[0], mwaf);
-
-                                                                                    PbCache.ResultMessage = "计量成功,期限皮不存在或者已过期,请留存期限皮";
-                                                                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮不存在或者已过期请留存期限皮", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
-
+                                                                                    rt = saveMethod.doTermTareNet(rmScale.Data[0], mwaf, firstList[0]);
+                                                                                    rt.resultInfo += ",留存期限皮成功";
+                                                                                    PbCache.ResultMessage = "计量成功,留存期限皮成功";
+                                                                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,留存期限皮成功", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
                                                                                 }
                                                                                 else
                                                                                 {
@@ -520,11 +698,10 @@ namespace MeterSceneLibrary
                                                                                     mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
                                                                                     mwaf.isPreScale = "1";
                                                                                     mwaf.weightType = "0";
-
+                                                                                    rt = saveMethod.doNetTermTare(rmScale.Data[0], mwaf);
+                                                                                    rt.resultInfo += ",期限皮结净";
                                                                                     PbCache.ResultMessage = "计量成功,期限皮结净";
                                                                                     PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
-
-                                                                                    rt = saveMethod.doNetTermTare(rmScale.Data[0], mwaf);
                                                                                 }
                                                                             }
                                                                         }
@@ -570,10 +747,10 @@ namespace MeterSceneLibrary
                                                                                     mwaf.isPreScale = "1";
                                                                                     mwaf.weightType = "0";
 
-                                                                                    rt = saveMethod.doTermTareNet(rmScale.Data[0], firstList[0], mwaf);
-
-                                                                                    PbCache.ResultMessage = "计量成功,期限皮不存在或者已过期,请留存期限皮";
-                                                                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮不存在或者已过期请留存期限皮", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+                                                                                    rt = saveMethod.doTermTareNet(rmScale.Data[0], mwaf, firstList[0]);
+                                                                                    rt.resultInfo += ",留存期限皮成功";
+                                                                                    PbCache.ResultMessage = "计量成功,留存期限皮成功";
+                                                                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,留存期限皮成功", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
 
                                                                                 }
                                                                                 else
@@ -591,6 +768,8 @@ namespace MeterSceneLibrary
                                                                                     PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
 
                                                                                     rt = saveMethod.doNetTermTare(rmScale.Data[0], mwaf);
+                                                                                    rt.resultInfo += ",期限皮结净";
+                                                                                    PbCache.ResultMessage = "计量成功,期限皮结净";
                                                                                 }
                                                                             }
                                                                         }
@@ -639,7 +818,7 @@ namespace MeterSceneLibrary
                                      * b. 自动进行语音求助
                                      */
                                     //多条一次记录下判断是否全为毛重,是全部结净
-                                    if (firstList[firstList.Count-1].weightType == "0" && list[0].weightTypeNo == "001033002")
+                                    if (firstList[firstList.Count - 1].weightType == "0" && list[0].weightTypeNo == "001033002")
                                     {
                                         mwaf.weightType = "1";
                                         rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
@@ -648,7 +827,7 @@ namespace MeterSceneLibrary
                                     else if (firstList[firstList.Count - 1].weightType == "0" && list[0].weightTypeNo == "001033001")
                                     {
                                         mwaf.weightType = "0";
-                                        rt = saveMethod.doAddFirst(rmScale.Data[0],mwaf);
+                                        rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
                                         rt.resultInfo = "之前存在一个未结净的毛重";
                                         PbCache.ResultMessage = "之前存在一个未结净的毛重";
                                         PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,之前存在一个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
@@ -725,17 +904,196 @@ namespace MeterSceneLibrary
                                     }
                                     else if (firstList.Count == 1 && firstList[0].weightType == "0")
                                     {
+                                        RESTfulResult<List<PreTrackScale>> scales = preTrackScaleService.doQueryWf(new PreTrackScale { predictionNo = firstList[0].predictionNo });
                                         if (PbCache.monitorResult.valid_wgt == true || listMonitor.Data[0].validPredictionDiff == "0")
                                         {
-                                            RESTfulResult<List<PreTrackScale>> scales = preTrackScaleService.doQueryWf(new PreTrackScale { predictionNo = firstList[0].predictionNo });
-                                            //匹配结净
-                                            EntityBase<PreTrackScale> entityBase2 = new EntityBase<PreTrackScale>();
-                                            mwaf = entityBase2.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
-                                            mwaf.isPreScale = "1";
-                                            mwaf.weightType = "0";
+                                            // 判断车辆是否具有期限皮重权限
+                                            MeterBaseTermTareCarService meterBaseTermTareCarService = new MeterBaseTermTareCarService();
+                                            RESTfulResult<List<MeterBaseTermTareCar>> tareCarResult = meterBaseTermTareCarService.doQueryWf(new MeterBaseTermTareCar { carNo = PbCache.lockCarNo, valueFlag = "0" });
 
-                                            rt = saveMethod.doNet(scales.Data[0], firstList[0], mwaf);
-                                            PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
+                                            if (tareCarResult.Succeed)
+                                            {
+                                                // 没有期限皮重权限
+                                                if (tareCarResult.Data == null || tareCarResult.Data.Count == 0)
+                                                {
+                                                    //匹配结净
+                                                    EntityBase<PreTrackScale> entityBase2 = new EntityBase<PreTrackScale>();
+                                                    mwaf = entityBase2.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
+                                                    mwaf.isPreScale = "1";
+                                                    mwaf.weightType = "1";
+
+                                                    rt = saveMethod.doNet(scales.Data[0], firstList[0], mwaf);
+                                                    PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
+                                                }
+                                                // 有期限皮重权限 
+                                                else if (tareCarResult.Data.Count >= 1)
+                                                {
+                                                    //查下当前拖的物料是否可用期限皮;验证业务类型是否允许使用期限皮重
+                                                    string sqls = @"select t.matter_no id, t.matter_name text
+                                                                        from meter_base_matter_info t
+                                                                        where t.allowed_tare_weight = '1'
+                                                                        and t.valid_flag = '1'
+                                                                        and t.matter_no='" + scales.Data[0].matterNo + "'";
+
+                                                    PbModelDbService<List<PbModelDb>> pbp = new PbModelDbService<List<PbModelDb>>();
+                                                    RESTfulResult<List<PbModelDb>> rmT = pbp.executeSqlDataWf(sqls);
+                                                    if (rmT.Succeed)
+                                                    {
+                                                        // 存在使用期限皮重权限,并使用期限皮重洁净
+                                                        if (rmT.Data != null && rmT.Data.Count > 0)
+                                                        {
+                                                            //判断是使用车号-物料-称点,还是使用车号-物料-路线判断期限皮
+                                                            #region 车号-物料-路线
+                                                            if (AppConfigCache.TareControlType == "1")
+                                                            {
+                                                                // 判断收发货单位是否具有期限皮重权限
+                                                                MeterBaseUnitInfoService meterBaseUnitInfoService = new MeterBaseUnitInfoService();
+                                                                MeterBaseUnitInfo meterBaseUnitInfo = new MeterBaseUnitInfo();
+                                                                meterBaseUnitInfo.forwardingUnitName = scales.Data[0].forwardingUnitName;
+                                                                meterBaseUnitInfo.forwardingUnitNo = scales.Data[0].forwardingUnitNo;
+                                                                meterBaseUnitInfo.receivingUnitName = scales.Data[0].receivingUintName;
+                                                                meterBaseUnitInfo.receivingUnitNo = scales.Data[0].receivingUintNo;
+                                                                meterBaseUnitInfo.allowedTareWeight = "1";
+                                                                RESTfulResult<List<MeterBaseUnitInfo>> tareUnitResult = meterBaseUnitInfoService.doQueryWf(meterBaseUnitInfo);
+                                                                if (tareUnitResult.Succeed)
+                                                                {
+                                                                    if (tareUnitResult.Data == null || tareUnitResult.Data.Count == 0)
+                                                                    {
+                                                                        //匹配结净
+                                                                        EntityBase<PreTrackScale> entityBase2 = new EntityBase<PreTrackScale>();
+                                                                        mwaf = entityBase2.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
+                                                                        mwaf.isPreScale = "1";
+                                                                        mwaf.weightType = "0";
+
+                                                                        rt = saveMethod.doNet(scales.Data[0], firstList[0], mwaf);
+                                                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
+                                                                    }
+                                                                    else
+                                                                    {
+
+                                                                        MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
+                                                                        RESTfulResult<MeterBaseTermTareData> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
+                                                                        if (termTareData.Succeed)
+                                                                        {
+                                                                            if (termTareData.Data == null)
+                                                                            {
+                                                                                // 正常结净
+                                                                                //给一次数据匹配委托
+                                                                                EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
+                                                                                mwaf = entityBase3.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
+                                                                                mwaf.isPreScale = "1";
+                                                                                mwaf.weightType = "1";
+
+                                                                                rt = saveMethod.doTermTareNet(scales.Data[0], mwaf, firstList[0]);
+                                                                                rt.resultInfo += ",留存期限皮成功";
+                                                                                PbCache.ResultMessage = "计量成功,期限皮不存在或者已过期,请留存期限皮";
+                                                                                PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+
+                                                                            }
+                                                                            else
+                                                                            {
+                                                                                // 存在使用期限皮重权限,并使用期限皮重洁净
+                                                                                List<string> l = new List<string>();
+                                                                                l.Add("create");
+                                                                                //给一次数据匹配委托
+                                                                                EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
+                                                                                mwaf = entityBase1.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
+                                                                                mwaf.isPreScale = "1";
+                                                                                mwaf.weightType = "0";
+
+                                                                                PbCache.ResultMessage = "计量成功,期限皮结净";
+                                                                                PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+
+                                                                                rt = saveMethod.doNetTermTare(scales.Data[0], mwaf);
+                                                                                rt.resultInfo += ",期限皮结净";
+                                                                            }
+                                                                        }
+                                                                    }
+                                                                }
+                                                            }
+                                                            #endregion
+                                                            #region 车号-物料-称点
+                                                            if (AppConfigCache.TareControlType == "2")
+                                                            {
+                                                                // 判断收发货单位是否具有期限皮重权限
+                                                                // 判断称点是否具有期限皮重权限
+                                                                MeterBaseSpotInfo meterBaseSpotInfo = new MeterBaseSpotInfo();
+                                                                meterBaseSpotInfo.baseSpotNo = PbCache.sportInfo.baseSpotNo;
+                                                                meterBaseSpotInfo.allowedTareWeight = "1";
+                                                                RESTfulResult<List<MeterBaseSpotInfo>> tareSpotResult = meterBaseSpotInfoService.doQueryWf(meterBaseSpotInfo);
+                                                                if (tareSpotResult.Succeed)
+                                                                {
+                                                                    if (tareSpotResult.Data == null || tareSpotResult.Data.Count == 0)
+                                                                    {
+                                                                        // 正常结净
+                                                                        //给一次数据匹配委托
+                                                                        EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
+                                                                        mwaf = entityBase3.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
+                                                                        mwaf.isPreScale = "1";
+                                                                        mwaf.weightType = "1";
+
+                                                                        rt = saveMethod.doNet(scales.Data[0], firstList[0], mwaf);
+                                                                        PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
+                                                                    }
+                                                                    else
+                                                                    {
+
+                                                                        MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
+                                                                        RESTfulResult<MeterBaseTermTareData> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
+                                                                        if (termTareData.Succeed)
+                                                                        {
+                                                                            if (termTareData.Data == null)
+                                                                            {
+                                                                                // 正常结净
+                                                                                //给一次数据匹配委托
+                                                                                EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
+                                                                                mwaf = entityBase3.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
+                                                                                mwaf.isPreScale = "1";
+                                                                                mwaf.weightType = "1";
+
+                                                                                rt = saveMethod.doTermTareNet(scales.Data[0], mwaf, firstList[0]);
+                                                                                rt.resultInfo += ",留存期限皮成功";
+                                                                                PbCache.ResultMessage = "计量成功,留存期限皮成功";
+                                                                                PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,留存期限皮成功", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+
+                                                                            }
+                                                                            else
+                                                                            {
+                                                                                // 存在使用期限皮重权限,并使用期限皮重洁净
+                                                                                List<string> l = new List<string>();
+                                                                                l.Add("create");
+                                                                                //给一次数据匹配委托
+                                                                                EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
+                                                                                mwaf = entityBase1.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
+                                                                                mwaf.isPreScale = "1";
+                                                                                mwaf.weightType = "1";
+
+                                                                                PbCache.ResultMessage = "计量成功,期限皮结净";
+                                                                                PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
+
+                                                                                rt = saveMethod.doNetTermTare(scales.Data[0], mwaf);
+                                                                                rt.resultInfo += ",期限皮结净";
+                                                                            }
+                                                                        }
+                                                                    }
+                                                                }
+                                                            }
+                                                            #endregion
+                                                        }
+                                                        else
+                                                        {
+                                                            //匹配结净
+                                                            EntityBase<PreTrackScale> entityBase2 = new EntityBase<PreTrackScale>();
+                                                            mwaf = entityBase2.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
+                                                            mwaf.isPreScale = "1";
+                                                            mwaf.weightType = "1";
+
+                                                            rt = saveMethod.doNet(scales.Data[0], firstList[0], mwaf);
+                                                            PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
+                                                        }
+                                                    }
+                                                }
+                                            }
                                         }
                                         else
                                         {