Parcourir la source

智能终端代码提交

duyong il y a 4 ans
Parent
commit
7f7bee1a7f

+ 2 - 2
CarMeterSystem/App.config

@@ -5,8 +5,8 @@
 	</startup>
 	<appSettings>
 		<!--<add key="ServiceUrl" value="http://127.0.0.1:9004/v1" />-->
-    <!--<add key="ServiceUrl" value="http://10.104.4.105:9004/v1" />-->
-    <add key="ServiceUrl" value="http://10.104.0.1:9004/v1" />
+    <add key="ServiceUrl" value="http://10.104.4.105:9004/v1" />
+    <!--<add key="ServiceUrl" value="http://10.104.0.1:9004/v1" />-->
 		<!--<add key="ServiceUrl" value="http://192.168.107.60:8888/icore.icp.winform/pass/jlcar"/>-->
     <!--<add key="ServiceUrl" value="http://192.168.185.29/icore.icp.winform/pass/jlcar"/>-->
     <!--<add key="ServiceUrl" value="http://jgwzjl.jiugang.com/icore.icp.web/pass/systemBase/v1"/>-->

+ 11 - 0
CarMeterSystem/frmOneYardToEnd.cs

@@ -919,6 +919,17 @@ namespace CarMeterSystem
                                     bRailwayActual = false;
                                 }
                             }
+                            else
+                            {
+                                txtMsgInfo.Text = "车号未注册,请联系处理!";
+                                PbCache.isLockFrm = false;
+                                btnSave.Enabled = true;
+                                rtInfo rt = new rtInfo();
+                                rt.isWarn = true;
+                                rt.WarnContent = "carErr";
+                                Monitor(rt);
+                                return;
+                            }
                         }
                         #region 查一次是否可留期限皮,可以则显示按钮
 

+ 2 - 0
Common/Common.csproj

@@ -93,6 +93,7 @@
     <Compile Include="DbOption\base\MeterBaseHisTareCountDService.cs" />
     <Compile Include="DbOption\base\MeterBaseMatterInfoService.cs" />
     <Compile Include="DbOption\base\MeterBaseScalePointService.cs" />
+    <Compile Include="DbOption\base\MeterBaseUnitInfoService.cs" />
     <Compile Include="DbOption\scale\PreBeltScalePreService.cs" />
     <Compile Include="DbOption\scale\PreTrackNoticeService.cs" />
     <Compile Include="DbOption\work\MeterWorkBeltActualService.cs" />
@@ -121,6 +122,7 @@
     <Compile Include="vo\base\MeterBaseCar.cs" />
     <Compile Include="vo\base\MeterBaseOperationLog.cs" />
     <Compile Include="vo\base\MeterBasemeterMaterialpm.cs" />
+    <Compile Include="vo\base\MeterBaseUnitInfo.cs" />
     <Compile Include="vo\pb\CraneScaleCollectModel.cs" />
     <Compile Include="vo\scale\PreBeltScaleForecast.cs" />
     <Compile Include="vo\scale\PreTrackNotice.cs" />

+ 1 - 1
Common/DbOption/base/MeterBaseTermTareDataService.cs

@@ -23,7 +23,7 @@ namespace Common
         }
 
         /// <summary>
-        /// 期限皮重保存
+        /// 期限皮重查询
         /// </summary>
         /// <param name="info"></param>
         /// <returns></returns>

+ 30 - 0
Common/DbOption/base/MeterBaseUnitInfoService.cs

@@ -0,0 +1,30 @@
+using com.hnshituo.core.webapp.vo;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Common
+{
+    public class MeterBaseUnitInfoService
+    {
+        public RESTfulResult<List<MeterBaseUnitInfo>> doQueryWf(MeterBaseUnitInfo info)
+        {
+            DbHelper db = new DbHelper();
+            RESTfulResult<PageList<List<MeterBaseUnitInfo>>> rm = db.doOption<PageList<List<MeterBaseUnitInfo>>>("meterbaseunitinfos", "/", new object[] { info }, 0);
+
+            RESTfulResult<List<MeterBaseUnitInfo>> result = new RESTfulResult<List<MeterBaseUnitInfo>>();
+            result.Succeed = rm.Succeed;
+            result.Status = rm.Status;
+            result.Message = rm.Message;
+            result.ResultMessage = rm.ResultMessage;
+            result.Code = rm.Code;
+            if (rm.Data != null && rm.Data.list != null && rm.Data.list.Count > 0)
+            {
+                result.Data = rm.Data.list;
+            }
+            return result;
+        }
+    }
+}

+ 53 - 0
Common/DbOption/work/MeterWorkCarActualService.cs

@@ -140,6 +140,59 @@ namespace Common
             return rm;
         }
 
+        /// <summary>
+        /// 期限皮结净,并保存期限皮
+        /// </summary>
+        /// <param name="secondDb">MeterWorkCarActualFirst</param>
+        /// <param name="netDb">MeterWorkCarActual</param>
+        /// <param name="saveTare">0 不保存历史皮,1保存历史皮</param>
+        /// <returns></returns>
+        public RESTfulResult<string> doTermTareNet(PreTrackScale scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst1)
+        {
+            DbHelper db = new DbHelper();
+            PbSomeModel<MeterWorkCarActualFirst, MeterWorkCarActualFirst, PreTrackScale, MeterMonitorNote> pbSomeModel = new PbSomeModel<MeterWorkCarActualFirst, MeterWorkCarActualFirst, PreTrackScale, MeterMonitorNote>();
+            pbSomeModel.one = actualFirst1;
+            pbSomeModel.two = actualFirst;
+            pbSomeModel.three = scale;
+
+            if (actualFirst1 != null && string.IsNullOrEmpty(actualFirst1.createManNo))
+            {
+                actualFirst1.createManNo = actualFirst1.baseSpotNo;
+                actualFirst1.createManName = actualFirst1.baseSpotName;
+            }
+
+            //RESTfulResult<string> rm = db.doOption<string>("meterworkcaractualfirsts", "doAddNetInnerWf", new object[] { secondDb, netDb, saveTare }, 1);
+            RESTfulResult<string> rm = db.doOption<string>("meterworkcaractualfirsts", "doNetByFirst", new object[] { pbSomeModel }, 1);
+            return rm;
+        }
+
+        /// <summary>
+        /// 错误结净
+        /// </summary>
+        /// <param name="secondDb">MeterWorkCarActualFirst</param>
+        /// <param name="netDb">MeterWorkCarActual</param>
+        /// <param name="saveTare">0 不保存历史皮,1保存历史皮</param>
+        /// <returns></returns>
+        public RESTfulResult<string> doAddNetError(MeterWorkCarActualFirst onceDb, MeterWorkCarActualFirst secondDb, MeterWorkCarActual netDb, MeterMonitorNote monitorNote, string saveTare)
+        {
+            DbHelper db = new DbHelper();
+            PbSomeModel<MeterWorkCarActualFirst, MeterWorkCarActual, MeterWorkPreLink, MeterMonitorNote> pbSomeModel = new PbSomeModel<MeterWorkCarActualFirst, MeterWorkCarActual, MeterWorkPreLink, MeterMonitorNote>();
+            pbSomeModel.one = secondDb;
+            pbSomeModel.two = netDb;
+            pbSomeModel.sOne = saveTare;
+            pbSomeModel.four = monitorNote;
+
+            if (secondDb != null && string.IsNullOrEmpty(secondDb.createManNo))
+            {
+                secondDb.createManNo = secondDb.baseSpotNo;
+                secondDb.createManName = secondDb.baseSpotName;
+            }
+
+            //RESTfulResult<string> rm = db.doOption<string>("meterworkcaractualfirsts", "doAddNetInnerWf", new object[] { secondDb, netDb, saveTare }, 1);
+            RESTfulResult<string> rm = db.doOption<string>("meterworkcaractualfirsts", "doAddNetInnerWfError", new object[] { pbSomeModel }, 1);
+            return rm;
+        }
+
         /// <summary>
         /// 混装混卸逻辑
         /// </summary>

+ 87 - 0
Common/vo/base/MeterBaseUnitInfo.cs

@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Common
+{
+	public class MeterBaseUnitInfo
+    {
+		/// <summary>
+		/// 主键编号
+		/// <summary>
+		//[AttributeID("UNIT_NO")]
+		public string unitNo { get; set; }
+
+		/// <summary>
+		/// 发货单位编号
+		/// <summary>
+		public string forwardingUnitNo { get; set; }
+
+		/// <summary>
+		/// 发货单位名称
+		/// <summary>
+		public string forwardingUnitName { get; set; }
+
+		/// <summary>
+		/// 收货单位名称
+		/// <summary>
+		public string receivingUnitNo { get; set; }
+
+		/// <summary>
+		/// 收货单位名称
+		/// <summary>
+		public string receivingUnitName { get; set; }
+
+		/// <summary>
+		/// 是否允许使用期限皮重(0不可,1可以)
+		/// <summary>
+		public string allowedTareWeight { get; set; }
+
+		/// <summary>
+		/// 创建人编号
+		/// <summary>
+		public string createManNo { get; set; }
+
+		/// <summary>
+		/// 创建人姓名
+		/// <summary>
+		public string createManName { get; set; }
+
+		/// <summary>
+		/// 创建时间
+		/// <summary>
+		public DateTime? createTime { get; set; }
+
+		/// <summary>
+		/// 修改人编号
+		/// <summary>
+		public string updateManNo { get; set; }
+
+		/// <summary>
+		/// 修改人姓名
+		/// <summary>
+		public string updateManName { get; set; }
+
+		/// <summary>
+		/// 修改时间
+		/// <summary>
+		public DateTime? updateTime { get; set; }
+
+		/// <summary>
+		/// 删除人编号
+		/// <summary>
+		public string deleteManNo { get; set; }
+
+		/// <summary>
+		/// 删除人姓名
+		/// <summary>
+		public string deleteManName { get; set; }
+
+		/// <summary>
+		/// 删除时间
+		/// <summary>
+		public DateTime? deleteTime { get; set; }
+	}
+}

+ 199 - 34
MeterSceneLibrary/JISCO/InnerCarJISCO.cs

@@ -139,7 +139,6 @@ namespace MeterSceneLibrary
                                 // 不存在有效的一次计量数据
                                 if (firstList == null || firstList.Count == 0)
                                 {
-                                
                                     // 历史皮重验证
                                     rt = saveMethod.validHisTare();
 
@@ -156,6 +155,10 @@ namespace MeterSceneLibrary
                                     // 重量类型为皮重且在皮重误差外
                                     else if (list[0].weightTypeNo == "001033002" && PbCache.monitorResult.valid_wgt == false)
                                     {
+                                        if (PbCache.ResultMessage == "")
+                                        {
+                                            PbCache.ResultMessage = "重量类型为皮重且不在皮重误差内";
+                                        }
                                         rt = saveMethod.doError(PbCache.ResultMessage);
                                         rt.isWarn = true;
                                         rt.WarnContent = "validWgt";
@@ -163,7 +166,11 @@ namespace MeterSceneLibrary
                                     // 重量类型为毛重,在皮重误差内
                                     else if (list[0].weightTypeNo == "001033001" && PbCache.monitorResult.valid_wgt == true)
                                     {
-                                        rt = saveMethod.doError("当次重量类型为毛重,在皮重误差内");
+                                        if (PbCache.ResultMessage == "")
+                                        {
+                                            PbCache.ResultMessage = "重量类型为毛重,在皮重误差内";
+                                        }
+                                        rt = saveMethod.doError(PbCache.ResultMessage);
                                         rt.isWarn = true;
                                         rt.WarnContent = "validWgt";
                                     }
@@ -199,15 +206,51 @@ namespace MeterSceneLibrary
                                                 {
                                                     if (rmT.Data != null && rmT.Data.Count > 0)
                                                     {
-                                                        // 存在使用期限皮重权限,并使用期限皮重洁净
-                                                        List<string> l = new List<string>();
-                                                        l.Add("create");
-                                                        //给一次数据匹配委托
-                                                        EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
-                                                        mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
-                                                        mwaf.isPreScale = "1";
-
-                                                        rt = saveMethod.doNetTermTare(rmScale.Data[0], mwaf);
+                                                        // 判断收发货单位是否具有期限皮重权限
+                                                        MeterBaseUnitInfoService meterBaseUnitInfoService = new MeterBaseUnitInfoService();
+                                                        MeterBaseUnitInfo meterBaseUnitInfo = new MeterBaseUnitInfo();
+                                                        meterBaseUnitInfo.forwardingUnitName = rmScale.Data[0].forwardingUnitName;
+                                                        meterBaseUnitInfo.forwardingUnitNo = rmScale.Data[0].forwardingUnitNo;
+                                                        meterBaseUnitInfo.receivingUnitName = rmScale.Data[0].receivingUintName;
+                                                        meterBaseUnitInfo.receivingUnitNo = rmScale.Data[0].receivingUintNo;
+                                                        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);
+                                                            }
+                                                            else
+                                                            {
+                                                                MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
+                                                                RESTfulResult<List<MeterBaseTermTareData>> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
+                                                                if (termTareData.Succeed)
+                                                                {
+                                                                    if (termTareData.Data == null || termTareData.Data.Count == 0)
+                                                                    {
+                                                                        mwaf.weightType = "0";
+                                                                        // 只保存一次计量数据
+                                                                        rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
+                                                                        PbCache.ResultMessage = "计量成功,期限皮不存在或者已过期,请留存期限皮";
+                                                                    }
+                                                                    else
+                                                                    {
+                                                                        // 存在使用期限皮重权限,并使用期限皮重洁净
+                                                                        List<string> l = new List<string>();
+                                                                        l.Add("create");
+                                                                        //给一次数据匹配委托
+                                                                        EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
+                                                                        mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
+                                                                        mwaf.isPreScale = "1";
+                                                                        mwaf.weightType = "0";
+
+                                                                        rt = saveMethod.doNetTermTare(rmScale.Data[0], mwaf);
+                                                                    }
+                                                                }
+                                                            }
+                                                        }
                                                     }
                                                     else
                                                     {
@@ -240,21 +283,34 @@ namespace MeterSceneLibrary
                                             }
                                         }
                                     }
-                                    if (rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt < 0 || listMonitor.Data[0].validPredictionDiff == "0")
+                                    // 当次重量和上次重量满足洁净最小值条件
+                                    if (Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) > diffrentWgt || listMonitor.Data[0].validPredictionDiff == "0")
                                     {
-                                        if (list[0].weightTypeNo == "001033001")
+                                        //判断上一次的一次数据是为皮重的,这次为毛重,上一次重量比这一次大;
+                                        //上一次为皮重4200,这一次是毛重3200
+                                        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);
                                             mwaf.weightType = "0";
+                                            mwaf.isPreScale = "1";
+                                            mwaf.actualFirstNo = "";
+
+                                            rt = saveMethod.doNetError(rmScale.Data[0], firstList[0], mwaf,  mwaf);
+                                            return rt;
                                         }
-                                        else if (list[0].weightTypeNo == "001033002")
+                                        //判断上一次的一次数据是为毛重的,这次为皮重,上一次重量比这一次小;
+                                        if (firstList[0].weightType == "0" && list[0].weightTypeNo == "001033002" && rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt < 0)
                                         {
+                                            EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
+                                            mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
                                             mwaf.weightType = "1";
+                                            mwaf.isPreScale = "1";
+                                            mwaf.actualFirstNo = "";
+
+                                            rt = saveMethod.doNetError(rmScale.Data[0],  mwaf, firstList[0], mwaf);
+                                            return rt;
                                         }
-                                        rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
-                                    }
-                                    // 当次重量和上次重量满足洁净最小值条件
-                                    else if (Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) > diffrentWgt || listMonitor.Data[0].validPredictionDiff == "0")
-                                    {
                                         // 查询当前秤点是否启用历史皮重判断(暂时不考虑此限制)By BourneCao
                                         // String spotNo = PbCache.sportInfo.baseSpotNo;
                                         // 历史皮重验证
@@ -275,6 +331,10 @@ namespace MeterSceneLibrary
                                         // 重量类型为皮重且不在皮重误差内
                                         else if (list[0].weightTypeNo == "001033002" && PbCache.monitorResult.valid_wgt == false)
                                         {
+                                            if (PbCache.ResultMessage == "")
+                                            {
+                                                PbCache.ResultMessage = "重量类型为皮重且不在皮重误差内";
+                                            }
                                             rt = saveMethod.doError(PbCache.ResultMessage);
                                         }
                                         // 重量类型为毛重,不在皮重误差内,正常结净
@@ -284,22 +344,129 @@ namespace MeterSceneLibrary
                                             {
                                                 mwaf.weightType = "0";
                                                 rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
+                                                PbCache.ResultMessage = "无皮重信息,无法结净,请计量皮重";
+                                                rt.isWarn = true;
+                                                rt.WarnContent = "validWgt";
                                             }
-                                            else
+                                            else if(firstList[0].weightType == "1")
                                             {
-                                                // 正常结净
-                                                //给一次数据匹配委托
-                                                EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
-                                                mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
-                                                mwaf.isPreScale = "1";
+                                                // 判断车辆是否具有期限皮重权限
+                                                MeterBaseTermTareCarService meterBaseTermTareCarService = new MeterBaseTermTareCarService();
+                                                RESTfulResult<List<MeterBaseTermTareCar>> tareCarResult = meterBaseTermTareCarService.doQueryWf(new MeterBaseTermTareCar { carNo = PbCache.lockCarNo, valueFlag = "0" });
 
-                                                rt = saveMethod.doNet(rmScale.Data[0], firstList[0], mwaf);
+                                                if (tareCarResult.Succeed)
+                                                {
+                                                    // 没有期限皮重权限
+                                                    if (tareCarResult.Data == null || tareCarResult.Data.Count == 0)
+                                                    {
+                                                        // 正常结净
+                                                        //给一次数据匹配委托
+                                                        EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
+                                                        mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
+                                                        mwaf.isPreScale = "1";
+                                                        mwaf.weightType = "0";
+
+                                                        rt = saveMethod.doNet(rmScale.Data[0], firstList[0], mwaf);
+                                                    }
+                                                    // 有期限皮重权限 
+                                                    else if (tareCarResult.Data.Count >= 1)
+                                                    {
+                                                        //查下当前拖的物料是否可用期限皮;验证业务类型是否允许使用期限皮重
+                                                        string sqls = @"select t.matter_no id, t.matter_name text
+                                                                        from meter_base_matter_info t,meter_base_metertype_conf t2
+                                                                        where t.allowed_tare_weight = '1'
+                                                                        and t.valid_flag = '1'
+                                                                        and t.matter_no='" + rmScale.Data[0].matterNo + @"'
+                                                                        and t2.is_allow_term_tare = '1' and  t2.meter_type_no = '" + rmScale.Data[0].meterTypeNo + @"'";
+
+                                                        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)
+                                                            {
+                                                                // 判断收发货单位是否具有期限皮重权限
+                                                                MeterBaseUnitInfoService meterBaseUnitInfoService = new MeterBaseUnitInfoService();
+                                                                MeterBaseUnitInfo meterBaseUnitInfo = new MeterBaseUnitInfo();
+                                                                meterBaseUnitInfo.forwardingUnitName = rmScale.Data[0].forwardingUnitName;
+                                                                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)
+                                                                {
+                                                                    MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
+                                                                    RESTfulResult<List<MeterBaseTermTareData>> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
+                                                                    if (termTareData.Succeed)
+                                                                    {
+                                                                        //判断是否存在未过期的期限皮重
+                                                                        if (termTareData.Data == null || termTareData.Data.Count == 0)
+                                                                        {
+                                                                            if (tareUnitResult.Data == null || tareUnitResult.Data.Count == 0)
+                                                                            {
+                                                                                // 正常结净
+                                                                                //给一次数据匹配委托
+                                                                                EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
+                                                                                mwaf = entityBase3.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
+                                                                                mwaf.isPreScale = "1";
+                                                                                mwaf.weightType = "0";
+
+                                                                                rt = saveMethod.doNet(rmScale.Data[0], firstList[0], mwaf);
+                                                                            }
+                                                                            else
+                                                                            {
+                                                                                // 正常结净
+                                                                                //给一次数据匹配委托
+                                                                                EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
+                                                                                mwaf = entityBase3.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
+                                                                                mwaf.isPreScale = "1";
+                                                                                mwaf.weightType = "0";
+
+                                                                                rt = saveMethod.doTermTareNet(rmScale.Data[0], firstList[0], mwaf);
+                                                                            }
+                                                                        }
+                                                                        else
+                                                                        {
+                                                                            // 存在使用期限皮重权限,并使用期限皮重洁净
+                                                                            List<string> l = new List<string>();
+                                                                            l.Add("create");
+                                                                            //给一次数据匹配委托
+                                                                            EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
+                                                                            mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
+                                                                            mwaf.isPreScale = "1";
+                                                                            mwaf.weightType = "0";
+
+                                                                            rt = saveMethod.doNetTermTare(rmScale.Data[0], mwaf);
+                                                                        }
+                                                                    }
+                                                                    
+                                                                }
+                                                            }
+                                                            else
+                                                            {
+                                                                // 正常结净
+                                                                //给一次数据匹配委托
+                                                                EntityBase<PreTrackScale> entityBase2 = new EntityBase<PreTrackScale>();
+                                                                mwaf = entityBase2.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
+                                                                mwaf.isPreScale = "1";
+                                                                mwaf.weightType = "0";
+
+                                                                rt = saveMethod.doNet(rmScale.Data[0], firstList[0], mwaf);
+                                                            }
+                                                        }
+                                                    }
+                                                }
                                             }
-                                            
                                         }
                                         // 重量类型为毛重,在皮重误差内
                                         else if (list[0].weightTypeNo == "001033001" && PbCache.monitorResult.valid_wgt == true)
                                         {
+                                            if (PbCache.ResultMessage == "")
+                                            {
+                                                PbCache.ResultMessage = "重量类型为毛重,在皮重误差内";
+                                            }
                                             rt = saveMethod.doError(PbCache.ResultMessage);
                                         }
                                     }
@@ -325,18 +492,16 @@ namespace MeterSceneLibrary
                                     //多条一次记录下判断是否全为毛重,是全部结净
                                     if (firstList[firstList.Count-1].weightType == "0" && list[0].weightTypeNo == "001033002")
                                     {
-                                        //给一次数据匹配委托
-                                        EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
-                                        mwaf = entityBase.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
-                                        mwaf.isPreScale = "1";
-                                        mwaf.weightType = "0";
-
-                                        rt = saveMethod.doNetAddMuch(mwaf);
+                                        mwaf.weightType = "1";
+                                        rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
                                     }
                                     else if (firstList[firstList.Count - 1].weightType == "0" && list[0].weightTypeNo == "001033001")
                                     {
                                         mwaf.weightType = "0";
                                         rt = saveMethod.doAddFirst(rmScale.Data[0],mwaf);
+                                        PbCache.ResultMessage = "无皮重信息,无法结净,请计量皮重";
+                                        rt.isWarn = true;
+                                        rt.WarnContent = "validWgt";
                                     }
                                     else
                                     {

+ 1 - 1
MeterSceneLibrary/JISCO/OuterCarJISCO.cs

@@ -431,7 +431,7 @@ namespace MeterSceneLibrary
                                     rt = saveMethod.doNet(listPreScale[0], rmX.Data[0], mwaf);
                                 }
                                 // 如果存在两条未使用的委托
-                                else if (listPreScale.Count == 2 && listPreScale[1].valueFlag == "1" && listPreScale[1].valueFlag == "1")
+                                else if (listPreScale.Count == 2 && listPreScale[0].valueFlag == "1" && listPreScale[1].valueFlag == "1")
                                 {
                                     /* 委托关系满足双委托逻辑
                                      * 分两种情况:

+ 147 - 2
MeterSceneLibrary/JISCO/private/SaveMethod.cs

@@ -656,11 +656,11 @@ namespace MeterSceneLibrary.JISCO
                     if (PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt)
                     {
                         PbCache.monitorResult.valid_wgt = true;
-                        PbCache.ResultMessage = "当前毛重【" + PbCache.lockWgt / 1000 + "T 】在皮重配置范围,历史皮重为【" + Convert.ToDouble(meterWeight) / 1000 + "T】,偏差最大允许重量为【" + hisTareCount.fixedWeightValue.Value + "kg】";
                     }
                     else
                     {
                         PbCache.monitorResult.valid_wgt = false;
+                        PbCache.ResultMessage = "当前皮重【" + PbCache.lockWgt / 1000 + "T 】在皮重配置范围,历史皮重为【" + Convert.ToDouble(meterWeight) / 1000 + "T】,偏差最大允许重量为【" + hisTareCount.fixedWeightValue.Value + "kg】";
                     }
                 }
                 else if (hisTareCount.countTypeNo == "001011002") //比例 当前重量>=历史皮重-历史皮重*比例   当前重量<=历史皮重+历史皮重*比例
@@ -688,7 +688,8 @@ namespace MeterSceneLibrary.JISCO
             }
             else
             {
-                PbCache.monitorResult.valid_wgt = true;
+                //PbCache.monitorResult.valid_wgt = true;
+                //PbCache.ResultMessage = "该车辆不存在历史皮重";
             }
 
             return rt;
@@ -751,6 +752,38 @@ namespace MeterSceneLibrary.JISCO
             return rt;
         }
 
+        public rtInfo doTermTareNet(PreTrackScale scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst1)
+        {
+            //操作日志
+            MeterMonitorNote monitorNote = new MeterMonitorNote();
+            monitorNote.baseSpotNo = actualFirst.baseSpotNo;
+            monitorNote.baseSpotName = actualFirst.baseSpotName;
+            monitorNote.operationContent = string.Format("保存期限皮重");
+            monitorNote.operationTime = actualFirst.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
+            monitorNote.carNo = actualFirst.carNo;
+            monitorNote.meterNoteSource = "0";
+
+            //期限皮重数据保存
+            MeterWorkCarActualService actualService = new MeterWorkCarActualService();
+            RESTfulResult<string> rmI = actualService.doTermTareNet(scale, actualFirst, actualFirst1);
+
+            if (rmI.Succeed)
+            {
+                rt.result = true;
+                rt.resultInfo = "称重完成";
+                PbCache.actualFirstNo = rmI.Data;
+                PbCache.strQRCode = rmI.Message;
+                PbCache.isTareWeight = false;//皮重
+            }
+            else
+            {
+                rt.result = false;
+                rt.isError = true;
+                rt.resultInfo = "称重数据保存失败";
+            }
+            return rt;
+        }
+
         /// <summary>
         /// 多毛一重
         /// </summary>
@@ -780,6 +813,118 @@ namespace MeterSceneLibrary.JISCO
             return rt;
         }
 
+        /// <summary>
+        /// 产生一次计量数据和没有委托的洁净数据
+        /// </summary>
+        /// <param name="scale"></param>
+        /// <param name="actualFirst"></param>
+        public rtInfo doNetError(PreTrackScale scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst1, MeterWorkCarActualFirst mwaf)
+        {
+            // 构造结净数据
+            MeterWorkCarActual netDb = new MeterWorkCarActual();
+
+            // 将第一个一次数据状态改为 已结净
+            //actualFirst.valueFlag = "2";
+            netDb.isPreScale = "0";
+            // 复制对象
+            if (scale != null)
+            {
+                EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
+                netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
+                netDb.isPreScale = "1";
+            }
+
+            netDb.carNo = actualFirst.carNo;
+            netDb.tareTime = actualFirst.createTime;
+            netDb.tareWeight = actualFirst.meterWeight.Value;
+            netDb.baseSpot2No = actualFirst.baseSpotNo;
+            netDb.baseSpot2Name = actualFirst.baseSpotName;
+            netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
+            netDb.actualFirst1No = actualFirst.actualFirstNo;
+            netDb.actualFirst2No = actualFirst1.actualFirstNo;
+            netDb.grossTime = actualFirst1.createTime;
+            netDb.grossWeight = actualFirst1.meterWeight.Value;
+            netDb.baseSpot1No = actualFirst1.baseSpotNo;
+            netDb.baseSpot1Name = actualFirst1.baseSpotName;
+            netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
+            netDb.grossClass = actualFirst1.meterClass;
+            netDb.grossGroup = actualFirst1.meterGroup;
+            netDb.valueFlag = "1";
+
+            netDb.netTime = DateTime.Now;
+
+            //netDb.netManNo = appUser.userid; //净重计量员编码 
+            //netDb.netManName = appUser.username; //净重计量员名称
+            netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
+            netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
+
+            netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
+            //净重=毛-皮-附加重量
+            netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
+            netDb.netMode = "1"; //1:正常结净;2:匹配结净
+            netDb.uploadFlag = "1"; //0=待审核;1:待上传;2=已上传
+            netDb.dataSource = "1";//1 = 智能终端,2 = 本地计量,3 = 应急计量,4 = 手动录入(计量票据录入)
+                                   //要判断下当前是否勾选了不验证皮重
+
+            netDb.grossManNo = actualFirst1.createManNo;
+            netDb.grossManName = actualFirst1.createManName;
+            netDb.grossTime = actualFirst1.createTime;
+
+
+            netDb.tareManName = actualFirst.createManNo;
+            netDb.tareManNo = actualFirst.createManName;
+            netDb.tareTime = actualFirst.createTime;
+
+
+            netDb.netManName = "admin";
+            netDb.netManNo = "admin";
+            netDb.netTime = DateTime.Now;
+            netDb.createManName = "admin";
+            netDb.createTime = DateTime.Now;
+            netDb.updateManName = "admin";
+            netDb.updateManNo = "admin";
+            netDb.updateTime = DateTime.Now;
+
+
+            //操作日志
+            MeterMonitorNote monitorNote = new MeterMonitorNote();
+            monitorNote.baseSpotNo = actualFirst1.baseSpotNo;
+            monitorNote.baseSpotName = actualFirst1.baseSpotName;
+            monitorNote.operationContent = string.Format("产生一次计量数据和洁净数据");
+            monitorNote.operationTime = actualFirst1.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
+            monitorNote.carNo = actualFirst1.carNo;
+            monitorNote.meterNoteSource = "0";
+
+            // 保存结净记录,后续改成统一提交模式  BourneCao
+
+            MeterWorkCarActualService actualService = new MeterWorkCarActualService();
+            RESTfulResult<string> rmI = actualService.doAddNetError(actualFirst, mwaf, netDb, monitorNote, "1");
+            if (rmI.Succeed)
+            {
+                rt.result = true;
+                rt.resultInfo = "称重完成";
+                PbCache.actualFirstNo = rmI.Data;
+                PbCache.strQRCode = rmI.Message;
+                if (mwaf.weightType == "0")
+                {
+                    PbCache.isTareWeight = false;//毛重
+                }
+                else
+                {
+                    PbCache.isTareWeight = true;//皮重
+                }
+
+            }
+            else
+            {
+                rt.result = false;
+                rt.isError = true;
+                rt.resultInfo = "称重数据保存失败";
+            }
+
+            return rt;
+        }
+
         /// <summary>
         /// 失败执行逻辑
         /// </summary>