diff --git a/.gitignore b/.gitignore
index 5b7c739..e78c733 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,6 @@
/*.rar
+packages
+.vs
+bin
+obj
+~bak
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport.sln b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport.sln
new file mode 100644
index 0000000..fa513be
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.31515.178
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebApplicationGridJJReport", "WebApplicationGridJJReport\WebApplicationGridJJReport.csproj", "{BF0F3ED4-41A8-4AD4-9C8E-EE7112151620}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {BF0F3ED4-41A8-4AD4-9C8E-EE7112151620}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BF0F3ED4-41A8-4AD4-9C8E-EE7112151620}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BF0F3ED4-41A8-4AD4-9C8E-EE7112151620}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BF0F3ED4-41A8-4AD4-9C8E-EE7112151620}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {94C38E90-2D92-4F48-A923-4ECF913D03BF}
+ EndGlobalSection
+EndGlobal
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Common/ReportHelper.cs b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Common/ReportHelper.cs
new file mode 100644
index 0000000..7e3a100
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Common/ReportHelper.cs
@@ -0,0 +1,397 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Diagnostics;
+using System.IO;
+using System.IO.Compression;
+using System.Linq;
+using System.ServiceModel.Dispatcher;
+using System.Text;
+using System.Web;
+//using CK.SCP.Controller;
+//using CK.SCP.Models.ScpEntity;
+//using CK.SCP.Utils;
+
+namespace SCP.Common
+{
+
+ public enum PrintType
+ {
+ BARCODE_CUSTOM=110,
+ BARCODE = 101,
+ ASN = 102,
+ ARRIVE = 103,
+ CUSTOM_PAGE = 104,
+ ASN_PALLET =107,
+ PALLET=105,
+ SmallBARCODE = 106,
+ }
+ public class TextProvider
+ {
+ public static string BuildByRequest(HttpRequest p_request)
+ {
+ string text = string.Empty;
+ if (p_request.Form["dataname"]!=null && !string.IsNullOrEmpty(p_request.Form["dataname"]))
+ {
+ text = p_request.Form["dataname"];
+ }
+ else
+ {
+ //string name = p_request.QueryString["data"];
+ //text = JSONReportData.FromDataSet(GetData(name, p_request));
+ }
+ return text;
+ }
+
+ // private static DataSet GetData(string p_name, HttpRequest p_request)
+ // {
+ // DataSet ds = new DataSet();
+ // switch (int.Parse(p_name))
+ // {
+ // case (int)PrintType.ASN:
+ // ds = GET_ASN(p_request);
+ // break;
+ // case (int)PrintType.BARCODE:
+ // ds = GET_TS_BAR(p_request);
+ // break;
+ // case (int)PrintType.BARCODE_CUSTOM:
+ // ds = GET_TS_BAR_CUSTOM(p_request);
+ // break;
+ // case (int)PrintType.ARRIVE:
+ // ds = GET_ARRIVE(p_request);
+ // break;
+ // case (int)PrintType.CUSTOM_PAGE:
+ // ds =GET_CUSTOM_PAGE(p_request);
+ // break;
+ // case (int)PrintType.ASN_PALLET:
+ // ds = GET_ASN_PALLET(p_request);
+ // break;
+ // case (int)PrintType.PALLET:
+ // ds = GET_TB_PALLETS(p_request);
+ // break;
+ // case (int)PrintType.SmallBARCODE:
+ // ds = GET_TS_BAR_Small(p_request);
+ // break;
+ // }
+ // return ds;
+ // }
+ /////
+ // /// 获取发货单(带托盘明细的发货单)
+ // ///
+ // ///
+ // ///
+ // private static DataSet GET_ASN_PALLET(HttpRequest p_request)
+ // {
+ // DataSet ds = new DataSet();
+ // if (!string.IsNullOrEmpty(p_request["AsnBillNum"]))
+ // {
+ // var AskBillNum = p_request["AsnBillNum"].ToString();
+ // ds = SCP_ASN_CONTROLLER.ASN_PALLET_REPORT(AskBillNum);
+ // }
+ // return ds;
+ // }
+ // private static DataSet GET_ASN(HttpRequest p_request)
+ // {
+ // DataSet ds = new DataSet();
+ // if (!string.IsNullOrEmpty(p_request["AsnBillNum"]))
+ // {
+ // var AskBillNum = p_request["AsnBillNum"].ToString();
+ // ds=SCP_ASN_CONTROLLER.ASN_REPORT(AskBillNum);
+ // }
+ // return ds;
+ // }
+ /////
+ // /// 获取托盘
+ // ///
+ // ///
+ // ///
+ // private static DataSet GET_TB_PALLETS(HttpRequest p_request)
+ // {
+ // DataSet ds = new DataSet();
+ // TB_PALLETS _pallet = new TB_PALLETS();
+ // if (!string.IsNullOrEmpty(p_request["AsnBillNum"]))
+ // {
+ // _pallet.AsnBillNum = p_request["AsnBillNum"].ToString();
+ // }
+ // if (!string.IsNullOrEmpty(_pallet.AsnBillNum))
+ // {
+ // SCP_PALLET_CONTROLLER.Get_TB_PALLETS_List(_pallet, (ret) =>
+ // {
+ // if (ret.State == ReturnStatus.Succeed)
+ // {
+ // var _ls = ret.Result.DistinctBy(t=>t.PalletNum);
+ // var dt = ConvertHelper.ToDataTable(_ls.ToList());
+ // ds.Tables.Add(dt);
+ // }
+ // });
+ // }
+ // return ds;
+ // }
+ // private static DataSet GET_TS_BAR(HttpRequest p_request)
+ // {
+ // DataSet ds = new DataSet();
+ // TS_BARCODE _bar = new TS_BARCODE();
+ // if (!string.IsNullOrEmpty(p_request["AsnBillNum"]))
+ // {
+ // _bar.BillNum = p_request["AsnBillNum"].ToString();
+ // }
+ // if (!string.IsNullOrEmpty(p_request["Barcode"]))
+ // {
+ // var _ls = p_request["Barcode"].ToString().Split('_').ToList();
+ // _bar.UIDList = new List();
+ // _ls.ForEach(p =>
+ // {
+ // if (!string.IsNullOrEmpty(p))
+ // {
+ // _bar.UIDList.Add(long.Parse(p));
+ // }
+ // });
+ // }
+ // if (!string.IsNullOrEmpty(_bar.BillNum) || _bar.UIDList != null)
+ // {
+ // SCP_TS_BARCODE_CONTROLLER.Get_TS_BARCODE_List(_bar, (ret) =>
+ // {
+ // if (ret.State == ReturnStatus.Succeed)
+ // {
+ // var _ls = ret.Result.ToList();
+ // var _list=_ls.OrderBy(p => p.PartCode).ThenBy(p => p.BarCode).ToList();
+ // var dt = ConvertHelper.ToDataTable(_list);
+ // ds.Tables.Add(dt);
+ // }
+ // });
+ // }
+
+ // return ds;
+ // }
+
+ // private static DataSet GET_TS_BAR_Small(HttpRequest p_request)
+ // {
+ // DataSet ds = new DataSet();
+ // TS_BARCODE_SMALL _bar = new TS_BARCODE_SMALL();
+ // if (!string.IsNullOrEmpty(p_request["AsnBillNum"]))
+ // {
+ // _bar.BillNum = p_request["AsnBillNum"].ToString();
+ // }
+ // if (!string.IsNullOrEmpty(p_request["Barcode"]))
+ // {
+ // var _ls = p_request["Barcode"].ToString().Split('_').ToList();
+ // _bar.UIDList = new List();
+ // _ls.ForEach(p =>
+ // {
+ // if (!string.IsNullOrEmpty(p))
+ // {
+ // _bar.UIDList.Add(long.Parse(p));
+ // }
+ // });
+ // }
+ // if (!string.IsNullOrEmpty(_bar.BillNum) || _bar.UIDList != null)
+ // {
+ // SCP_TS_BARCODE_CONTROLLER.Get_TS_BARCODE_Small_List(_bar, (ret) =>
+ // {
+ // if (ret.State == ReturnStatus.Succeed)
+ // {
+ // var _ls = ret.Result.ToList();
+ // var _list = _ls.OrderBy(p => p.PartCode).ThenBy(p => p.BarCode).ToList();
+ // var dt = ConvertHelper.ToDataTable(_list);
+ // ds.Tables.Add(dt);
+ // }
+ // });
+ // }
+
+ // return ds;
+ // }
+
+ // private static DataSet GET_TS_BAR_CUSTOM(HttpRequest p_request)
+ // {
+ // DataSet ds = new DataSet();
+ // TS_BARCODE_CUSTOM _bar = new TS_BARCODE_CUSTOM();
+ // if (!string.IsNullOrEmpty(p_request["AsnBillNum"]))
+ // {
+ // _bar.BillNum = p_request["AsnBillNum"].ToString();
+ // }
+ // if (!string.IsNullOrEmpty(p_request["Barcode"]))
+ // {
+ // var _ls = p_request["Barcode"].ToString().Split('_').ToList();
+ // _bar.UIDList = new List();
+ // _ls.ForEach(p =>
+ // {
+ // if (!string.IsNullOrEmpty(p))
+ // {
+ // _bar.UIDList.Add(long.Parse(p));
+ // }
+ // });
+ // }
+ // if (!string.IsNullOrEmpty(_bar.BillNum) || _bar.UIDList != null)
+ // {
+ // SCP_TS_BARCODE_CONTROLLER.Get_TS_BARCODE_CUSTOM_List(_bar, (ret) =>
+ // {
+ // if (ret.State == ReturnStatus.Succeed)
+ // {
+ // var _ls = ret.Result.ToList();
+ // var _list = _ls.OrderBy(p => p.PartCode).ThenBy(p => p.BarCode).ToList();
+ // var dt = ConvertHelper.ToDataTable(_list);
+ // ds.Tables.Add(dt);
+ // }
+ // });
+ // }
+
+ // return ds;
+ // }
+ // private static DataSet GET_ARRIVE(HttpRequest p_request)
+ // {
+ // DataSet ds = new DataSet();
+ // if (!string.IsNullOrEmpty(p_request["AsnBillNum"]))
+ // {
+ // var AskBillNum = p_request["AsnBillNum"].ToString();
+ // ds = SCP_ASN_CONTROLLER.ARRIVE_REPORT(AskBillNum);
+ // }
+ // return ds;
+ // }
+ // private static DataSet GET_CUSTOM_PAGE(HttpRequest p_request)
+ // {
+ // DataSet ds = new DataSet();
+ // V_TB_ASN _asn = new V_TB_ASN();
+ // _asn.AsnBillNum= p_request.Params["AsnBillNum"];
+ // var dt=SCP_ASN_CONTROLLER.Get_CUSTOM_PAGE_List(_asn);
+ // ds.Tables.Add(dt);
+
+ // // string _str= ConvertHelper.SerializeObject(_asn);
+
+
+ // return ds;
+
+ // }
+ //class JSONReportData 产生报表需要的 JSON 格式数据
+ public class JSONReportData
+ {
+ //根据 DataSet 产生提供给报表需要的JSON文本数据
+ public static string FromDataSet(DataSet ds)
+ {
+ JsonQueryStringConverter jqsc = new JsonQueryStringConverter();
+
+ StringBuilder sbJSONText = new StringBuilder("{\n");
+ foreach (DataTable dt in ds.Tables)
+ {
+ //"recordset":[
+ sbJSONText.Append('"');
+ sbJSONText.Append(dt.TableName);
+ sbJSONText.Append("\":[\n");
+ foreach (DataRow dr in dt.Rows)
+ {
+ sbJSONText.Append('{');
+ for (int i = 0; i < dt.Columns.Count; ++i)
+ {
+ if (!dr.IsNull(i))
+ {
+ //用 ConvertValueToString 转换,这样数字类型才不会加引号
+ //如果日期类型也用ConvertValueToString转换,则为 "\/Date(-152438400000+0800)\/" 这样的形式
+ string Value;
+ if (dt.Columns[i].DataType.IsArray)
+ {
+ Value = "\"" + Convert.ToBase64String((byte[])dr[i]) + "\"";
+ }
+ else if (dt.Columns[i].DataType == typeof(System.DateTime))
+ {
+ Value = "\"" + dr[i].ToString() + "\"";
+ }
+ else
+ {
+ Value = jqsc.ConvertValueToString(dr[i], dt.Columns[i].DataType);
+ }
+ sbJSONText.AppendFormat("\"{0}\":{1},", dt.Columns[i].ColumnName, Value);
+ }
+ }
+ sbJSONText.Remove(sbJSONText.Length - 1, 1); //去掉每笔记录最后一个字段后面的","
+ sbJSONText.Append("},\n");
+ }
+ if (dt.Rows.Count > 0) //如果无明细记录,则不要回退
+ sbJSONText.Remove(sbJSONText.Length - 2, 1); //去掉最后一条记录后面的","
+ sbJSONText.Append("],\n");
+ }
+ sbJSONText.Remove(sbJSONText.Length - 2, 1); //去掉最后一记录集后面的","
+ sbJSONText.Append("}");
+
+ return sbJSONText.ToString();
+ }
+
+ //根据 DataTable 产生提供给报表需要的JSON文本数据
+ public static string FromDataTable(DataTable dt)
+ {
+ DataSet ds = new DataSet();
+ ds.Tables.Add(dt);
+ return FromDataSet(ds);
+ }
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //以下枚举指定报表数据的格式类型
+ public enum ResponseDataType
+ {
+ PlainText, //报表数据为XML或JSON文本,在调试时可以查看报表数据。数据未经压缩,大数据量报表采用此种方式不合适
+ ZipBinary, //报表数据为XML或JSON文本经过压缩得到的二进制数据。此种方式数据量最小(约为原始数据的1/10),但用Ajax方式加载报表数据时不能为此种方式
+ ZipBase64, //报表数据为将 ZipBinary 方式得到的数据再进行 BASE64 编码的数据。此种方式适合用Ajax方式加载报表数据
+ };
+
+ public class GridReportDataResponse
+ {
+ //指定报表的默认数据类型,便于统一定义整个报表系统的数据类型
+ //在报表开发调试阶段,通常指定为 ResponseDataType.PlainText, 以便在浏览器中查看响应的源文件时能看到可读的文本数据
+ //在项目部署时,通常指定为 ResponseDataType.ZipBinary 或 ResponseDataType.ZipBase64,这样可以极大减少数据量,提供报表响应速度
+ public const ResponseDataType DefaultDataType = ResponseDataType.PlainText; //PlainText ZipBinary ZipBase64
+
+ //将报表XML数据文本输出到HTTP请求
+ public static void Response(HttpResponse Response, string DataText, ResponseDataType DataType)
+ {
+ //报表XML数据的前后不能附加任何其它数据,否则XML数据将不能成功解析,所以调用ClearContent方法清理网页中前面多余的数据
+ Response.ClearContent();
+
+ if (ResponseDataType.PlainText == DataType)
+ {
+ // 把 xml 或 json 文本响应给客户端
+ //Response.ContentType = "text/xml";
+ Response.ContentType = "text/plain";
+ Response.Write(DataText);
+ }
+ else
+ {
+ //将string数据转换为byte[],以便进行压缩
+ System.Text.UTF8Encoding converter = new System.Text.UTF8Encoding();
+ byte[] XmlBytes = converter.GetBytes(DataText);
+
+ //在 HTTP 头信息中写入报表数据压缩信息
+ Response.AppendHeader("gr_zip_type", "deflate"); //指定压缩方法
+ Response.AppendHeader("gr_zip_size", XmlBytes.Length.ToString()); //指定数据的原始长度
+ Response.AppendHeader("gr_zip_encode", converter.HeaderName); //指定数据的编码方式 utf-8 utf-16 ...
+
+ // 把压缩后的xml数据发送给客户端
+ if (ResponseDataType.ZipBinary == DataType)
+ {
+ DeflateStream compressedzipStream = new DeflateStream(Response.OutputStream, CompressionMode.Compress, true);
+ compressedzipStream.Write(XmlBytes, 0, XmlBytes.Length);
+ compressedzipStream.Close();
+ }
+ else //ResponseDataType.ZipBase64
+ {
+ MemoryStream memStream = new MemoryStream();
+ DeflateStream compressedzipStream = new DeflateStream(memStream, CompressionMode.Compress, true);
+ compressedzipStream.Write(XmlBytes, 0, XmlBytes.Length);
+ compressedzipStream.Close(); //这句很重要,这样数据才能全部写入 MemoryStream
+
+ // Read bytes from the stream.
+ memStream.Seek(0, SeekOrigin.Begin); // Set the position to the beginning of the stream.
+ int count = (int)memStream.Length;
+ byte[] byteArray = new byte[count];
+ count = memStream.Read(byteArray, 0, count);
+
+ string Base64Text = Convert.ToBase64String(byteArray);
+ Response.ContentType = "text/plain";
+ Response.Write(Base64Text);
+ }
+ }
+
+ //报表XML数据的前后不能附加任何其它数据,否则XML数据将不能成功解析,所以调用End方法放弃网页中后面不必要的数据
+ Response.End();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Handlers/Handler1.ashx b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Handlers/Handler1.ashx
new file mode 100644
index 0000000..5f0f5d0
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Handlers/Handler1.ashx
@@ -0,0 +1 @@
+<%@ WebHandler Language="C#" CodeBehind="Handler1.ashx.cs" Class="WebApplicationGridJJReport.Handlers.Handler1" %>
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Handlers/Handler1.ashx.cs b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Handlers/Handler1.ashx.cs
new file mode 100644
index 0000000..67fe3d9
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Handlers/Handler1.ashx.cs
@@ -0,0 +1,94 @@
+using GridReport;
+using SCP.Common;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using WebApplicationGridJJReport.appcode;
+
+namespace WebApplicationGridJJReport.Handlers
+{
+ ///
+ /// Handler1 的摘要说明
+ ///
+ public class Handler1 : IHttpHandler
+ {
+
+ public void ProcessRequest(HttpContext context)
+ {
+ //取Post参数
+ string text = TextProvider.BuildByRequest(context.Request);
+ if (text.Length > 1 && text[0] == '[' && text[text.Length - 1] == ']')
+ {
+ text = text.Substring(1);
+ text = text.Substring(0, text.Length - 1);
+ }
+
+
+ string reportType = context.Request.QueryString["report"].ToLower();
+ //if (reportType == "menban")
+ {
+ if (string.IsNullOrEmpty(text))
+ {
+ text = PostParam.MenBanVal.Replace("'", "\"");
+ }
+ }
+ //else if (reportType == "zhuhuban")
+ //{
+ // if (string.IsNullOrEmpty(text))
+ // {
+ // text = PostParam.ZhuHuBanVal.Replace("'", "\"");
+ // }
+ //}
+ //else
+ //{
+ // if (string.IsNullOrEmpty(text))
+ // {
+ // text = PostParam.ZhuHuBanVal.Replace("'", "\"");
+ // }
+
+ //}
+
+ ReportGenerator reportGenerator = new ReportGenerator(context);
+
+ //#region 加载子报表
+ //if (reportType == "zhuhuban")
+ //{
+ // string[] childReportLst = new string[6] { "1", "2", "3", "4", "5", "6" };
+ // foreach (string childReportName in childReportLst)
+ // {
+ // reportGenerator.LoadChildReport(childReportName);
+ // //reportGenerator.LoadReportData(text);
+ // }
+ //}
+ //#endregion
+
+
+ reportGenerator.LoadReport();
+ reportGenerator.LoadReportData(text);
+
+ string returnFile = context.Request.QueryString["returnfile"];
+ if (returnFile == "1") //返回PDF文件流
+ {
+ reportGenerator.Generate();
+
+ }
+ else //返回base64字符串
+ {
+ string base64Str = reportGenerator.Generate2();
+
+ context.Response.Write(base64Str);
+ context.Response.End();
+
+ }
+ }
+
+ public bool IsReusable
+ {
+ get
+ {
+ return false;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Properties/AssemblyInfo.cs b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..0e5d1c2
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的常规信息通过下列特性集
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("WebApplicationGridJJReport")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("WebApplicationGridJJReport")]
+[assembly: AssemblyCopyright("Copyright © 2021")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+// 对 COM 组件不可见。如果需要
+// 从 COM 访问此程序集中的某个类型,请针对该类型将 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于 typelib 的 ID
+[assembly: Guid("bf0f3ed4-41a8-4ad4-9c8e-ee7112151620")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 内部版本号
+// 修订版本
+//
+// 可以指定所有值,也可以使用“修订号”和“内部版本号”的默认值,
+// 方法是按如下所示使用 "*":
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Web.Debug.config b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Web.Debug.config
new file mode 100644
index 0000000..b9a9fde
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Web.Debug.config
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Web.Release.config b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Web.Release.config
new file mode 100644
index 0000000..755e745
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Web.Release.config
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Web.config b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Web.config
new file mode 100644
index 0000000..2c86dca
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/Web.config
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/WebApplicationGridJJReport.csproj b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/WebApplicationGridJJReport.csproj
new file mode 100644
index 0000000..a7c0f59
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/WebApplicationGridJJReport.csproj
@@ -0,0 +1,140 @@
+
+
+
+
+ Debug
+ AnyCPU
+
+
+ 2.0
+ {BF0F3ED4-41A8-4AD4-9C8E-EE7112151620}
+ {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
+ Library
+ Properties
+ WebApplicationGridJJReport
+ WebApplicationGridJJReport
+ v4.5.2
+ true
+
+ 44356
+
+
+
+
+
+
+
+
+ true
+ full
+ false
+ bin\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ true
+ pdbonly
+ true
+ bin\
+ TRACE
+ prompt
+ 4
+
+
+
+ D:\~LYF\软件安装\闻荫软件安装\SCP(GridJJ_report_project)\SCP\SCP\obj\Debug\Interop.grsvr6Lib.dll
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Handler1.ashx
+
+
+
+
+
+
+
+ Web.config
+
+
+ Web.config
+
+
+
+
+
+
+ 10.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+
+
+
+
+
+ True
+ True
+ 56348
+ /
+ https://localhost:44356/
+ False
+ False
+ http://192.168.0.140/WebApplicationGridJJReport
+ False
+
+
+
+
+
+
+ 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。
+
+
+
+
+
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/WebApplicationGridJJReport.csproj.user b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/WebApplicationGridJJReport.csproj.user
new file mode 100644
index 0000000..2adebda
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/WebApplicationGridJJReport.csproj.user
@@ -0,0 +1,38 @@
+
+
+
+ true
+
+ 44356
+
+
+
+
+ Debug|Any CPU
+ ProjectFiles
+
+
+
+
+
+ /Handlers/Handler1.ashx?report=menban&returnfile=1
+ SpecificPage
+ True
+ False
+ False
+ False
+
+
+
+
+
+
+
+
+ True
+ False
+
+
+
+
+
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/appcode/PostParam.cs b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/appcode/PostParam.cs
new file mode 100644
index 0000000..6ef9dc1
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/appcode/PostParam.cs
@@ -0,0 +1,3170 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+namespace WebApplicationGridJJReport.appcode
+{
+ public static class PostParam
+ {
+ // public const string ZhuHuBanVal = @"
+ //{'masterList_AC':[{'billNum':' 10000000127','billSerialNum':'06','billLocation':null,'providerCode':'0709FAW-VW7XH','partType':'A上C上','capacity':'1','printDate':'2021-12-01 15:53:54','printType':0,'productLine':'08','beginVin':'LFV3A24K0M3117267','endVin':'LFV3A24K0M3117267','details':null}],'detailList_AC':[{'billNum':' 10000000127','knr':' 21325574111001','vin':'LFV3A24K0M3117267','hostSN':383,'partCode':'80D867233CYM5','partCode2':'','sn':1},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':2},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':3},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':4},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':5},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':6},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':7},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':8},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':9},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':10},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':11},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':12},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':13},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':14},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':15},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':16},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':17},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':18},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':19},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':20},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':21},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':22},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':23},{'billNum':' 10000000127','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':24}],'masterList_AA':[{'billNum':' 10000000128','billSerialNum':'06','billLocation':'左','providerCode':'0709FAW-VW7XH','partType':'A柱下A中','capacity':'1','printDate':'2021-12-01 15:53:54','printType':0,'productLine':'08','beginVin':'LFV3A24K0M3117267','endVin':'LFV3A24K0M3117267','details':null},{'billNum':' 10000000129','billSerialNum':'06','billLocation':'右','providerCode':'0709FAW-VW7XH','partType':'A柱下A中','capacity':'1','printDate':'2021-12-01 15:53:54','printType':0,'productLine':'08','beginVin':'LFV3A24K0M3117267','endVin':'LFV3A24K0M3117267','details':null}],'detailList_AA':[{'billNum':' 10000000128','knr':' 21325574111001','vin':'LFV3A24K0M3117267','hostSN':383,'partCode':'80D867271DS2','partCode2':'80D868203DS2','sn':1},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':2},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':3},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':4},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':5},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':6},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':7},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':8},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':9},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':10},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':11},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':12},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':13},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':14},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':15},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':16},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':17},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':18},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':19},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':20},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':21},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':22},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':23},{'billNum':' 10000000128','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':24},{'billNum':' 10000000129','knr':' 21325574111001','vin':'LFV3A24K0M3117267','hostSN':383,'partCode':'80D867272ADS2','partCode2':'80D868204DS2','sn':1},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':2},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':3},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':4},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':5},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':6},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':7},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':8},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':9},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':10},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':11},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':12},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':13},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':14},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':15},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':16},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':17},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':18},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':19},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':20},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':21},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':22},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':23},{'billNum':' 10000000129','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':24}],'masterList_BS':[{'billNum':' 10000000130','billSerialNum':'06','billLocation':'左','providerCode':'0709FAW-VW7XH','partType':'B柱上','capacity':'1','printDate':'2021-12-01 15:53:54','printType':0,'productLine':'08','beginVin':'LFV3A24K0M3117267','endVin':'LFV3A24K0M3117267','details':null},{'billNum':' 10000000131','billSerialNum':'06','billLocation':'右','providerCode':'0709FAW-VW7XH','partType':'B柱上','capacity':'1','printDate':'2021-12-01 15:53:54','printType':0,'productLine':'08','beginVin':'LFV3A24K0M3117267','endVin':'LFV3A24K0M3117267','details':null}],'detailList_BS':[{'billNum':' 10000000130','knr':' 21325574111001','vin':'LFV3A24K0M3117267','hostSN':383,'partCode':'','partCode2':null,'sn':1},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':2},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':3},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':4},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':5},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':6},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':7},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':8},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':9},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':10},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':11},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':12},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':13},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':14},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':15},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':16},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':17},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':18},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':19},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':20},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':21},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':22},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':23},{'billNum':' 10000000130','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':24},{'billNum':' 10000000131','knr':' 21325574111001','vin':'LFV3A24K0M3117267','hostSN':383,'partCode':'80D867244AYW5','partCode2':null,'sn':1},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':2},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':3},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':4},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':5},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':6},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':7},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':8},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':9},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':10},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':11},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':12},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':13},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':14},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':15},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':16},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':17},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':18},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':19},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':20},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':21},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':22},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':23},{'billNum':' 10000000131','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':24}],'masterList_BX':[{'billNum':' 10000000132','billSerialNum':'06','billLocation':'左','providerCode':'0709FAW-VW7XH','partType':'B柱下','capacity':'1','printDate':'2021-12-01 15:53:54','printType':0,'productLine':'08','beginVin':'LFV3A24K0M3117267','endVin':'LFV3A24K0M3117267','details':null},{'billNum':' 10000000133','billSerialNum':'06','billLocation':'右','providerCode':'0709FAW-VW7XH','partType':'B柱下','capacity':'1','printDate':'2021-12-01 15:53:54','printType':0,'productLine':'08','beginVin':'LFV3A24K0M3117267','endVin':'LFV3A24K0M3117267','details':null}],'detailList_BX':[{'billNum':' 10000000132','knr':' 21325574111001','vin':'LFV3A24K0M3117267','hostSN':383,'partCode':'80D8672394PK','partCode2':null,'sn':1},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':2},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':3},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':4},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':5},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':6},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':7},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':8},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':9},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':10},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':11},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':12},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':13},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':14},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':15},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':16},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':17},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':18},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':19},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':20},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':21},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':22},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':23},{'billNum':' 10000000132','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':24},{'billNum':' 10000000133','knr':' 21325574111001','vin':'LFV3A24K0M3117267','hostSN':383,'partCode':'80D867240DS2','partCode2':null,'sn':1},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':2},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':3},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':4},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':5},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':6},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':7},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':8},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':9},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':10},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':11},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':12},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':13},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':14},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':15},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':16},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':17},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':18},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':19},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':20},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':21},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':22},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':23},{'billNum':' 10000000133','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':24}],'masterList_D':[{'billNum':' 10000000134','billSerialNum':'11','billLocation':null,'providerCode':'0709FAW-VW7XH','partType':'D柱','capacity':'1','printDate':'2021-12-01 15:53:54','printType':0,'productLine':'08','beginVin':'LFV3A24K0M3117267','endVin':'LFV3A24K0M3117267','details':null},{'billNum':' 10000000135','billSerialNum':'12','billLocation':null,'providerCode':'0709FAW-VW7XH','partType':'D柱','capacity':'0','printDate':'2021-12-01 15:53:54','printType':0,'productLine':'08','beginVin':null,'endVin':null,'details':null}],'detailList_D':[{'billNum':' 10000000134','knr':' 21325574111001','vin':'LFV3A24K0M3117267','hostSN':383,'partCode':'80D867245ACE3','partCode2':null,'sn':1},{'billNum':' 10000000134','knr':' 21325574111001','vin':'LFV3A24K0M3117267','hostSN':383,'partCode':'80G8672464PK','partCode2':null,'sn':2},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':3},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':4},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':5},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':6},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':7},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':8},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':9},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':10},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':11},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':12},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':13},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':14},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':15},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':16},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':17},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':18},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':19},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':20},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':21},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':22},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':23},{'billNum':' 10000000134','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':24},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':1},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':2},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':3},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':4},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':5},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':6},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':7},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':8},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':9},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':10},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':11},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':12},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':13},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':14},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':15},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':16},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':17},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':18},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':19},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':20},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':21},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':22},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':23},{'billNum':' 10000000135','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':24}],'masterList_HL':[{'billNum':' 10000000136','billSerialNum':'06','billLocation':'左','providerCode':'0709FAW-VW7XH','partType':'后轮上装饰板','capacity':'1','printDate':'2021-12-01 15:53:54','printType':0,'productLine':'08','beginVin':'LFV3A24K0M3117267','endVin':'LFV3A24K0M3117267','details':null},{'billNum':' 10000000137','billSerialNum':'06','billLocation':'右','providerCode':'0709FAW-VW7XH','partType':'后轮上装饰板','capacity':'1','printDate':'2021-12-01 15:53:54','printType':0,'productLine':'08','beginVin':'LFV3A24K0M3117267','endVin':'LFV3A24K0M3117267','details':null}],'detailList_HL':[{'billNum':' 10000000136','knr':' 21325574111001','vin':'LFV3A24K0M3117267','hostSN':383,'partCode':'80D867767DS2','partCode2':'','sn':1},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':2},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':3},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':4},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':5},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':6},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':7},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':8},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':9},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':10},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':11},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':12},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':13},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':14},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':15},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':16},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':17},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':18},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':19},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':20},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':21},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':22},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':23},{'billNum':' 10000000136','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':24},{'billNum':' 10000000137','knr':' 21325574111001','vin':'LFV3A24K0M3117267','hostSN':383,'partCode':'80D867768DS2','partCode2':'','sn':1},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':2},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':3},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':4},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':5},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':6},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':7},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':8},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':9},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':10},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':11},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':12},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':13},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':14},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':15},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':16},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':17},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':18},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':19},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':20},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':21},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':22},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':23},{'billNum':' 10000000137','knr':' ','vin':null,'hostSN':null,'partCode':null,'partCode2':null,'sn':24}]}
+ //";
+ /*
+ public const string ZhuHuBanVal = @"
+{
+ 'item': {
+ 'masterList_AC': [
+ {
+ 'id': 'edc713c4-7b6c-abeb-90d1-3a00f2e50a6f',
+ 'billNum': '10000001556',
+ 'billSerialNum': '15',
+ 'billLocation': null,
+ 'providerCode': '0709FAW-VW7XH',
+ 'partType': 'A上C上',
+ 'capacity': '24',
+ 'printDate': '2021-12-22 13:58:27',
+ 'printType': 0,
+ 'productLine': '08',
+ 'beginVin': 'LFV3B2FYXM3492369',
+ 'endVin': 'LFV3B2FY5M3492392',
+ 'details': null,
+ 'beginVin1': null,
+ 'endVin1': null
+ }
+ ],
+ 'detailList_AC': [
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496140',
+ 'vin': '492369',
+ 'hostSN': 81625,
+ 'partCode': '80D867233C1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 1
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496195',
+ 'vin': '492370',
+ 'hostSN': 81626,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 2
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496249',
+ 'vin': '492371',
+ 'hostSN': 81627,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 3
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2138196881',
+ 'vin': '492372',
+ 'hostSN': 81628,
+ 'partCode': '80D867233BYW5',
+ 'partCode2': '80G867287YW5',
+ 'sn': 4
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496362',
+ 'vin': '492373',
+ 'hostSN': 81629,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 5
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496409',
+ 'vin': '492374',
+ 'hostSN': 81630,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 6
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496225',
+ 'vin': '492375',
+ 'hostSN': 81631,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 7
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496218',
+ 'vin': '492376',
+ 'hostSN': 81632,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 8
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496188',
+ 'vin': '492377',
+ 'hostSN': 81633,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 9
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496232',
+ 'vin': '492378',
+ 'hostSN': 81634,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 10
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496256',
+ 'vin': '492379',
+ 'hostSN': 81635,
+ 'partCode': '80D867233C1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 11
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496447',
+ 'vin': '492380',
+ 'hostSN': 81636,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 12
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496485',
+ 'vin': '492381',
+ 'hostSN': 81637,
+ 'partCode': '80D867233C1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 13
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496324',
+ 'vin': '492382',
+ 'hostSN': 81638,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 14
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496201',
+ 'vin': '492383',
+ 'hostSN': 81639,
+ 'partCode': '80D867233C1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 15
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2138196898',
+ 'vin': '492384',
+ 'hostSN': 81640,
+ 'partCode': '80D867233BYW5',
+ 'partCode2': '80G867287YW5',
+ 'sn': 16
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496515',
+ 'vin': '492385',
+ 'hostSN': 81641,
+ 'partCode': '80D867233C1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 17
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496263',
+ 'vin': '492386',
+ 'hostSN': 81642,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 18
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496331',
+ 'vin': '492387',
+ 'hostSN': 81643,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 19
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2138196904',
+ 'vin': '492388',
+ 'hostSN': 81644,
+ 'partCode': '80D867233BYW5',
+ 'partCode2': '80G867287YW5',
+ 'sn': 20
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496270',
+ 'vin': '492389',
+ 'hostSN': 81645,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 21
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496294',
+ 'vin': '492390',
+ 'hostSN': 81646,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 22
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496539',
+ 'vin': '492391',
+ 'hostSN': 81647,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 23
+ },
+ {
+ 'billNum': '10000001556',
+ 'knr': '2146496300',
+ 'vin': '492392',
+ 'hostSN': 81648,
+ 'partCode': '80D867233B1OJ',
+ 'partCode2': '80D8672871OJ',
+ 'sn': 24
+ }
+ ],
+ 'masterList_AA': [
+ {
+ 'id': 'c368b4c8-8ef7-73b1-4edb-3a00f2e50fbd',
+ 'billNum': '10000001557',
+ 'billSerialNum': '15',
+ 'billLocation': '左',
+ 'providerCode': '0709FAW-VW7XH',
+ 'partType': 'A柱下A中',
+ 'capacity': '24',
+ 'printDate': '2021-12-22 13:58:27',
+ 'printType': 0,
+ 'productLine': '08',
+ 'beginVin': 'LFV3B2FYXM3492369',
+ 'endVin': 'LFV3B2FY5M3492392',
+ 'details': null,
+ 'beginVin1': null,
+ 'endVin1': null
+ },
+ {
+ 'id': '8f087abd-7641-5414-c7ff-3a00f2e5141a',
+ 'billNum': '10000001558',
+ 'billSerialNum': '15',
+ 'billLocation': '右',
+ 'providerCode': '0709FAW-VW7XH',
+ 'partType': 'A柱下A中',
+ 'capacity': '24',
+ 'printDate': '2021-12-22 13:58:27',
+ 'printType': 0,
+ 'productLine': '08',
+ 'beginVin': 'LFV3B2FYXM3492369',
+ 'endVin': 'LFV3B2FY5M3492392',
+ 'details': null,
+ 'beginVin1': null,
+ 'endVin1': null
+ }
+ ],
+ 'detailList_AA': [
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496140',
+ 'vin': '492369',
+ 'hostSN': 81625,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 1
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496195',
+ 'vin': '492370',
+ 'hostSN': 81626,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 2
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496249',
+ 'vin': '492371',
+ 'hostSN': 81627,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 3
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2138196881',
+ 'vin': '492372',
+ 'hostSN': 81628,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 4
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496362',
+ 'vin': '492373',
+ 'hostSN': 81629,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 5
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496409',
+ 'vin': '492374',
+ 'hostSN': 81630,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 6
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496225',
+ 'vin': '492375',
+ 'hostSN': 81631,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 7
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496218',
+ 'vin': '492376',
+ 'hostSN': 81632,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 8
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496188',
+ 'vin': '492377',
+ 'hostSN': 81633,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 9
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496232',
+ 'vin': '492378',
+ 'hostSN': 81634,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 10
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496256',
+ 'vin': '492379',
+ 'hostSN': 81635,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 11
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496447',
+ 'vin': '492380',
+ 'hostSN': 81636,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 12
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496485',
+ 'vin': '492381',
+ 'hostSN': 81637,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 13
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496324',
+ 'vin': '492382',
+ 'hostSN': 81638,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 14
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496201',
+ 'vin': '492383',
+ 'hostSN': 81639,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 15
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2138196898',
+ 'vin': '492384',
+ 'hostSN': 81640,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 16
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496515',
+ 'vin': '492385',
+ 'hostSN': 81641,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 17
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496263',
+ 'vin': '492386',
+ 'hostSN': 81642,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 18
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496331',
+ 'vin': '492387',
+ 'hostSN': 81643,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 19
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2138196904',
+ 'vin': '492388',
+ 'hostSN': 81644,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 20
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496270',
+ 'vin': '492389',
+ 'hostSN': 81645,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 21
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496294',
+ 'vin': '492390',
+ 'hostSN': 81646,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 22
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496539',
+ 'vin': '492391',
+ 'hostSN': 81647,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 23
+ },
+ {
+ 'billNum': '10000001557',
+ 'knr': '2146496300',
+ 'vin': '492392',
+ 'hostSN': 81648,
+ 'partCode': '80D8672714PK',
+ 'partCode2': '80D8682034PK',
+ 'sn': 24
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496140',
+ 'vin': '492369',
+ 'hostSN': 81625,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 1
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496195',
+ 'vin': '492370',
+ 'hostSN': 81626,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 2
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496249',
+ 'vin': '492371',
+ 'hostSN': 81627,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 3
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2138196881',
+ 'vin': '492372',
+ 'hostSN': 81628,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 4
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496362',
+ 'vin': '492373',
+ 'hostSN': 81629,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 5
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496409',
+ 'vin': '492374',
+ 'hostSN': 81630,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 6
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496225',
+ 'vin': '492375',
+ 'hostSN': 81631,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 7
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496218',
+ 'vin': '492376',
+ 'hostSN': 81632,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 8
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496188',
+ 'vin': '492377',
+ 'hostSN': 81633,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 9
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496232',
+ 'vin': '492378',
+ 'hostSN': 81634,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 10
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496256',
+ 'vin': '492379',
+ 'hostSN': 81635,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 11
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496447',
+ 'vin': '492380',
+ 'hostSN': 81636,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 12
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496485',
+ 'vin': '492381',
+ 'hostSN': 81637,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 13
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496324',
+ 'vin': '492382',
+ 'hostSN': 81638,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 14
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496201',
+ 'vin': '492383',
+ 'hostSN': 81639,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 15
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2138196898',
+ 'vin': '492384',
+ 'hostSN': 81640,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 16
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496515',
+ 'vin': '492385',
+ 'hostSN': 81641,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 17
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496263',
+ 'vin': '492386',
+ 'hostSN': 81642,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 18
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496331',
+ 'vin': '492387',
+ 'hostSN': 81643,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 19
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2138196904',
+ 'vin': '492388',
+ 'hostSN': 81644,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 20
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496270',
+ 'vin': '492389',
+ 'hostSN': 81645,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 21
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496294',
+ 'vin': '492390',
+ 'hostSN': 81646,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 22
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496539',
+ 'vin': '492391',
+ 'hostSN': 81647,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 23
+ },
+ {
+ 'billNum': '10000001558',
+ 'knr': '2146496300',
+ 'vin': '492392',
+ 'hostSN': 81648,
+ 'partCode': '80D867272A4PK',
+ 'partCode2': '80D8682044PK',
+ 'sn': 24
+ }
+ ],
+ 'masterList_BS': [
+ {
+ 'id': '47bf942c-996d-f375-19c9-3a00f2e5194b',
+ 'billNum': '10000001559',
+ 'billSerialNum': '15',
+ 'billLocation': '左',
+ 'providerCode': '0709FAW-VW7XH',
+ 'partType': 'B柱上',
+ 'capacity': '24',
+ 'printDate': '2021-12-22 13:58:27',
+ 'printType': 0,
+ 'productLine': '08',
+ 'beginVin': 'LFV3B2FYXM3492369',
+ 'endVin': 'LFV3B2FY5M3492392',
+ 'details': null,
+ 'beginVin1': null,
+ 'endVin1': null
+ },
+ {
+ 'id': '92f65b60-fb00-5180-8327-3a00f2e51c25',
+ 'billNum': '10000001560',
+ 'billSerialNum': '15',
+ 'billLocation': '右',
+ 'providerCode': '0709FAW-VW7XH',
+ 'partType': 'B柱上',
+ 'capacity': '24',
+ 'printDate': '2021-12-22 13:58:27',
+ 'printType': 0,
+ 'productLine': '08',
+ 'beginVin': 'LFV3B2FYXM3492369',
+ 'endVin': 'LFV3B2FY5M3492392',
+ 'details': null,
+ 'beginVin1': null,
+ 'endVin1': null
+ }
+ ],
+ 'detailList_BS': [
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496140',
+ 'vin': '492369',
+ 'hostSN': 81625,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 1
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496195',
+ 'vin': '492370',
+ 'hostSN': 81626,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 2
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496249',
+ 'vin': '492371',
+ 'hostSN': 81627,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 3
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2138196881',
+ 'vin': '492372',
+ 'hostSN': 81628,
+ 'partCode': '80D867243AYW5',
+ 'partCode2': null,
+ 'sn': 4
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496362',
+ 'vin': '492373',
+ 'hostSN': 81629,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 5
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496409',
+ 'vin': '492374',
+ 'hostSN': 81630,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 6
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496225',
+ 'vin': '492375',
+ 'hostSN': 81631,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 7
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496218',
+ 'vin': '492376',
+ 'hostSN': 81632,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 8
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496188',
+ 'vin': '492377',
+ 'hostSN': 81633,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 9
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496232',
+ 'vin': '492378',
+ 'hostSN': 81634,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 10
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496256',
+ 'vin': '492379',
+ 'hostSN': 81635,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 11
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496447',
+ 'vin': '492380',
+ 'hostSN': 81636,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 12
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496485',
+ 'vin': '492381',
+ 'hostSN': 81637,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 13
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496324',
+ 'vin': '492382',
+ 'hostSN': 81638,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 14
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496201',
+ 'vin': '492383',
+ 'hostSN': 81639,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 15
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2138196898',
+ 'vin': '492384',
+ 'hostSN': 81640,
+ 'partCode': '80D867243AYW5',
+ 'partCode2': null,
+ 'sn': 16
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496515',
+ 'vin': '492385',
+ 'hostSN': 81641,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 17
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496263',
+ 'vin': '492386',
+ 'hostSN': 81642,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 18
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496331',
+ 'vin': '492387',
+ 'hostSN': 81643,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 19
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2138196904',
+ 'vin': '492388',
+ 'hostSN': 81644,
+ 'partCode': '80D867243AYW5',
+ 'partCode2': null,
+ 'sn': 20
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496270',
+ 'vin': '492389',
+ 'hostSN': 81645,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 21
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496294',
+ 'vin': '492390',
+ 'hostSN': 81646,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 22
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496539',
+ 'vin': '492391',
+ 'hostSN': 81647,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 23
+ },
+ {
+ 'billNum': '10000001559',
+ 'knr': '2146496300',
+ 'vin': '492392',
+ 'hostSN': 81648,
+ 'partCode': '80D867243A1OJ',
+ 'partCode2': null,
+ 'sn': 24
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496140',
+ 'vin': '492369',
+ 'hostSN': 81625,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 1
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496195',
+ 'vin': '492370',
+ 'hostSN': 81626,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 2
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496249',
+ 'vin': '492371',
+ 'hostSN': 81627,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 3
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2138196881',
+ 'vin': '492372',
+ 'hostSN': 81628,
+ 'partCode': '80D867244AYW5',
+ 'partCode2': null,
+ 'sn': 4
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496362',
+ 'vin': '492373',
+ 'hostSN': 81629,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 5
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496409',
+ 'vin': '492374',
+ 'hostSN': 81630,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 6
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496225',
+ 'vin': '492375',
+ 'hostSN': 81631,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 7
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496218',
+ 'vin': '492376',
+ 'hostSN': 81632,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 8
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496188',
+ 'vin': '492377',
+ 'hostSN': 81633,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 9
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496232',
+ 'vin': '492378',
+ 'hostSN': 81634,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 10
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496256',
+ 'vin': '492379',
+ 'hostSN': 81635,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 11
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496447',
+ 'vin': '492380',
+ 'hostSN': 81636,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 12
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496485',
+ 'vin': '492381',
+ 'hostSN': 81637,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 13
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496324',
+ 'vin': '492382',
+ 'hostSN': 81638,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 14
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496201',
+ 'vin': '492383',
+ 'hostSN': 81639,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 15
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2138196898',
+ 'vin': '492384',
+ 'hostSN': 81640,
+ 'partCode': '80D867244AYW5',
+ 'partCode2': null,
+ 'sn': 16
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496515',
+ 'vin': '492385',
+ 'hostSN': 81641,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 17
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496263',
+ 'vin': '492386',
+ 'hostSN': 81642,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 18
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496331',
+ 'vin': '492387',
+ 'hostSN': 81643,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 19
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2138196904',
+ 'vin': '492388',
+ 'hostSN': 81644,
+ 'partCode': '80D867244AYW5',
+ 'partCode2': null,
+ 'sn': 20
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496270',
+ 'vin': '492389',
+ 'hostSN': 81645,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 21
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496294',
+ 'vin': '492390',
+ 'hostSN': 81646,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 22
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496539',
+ 'vin': '492391',
+ 'hostSN': 81647,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 23
+ },
+ {
+ 'billNum': '10000001560',
+ 'knr': '2146496300',
+ 'vin': '492392',
+ 'hostSN': 81648,
+ 'partCode': '80D867244A1OJ',
+ 'partCode2': null,
+ 'sn': 24
+ }
+ ],
+ 'masterList_BX': [
+ {
+ 'id': '413b80c2-8a2b-75d7-14d4-3a00f2e51eab',
+ 'billNum': '10000001561',
+ 'billSerialNum': '15',
+ 'billLocation': '左',
+ 'providerCode': '0709FAW-VW7XH',
+ 'partType': 'B柱下',
+ 'capacity': '24',
+ 'printDate': '2021-12-22 13:58:27',
+ 'printType': 0,
+ 'productLine': '08',
+ 'beginVin': 'LFV3B2FYXM3492369',
+ 'endVin': 'LFV3B2FY5M3492392',
+ 'details': null,
+ 'beginVin1': null,
+ 'endVin1': null
+ },
+ {
+ 'id': '312f189b-ea33-8130-cb92-3a00f2e52146',
+ 'billNum': '10000001562',
+ 'billSerialNum': '15',
+ 'billLocation': '右',
+ 'providerCode': '0709FAW-VW7XH',
+ 'partType': 'B柱下',
+ 'capacity': '24',
+ 'printDate': '2021-12-22 13:58:27',
+ 'printType': 0,
+ 'productLine': '08',
+ 'beginVin': 'LFV3B2FYXM3492369',
+ 'endVin': 'LFV3B2FY5M3492392',
+ 'details': null,
+ 'beginVin1': null,
+ 'endVin1': null
+ }
+ ],
+ 'detailList_BX': [
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496140',
+ 'vin': '492369',
+ 'hostSN': 81625,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 1
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496195',
+ 'vin': '492370',
+ 'hostSN': 81626,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 2
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496249',
+ 'vin': '492371',
+ 'hostSN': 81627,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 3
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2138196881',
+ 'vin': '492372',
+ 'hostSN': 81628,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 4
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496362',
+ 'vin': '492373',
+ 'hostSN': 81629,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 5
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496409',
+ 'vin': '492374',
+ 'hostSN': 81630,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 6
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496225',
+ 'vin': '492375',
+ 'hostSN': 81631,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 7
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496218',
+ 'vin': '492376',
+ 'hostSN': 81632,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 8
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496188',
+ 'vin': '492377',
+ 'hostSN': 81633,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 9
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496232',
+ 'vin': '492378',
+ 'hostSN': 81634,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 10
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496256',
+ 'vin': '492379',
+ 'hostSN': 81635,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 11
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496447',
+ 'vin': '492380',
+ 'hostSN': 81636,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 12
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496485',
+ 'vin': '492381',
+ 'hostSN': 81637,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 13
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496324',
+ 'vin': '492382',
+ 'hostSN': 81638,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 14
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496201',
+ 'vin': '492383',
+ 'hostSN': 81639,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 15
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2138196898',
+ 'vin': '492384',
+ 'hostSN': 81640,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 16
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496515',
+ 'vin': '492385',
+ 'hostSN': 81641,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 17
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496263',
+ 'vin': '492386',
+ 'hostSN': 81642,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 18
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496331',
+ 'vin': '492387',
+ 'hostSN': 81643,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 19
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2138196904',
+ 'vin': '492388',
+ 'hostSN': 81644,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 20
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496270',
+ 'vin': '492389',
+ 'hostSN': 81645,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 21
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496294',
+ 'vin': '492390',
+ 'hostSN': 81646,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 22
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496539',
+ 'vin': '492391',
+ 'hostSN': 81647,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 23
+ },
+ {
+ 'billNum': '10000001561',
+ 'knr': '2146496300',
+ 'vin': '492392',
+ 'hostSN': 81648,
+ 'partCode': '80D8672394PK',
+ 'partCode2': null,
+ 'sn': 24
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496140',
+ 'vin': '492369',
+ 'hostSN': 81625,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 1
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496195',
+ 'vin': '492370',
+ 'hostSN': 81626,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 2
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496249',
+ 'vin': '492371',
+ 'hostSN': 81627,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 3
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2138196881',
+ 'vin': '492372',
+ 'hostSN': 81628,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 4
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496362',
+ 'vin': '492373',
+ 'hostSN': 81629,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 5
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496409',
+ 'vin': '492374',
+ 'hostSN': 81630,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 6
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496225',
+ 'vin': '492375',
+ 'hostSN': 81631,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 7
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496218',
+ 'vin': '492376',
+ 'hostSN': 81632,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 8
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496188',
+ 'vin': '492377',
+ 'hostSN': 81633,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 9
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496232',
+ 'vin': '492378',
+ 'hostSN': 81634,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 10
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496256',
+ 'vin': '492379',
+ 'hostSN': 81635,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 11
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496447',
+ 'vin': '492380',
+ 'hostSN': 81636,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 12
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496485',
+ 'vin': '492381',
+ 'hostSN': 81637,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 13
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496324',
+ 'vin': '492382',
+ 'hostSN': 81638,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 14
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496201',
+ 'vin': '492383',
+ 'hostSN': 81639,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 15
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2138196898',
+ 'vin': '492384',
+ 'hostSN': 81640,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 16
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496515',
+ 'vin': '492385',
+ 'hostSN': 81641,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 17
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496263',
+ 'vin': '492386',
+ 'hostSN': 81642,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 18
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496331',
+ 'vin': '492387',
+ 'hostSN': 81643,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 19
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2138196904',
+ 'vin': '492388',
+ 'hostSN': 81644,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 20
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496270',
+ 'vin': '492389',
+ 'hostSN': 81645,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 21
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496294',
+ 'vin': '492390',
+ 'hostSN': 81646,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 22
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496539',
+ 'vin': '492391',
+ 'hostSN': 81647,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 23
+ },
+ {
+ 'billNum': '10000001562',
+ 'knr': '2146496300',
+ 'vin': '492392',
+ 'hostSN': 81648,
+ 'partCode': '80D8672404PK',
+ 'partCode2': null,
+ 'sn': 24
+ }
+ ],
+ 'masterList_D': [
+ {
+ 'id': '39223934-04a8-ec08-91e2-3a00f2e5238c',
+ 'billNum': '10000001563',
+ 'billSerialNum': '29',
+ 'billLocation': null,
+ 'providerCode': '0709FAW-VW7XH',
+ 'partType': 'D柱',
+ 'capacity': '12',
+ 'printDate': '2021-12-22 13:58:27',
+ 'printType': 0,
+ 'productLine': '08',
+ 'beginVin': 'LFV3B2FYXM3492369',
+ 'endVin': 'LFV3B2FY9M3492380',
+ 'details': null,
+ 'beginVin1': null,
+ 'endVin1': null
+ },
+ {
+ 'id': '9a745ce7-a03f-090d-bc61-3a00f2e52630',
+ 'billNum': '10000001564',
+ 'billSerialNum': '30',
+ 'billLocation': null,
+ 'providerCode': '0709FAW-VW7XH',
+ 'partType': 'D柱',
+ 'capacity': '12',
+ 'printDate': '2021-12-22 13:58:27',
+ 'printType': 0,
+ 'productLine': '08',
+ 'beginVin': 'LFV3B2FY0M3492381',
+ 'endVin': 'LFV3B2FY5M3492392',
+ 'details': null,
+ 'beginVin1': null,
+ 'endVin1': null
+ }
+ ],
+ 'detailList_D': [
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496140',
+ 'vin': '492369',
+ 'hostSN': 81625,
+ 'partCode': '80D867245ADT4',
+ 'partCode2': null,
+ 'sn': 1
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496140',
+ 'vin': '492369',
+ 'hostSN': 81625,
+ 'partCode': '80D867246ADT4',
+ 'partCode2': null,
+ 'sn': 2
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496195',
+ 'vin': '492370',
+ 'hostSN': 81626,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 3
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496195',
+ 'vin': '492370',
+ 'hostSN': 81626,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 4
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496249',
+ 'vin': '492371',
+ 'hostSN': 81627,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 5
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496249',
+ 'vin': '492371',
+ 'hostSN': 81627,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 6
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2138196881',
+ 'vin': '492372',
+ 'hostSN': 81628,
+ 'partCode': '80G8672454PK',
+ 'partCode2': null,
+ 'sn': 7
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2138196881',
+ 'vin': '492372',
+ 'hostSN': 81628,
+ 'partCode': '80G8672464PK',
+ 'partCode2': null,
+ 'sn': 8
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496362',
+ 'vin': '492373',
+ 'hostSN': 81629,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 9
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496362',
+ 'vin': '492373',
+ 'hostSN': 81629,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 10
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496409',
+ 'vin': '492374',
+ 'hostSN': 81630,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 11
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496409',
+ 'vin': '492374',
+ 'hostSN': 81630,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 12
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496225',
+ 'vin': '492375',
+ 'hostSN': 81631,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 13
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496225',
+ 'vin': '492375',
+ 'hostSN': 81631,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 14
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496218',
+ 'vin': '492376',
+ 'hostSN': 81632,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 15
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496218',
+ 'vin': '492376',
+ 'hostSN': 81632,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 16
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496188',
+ 'vin': '492377',
+ 'hostSN': 81633,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 17
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496188',
+ 'vin': '492377',
+ 'hostSN': 81633,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 18
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496232',
+ 'vin': '492378',
+ 'hostSN': 81634,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 19
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496232',
+ 'vin': '492378',
+ 'hostSN': 81634,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 20
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496256',
+ 'vin': '492379',
+ 'hostSN': 81635,
+ 'partCode': '80D867245ADT4',
+ 'partCode2': null,
+ 'sn': 21
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496256',
+ 'vin': '492379',
+ 'hostSN': 81635,
+ 'partCode': '80D867246ADT4',
+ 'partCode2': null,
+ 'sn': 22
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496447',
+ 'vin': '492380',
+ 'hostSN': 81636,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 23
+ },
+ {
+ 'billNum': '10000001563',
+ 'knr': '2146496447',
+ 'vin': '492380',
+ 'hostSN': 81636,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 24
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496485',
+ 'vin': '492381',
+ 'hostSN': 81637,
+ 'partCode': '80D867245ADT4',
+ 'partCode2': null,
+ 'sn': 1
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496485',
+ 'vin': '492381',
+ 'hostSN': 81637,
+ 'partCode': '80D867246ADT4',
+ 'partCode2': null,
+ 'sn': 2
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496324',
+ 'vin': '492382',
+ 'hostSN': 81638,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 3
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496324',
+ 'vin': '492382',
+ 'hostSN': 81638,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 4
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496201',
+ 'vin': '492383',
+ 'hostSN': 81639,
+ 'partCode': '80D867245ADT4',
+ 'partCode2': null,
+ 'sn': 5
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496201',
+ 'vin': '492383',
+ 'hostSN': 81639,
+ 'partCode': '80D867246ADT4',
+ 'partCode2': null,
+ 'sn': 6
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2138196898',
+ 'vin': '492384',
+ 'hostSN': 81640,
+ 'partCode': '80G8672454PK',
+ 'partCode2': null,
+ 'sn': 7
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2138196898',
+ 'vin': '492384',
+ 'hostSN': 81640,
+ 'partCode': '80G8672464PK',
+ 'partCode2': null,
+ 'sn': 8
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496515',
+ 'vin': '492385',
+ 'hostSN': 81641,
+ 'partCode': '80D867245ADT4',
+ 'partCode2': null,
+ 'sn': 9
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496515',
+ 'vin': '492385',
+ 'hostSN': 81641,
+ 'partCode': '80D867246ADT4',
+ 'partCode2': null,
+ 'sn': 10
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496263',
+ 'vin': '492386',
+ 'hostSN': 81642,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 11
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496263',
+ 'vin': '492386',
+ 'hostSN': 81642,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 12
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496331',
+ 'vin': '492387',
+ 'hostSN': 81643,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 13
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496331',
+ 'vin': '492387',
+ 'hostSN': 81643,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 14
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2138196904',
+ 'vin': '492388',
+ 'hostSN': 81644,
+ 'partCode': '80G8672454PK',
+ 'partCode2': null,
+ 'sn': 15
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2138196904',
+ 'vin': '492388',
+ 'hostSN': 81644,
+ 'partCode': '80G8672464PK',
+ 'partCode2': null,
+ 'sn': 16
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496270',
+ 'vin': '492389',
+ 'hostSN': 81645,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 17
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496270',
+ 'vin': '492389',
+ 'hostSN': 81645,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 18
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496294',
+ 'vin': '492390',
+ 'hostSN': 81646,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 19
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496294',
+ 'vin': '492390',
+ 'hostSN': 81646,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 20
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496539',
+ 'vin': '492391',
+ 'hostSN': 81647,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 21
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496539',
+ 'vin': '492391',
+ 'hostSN': 81647,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 22
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496300',
+ 'vin': '492392',
+ 'hostSN': 81648,
+ 'partCode': '80D867245DT4',
+ 'partCode2': null,
+ 'sn': 23
+ },
+ {
+ 'billNum': '10000001564',
+ 'knr': '2146496300',
+ 'vin': '492392',
+ 'hostSN': 81648,
+ 'partCode': '80D867246DT4',
+ 'partCode2': null,
+ 'sn': 24
+ }
+ ],
+ 'masterList_HL': [
+ {
+ 'id': '292d2b2d-e32d-e53b-0ebd-3a00f2e52890',
+ 'billNum': '10000001565',
+ 'billSerialNum': '15',
+ 'billLocation': '左',
+ 'providerCode': '0709FAW-VW7XH',
+ 'partType': '后轮上装饰板',
+ 'capacity': '24',
+ 'printDate': '2021-12-22 13:58:27',
+ 'printType': 0,
+ 'productLine': '08',
+ 'beginVin': 'LFV3B2FYXM3492369',
+ 'endVin': 'LFV3B2FY5M3492392',
+ 'details': null,
+ 'beginVin1': null,
+ 'endVin1': null
+ },
+ {
+ 'id': '430819cc-ccb8-dab0-d878-3a00f2e52e45',
+ 'billNum': '10000001566',
+ 'billSerialNum': '15',
+ 'billLocation': '右',
+ 'providerCode': '0709FAW-VW7XH',
+ 'partType': '后轮上装饰板',
+ 'capacity': '24',
+ 'printDate': '2021-12-22 13:58:27',
+ 'printType': 0,
+ 'productLine': '08',
+ 'beginVin': 'LFV3B2FYXM3492369',
+ 'endVin': 'LFV3B2FY5M3492392',
+ 'details': null,
+ 'beginVin1': null,
+ 'endVin1': null
+ }
+ ],
+ 'detailList_HL': [
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496140',
+ 'vin': '492369',
+ 'hostSN': 81625,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 1
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496195',
+ 'vin': '492370',
+ 'hostSN': 81626,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 2
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496249',
+ 'vin': '492371',
+ 'hostSN': 81627,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 3
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2138196881',
+ 'vin': '492372',
+ 'hostSN': 81628,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 4
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496362',
+ 'vin': '492373',
+ 'hostSN': 81629,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 5
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496409',
+ 'vin': '492374',
+ 'hostSN': 81630,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 6
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496225',
+ 'vin': '492375',
+ 'hostSN': 81631,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 7
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496218',
+ 'vin': '492376',
+ 'hostSN': 81632,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 8
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496188',
+ 'vin': '492377',
+ 'hostSN': 81633,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 9
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496232',
+ 'vin': '492378',
+ 'hostSN': 81634,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 10
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496256',
+ 'vin': '492379',
+ 'hostSN': 81635,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 11
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496447',
+ 'vin': '492380',
+ 'hostSN': 81636,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 12
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496485',
+ 'vin': '492381',
+ 'hostSN': 81637,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 13
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496324',
+ 'vin': '492382',
+ 'hostSN': 81638,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 14
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496201',
+ 'vin': '492383',
+ 'hostSN': 81639,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 15
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2138196898',
+ 'vin': '492384',
+ 'hostSN': 81640,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 16
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496515',
+ 'vin': '492385',
+ 'hostSN': 81641,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 17
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496263',
+ 'vin': '492386',
+ 'hostSN': 81642,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 18
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496331',
+ 'vin': '492387',
+ 'hostSN': 81643,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 19
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2138196904',
+ 'vin': '492388',
+ 'hostSN': 81644,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 20
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496270',
+ 'vin': '492389',
+ 'hostSN': 81645,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 21
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496294',
+ 'vin': '492390',
+ 'hostSN': 81646,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 22
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496539',
+ 'vin': '492391',
+ 'hostSN': 81647,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 23
+ },
+ {
+ 'billNum': '10000001565',
+ 'knr': '2146496300',
+ 'vin': '492392',
+ 'hostSN': 81648,
+ 'partCode': '80D8677674PK',
+ 'partCode2': '80D8677674PK',
+ 'sn': 24
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496140',
+ 'vin': '492369',
+ 'hostSN': 81625,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 1
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496195',
+ 'vin': '492370',
+ 'hostSN': 81626,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 2
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496249',
+ 'vin': '492371',
+ 'hostSN': 81627,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 3
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2138196881',
+ 'vin': '492372',
+ 'hostSN': 81628,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 4
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496362',
+ 'vin': '492373',
+ 'hostSN': 81629,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 5
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496409',
+ 'vin': '492374',
+ 'hostSN': 81630,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 6
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496225',
+ 'vin': '492375',
+ 'hostSN': 81631,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 7
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496218',
+ 'vin': '492376',
+ 'hostSN': 81632,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 8
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496188',
+ 'vin': '492377',
+ 'hostSN': 81633,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 9
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496232',
+ 'vin': '492378',
+ 'hostSN': 81634,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 10
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496256',
+ 'vin': '492379',
+ 'hostSN': 81635,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 11
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496447',
+ 'vin': '492380',
+ 'hostSN': 81636,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 12
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496485',
+ 'vin': '492381',
+ 'hostSN': 81637,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 13
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496324',
+ 'vin': '492382',
+ 'hostSN': 81638,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 14
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496201',
+ 'vin': '492383',
+ 'hostSN': 81639,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 15
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2138196898',
+ 'vin': '492384',
+ 'hostSN': 81640,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 16
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496515',
+ 'vin': '492385',
+ 'hostSN': 81641,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 17
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496263',
+ 'vin': '492386',
+ 'hostSN': 81642,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 18
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496331',
+ 'vin': '492387',
+ 'hostSN': 81643,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 19
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2138196904',
+ 'vin': '492388',
+ 'hostSN': 81644,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 20
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496270',
+ 'vin': '492389',
+ 'hostSN': 81645,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 21
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496294',
+ 'vin': '492390',
+ 'hostSN': 81646,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 22
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496539',
+ 'vin': '492391',
+ 'hostSN': 81647,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 23
+ },
+ {
+ 'billNum': '10000001566',
+ 'knr': '2146496300',
+ 'vin': '492392',
+ 'hostSN': 81648,
+ 'partCode': '80D8677684PK',
+ 'partCode2': '80D8677684PK',
+ 'sn': 24
+ }
+ ]
+ },
+ 'status': true,
+ 'message': ''
+}
+";
+ */
+ /*
+ public const string MenBanVal = @"
+{
+ 'masterList': [
+ {
+ 'billNum': ' 10000000138',
+ 'billSerialNum': '03',
+ 'billLocation': '左',
+ 'providerCode': '0709FAW-VW7XH',
+ 'partType': 'C8 DP',
+ 'capacity': '12',
+ 'printDate': '2021-12-01 16:10:26',
+ 'printType': 0,
+ 'productLine': '01',
+ 'beginVin': 'LFV2A24K0M3303466',
+ 'endVin': 'LFV2A24K0M3303595',
+ 'details': null
+ },
+ {
+ 'billNum': ' 10000000139',
+ 'billSerialNum': '03',
+ 'billLocation': '右',
+ 'providerCode': '0709FAW-VW7XH',
+ 'partType': 'C8 DP',
+ 'capacity': '12',
+ 'printDate': '2021-12-01 16:10:26',
+ 'printType': 0,
+ 'productLine': '01',
+ 'beginVin': 'LFV2A24K0M3303466',
+ 'endVin': 'LFV2A24K0M3303595',
+ 'details': null
+ }
+ ],
+ 'detailList': [
+ {
+ 'billNum': ' 10000000138',
+ 'knr': ' 21301504611001',
+ 'vin': 'LFV2A24K0M3303466',
+ 'hostSN': 1,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '01',
+ 'topSAPMaterialNum': '30052525',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-左后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052524',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-右前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 1
+ },
+ {
+ 'billNum': ' 10000000138',
+ 'knr': ' 21301503931001',
+ 'vin': 'LFV2A24K0M3303483',
+ 'hostSN': 2,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '02',
+ 'topSAPMaterialNum': '30052525',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-左后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052524',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-右前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 2
+ },
+ {
+ 'billNum': ' 10000000138',
+ 'knr': ' 21301505841001',
+ 'vin': 'LFV2A24K0M3303497',
+ 'hostSN': 3,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '03',
+ 'topSAPMaterialNum': '30052525',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-左后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052524',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-右前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 3
+ },
+ {
+ 'billNum': ' 10000000138',
+ 'knr': ' 21301505461001',
+ 'vin': 'LFV2A24K0M3303502',
+ 'hostSN': 4,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '04',
+ 'topSAPMaterialNum': '30052525',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-左后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052524',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-右前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 4
+ },
+ {
+ 'billNum': ' 10000000138',
+ 'knr': ' 21301507371001',
+ 'vin': 'LFV2A24K0M3303516',
+ 'hostSN': 5,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '05',
+ 'topSAPMaterialNum': '30052525',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-左后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052524',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-右前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 5
+ },
+ {
+ 'billNum': ' 10000000138',
+ 'knr': ' 21301508811001',
+ 'vin': 'LFV2A24K0M3303533',
+ 'hostSN': 6,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '06',
+ 'topSAPMaterialNum': '30052525',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-左后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052524',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-右前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 6
+ },
+ {
+ 'billNum': ' 10000000138',
+ 'knr': ' 21301510311001',
+ 'vin': 'LFV2A24K0M3303547',
+ 'hostSN': 7,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '07',
+ 'topSAPMaterialNum': '30052525',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-左后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052524',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-右前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 7
+ },
+ {
+ 'billNum': ' 10000000138',
+ 'knr': ' 21301510621001',
+ 'vin': 'LFV2A24K0M3303550',
+ 'hostSN': 8,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '08',
+ 'topSAPMaterialNum': '30052525',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-左后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052524',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-右前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 8
+ },
+ {
+ 'billNum': ' 10000000138',
+ 'knr': ' 21311500261001',
+ 'vin': 'LFV2A24K0M3303564',
+ 'hostSN': 9,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '09',
+ 'topSAPMaterialNum': '30052525',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-左后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052524',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-右前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 9
+ },
+ {
+ 'billNum': ' 10000000138',
+ 'knr': ' 21301513451001',
+ 'vin': 'LFV2A24K0M3303578',
+ 'hostSN': 10,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '10',
+ 'topSAPMaterialNum': '30052525',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-左后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052524',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-右前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 10
+ },
+ {
+ 'billNum': ' 10000000138',
+ 'knr': ' 21301513761001',
+ 'vin': 'LFV2A24K0M3303581',
+ 'hostSN': 11,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '11',
+ 'topSAPMaterialNum': '30052525',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-左后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052524',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-右前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 11
+ },
+ {
+ 'billNum': ' 10000000138',
+ 'knr': ' 21311500881001',
+ 'vin': 'LFV2A24K0M3303595',
+ 'hostSN': 12,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '12',
+ 'topSAPMaterialNum': '30052525',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-左后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052524',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-右前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 12
+ },
+ {
+ 'billNum': ' 10000000139',
+ 'knr': ' 21301504611001',
+ 'vin': 'LFV2A24K0M3303466',
+ 'hostSN': 1,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '01',
+ 'topSAPMaterialNum': '30052526',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-右后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052523',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-左前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 1
+ },
+ {
+ 'billNum': ' 10000000139',
+ 'knr': ' 21301503931001',
+ 'vin': 'LFV2A24K0M3303483',
+ 'hostSN': 2,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '02',
+ 'topSAPMaterialNum': '30052526',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-右后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052523',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-左前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 2
+ },
+ {
+ 'billNum': ' 10000000139',
+ 'knr': ' 21301505841001',
+ 'vin': 'LFV2A24K0M3303497',
+ 'hostSN': 3,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '03',
+ 'topSAPMaterialNum': '30052526',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-右后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052523',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-左前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 3
+ },
+ {
+ 'billNum': ' 10000000139',
+ 'knr': ' 21301505461001',
+ 'vin': 'LFV2A24K0M3303502',
+ 'hostSN': 4,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '04',
+ 'topSAPMaterialNum': '30052526',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-右后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052523',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-左前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 4
+ },
+ {
+ 'billNum': ' 10000000139',
+ 'knr': ' 21301507371001',
+ 'vin': 'LFV2A24K0M3303516',
+ 'hostSN': 5,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '05',
+ 'topSAPMaterialNum': '30052526',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-右后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052523',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-左前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 5
+ },
+ {
+ 'billNum': ' 10000000139',
+ 'knr': ' 21301508811001',
+ 'vin': 'LFV2A24K0M3303533',
+ 'hostSN': 6,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '06',
+ 'topSAPMaterialNum': '30052526',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-右后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052523',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-左前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 6
+ },
+ {
+ 'billNum': ' 10000000139',
+ 'knr': ' 21301510311001',
+ 'vin': 'LFV2A24K0M3303547',
+ 'hostSN': 7,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '07',
+ 'topSAPMaterialNum': '30052526',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-右后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052523',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-左前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 7
+ },
+ {
+ 'billNum': ' 10000000139',
+ 'knr': ' 21301510621001',
+ 'vin': 'LFV2A24K0M3303550',
+ 'hostSN': 8,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '08',
+ 'topSAPMaterialNum': '30052526',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-右后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052523',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-左前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 8
+ },
+ {
+ 'billNum': ' 10000000139',
+ 'knr': ' 21311500261001',
+ 'vin': 'LFV2A24K0M3303564',
+ 'hostSN': 9,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '09',
+ 'topSAPMaterialNum': '30052526',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-右后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052523',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-左前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 9
+ },
+ {
+ 'billNum': ' 10000000139',
+ 'knr': ' 21301513451001',
+ 'vin': 'LFV2A24K0M3303578',
+ 'hostSN': 10,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '10',
+ 'topSAPMaterialNum': '30052526',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-右后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052523',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-左前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 10
+ },
+ {
+ 'billNum': ' 10000000139',
+ 'knr': ' 21301513761001',
+ 'vin': 'LFV2A24K0M3303581',
+ 'hostSN': 11,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '11',
+ 'topSAPMaterialNum': '30052526',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-右后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052523',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-左前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 11
+ },
+ {
+ 'billNum': ' 10000000139',
+ 'knr': ' 21311500881001',
+ 'vin': 'LFV2A24K0M3303595',
+ 'hostSN': 12,
+ 'vehicleModel_DoorPlankCode': 'PHEFZ_N5W_7HB_7Y0_3Y0 9VD GS0 0K3 3L5 QQ2 3FU4V020',
+ 'topBoxPositionNum': '12',
+ 'topSAPMaterialNum': '30052526',
+ 'topMaterialDescription': 'C8-PHEV.黑4024-右后 FZ(黑PVC多孔低扬无电镀)',
+ 'belowSAPMaterialNum': '30052523',
+ 'belowMaterialDescription': 'C8-PHEV.黑4024-左前 FZ(黑PVC多孔低扬无电镀)',
+ 'sn': 12
+ }
+ ]
+ }
+";
+ */
+
+ public const string MenBanVal = @"
+ {
+ 'id': '1f9e60c5-6754-6c9b-fce3-3a1b902dd6d7',
+ 'billNum': '20250806001703',
+ 'billSerialNum': '001',
+ 'vehicleModel': 'Q5',
+ 'vehicleModel_Disp': 'Q5NF',
+ 'providerCode': null,
+ 'partType': '703',
+ 'capacity': null,
+ 'printDate': '2025-08-06 14:15:17',
+ 'printType': 0,
+ 'productLine': '02',
+ 'beginVin': 'LFV3B2FY5S3474908',
+ 'endVin': 'LFV3B2FYXS3474919',
+ 'beginVin1': null,
+ 'endVin1': null,
+
+ 'reportStatus': 2,
+ 'beginHostSN': '80005',
+ 'endHostSN': '80016'
+
+
+ 'details': [
+ {
+ 'm100BillId': '23d30ecf-f4c9-d048-f2d3-3a1b4311313d',
+ 'billNum': '20250806001703',
+ 'knr': '2526191911',
+ 'vin': '474908',
+ 'hostSN': '80005',
+ 'partCode1': '80D885703AHVE4',
+ 'partCode2': null,
+ 'partCode3': null,
+ 'partCode4': null,
+ 'partCode5': null,
+ 'sn': '1',
+ 'scanPartCode': '1571151',
+ 'remark': null
+ },
+ {
+ 'm100BillId': '5f755549-cbb1-7cf2-fe4f-3a1b43113d39',
+ 'billNum': '20250806001703',
+ 'knr': '2525195118',
+ 'vin': '474909',
+ 'hostSN': '80006',
+ 'partCode1': '80D885703AHVE4',
+ 'partCode2': null,
+ 'partCode3': null,
+ 'partCode4': null,
+ 'partCode5': null,
+ 'sn': '2',
+ 'scanPartCode': '1571151',
+ 'remark': null
+ },
+ {
+ 'm100BillId': 'ebced6f7-b982-5b76-91ec-3a1b43114197',
+ 'billNum': '20250806001703',
+ 'knr': '2526192154',
+ 'vin': '474910',
+ 'hostSN': '80007',
+ 'partCode1': '80D885703AH6PS',
+ 'partCode2': null,
+ 'partCode3': null,
+ 'partCode4': null,
+ 'partCode5': null,
+ 'sn': '3',
+ 'scanPartCode': '1571149',
+ 'remark': null
+ },
+ {
+ 'm100BillId': '87999866-d64c-da6a-ad7e-3a1b4311513f',
+ 'billNum': '20250806001703',
+ 'knr': '2525290639',
+ 'vin': '474911',
+ 'hostSN': '80008',
+ 'partCode1': '80D885703AH6PS',
+ 'partCode2': null,
+ 'partCode3': null,
+ 'partCode4': null,
+ 'partCode5': null,
+ 'sn': '4',
+ 'scanPartCode': '1571149',
+ 'remark': null
+ },
+ {
+ 'm100BillId': '3f14f9ea-257b-c554-a3e8-3a1b4311544f',
+ 'billNum': '20250806001703',
+ 'knr': '2526191966',
+ 'vin': '474912',
+ 'hostSN': '80009',
+ 'partCode1': '80D885703AHVE4',
+ 'partCode2': null,
+ 'partCode3': null,
+ 'partCode4': null,
+ 'partCode5': null,
+ 'sn': '5',
+ 'scanPartCode': '1571151',
+ 'remark': null
+ },
+ {
+ 'm100BillId': '9250eecd-7772-aa05-edd7-3a1b4311653d',
+ 'billNum': '20250806001703',
+ 'knr': '2525290738',
+ 'vin': '474913',
+ 'hostSN': '80010',
+ 'partCode1': '80D885703AH6PS',
+ 'partCode2': null,
+ 'partCode3': null,
+ 'partCode4': null,
+ 'partCode5': null,
+ 'sn': '6',
+ 'scanPartCode': '1571149',
+ 'remark': null
+ },
+ {
+ 'm100BillId': '2cc334c9-2244-b4b9-7173-3a1b43116f36',
+ 'billNum': '20250806001703',
+ 'knr': '2526192079',
+ 'vin': '474914',
+ 'hostSN': '80011',
+ 'partCode1': '80D885703AH6PS',
+ 'partCode2': null,
+ 'partCode3': null,
+ 'partCode4': null,
+ 'partCode5': null,
+ 'sn': '7',
+ 'scanPartCode': '1571149',
+ 'remark': null
+ },
+ {
+ 'm100BillId': '7a24ff24-a032-d83d-be1b-3a1b43117715',
+ 'billNum': '20250806001703',
+ 'knr': '2525291025',
+ 'vin': '474915',
+ 'hostSN': '80012',
+ 'partCode1': '80D885703AH6PS',
+ 'partCode2': null,
+ 'partCode3': null,
+ 'partCode4': null,
+ 'partCode5': null,
+ 'sn': '8',
+ 'scanPartCode': '1571149',
+ 'remark': null
+ },
+ {
+ 'm100BillId': '323d4050-e018-7a34-a87d-3a1b43118134',
+ 'billNum': '20250806001703',
+ 'knr': '2525290837',
+ 'vin': '474916',
+ 'hostSN': '80013',
+ 'partCode1': '80D885703AH6PS',
+ 'partCode2': null,
+ 'partCode3': null,
+ 'partCode4': null,
+ 'partCode5': null,
+ 'sn': '9',
+ 'scanPartCode': '1571149',
+ 'remark': null
+ },
+ {
+ 'm100BillId': '4f5acff7-e891-f249-2045-3a1b43118c1e',
+ 'billNum': '20250806001703',
+ 'knr': '2526192437',
+ 'vin': '474917',
+ 'hostSN': '80014',
+ 'partCode1': '80D885703AH6PS',
+ 'partCode2': null,
+ 'partCode3': null,
+ 'partCode4': null,
+ 'partCode5': null,
+ 'sn': '10',
+ 'scanPartCode': '1571149',
+ 'remark': null
+ },
+ {
+ 'm100BillId': '45156e53-5fd7-30dc-d1af-3a1b43118e00',
+ 'billNum': '20250806001703',
+ 'knr': '2526192048',
+ 'vin': '474918',
+ 'hostSN': '80015',
+ 'partCode1': '80D885703AH6PS',
+ 'partCode2': null,
+ 'partCode3': null,
+ 'partCode4': null,
+ 'partCode5': null,
+ 'sn': '11',
+ 'scanPartCode': '1571149',
+ 'remark': null
+ },
+ {
+ 'm100BillId': '41cc40a8-6dae-e638-5b4e-3a1b431195ee',
+ 'billNum': '20250806001703',
+ 'knr': '2525290868',
+ 'vin': '474919',
+ 'hostSN': '80016',
+ 'partCode1': '80D885703AH6PS',
+ 'partCode2': null,
+ 'partCode3': null,
+ 'partCode4': null,
+ 'partCode5': null,
+ 'sn': '12',
+ 'scanPartCode': '1571149',
+ 'remark': null
+ }
+ ],
+
+ }
+";
+ }
+}
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/appcode/ReportGenerator.cs b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/appcode/ReportGenerator.cs
new file mode 100644
index 0000000..2ae6cd1
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/appcode/ReportGenerator.cs
@@ -0,0 +1,202 @@
+using System;
+using System.Web;
+using grsvr6Lib;
+
+namespace GridReport
+{
+ public class ReportGenerator
+ {
+ protected HttpContext context = null;
+
+ public GridppReportServer report = new GridppReportServer();
+
+
+
+ public ReportGenerator(HttpContext context)
+ {
+ this.context = context;
+ }
+
+ //根据HTTP请求中的 report 参数加载报表模板
+ public void LoadReport()
+ {
+ string reportID = context.Request.QueryString["report"];
+
+ if (reportID == null || reportID.Length == 0)
+ throw new Exception("没有在URL参数中指定\"report\"参数!");
+
+ //载入报表模板。模板路径获取应该按实际情况进行调整
+ string reportPathFile = context.Server.MapPath("../grf/") + reportID + ".grf"; //根据当前页进行相对寻址
+ //string reportPathFile = context.Server.MapPath("/grf/") + reportID + ".grf"; //根据WEB服务器根目录寻址
+ LoadReportEx(reportPathFile);
+ }
+
+ ///
+ /// 导入子报表【适用于柱护板报表】
+ ///
+ /// 不含文件扩展名的文件名称
+ ///
+ public GridppReportServer LoadChildReport(string fileShortName)
+ {
+ string reportPathFile = context.Server.MapPath("../grf/") + fileShortName + ".grf"; //根据当前页进行相对寻址
+ bool success = report.LoadFromFile(reportPathFile);
+ if (!success)
+ throw new Exception(string.Format("载入 子 报表模板 '{0}' 失败!", reportPathFile));
+ return report;
+ }
+
+ //根据路径文件名加载报表模板,参数为当前网页的相对文件路径名
+ public void LoadReport(string relativePathFile)
+ {
+ string reportPathFile = context.Server.MapPath(relativePathFile);
+ LoadReportEx(reportPathFile);
+ }
+
+ //根据完整的路径文件名加载报表模板
+ public void LoadReportEx(string fullPathFile)
+ {
+ bool success = report.LoadFromFile(fullPathFile);
+ if (!success)
+ throw new Exception(string.Format("载入报表模板 '{0}' 失败!", fullPathFile));
+
+ //如果要禁止用拉模式获取报表数据,需要将报表模板中的数据连接串置空
+ //如果确实要用拉模式获取报表数据,请将以下代码注释掉
+ //report.ConnectionString = "";
+ //if (report.DetailGrid != null)
+ // report.DetailGrid.Recordset.ConnectionString = "";
+ }
+
+ //从 XML 或 JSON 文本数据包加载报表数据。数据形式必须满足Grid++report的约定要求。
+ public void LoadReportData(string DataText)
+ {
+ bool success = report.LoadDataFromXML(DataText);
+ if (!success)
+ throw new Exception(string.Format("载入报表数据:\r\n '{0}' \r\n失败!", DataText));
+ }
+
+ //生成报表结果到二进制数据包对象中,并将数据响应给请求的客户端
+ //HTTP请求中包含的参数:
+ //report: 指定哪个报表
+ //type: 指定生成的数据类型,可选[pdf|xls|csv|txt|rtf|img|grd|grp]。如果不指定,默认为pdf
+ //img: 指定生成的图像数据格式,仅当生成图像数据时需要,可选[png|bmp|jpg|tif]。如果不指定,默认为png
+ //open: 指定生成的数据打开模式,可选[inline|attachment],"inline"表示在网页中内联显示,"attachment"表示以附件文件形式下载。如果不指定,由浏览器自动确定打开方式
+ //filename: 指定下载(或保存)文件时的默认文件名称
+ public void Generate()
+ {
+ string TypeText = context.Request.QueryString["type"];
+ string ImageTypeText = context.Request.QueryString["img"];
+ string FileName = context.Request.QueryString["filename"];
+ string OpenMode = context.Request.QueryString["open"];
+
+ Generate(TypeText, FileName, OpenMode, ImageTypeText);
+ }
+
+ public void Generate(string TypeText, string FileName)
+ {
+ Generate(TypeText, FileName, "", "");
+ }
+
+ public void Generate(string TypeText, string FileName, string OpenMode, string ImageTypeText)
+ {
+ //确定导出数据类型及数据的ContentType
+ ReportGenerateInfo GenerateInfo = new ReportGenerateInfo();
+ GenerateInfo.Build(TypeText, ImageTypeText);
+
+ IGRBinaryObject ResultDataObject;
+ if (GenerateInfo.IsGRD)
+ {
+ ResultDataObject = report.GenerateDocumentData();
+ }
+ else
+ {
+ IGRExportOption ExportOption = report.PrepareExport(GenerateInfo.ExportType);
+
+ if (GenerateInfo.ExportType == GRExportType.gretIMG)
+ {
+ IGRE2IMGOption E2IMGOption = ExportOption.AsE2IMGOption;
+ E2IMGOption.ImageType = GenerateInfo.ImageType;
+ E2IMGOption.AllInOne = true; //所有页产生在一个图像文件中
+ //E2IMGOption.VertGap = 20; //页之间设置20个像素的间距
+ }
+
+ ResultDataObject = report.ExportToBinaryObject();
+ report.UnprepareExport();
+ }
+
+ #region 响应生成的报表结果数据
+ //如果参数中没指定文件名,则更报表模板中的“标题”属性设置一个默认文件名
+ if (FileName == null || FileName.Length == 0)
+ {
+ if (report.Title == null || report.Title.Length == 0)
+ FileName = "gridreport";
+ else
+ FileName = report.Title;
+ FileName += "." + GenerateInfo.ExtFileBame;
+ }
+
+ ServerUtility.ResponseBinary(context, ResultDataObject, FileName, GenerateInfo.ContentType, OpenMode);
+ #endregion
+ }
+
+ #region 导出Base64
+ public string Generate2()
+ {
+ string TypeText = context.Request.QueryString["type"];
+ string ImageTypeText = context.Request.QueryString["img"];
+ string FileName = context.Request.QueryString["filename"];
+ string OpenMode = context.Request.QueryString["open"];
+
+ return Generate2(TypeText, FileName, OpenMode, ImageTypeText);
+ }
+
+
+ public string Generate2(string TypeText, string FileName, string OpenMode, string ImageTypeText)
+ {
+ //确定导出数据类型及数据的ContentType
+ ReportGenerateInfo GenerateInfo = new ReportGenerateInfo();
+ GenerateInfo.Build(TypeText, ImageTypeText);
+
+ IGRBinaryObject ResultDataObject;
+ if (GenerateInfo.IsGRD)
+ {
+ ResultDataObject = report.GenerateDocumentData();
+ }
+ else
+ {
+ IGRExportOption ExportOption = report.PrepareExport(GenerateInfo.ExportType);
+
+ if (GenerateInfo.ExportType == GRExportType.gretIMG)
+ {
+ IGRE2IMGOption E2IMGOption = ExportOption.AsE2IMGOption;
+ E2IMGOption.ImageType = GenerateInfo.ImageType;
+ E2IMGOption.AllInOne = true; //所有页产生在一个图像文件中
+ //E2IMGOption.VertGap = 20; //页之间设置20个像素的间距
+ }
+
+ ResultDataObject = report.ExportToBinaryObject();
+ report.UnprepareExport();
+ }
+
+ #region 响应生成的报表结果数据
+ //如果参数中没指定文件名,则更报表模板中的“标题”属性设置一个默认文件名
+ if (FileName == null || FileName.Length == 0)
+ {
+ if (report.Title == null || report.Title.Length == 0)
+ FileName = "gridreport";
+ else
+ FileName = report.Title;
+ FileName += "." + GenerateInfo.ExtFileBame;
+ }
+
+ #endregion
+ object Data = ResultDataObject.SaveToVariant();
+ byte[] byArr = (byte[])Data;
+ string base64Str = Convert.ToBase64String(byArr);
+ return base64Str;
+
+ }
+
+ #endregion
+
+ }
+}
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/appcode/ServerUtility.cs b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/appcode/ServerUtility.cs
new file mode 100644
index 0000000..ba89456
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/appcode/ServerUtility.cs
@@ -0,0 +1,336 @@
+using System;
+using System.Collections;
+using System.Web;
+using System.Data;
+using grsvr6Lib;
+//using OfficeOpenXml;
+
+namespace GridReport
+{
+ public class ReportGenerateInfo
+ {
+ public string ContentType; //HTTP响应ContentType
+ public string ExtFileBame; //默认扩展文件名
+ public bool IsGRD; //是否生成为 Grid++Report 报表文档格式
+ public GRExportType ExportType; //导出的数据格式类型
+ public GRExportImageType ImageType; //导出的图像格式类型
+
+ ///根据报表导出格式类型,生成对应的响应信息,将结果信息保存本类的成员变量中
+ ///参数 ExportTypeText: 指定报表导出的导出格式类型
+ ///参数 ImageTypeText: 指定生成的图像格式,仅当为导出图像时有效
+ public void Build(string ExportTypeText, string ImageTypeText)
+ {
+ ExtFileBame = ExportTypeText;
+ ContentType = "application/";
+ IsGRD = (ExportTypeText == "grd" || ExportTypeText == "grp");
+
+ if (IsGRD)
+ {
+ //ContentType += ExportTypeText; //application/grd
+ ContentType += "octet-stream"; //application/octet-stream
+ }
+ else
+ {
+ switch (ExportTypeText)
+ {
+ case "xls":
+ ExportType = GRExportType.gretXLS;
+ ContentType += "x-xls"; //application/vnd.ms-excel application/x-xls
+ break;
+ case "csv":
+ ExportType = GRExportType.gretCSV;
+ ContentType += "vnd.ms-excel"; //application/vnd.ms-excel application/x-xls
+ break;
+ case "txt":
+ ExportType = GRExportType.gretTXT;
+ ContentType = "text/plain"; //text/plain
+ break;
+ case "rtf":
+ ExportType = GRExportType.gretRTF;
+ ContentType += "rtf"; //application/rtf
+ break;
+ case "img":
+ ExportType = GRExportType.gretIMG;
+ //ContentType 要在后面根据图像格式来确定
+ break;
+ default:
+ ExtFileBame = "pdf"; //"type"参数如没有设置,保证 ExtFileBame 被设置为"pdf"
+ ExportType = GRExportType.gretPDF;
+ ContentType += "pdf";
+ break;
+ }
+
+ //导出图像处理
+ if (ExportType == GRExportType.gretIMG)
+ {
+ ExtFileBame = ImageTypeText;
+ switch (ImageTypeText)
+ {
+ case "bmp":
+ ImageType = GRExportImageType.greitBMP;
+ ContentType += "x-bmp";
+ break;
+ case "jpg":
+ ImageType = GRExportImageType.greitJPEG;
+ ContentType += "x-jpg";
+ break;
+ case "tif":
+ ImageType = GRExportImageType.greitTIFF;
+ ContentType = "image/tiff";
+ break;
+ default:
+ ExtFileBame = "png";
+ ImageType = GRExportImageType.greitPNG;
+ ContentType += "x-png";
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ public class ServerUtility
+ {
+ ///
+ /// 将报表生成的二进制数据响应给 HTPP 请求客户端
+ ///
+ /// HTPP 请求对象
+ /// 报表生成的二进制数据
+ /// 指定下载(或保存)文件时的默认文件名称
+ /// 响应的ContentType
+ /// 指定生成的数据打开模式,可选[inline|attachment],"inline"表示在网页中内联显示,"attachment"表示以附件文件形式下载。如果不指定,由浏览器自动确定打开方式。
+ public static void ResponseBinary(HttpContext context, IGRBinaryObject ExportResult, string FileName, string ContentType, string OpenMode)
+ {
+ if (ExportResult.DataSize > 0)
+ {
+ string Disposition = "";
+
+ if (OpenMode != null && OpenMode.Length > 0)
+ Disposition = OpenMode + "; ";
+
+ Disposition += ServerUtility.EncodeAttachmentFileName(context.Request.UserAgent, FileName);
+
+ context.Response.ContentType = ContentType;
+ context.Response.AppendHeader("Content-Length", ExportResult.DataSize.ToString());
+ context.Response.AppendHeader("Content-Disposition", Disposition);
+
+ context.Response.ClearContent();
+
+ //当发布到IIS,用InteropServices.Marshal.Copy方式复制导出的数据出现了异常,而在VS的IDE里是正常的,所以改用SaveToVariant
+ //byte[] buffer = new byte[ExportResult.DataSize];
+ //System.Runtime.InteropServices.Marshal.Copy((IntPtr)ExportResult.DataBuf, buffer, 0, ExportResult.DataSize);
+ //context.Response.BinaryWrite(buffer);
+ object Data = ExportResult.SaveToVariant();
+ context.Response.BinaryWrite((byte[])Data);
+
+ context.Response.Flush();
+ }
+ }
+
+ ///
+ /// 将异常信息文字响应给请求的客户端
+ ///
+ ///
+ ///
+ public static void ResponseException(HttpContext context, string MessageText)
+ {
+ context.Response.ContentType = "text/plain";
+ context.Response.Write(MessageText);
+ }
+
+ ///
+ /// 为了文件名中的汉字与特殊字符能正确,必须进行分浏览器处理
+ ///
+ ///
+ ///
+ ///
+ public static string EncodeAttachmentFileName(string BrowserAgent, string RawFileName)
+ {
+ System.Text.UTF8Encoding UTF8Encoding = new System.Text.UTF8Encoding();
+ string EncodedFileName = HttpUtility.UrlEncode(RawFileName, UTF8Encoding);
+
+ // 如果没有BrowserAgent,则默认使用IE的方式进行编码,因为毕竟IE还是占多数的
+ string ret = "filename=\"" + EncodedFileName + "\"";
+ if (BrowserAgent != null && BrowserAgent.Length != 0)
+ {
+ BrowserAgent = BrowserAgent.ToLower();
+ // msie 与 edge 采用默认的方式
+ if ((BrowserAgent.IndexOf("msie") == -1) && (BrowserAgent.IndexOf("edge") == -1))
+ {
+ // Chrome浏览器,只能采用MimeUtility编码或ISO编码的中文输出
+ if (BrowserAgent.IndexOf("applewebkit") != -1)
+ {
+ //EncodedFileName = MimeUtility.encodeText(RawFileName, "UTF8", "B");
+ System.Text.UTF8Encoding UTF8EncodingBOM = new System.Text.UTF8Encoding(true);
+ EncodedFileName = UTF8EncodingBOM.GetString(UTF8EncodingBOM.GetBytes(RawFileName));
+ ret = "filename=\"" + EncodedFileName + "\"";
+ }
+ // Safari浏览器,只能采用ISO编码的中文输出
+ else if (BrowserAgent.IndexOf("safari") != -1)
+ {
+ //28591 iso-8859-1 1252 *
+ //ret = "filename=\"" + new String(filename.getBytes("UTF-8"), "ISO8859-1") + "\"";
+ byte[] UTF8Bytes = UTF8Encoding.GetBytes(RawFileName);
+ string ISO8859Text = System.Text.Encoding.GetEncoding(28591).GetString(UTF8Bytes);
+ ret = "filename=\"" + ISO8859Text + "\"";
+ }
+ // Opera浏览器只能采用filename*
+ // FireFox浏览器,可以使用MimeUtility或filename*或ISO编码的中文输出
+ else if ((BrowserAgent.IndexOf("opera") != -1) || (BrowserAgent.IndexOf("mozilla") != -1))
+ {
+ ret = "filename*=UTF-8''" + EncodedFileName;
+ }
+ }
+ }
+
+ return ret;
+ }
+
+ ///
+ /// 根据报表模板中的查询SQL获取报表数据
+ ///
+ public static string BuildFromSelfSQL(GridppReportServer Report)
+ {
+ string DataText = "";
+
+ //从 XML 或 JSON 数据包中载入报表数据
+ string MasterQuerySQL = Report.QuerySQL;
+ string DetailQuerySQL = Report.DetailGrid != null ? Report.DetailGrid.Recordset.QuerySQL : null;
+ bool MasterAssigned = (MasterQuerySQL != null && MasterQuerySQL.Length > 0);
+ bool DetailAssigned = (DetailQuerySQL != null && DetailQuerySQL.Length > 0);
+ if (MasterAssigned || DetailAssigned)
+ {
+ if (MasterAssigned && DetailAssigned)
+ {
+ string MasterTableName = Report.XmlTableName;
+ if (MasterTableName == null || MasterTableName.Length == 0)
+ MasterTableName = "Master";
+
+ string DetailTableName = Report.DetailGrid.Recordset.XmlTableName;
+ if (DetailTableName == null || DetailTableName.Length == 0)
+ {
+ DetailTableName = "Detail";
+ }
+ ArrayList QueryList = new ArrayList();
+ QueryList.Add(new ReportQueryItem(DetailQuerySQL, DetailTableName));
+ QueryList.Add(new ReportQueryItem(MasterQuerySQL, MasterTableName));
+ DataText = DataTextProvider.Build(QueryList);
+ }
+ else
+ {
+ DataText = DataTextProvider.Build(MasterAssigned ? MasterQuerySQL : DetailQuerySQL);
+ }
+ }
+
+ return DataText;
+ }
+
+ private struct MatchFieldPairType
+ {
+ public IGRField grField;
+ public int MatchColumnIndex;
+ }
+
+ // 将 DataReader 的数据转储到 Grid++Report 的记录集中
+ public static void FillRecordToReport(IGridppReport Report, IDataReader dr)
+ {
+ MatchFieldPairType[] MatchFieldPairs = new MatchFieldPairType[Math.Min(Report.DetailGrid.Recordset.Fields.Count, dr.FieldCount)];
+
+ //根据字段名称与列名称进行匹配,建立DataReader字段与Grid++Report记录集的字段之间的对应关系
+ int MatchFieldCount = 0;
+ for (int i = 0; i < dr.FieldCount; ++i)
+ {
+ foreach (IGRField fld in Report.DetailGrid.Recordset.Fields)
+ {
+ if (String.Compare(fld.RunningDBField, dr.GetName(i), true) == 0)
+ {
+ MatchFieldPairs[MatchFieldCount].grField = fld;
+ MatchFieldPairs[MatchFieldCount].MatchColumnIndex = i;
+ ++MatchFieldCount;
+ break;
+ }
+ }
+ }
+
+
+ // 将 DataReader 中的每一条记录转储到 Grid++Report 的记录集中去
+ while (dr.Read())
+ {
+ Report.DetailGrid.Recordset.Append();
+
+ for (int i = 0; i < MatchFieldCount; ++i)
+ {
+ if (!dr.IsDBNull(MatchFieldPairs[i].MatchColumnIndex))
+ MatchFieldPairs[i].grField.Value = dr.GetValue(MatchFieldPairs[i].MatchColumnIndex);
+ }
+ Report.DetailGrid.Recordset.Post();
+ }
+ }
+
+ // 将 DataTable 的数据转储到 Grid++Report 的记录集中
+ public static void FillRecordToReport(IGridppReport Report, DataTable dt)
+ {
+ MatchFieldPairType[] MatchFieldPairs = new MatchFieldPairType[Math.Min(Report.DetailGrid.Recordset.Fields.Count, dt.Columns.Count)];
+
+ //根据字段名称与列名称进行匹配,建立DataReader字段与Grid++Report记录集的字段之间的对应关系
+ int MatchFieldCount = 0;
+ for (int i = 0; i < dt.Columns.Count; ++i)
+ {
+ foreach (IGRField fld in Report.DetailGrid.Recordset.Fields)
+ {
+ if (String.Compare(fld.Name, dt.Columns[i].ColumnName, true) == 0)
+ {
+ MatchFieldPairs[MatchFieldCount].grField = fld;
+ MatchFieldPairs[MatchFieldCount].MatchColumnIndex = i;
+ ++MatchFieldCount;
+ break;
+ }
+ }
+ }
+
+
+ // 将 DataTable 中的每一条记录转储到 Grid++Report 的记录集中去
+ foreach (DataRow dr in dt.Rows)
+ {
+ Report.DetailGrid.Recordset.Append();
+
+ for (int i = 0; i < MatchFieldCount; ++i)
+ {
+ if (!dr.IsNull(MatchFieldPairs[i].MatchColumnIndex))
+ MatchFieldPairs[i].grField.Value = dr[MatchFieldPairs[i].MatchColumnIndex];
+ }
+
+ Report.DetailGrid.Recordset.Post();
+ }
+ }
+
+ public static uint RGBToOleColor(byte r, byte g, byte b)
+ {
+ return ((uint)b) * 256 * 256 + ((uint)g) * 256 + r;
+ }
+
+ public static uint ColorToOleColor(System.Drawing.Color val)
+ {
+ return RGBToOleColor(val.R, val.G, val.B);
+ }
+
+ //判断当前运行进程是不是64位程序
+ public static bool Is64bitProcess()
+ {
+ //IsWow64Process
+ //也可以直接用Environment.Is64BitProcess,不过需要DotNet4.0或以上版本。
+ return (IntPtr.Size == 8);
+ }
+
+ //生成数据源连接串,根据当前运行环境与配置参数进行实际调整
+ public static string BuildOLEDBConnectionString()
+ {
+ //Grid++Report的64位程序通过OLE DB连接Access与32位程序使用完全不同的数据驱动程序,
+ //此数据驱动程序(AccessDatabaseEngine_X64.exe)没有跟随Windows系统自动安装,需要从
+ //微软网站下载并安装, 下载地址:https://www.microsoft.com/zh-CN/download/details.aspx?id=13255
+ //如果直接不能安装,要先将Ofiice卸载后再进行安装,驱动程序安装后,在重新安装Office。
+ return (Is64bitProcess() ? "Provider = Microsoft.ACE.OLEDB.12.0;" : "Provider=Microsoft.Jet.OLEDB.4.0;") +
+ "User ID=Admin;Data Source=" + @"C:\Grid++Report 6\Samples\Data\NorthWind.mdb";
+ }
+ }
+}
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/common_code/DataTextProvider.cs b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/common_code/DataTextProvider.cs
new file mode 100644
index 0000000..ef5904b
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/common_code/DataTextProvider.cs
@@ -0,0 +1,517 @@
+///下面两个编译条件参数指定产生报表数据的格式。如果都不定义,则产生 XML 形式的报表数据
+///编译条件参数定义在项目属性的“生成->条件编译符号”里更合适,这样可以为整个项目使用
+///_XML_REPORT_DATA:指定产生 XML 形式的报表数据
+///_JSON_REPORT_DATA:指定产生 JSON 形式的报表数据。
+//#define _XML_REPORT_DATA
+#define _JSON_REPORT_DATA
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Web;
+using System.Text;
+using System.Diagnostics;
+
+namespace GridReport
+{
+
+#if _JSON_REPORT_DATA
+ using MyDbReportData = DatabaseJsonReportData;
+#else
+using MyDbReportData = DatabaseXmlReportData;
+#endif
+
+ ///
+ /// 在这里集中产生整个项目的所有报表需要的 XML 或 JSON 文本数据
+ ///
+ public class DataTextProvider
+ {
+ ///
+ /// 根据查询SQL语句产生报表数据
+ ///
+ public static string Build(string QuerySQL)
+ {
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ ///
+ /// 根据多条查询SQL语句产生报表数据,数据对应多记录集
+ ///
+ public static string Build(ArrayList QueryList)
+ {
+ return MyDbReportData.TextFromMultiSQL(QueryList);
+ }
+
+ #region 产生特定的报表数据文本
+ public static string Customer()
+ {
+ return MyDbReportData.TextFromOneSQL("select * from Customers order by Region,City");
+ }
+
+ public static string AppendBlankRow()
+ {
+ string QuerySQL = string.Format(
+ "select m.OrderId, m.OrderDate, d.Productid,p.ProductName,d.Quantity," +
+ "d.UnitPrice*d.Quantity as Amount " +
+ "from orders m inner join (OrderDetails d inner join Products p on d.ProductID=p.ProductID) " +
+ "on m.orderid=d.orderid " +
+ "where (m.OrderDate between {0}1996-1-1{0} And {0}1997-9-30{0}) and d.Productid<10 " +
+ "order by d.ProductID", DatabaseReportData.DateSqlBracketChar);
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string Categories()
+ {
+ return MyDbReportData.TextFromOneSQL("select * from categories");
+ }
+
+ public static string ContractOne()
+ {
+ const string QuerySQL =
+ "select m.OrderID,m.CustomerId,c.CompanyName,m.OrderDate, "
+ + "p.ProductName,d.UnitPrice,d.Quantity,d.UnitPrice*d.Quantity as Amount "
+ + "from (Orders m inner join "
+ + "(OrderDetails as d inner join Products p on P.ProductID=D.ProductID) on m.OrderId=d.OrderId) "
+ + "left join Customers c on c.CustomerID=m.CustomerID "
+ + "where m.OrderID=10252 and d.ProductID=20 "
+ + "order by m.OrderDate, m.OrderID";
+
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string CrossTab()
+ {
+ const string QuerySQL = "select c.City,m.CustomerId,c.CompanyName,d.ProductID,p.ProductName," +
+ "d.Quantity, d.UnitPrice*d.Quantity as Amount " +
+ "from (Orders m inner join " +
+ "(OrderDetails as d inner join Products p " +
+ "on P.ProductID=D.ProductID) on m.OrderId=d.OrderId) " +
+ "left join Customers c on c.CustomerID=m.CustomerID " +
+ "where d.ProductID<8 " +
+ "order by c.City,m.CustomerId, d.ProductID";
+
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string CrossTabByDay()
+ {
+ string QuerySQL = string.Format("select c.CompanyName,m.OrderDate,d.UnitPrice*d.Quantity as Amount " +
+ "from (Orders m inner join OrderDetails as d on m.OrderId=d.OrderId) " +
+ "left join Customers c on c.CustomerID=m.CustomerID " +
+ "where m.OrderDate between {0}1997-6-1{0} and {0}1997-7-15{0} " +
+ "order by c.CompanyName, m.OrderDate", DatabaseReportData.DateSqlBracketChar);
+
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string CrossTabByMonth()
+ {
+ string QuerySQL = string.Format("select c.CompanyName,m.OrderDate,d.UnitPrice*d.Quantity as Amount " +
+ "from (Orders m inner join OrderDetails as d on m.OrderId=d.OrderId) " +
+ "left join Customers c on c.CustomerID=m.CustomerID " +
+ "where m.OrderDate between {0}1997-1-1{0} and {0}1997-12-31{0} " +
+ "order by c.CompanyName, m.OrderDate", DatabaseReportData.DateSqlBracketChar);
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string CrossTabCalendar()
+ {
+ string QuerySQL = string.Format(
+ "select m.OrderDate,sum(d.Quantity) as Qty,sum(d.UnitPrice*d.Quantity) as Amount " +
+ "from (Orders m inner join OrderDetails as d on m.OrderId=d.OrderId) " +
+ "where m.OrderDate between {0}1997-1-1{0} and {0}1997-12-31{0} " +
+ "group by m.OrderDate " +
+ "order by m.OrderDate", DatabaseReportData.DateSqlBracketChar);
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string CrossTabSubtotal()
+ {
+ string QuerySQL = string.Format(
+ "select t.CategoryName, p.ProductName,c.City,c.CompanyName,d.Quantity " +
+ "from (Orders m inner join " +
+ "(OrderDetails as d inner join (Products p inner join Categories t on p.CategoryID=t.CategoryID) " +
+ "on P.ProductID=D.ProductID) on m.OrderId=d.OrderId) " +
+ "left join Customers c on c.CustomerID=m.CustomerID " +
+ "where m.OrderDate between {0}1997-1-1{0} and {0}1997-3-31{0} " +
+ "order by t.CategoryName,p.ProductName,c.City,c.CompanyName ", DatabaseReportData.DateSqlBracketChar);
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string CrossTabYearMonth()
+ {
+ string QuerySQL = "select Year(m.OrderDate) As TheYear,Month(m.OrderDate) As TheMonth, sum(d.UnitPrice*d.Quantity) as Amount " +
+ "from Orders m inner join OrderDetails as d on m.OrderId=d.OrderId " +
+ "group by Year(m.OrderDate),Month(m.OrderDate) " +
+ "order by Year(m.OrderDate),Month(m.OrderDate)";
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string EmployeeOne()
+ {
+ const string QuerySQL = "select * from Employees where EmployeeID=5";
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string FreeGridwithDetailGrid()
+ {
+ //第一个查询SQL串指定报表明细数据的查询SQL
+ //第二个查询SQL串指定报表参数数据的查询SQL
+ const string RecordsetQuerySQL = "select * from Employees where EmployeeID<8";
+ const string ParameterQuerySQL = "select * from Employees where EmployeeID=8";
+
+ ArrayList QueryList = new ArrayList();
+ QueryList.Add(new ReportQueryItem(RecordsetQuerySQL, "Detail"));
+ QueryList.Add(new ReportQueryItem(ParameterQuerySQL, "FreeGrid"));
+
+ return MyDbReportData.TextFromMultiSQL(QueryList);
+ }
+
+ public static string InvoiceMany()
+ {
+ const string QuerySQL =
+ "select m.OrderID,m.CustomerId,c.CompanyName,C.Address,m.OrderDate,c.ContactName+c.Phone as Remark, " +
+ "d.ProductID,p.ProductName,d.UnitPrice,d.Quantity,d.UnitPrice*d.Quantity as Amount " +
+ "from (Orders m inner join (OrderDetails d inner join Products p on p.ProductID=d.ProductID) " +
+ "on d.OrderID=m.OrderID) left join Customers c on c.CustomerID=m.CustomerID " +
+ "where m.OrderID>=10255 and m.OrderID<10260 ";
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string InvoiceOne()
+ {
+ //第一个查询SQL串指定报表明细数据的查询SQL
+ //第二个查询SQL串指定报表参数数据的查询SQL
+ const string RecordsetQuerySQL = "select d.ProductID,p.ProductName,d.UnitPrice,d.Quantity,d.UnitPrice*d.Quantity as Amount "
+ + "from OrderDetails as d inner join Products p on P.ProductID=D.ProductID "
+ + "where d.OrderID=10255";
+ const string ParameterQuerySQL = "select m.OrderID,m.CustomerId,c.CompanyName,C.Address,m.OrderDate,c.ContactName+c.Phone as Remark "
+ + "from Orders m left join Customers c on c.CustomerID=m.CustomerID "
+ + "where m.OrderID=10255";
+
+ ArrayList QueryList = new ArrayList();
+ QueryList.Add(new ReportQueryItem(RecordsetQuerySQL, "Detail"));
+ QueryList.Add(new ReportQueryItem(ParameterQuerySQL, "Master"));
+
+ return MyDbReportData.TextFromMultiSQL(QueryList);
+ }
+
+ public static string Picture()
+ {
+ const string QuerySQL = "select EmployeeID,LastName,FirstName,Title,TitleOfCourtesy,BirthDate,HireDate," +
+ "Address,City,Region,PostalCode,Country,HomePhone,Extension,Photo,Notes from Employees";
+
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string RTFSample()
+ {
+ string QuerySQL = string.Format("select m.OrderID,m.CustomerId,c.CompanyName,c.ContactName,c.Address,c.city,c.Region,c.Country,c.Postalcode," +
+ "m.OrderDate,M.Freight,d.ProductID,p.ProductName," +
+ "d.UnitPrice,d.Quantity,d.Discount," +
+ "d.UnitPrice*d.Quantity as Amount," +
+ "d.UnitPrice*d.Quantity*d.Discount as DiscountAmt," +
+ "d.UnitPrice*d.Quantity-d.UnitPrice*d.Quantity*d.Discount as NetAmount " +
+ "from (Orders m inner join " +
+ "(OrderDetails as d inner join Products p on P.ProductID=D.ProductID) on m.OrderId=d.OrderId) " +
+ "left join Customers c on c.CustomerID=m.CustomerID " +
+ "where m.OrderDate between {0}1997-1-1{0} And {0}1997-1-15{0} " +
+ "order by m.CustomerID,m.OrderDate, m.OrderID", DatabaseReportData.DateSqlBracketChar);
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string SaleByProduct()
+ {
+ string QuerySQL = string.Format(
+ "select m.OrderID,m.OrderDate, " +
+ "d.ProductID,p.ProductName,d.UnitPrice,d.Quantity,d.UnitPrice*d.Quantity as Amount " +
+ "from Orders m inner join " +
+ "(OrderDetails as d inner join Products p on P.ProductID=D.ProductID) on m.OrderId=d.OrderId " +
+ "where m.OrderDate between {0}1997-6-1{0} and {0}1997-12-31{0} " +
+ "order by d.ProductID, m.OrderDate", DatabaseReportData.DateSqlBracketChar);
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string SaleDetail()
+ {
+ const string QuerySQL = "select m.OrderID,m.CustomerId,c.CompanyName,m.OrderDate,M.Freight," +
+ "d.ProductID,p.ProductName,d.UnitPrice,d.Quantity,d.Discount, " +
+ "d.UnitPrice*d.Quantity as Amount, d.UnitPrice*d.Quantity*d.Discount as DiscountAmt, " +
+ "d.UnitPrice*d.Quantity-d.UnitPrice*d.Quantity*d.Discount as NetAmount " +
+ "from (Orders m inner join " +
+ "(OrderDetails as d inner join Products p on P.ProductID=D.ProductID) on m.OrderId=d.OrderId) " +
+ "left join Customers c on c.CustomerID=m.CustomerID " +
+ "where m.OrderID<=10300 " +
+ "order by m.OrderDate, m.OrderID";
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string SaleSumByProduct()
+ {
+ string QuerySQL = string.Format(
+ "select d.Productid,p.ProductName,sum(d.Quantity) as Quantity, " +
+ "sum(d.UnitPrice*d.Quantity*(1-d.Discount)) as Amount " +
+ "from orders m inner join (OrderDetails d inner join Products p " +
+ "on d.ProductID=p.ProductID) " +
+ "on m.orderid=d.orderid " +
+ "where m.OrderDate between {0}1997-1-1{0} and {0}1997-12-31{0} " +
+ "group by d.Productid,p.ProductName " +
+ "order by d.Productid", DatabaseReportData.DateSqlBracketChar);
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string SubReport_4a()
+ {
+ const string Top10CustomerQuerySQL =
+ "select top 10 c.CustomerID, c.CompanyName, sum(o.Quantity*o.UnitPrice) As SumAmt " +
+ "from OrderDetails o, Orders m, customers c " +
+ "where o.OrderID=m.OrderID and m.CustomerID=c.CustomerID " +
+ "group by c.CustomerID, c.CompanyName " +
+ "order by sum(o.Quantity*o.UnitPrice) desc";
+ const string Top10ProductQuerySQL =
+ "select top 10 p.ProductID, p.ProductName, sum(o.Quantity*o.UnitPrice) As SumQty " +
+ "from OrderDetails o, Products p " +
+ "where o.ProductID=p.ProductID " +
+ "group by p.ProductID, p.ProductName " +
+ "order by sum(Quantity*o.UnitPrice) desc";
+
+ ArrayList QueryList = new ArrayList();
+ QueryList.Add(new ReportQueryItem("select * from Customers order by CustomerID", "Customer"));
+ QueryList.Add(new ReportQueryItem("select * from Products order by ProductName", "Product"));
+ QueryList.Add(new ReportQueryItem(Top10CustomerQuerySQL, "Top10Customer"));
+ QueryList.Add(new ReportQueryItem(Top10ProductQuerySQL, "Top10Product"));
+ return MyDbReportData.TextFromMultiSQL(QueryList);
+ }
+
+ public static string SubReport_4b()
+ {
+ ArrayList QueryList = new ArrayList();
+ QueryList.Add(new ReportQueryItem("select * from Customers order by CustomerID", "Customer"));
+ QueryList.Add(new ReportQueryItem("select * from Products order by ProductName", "Product"));
+ QueryList.Add(new ReportQueryItem("select * from Customers order by CustomerID", "Customer2"));
+ return MyDbReportData.TextFromMultiSQL(QueryList);
+ }
+
+ public static string SubReport_4c()
+ {
+ const string RelateCustomerQuerySQL =
+ "select o.OrderID, o.ShipCity, c.* from Customers c, Orders o " +
+ "where OrderID<=10260 and c.City=o.ShipCity " +
+ "order by o.OrderID";
+
+ ArrayList QueryList = new ArrayList();
+ QueryList.Add(new ReportQueryItem("select * from Orders where OrderID<=10260 order by OrderID", "Master"));
+ QueryList.Add(new ReportQueryItem("select * from OrderDetails where OrderID<=10260", "Detail1"));
+ QueryList.Add(new ReportQueryItem(RelateCustomerQuerySQL, "Detail2"));
+
+ return MyDbReportData.TextFromMultiSQL(QueryList);
+ }
+
+ public static string SubReport_4d(string city)
+ {
+ string CustomerQuerySQL = "select * from Customers where City='" + city + "'";
+ string SupplierQuerySQL = "select * from Suppliers where City='" + city + "'";
+
+ ArrayList QueryList = new ArrayList();
+ QueryList.Add(new ReportQueryItem(CustomerQuerySQL, "Customer"));
+ QueryList.Add(new ReportQueryItem(SupplierQuerySQL, "Supplier"));
+
+ return MyDbReportData.TextFromMultiSQL(QueryList);
+ }
+
+ public static string Report_7_3g(int BeginNo, int EndNo)
+ {
+ string QuerySQL = string.Format("select * from Products " +
+ "where ProductID>={0} and ProductID<={1} " +
+ "order by ProductID", BeginNo, EndNo);
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string Chart_8b()
+ {
+ ArrayList QueryList = new ArrayList();
+ QueryList.Add(new ReportQueryItem("select * from scatter order by Name, X", "Table1"));
+ QueryList.Add(new ReportQueryItem("select * from scatter order by Name, X", "Table2"));
+ QueryList.Add(new ReportQueryItem("select * from scatter order by Name, X", "Table3"));
+ QueryList.Add(new ReportQueryItem("select * from scatter order by Name, X", "Table4"));
+ return MyDbReportData.TextFromMultiSQL(QueryList);
+ }
+
+ public static string Chart_8d()
+ {
+ string SQL = "select c.Region, d.ProductID,p.ProductName, " +
+ "sum(d.UnitPrice * d.Quantity) as Amount " +
+ "from(Orders m inner join (OrderDetails as d inner join Products p on P.ProductID = D.ProductID) on m.OrderId = d.OrderId) " +
+ "left join Customers c on c.CustomerID = m.CustomerID " +
+ "where d.ProductID in (1, 10, 11, 21) and m.OrderDate between #1997/1/1# and #1997/12/31# " +
+ "group by c.Region, d.ProductID, p.ProductName " +
+ "order by d.ProductID, c.Region";
+ string SQL2 = "select c.Region, sum(d.UnitPrice * d.Quantity) as Amount, sum(d.Quantity) as Quantity " +
+ "from(Orders m inner join OrderDetails d on m.OrderId = d.OrderId) " +
+ "left join Customers c on c.CustomerID = m.CustomerID " +
+ "where d.ProductID = 11 and m.OrderDate between #1997/1/1# and #1997/12/31# " +
+ "group by c.Region " +
+ "order by c.Region";
+
+ ArrayList QueryList = new ArrayList();
+ QueryList.Add(new ReportQueryItem(SQL, "Table1"));
+ QueryList.Add(new ReportQueryItem(SQL, "Table2"));
+ QueryList.Add(new ReportQueryItem(SQL, "Table3"));
+ QueryList.Add(new ReportQueryItem(SQL2, "Table4"));
+ return MyDbReportData.TextFromMultiSQL(QueryList);
+ }
+
+ public static string FilterSaleSummary(string BeginDate, string EndDate)
+ {
+ string QuerySQL = string.Format("select d.Productid,p.ProductName,sum(d.Quantity) as Quantity," +
+ "sum(d.UnitPrice*d.Quantity) as Amount " +
+ "from orders m inner join (OrderDetails d inner join Products p " +
+ "on d.ProductID=p.ProductID) on m.orderid=d.orderid " +
+ "where m.OrderDate between {2}{0}{2} And {2}{1}{2}" +
+ "group by d.Productid,p.ProductName " +
+ "order by d.Productid", BeginDate, EndDate, DatabaseReportData.DateSqlBracketChar);
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+
+ public static string FilterSaleDetail(string BeginDate, string EndDate, string ProductID)
+ {
+ string QuerySQL = string.Format("select m.OrderId, m.OrderDate, d.Productid,p.ProductName,d.Quantity, " +
+ "d.UnitPrice*d.Quantity as Amount " +
+ "from orders m inner join (OrderDetails d inner join Products p on d.ProductID=p.ProductID) " +
+ "on m.orderid=d.orderid " +
+ "where (m.OrderDate between {3}{0}{3} And {3}{1}{3}) and d.Productid={2} " +
+ "order by m.OrderDate ",
+ BeginDate, EndDate, ProductID, DatabaseReportData.DateSqlBracketChar);
+ return MyDbReportData.TextFromOneSQL(QuerySQL);
+ }
+ #endregion
+
+
+ #region 根据 HTTP 请求中的参数生成报表数据,主要是为例子报表自动分配合适的数据生成函数
+ ///
+ /// 为了避免 switch 语句的使用,建立数据名称与数据函数的映射(map)
+ /// 在 Global.asax 中创建映射,即在WEB服务启动时初始化映射数据
+ ///
+
+ //简单无参数报表数据的名称与函数映射表
+ private delegate string SimpleDataFun();
+ private static Dictionary SimpleDataFunMap = new Dictionary();
+
+ //有参数报表数据的名称与函数映射表,参数来自 HttpRequest
+ private delegate string SpecialDataFun(HttpRequest Request);
+ private static Dictionary SpecialDataFunMap = new Dictionary();
+
+ public static string BuildByHttpRequest(HttpRequest Request)
+ {
+ string DataText;
+ string DataName = Request.QueryString["data"];
+
+ Trace.Assert(SimpleDataFunMap.Count > 0, "DataFunMap isn't initialized!");
+
+ if (DataName != null) //if (DataName != "")
+ {
+ //根据数据名称查找映射表,如果找到,执行对应的报表数据函数获取数据
+ SimpleDataFun simpleFun;
+ SpecialDataFun specialFun;
+ if (SimpleDataFunMap.TryGetValue(DataName, out simpleFun))
+ {
+ DataText = simpleFun();
+ }
+ else if (SpecialDataFunMap.TryGetValue(DataName, out specialFun))
+ {
+ DataText = specialFun(Request);
+ }
+ else
+ {
+ throw new Exception(string.Format("没有为报表数据 '{0}' 分配处理程序!", DataName));
+ }
+ }
+ else
+ {
+ string QuerySQL = Request.QueryString["QuerySQL"];
+ if (QuerySQL != null)
+ {
+ //根据传递的 HTTP 请求中的查询SQL获取数据
+ DataText = DataTextProvider.Build(QuerySQL);
+ }
+ else if (Request.TotalBytes > 0)
+ {
+ //从客户端发送的数据包中获取报表查询参数,URL有长度限制,当要传递的参数数据量比较大时,应该采用这样的方式
+ //这里演示了用这样的方式传递一个超长查询SQL语句。
+ byte[] FormData = Request.BinaryRead(Request.TotalBytes);
+ UTF8Encoding Unicode = new UTF8Encoding();
+ int charCount = Unicode.GetCharCount(FormData, 0, Request.TotalBytes);
+ char[] chars = new Char[charCount];
+ int charsDecodedCount = Unicode.GetChars(FormData, 0, Request.TotalBytes, chars, 0);
+
+ QuerySQL = new String(chars);
+
+ DataText = DataTextProvider.Build(QuerySQL);
+ }
+ else
+ {
+ DataText = "";
+ }
+ }
+
+ return DataText;
+ }
+
+ //初始化映射表(map),在 Global.asax 中被调用
+ public static void InitDataFunMap()
+ {
+ Trace.Assert(SimpleDataFunMap.Count <= 0, "DataFunMap already initialized!");
+
+ SimpleDataFunMap.Add("AppendBlankRow", DataTextProvider.AppendBlankRow);
+ SimpleDataFunMap.Add("Categories", DataTextProvider.Categories);
+ SimpleDataFunMap.Add("Chart_8b", DataTextProvider.Chart_8b);
+ SimpleDataFunMap.Add("Chart_8d", DataTextProvider.Chart_8d);
+ SimpleDataFunMap.Add("ContractOne", DataTextProvider.ContractOne);
+ SimpleDataFunMap.Add("CrossTab", DataTextProvider.CrossTab);
+ SimpleDataFunMap.Add("CrossTabByDay", DataTextProvider.CrossTabByDay);
+ SimpleDataFunMap.Add("CrossTabByMonth", DataTextProvider.CrossTabByMonth);
+ SimpleDataFunMap.Add("CrossTabCalendar", DataTextProvider.CrossTabCalendar);
+ SimpleDataFunMap.Add("CrossTabSubtotal", DataTextProvider.CrossTabSubtotal);
+ SimpleDataFunMap.Add("CrossTabYearMonth", DataTextProvider.CrossTabYearMonth);
+ SimpleDataFunMap.Add("Customer", DataTextProvider.Customer);
+ SimpleDataFunMap.Add("EmployeeOne", DataTextProvider.EmployeeOne);
+ SimpleDataFunMap.Add("FreeGridwithDetailGrid", DataTextProvider.FreeGridwithDetailGrid);
+ SimpleDataFunMap.Add("InvoiceMany", DataTextProvider.InvoiceMany);
+ SimpleDataFunMap.Add("InvoiceOne", DataTextProvider.InvoiceOne);
+ SimpleDataFunMap.Add("Picture", DataTextProvider.Picture);
+ SimpleDataFunMap.Add("RTFSample", DataTextProvider.RTFSample);
+ SimpleDataFunMap.Add("SaleByProduct", DataTextProvider.SaleByProduct);
+ SimpleDataFunMap.Add("SaleDetail", DataTextProvider.SaleDetail);
+ SimpleDataFunMap.Add("SaleSumByProduct", DataTextProvider.SaleSumByProduct);
+ SimpleDataFunMap.Add("SubReport_4a", DataTextProvider.SubReport_4a);
+ SimpleDataFunMap.Add("SubReport_4b", DataTextProvider.SubReport_4b);
+ SimpleDataFunMap.Add("SubReport_4c", DataTextProvider.SubReport_4c);
+
+ SpecialDataFunMap.Add("Report_7_3g", DataTextProvider.Report_7_3g);
+ SpecialDataFunMap.Add("SubReport_4d", DataTextProvider.SubReport_4d);
+ SpecialDataFunMap.Add("FilterSaleSummary", DataTextProvider.FilterSaleSummary);
+ SpecialDataFunMap.Add("FilterSaleDetail", DataTextProvider.FilterSaleDetail);
+ }
+
+ public static string SubReport_4d(HttpRequest Request)
+ {
+ return DataTextProvider.SubReport_4d(Request.QueryString["city"]);
+ }
+
+ public static string Report_7_3g(HttpRequest Request)
+ {
+ return DataTextProvider.Report_7_3g(Convert.ToInt32(Request.QueryString["BeginNo"]), Convert.ToInt32(Request.QueryString["EndNo"]));
+ }
+
+ public static string FilterSaleSummary(HttpRequest Request)
+ {
+ return DataTextProvider.FilterSaleSummary(Request.QueryString["BeginDate"], Request.QueryString["EndDate"]);
+ }
+
+ public static string FilterSaleDetail(HttpRequest Request)
+ {
+ return DataTextProvider.FilterSaleDetail(Request.QueryString["BeginDate"], Request.QueryString["EndDate"], Request.QueryString["ProductID"]);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/common_code/DbReportData.cs b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/common_code/DbReportData.cs
new file mode 100644
index 0000000..ea7afbb
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/common_code/DbReportData.cs
@@ -0,0 +1,194 @@
+///下面三个编译条件参数指定产生报表数据需要连接的数据库。如果都不定义,则用 OLEDB 数据驱动连接数据库
+///编译条件参数定义在项目属性的“生成->条件编译符号”里更合适,这样可以为整个项目使用
+///_OLEDB_REPORT_DS:指定用 OLEDB 数据驱动连接数据库
+///_MSSQL_REPORT_DS:指定用 Microsoft SQL Server 数据驱动连接数据库
+///_ORACLE_REPORT_DS:指定用 Oracle 数据驱动连接数据库
+#define _OLEDB_REPORT_DS
+//#define _MSSQL_REPORT_DS
+//#define _ORACLE_REPORT_DS
+
+using System;
+using System.Collections;
+using System.Data;
+using System.Web;
+
+namespace GridReport
+{
+
+#if _ORACLE_REPORT_DS
+//using System.Data.OracleClient;
+using MyDbConnection = System.Data.OracleClient.OracleConnection;
+using MyDbCommand = System.Data.OracleClient.OracleCommand;
+using MyDbDataReader = System.Data.OracleClient.OracleDataReader;
+using MyDbDataAdapter = System.Data.OracleClient.OracleDataAdapter;
+#elif _MSSQL_REPORT_DS
+//using System.Data.SqlClient;
+using MyDbConnection = System.Data.SqlClient.SqlConnection;
+using MyDbCommand = System.Data.SqlClient.SqlCommand;
+using MyDbDataReader = System.Data.SqlClient.SqlDataReader;
+using MyDbDataAdapter = System.Data.SqlClient.SqlDataAdapter;
+#else
+//using System.Data.OleDb;
+using MyDbConnection = System.Data.OleDb.OleDbConnection;
+using MyDbCommand = System.Data.OleDb.OleDbCommand;
+using MyDbDataReader = System.Data.OleDb.OleDbDataReader;
+using MyDbDataAdapter = System.Data.OleDb.OleDbDataAdapter;
+#endif //#ifdef OLE_DB
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //class DatabaseReportData 产生提供给报表生成需要的 XML 或 JSON 数据
+ public class DatabaseReportData
+ {
+ //★特别提示★:数据库连接串,一定要改为实际的参数值
+#if _ORACLE_REPORT_DS
+ public const string DbConnStr = "Data Source=dbmachine;Persist Security Info=True;User ID=hr;Password=hr;Unicode=True;";
+
+ public const char DateSqlBracketChar = '\'';
+#elif _MSSQL_REPORT_DS
+ //连接SQL Server数据库的连接串,应该修改为与实际一致。如果是运行Grid++Report本身的例子,应该首先附加例子数据库到
+ //SQL Server2000/2005数据库上。
+ public const string DbConnStr = "Data Source=(local);Initial Catalog=gridreport;Persist Security Info=True;User ID=sa;Password=;";
+
+ //定义在SQL中表示日期值的包围符号,Access用“#”, 而MS SQl Server用“'”,为了生成两者都可用的查询SQL语句,将其参数化定义出来。这样处理只是为了演示例子方便
+ public const char DateSqlBracketChar = '\'';
+#else
+ //连接Grid++Report Access例子数据库的连接串,应该修改为与实际一致,如果安装目录不在C:\Grid++Report 6,应进行修改。
+ //如果是运行为64位程序,连接串应该改为64位的,Provider为“Microsoft.ACE.OLEDB.12.0”
+ //另64位的驱动不是Windows系统自带的,需要从微软官网下载安装,具体见帮助文档“开发指南->报表数据源->设计时报表数据源->连接 Access”中的说明
+ //如果WEB服务器是64位的,则 Grid++Report 的报表服务器程序也是64位的,其连接串也要相应的改为用64位的
+ public const string DbConnStr = @"Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Grid++Report 6\Samples\Data\Northwind.mdb"; //32位报表服务器程序连接串
+ //public const string DbConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Grid++Report 6\Samples\Data\Northwind.mdb"; //64位报表服务器程序连接串
+
+ //定义在SQL中表示日期值的包围符号,Access用“#”, 而MS SQl Server用“'”,为了生成两者都可用的查询SQL语句,将其参数化定义出来。这样处理只是为了演示例子方便
+ public const char DateSqlBracketChar = '#';
+#endif //#ifdef OLE_DB
+
+ //根据查询SQL,产生提供给报表生成需要的 XML 数据,字段值为空也产生数据
+ public static void FullGenNodeXmlData(HttpResponse Response, string QuerySQL, bool ToCompress)
+ {
+ MyDbCommand ReportDataCommand = new MyDbCommand(QuerySQL, ReportConn);
+ MyDbDataReader ReportDataReader = ReportDataCommand.ExecuteReader();
+ string Text = XMLReportData.FromDataReader(ReportDataReader);
+ GridReportDataResponse.Response(Response, Text, ToCompress ? ResponseDataType.ZipBinary : ResponseDataType.PlainText);
+ }
+
+ //获取 Count(*) SQL 查询到的数据行数。参数 QuerySQL 指定获取报表数据的查询SQL
+ public static int BatchGetDataCount(string QuerySQL)
+ {
+ int Total = 0;
+
+ MyDbCommand ReportDataCommand = new MyDbCommand(QuerySQL, ReportConn);
+ MyDbDataReader ReportDataReader = ReportDataCommand.ExecuteReader();
+ if (ReportDataReader.Read())
+ Total = ReportDataReader.GetInt32(0);
+
+ return Total;
+ }
+
+ #region protected function
+ private static object dbcLock = new Object();
+
+ private static MyDbConnection _ReportConn = null;
+
+ protected static MyDbConnection ReportConn
+ {
+ get
+ {
+ lock (dbcLock)
+ {
+ if (_ReportConn == null)
+ {
+ _ReportConn = new MyDbConnection(DbConnStr);
+ _ReportConn.Open();
+ }
+ }
+ return _ReportConn;
+ }
+ }
+ #endregion protected function
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //class DatabaseXmlReportData 根据SQL产生报表需要的 XML 数据
+ public class DatabaseXmlReportData : DatabaseReportData
+ {
+ public static string TextFromOneSQL(string QuerySQL)
+ {
+ DataSet ReportDataSet = new DataSet();
+
+ MyDbDataAdapter ReportDataAdapter = new MyDbDataAdapter(QuerySQL, ReportConn);
+
+ ReportDataAdapter.Fill(ReportDataSet);
+
+ return XMLReportData.FromDataSet(ReportDataSet);
+ }
+
+ public static string TextFromMultiSQL(ArrayList QueryList)
+ {
+ DataSet ReportDataSet = new DataSet();
+
+ foreach (ReportQueryItem item in QueryList)
+ {
+ MyDbDataAdapter DataAdapter = new MyDbDataAdapter(item.QuerySQL, ReportConn);
+
+ DataAdapter.Fill(ReportDataSet, item.RecordsetName);
+ }
+
+ return XMLReportData.FromDataSet(ReportDataSet);
+ }
+
+ public static void GenOneRecordset(HttpResponse Response, string QuerySQL)
+ {
+ string Text = TextFromOneSQL(QuerySQL);
+ GridReportDataResponse.Response(Response, Text, GridReportDataResponse.DefaultDataType);
+ }
+
+ public static void GenMultiRecordset(HttpResponse Response, ArrayList QueryList)
+ {
+ string Text = TextFromMultiSQL(QueryList);
+ GridReportDataResponse.Response(Response, Text, GridReportDataResponse.DefaultDataType);
+ }
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //class DatabaseJsonReportData 根据SQL产生报表需要的 JSON 数据
+ public class DatabaseJsonReportData : DatabaseReportData
+ {
+ public static string TextFromOneSQL(string QuerySQL)
+ {
+ DataSet ReportDataSet = new DataSet();
+
+ MyDbDataAdapter ReportDataAdapter = new MyDbDataAdapter(QuerySQL, ReportConn);
+
+ ReportDataAdapter.Fill(ReportDataSet);
+
+ return JSONReportData.FromDataSet(ReportDataSet);
+ }
+
+ public static string TextFromMultiSQL(ArrayList QueryList)
+ {
+ DataSet ReportDataSet = new DataSet();
+
+ foreach (ReportQueryItem item in QueryList)
+ {
+ MyDbDataAdapter DataAdapter = new MyDbDataAdapter(item.QuerySQL, ReportConn);
+
+ DataAdapter.Fill(ReportDataSet, item.RecordsetName);
+ }
+
+ return JSONReportData.FromDataSet(ReportDataSet);
+ }
+
+ public static void GenOneRecordset(HttpResponse Response, string QuerySQL)
+ {
+ string Text = TextFromOneSQL(QuerySQL);
+ GridReportDataResponse.Response(Response, Text, GridReportDataResponse.DefaultDataType);
+ }
+
+ public static void GenMultiRecordset(HttpResponse Response, ArrayList QueryList)
+ {
+ string Text = TextFromMultiSQL(QueryList);
+ GridReportDataResponse.Response(Response, Text, GridReportDataResponse.DefaultDataType);
+ }
+ }
+}
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/common_code/ReportData.cs b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/common_code/ReportData.cs
new file mode 100644
index 0000000..73ccfdf
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/common_code/ReportData.cs
@@ -0,0 +1,239 @@
+using System;
+using System.Text;
+using System.Data;
+using System.IO;
+using System.IO.Compression;
+using System.Web;
+
+namespace GridReport
+{
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //以下枚举指定报表数据的格式类型
+ public enum ResponseDataType
+ {
+ PlainText, //报表数据为XML或JSON文本,在调试时可以查看报表数据。数据未经压缩,大数据量报表采用此种方式不合适
+ ZipBinary, //报表数据为XML或JSON文本经过压缩得到的二进制数据。此种方式数据量最小(约为原始数据的1/10),但用Ajax方式加载报表数据时不能为此种方式
+ ZipBase64, //报表数据为将 ZipBinary 方式得到的数据再进行 BASE64 编码的数据。此种方式适合用Ajax方式加载报表数据
+ };
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // ReportQueryItem
+ public class ReportQueryItem
+ {
+ public string QuerySQL;
+ public string RecordsetName;
+
+ public ReportQueryItem(string AQuerySQL, string ARecordsetName)
+ {
+ QuerySQL = AQuerySQL;
+ RecordsetName = ARecordsetName;
+ }
+ };
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // GridReportDataResponse
+ public class GridReportDataResponse
+ {
+ //指定报表的默认数据类型,便于统一定义整个报表系统的数据类型
+ //在报表开发调试阶段,通常指定为 ResponseDataType.PlainText, 以便在浏览器中查看响应的源文件时能看到可读的文本数据
+ //在项目部署时,通常指定为 ResponseDataType.ZipBinary 或 ResponseDataType.ZipBase64,这样可以极大减少数据量,提供报表响应速度
+ public const ResponseDataType DefaultDataType = ResponseDataType.PlainText; //PlainText ZipBinary ZipBase64
+
+ //将报表XML数据文本输出到HTTP请求
+ public static void Response(HttpResponse Response, string DataText, ResponseDataType DataType)
+ {
+ //报表XML数据的前后不能附加任何其它数据,否则XML数据将不能成功解析,所以调用ClearContent方法清理网页中前面多余的数据
+ Response.ClearContent();
+
+ if (ResponseDataType.PlainText == DataType)
+ {
+ // 把 xml 或 json 文本响应给客户端
+ //Response.ContentType = "text/xml";
+ Response.ContentType = "text/plain";
+ Response.Write(DataText);
+ }
+ else
+ {
+ //将string数据转换为byte[],以便进行压缩
+ System.Text.UTF8Encoding converter = new System.Text.UTF8Encoding();
+ byte[] XmlBytes = converter.GetBytes(DataText);
+
+ //在 HTTP 头信息中写入报表数据压缩信息
+ Response.AppendHeader("gr_zip_type", "deflate"); //指定压缩方法
+ Response.AppendHeader("gr_zip_size", XmlBytes.Length.ToString()); //指定数据的原始长度
+ Response.AppendHeader("gr_zip_encode", converter.HeaderName); //指定数据的编码方式 utf-8 utf-16 ...
+
+ // 把压缩后的xml数据发送给客户端
+ if (ResponseDataType.ZipBinary == DataType)
+ {
+ DeflateStream compressedzipStream = new DeflateStream(Response.OutputStream, CompressionMode.Compress, true);
+ compressedzipStream.Write(XmlBytes, 0, XmlBytes.Length);
+ compressedzipStream.Close();
+ }
+ else //ResponseDataType.ZipBase64
+ {
+ MemoryStream memStream = new MemoryStream();
+ DeflateStream compressedzipStream = new DeflateStream(memStream, CompressionMode.Compress, true);
+ compressedzipStream.Write(XmlBytes, 0, XmlBytes.Length);
+ compressedzipStream.Close(); //这句很重要,这样数据才能全部写入 MemoryStream
+
+ // Read bytes from the stream.
+ memStream.Seek(0, SeekOrigin.Begin); // Set the position to the beginning of the stream.
+ int count = (int)memStream.Length;
+ byte[] byteArray = new byte[count];
+ count = memStream.Read(byteArray, 0, count);
+
+ string Base64Text = Convert.ToBase64String(byteArray);
+ Response.ContentType = "text/plain";
+ Response.Write(Base64Text);
+ }
+ }
+
+ //报表XML数据的前后不能附加任何其它数据,否则XML数据将不能成功解析,所以调用End方法放弃网页中后面不必要的数据
+ Response.End();
+ }
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //class XMLReportData 产生报表需要的xml数据
+ public class XMLReportData
+ {
+ //根据 DataSet 产生提供给报表需要的XML文本数据
+ public static string FromDataSet(DataSet ReportDataSet)
+ {
+ return ReportDataSet.GetXml();
+ }
+
+ //根据 DataTable 产生提供给报表需要的XML文本数据
+ public static string FromDataTable(DataTable mydt)
+ {
+ DataSet ds = new DataSet();
+ ds.Tables.Add(mydt);
+ return FromDataSet(ds);
+ }
+
+ //根据IDataReader, 产生提供给报表需要的XML文本数据
+ public static string FromDataReader(IDataReader dr)
+ {
+ string XMLText = "\n";
+ while (dr.Read())
+ {
+ XMLText += "";
+ for (int i = 0; i < dr.FieldCount; ++i)
+ {
+ string FldName = dr.GetName(i);
+ if (FldName == "")
+ FldName = "Fld" + i;
+ XMLText += String.Format("<{0}>{1}{0}>", FldName, HttpUtility.HtmlEncode(dr.GetValue(i).ToString()));
+ }
+ XMLText += "
\n";
+ }
+ XMLText += "\n";
+
+ return XMLText;
+ }
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //class JSONReportData 产生报表需要的 JSON 格式数据
+ public class JSONReportData
+ {
+ //根据 DataSet 产生提供给报表需要的JSON文本数据
+ public static string FromDataSet(DataSet ds)
+ {
+ //如果这里编译不过,请将项目属性的“生成->目标 Framework”设置为“.Net FrameWork4”或更高版本
+ System.ServiceModel.Dispatcher.JsonQueryStringConverter jqsc = new System.ServiceModel.Dispatcher.JsonQueryStringConverter();
+
+ StringBuilder sbJSONText = new StringBuilder("{\n");
+ foreach (DataTable dt in ds.Tables)
+ {
+ //"recordset":[
+ sbJSONText.Append('"');
+ sbJSONText.Append(dt.TableName);
+ sbJSONText.Append("\":[\n");
+ foreach (DataRow dr in dt.Rows)
+ {
+ sbJSONText.Append('{');
+ for (int i = 0; i < dt.Columns.Count; ++i)
+ {
+ if (!dr.IsNull(i))
+ {
+ //用 ConvertValueToString 转换,这样数字类型才不会加引号
+ //如果日期类型也用ConvertValueToString转换,则为 "\/Date(-152438400000+0800)\/" 这样的形式
+ string Value;
+ if (dt.Columns[i].DataType.IsArray)
+ {
+ Value = "\"" + Convert.ToBase64String((byte[])dr[i]) + "\"";
+ }
+ else if (dt.Columns[i].DataType == typeof(System.DateTime))
+ {
+ Value = "\"" + dr[i].ToString() + "\"";
+ }
+ else
+ {
+ Value = jqsc.ConvertValueToString(dr[i], dt.Columns[i].DataType);
+ }
+ sbJSONText.AppendFormat("\"{0}\":{1},", dt.Columns[i].ColumnName, Value);
+ }
+ }
+ sbJSONText.Remove(sbJSONText.Length - 1, 1); //去掉每笔记录最后一个字段后面的","
+ sbJSONText.Append("},\n");
+ }
+ if (dt.Rows.Count > 0) //如果无明细记录,则不要回退
+ sbJSONText.Remove(sbJSONText.Length - 2, 1); //去掉最后一条记录后面的","
+ sbJSONText.Append("],\n");
+ }
+ sbJSONText.Remove(sbJSONText.Length - 2, 1); //去掉最后一记录集后面的","
+ sbJSONText.Append("}");
+
+ return sbJSONText.ToString();
+ }
+
+ //根据 DataTable 产生提供给报表需要的JSON文本数据
+ public static string FromDataTable(DataTable dt)
+ {
+ DataSet ds = new DataSet();
+ ds.Tables.Add(dt);
+ return FromDataSet(ds);
+ }
+
+ ////如果数据中包含有JSON规范中的特殊字符(" \ \r \n \t),多特殊字符加 \ 编码
+ //public static void PrepareValueText(ref string ValueText)
+ //{
+ // bool HasSpecialChar = false;
+ // foreach(char ch in ValueText)
+ // {
+ // if (ch == '"' || ch == '\\' || ch == '\r' || ch == '\n' || ch == '\t')
+ // {
+ // HasSpecialChar = true;
+ // break;
+ // }
+ // }
+ // if (HasSpecialChar)
+ // {
+ // StringBuilder NewValueText = new StringBuilder();
+ // foreach (char ch in ValueText)
+ // {
+ // if (ch == '"' || ch == '\\' || ch == '\r' || ch == '\n' || ch == '\t')
+ // {
+ // NewValueText.Append( '\\');
+ // if (ch == '"' || ch == '\\')
+ // NewValueText.Append( ch );
+ // else if (ch == '\r')
+ // NewValueText.Append( 'r' );
+ // else if (ch == '\n')
+ // NewValueText.Append( 'n' );
+ // else if (ch == '\t')
+ // NewValueText.Append( 't' );
+ // }
+ // else
+ // {
+ // NewValueText.Append( ch );
+ // }
+ // }
+ // ValueText = NewValueText.ToString();
+ // }
+ //}
+ }
+}
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/1.grf b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/1.grf
new file mode 100644
index 0000000..d0db8d9
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/1.grf
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/2.grf b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/2.grf
new file mode 100644
index 0000000..918b3a1
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/2.grf
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/3.grf b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/3.grf
new file mode 100644
index 0000000..d616d2d
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/3.grf
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/4.grf b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/4.grf
new file mode 100644
index 0000000..baf925b
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/4.grf
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/5.grf b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/5.grf
new file mode 100644
index 0000000..59866e1
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/5.grf
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/6.grf b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/6.grf
new file mode 100644
index 0000000..fcc0e79
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/6.grf
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/C8-头枕.grf b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/C8-头枕.grf
new file mode 100644
index 0000000..05d4e4b
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/C8-头枕.grf
@@ -0,0 +1,353 @@
+{
+ "Version":"6.6.2.0",
+ "Font":{
+ "Name":"宋体",
+ "Size":105000,
+ "Weight":400,
+ "Charset":134
+ },
+ "Printer":{
+ },
+ "DetailGrid":{
+ "Recordset":{
+ "Field":[
+ {
+ "Name":"knr"
+ },
+ {
+ "Name":"vin"
+ },
+ {
+ "Name":"partcode1"
+ },
+ {
+ "Name":"partcode2"
+ },
+ {
+ "Name":"sn"
+ }
+ ]
+ },
+ "Column":[
+ {
+ "Name":"knr"
+ },
+ {
+ "Name":"vin"
+ },
+ {
+ "Name":"partcode1"
+ },
+ {
+ "Name":"partcode2"
+ },
+ {
+ "Name":"sn"
+ }
+ ],
+ "ColumnContent":{
+ "Height":1.79917,
+ "ColumnContentCell":[
+ {
+ "Column":"knr",
+ "DataField":"knr"
+ },
+ {
+ "Column":"vin",
+ "DataField":"vin"
+ },
+ {
+ "Column":"partcode1",
+ "DataField":"partcode1"
+ },
+ {
+ "Column":"partcode2",
+ "DataField":"partcode2"
+ },
+ {
+ "Column":"sn",
+ "DataField":"sn"
+ }
+ ]
+ },
+ "ColumnTitle":{
+ "Height":0.608542,
+ "ColumnTitleCell":[
+ {
+ "GroupTitle":false,
+ "Column":"knr",
+ "TextAlign":"MiddleCenter",
+ "Text":"kin号"
+ },
+ {
+ "GroupTitle":false,
+ "Column":"vin",
+ "TextAlign":"MiddleCenter",
+ "Text":"底盘号"
+ },
+ {
+ "GroupTitle":false,
+ "Column":"partcode1",
+ "TextAlign":"MiddleCenter",
+ "Text":"顶部饰板"
+ },
+ {
+ "GroupTitle":false,
+ "Column":"partcode2",
+ "TextAlign":"MiddleCenter",
+ "Text":"头枕"
+ },
+ {
+ "GroupTitle":false,
+ "Column":"sn",
+ "TextAlign":"MiddleCenter",
+ "Text":"序号"
+ }
+ ]
+ }
+ },
+ "Parameter":[
+ {
+ "Name":"vehicleModel"
+ },
+ {
+ "Name":"billNum"
+ },
+ {
+ "Name":"billSerialNum"
+ },
+ {
+ "Name":"printDate"
+ },
+ {
+ "Name":"productLine"
+ },
+ {
+ "Name":"beginVin"
+ },
+ {
+ "Name":"endVin"
+ },
+ {
+ "Name":"knr"
+ },
+ {
+ "Name":"partCode1"
+ },
+ {
+ "Name":"partCode2"
+ },
+ {
+ "Name":"sn"
+ },
+ {
+ "Name":"partCode3"
+ },
+ {
+ "Name":"partCode5"
+ },
+ {
+ "Name":"vin"
+ }
+ ],
+ "ReportHeader":[
+ {
+ "Name":"ReportHeader1",
+ "Height":1.79917,
+ "Control":[
+ {
+ "Type":"FreeGrid",
+ "Name":"FreeGrid2",
+ "Left":0.079375,
+ "Top":0.3175,
+ "Border":{
+ "Styles":"[DrawLeft|DrawTop|DrawRight|DrawBottom]"
+ },
+ "ColumnCount":6,
+ "RowCount":2,
+ "FreeGridColumn":[
+ {
+ "index":1,
+ "Width":1.5875
+ },
+ {
+ "index":2,
+ "Width":1.08479
+ },
+ {
+ "index":4,
+ "Width":5.18583
+ },
+ {
+ "index":5,
+ "Width":0.211667
+ },
+ {
+ "index":6,
+ "Width":4.07458
+ }
+ ],
+ "FreeGridRow":[
+ ],
+ "FreeGridCell":[
+ {
+ "row":1,
+ "col":1,
+ "FreeCell":true,
+ "Control":[
+ {
+ "Type":"StaticBox",
+ "Name":"StaticBox1",
+ "Width":3.41313,
+ "Height":0.608542,
+ "Text":"GRAMMER-"
+ }
+ ]
+ },
+ {
+ "row":1,
+ "col":2,
+ "Text":"[#{vehicleModel}#]"
+ },
+ {
+ "row":1,
+ "col":3,
+ "FreeCell":true,
+ "Control":[
+ {
+ "Type":"MemoBox",
+ "Name":"MemoBox1",
+ "Left":1.19063,
+ "Width":6.40292,
+ "Height":0.396875,
+ "Font":{
+ "Name":"宋体",
+ "Size":142500,
+ "Bold":true,
+ "Charset":134
+ },
+ "Text":"[#{billNum}#]"
+ }
+ ],
+ "ColSpan":2
+ },
+ {
+ "row":1,
+ "col":5,
+ "FreeCell":true
+ },
+ {
+ "row":1,
+ "col":6,
+ "FreeCell":true,
+ "Control":[
+ {
+ "Type":"Barcode",
+ "Name":"Barcode2",
+ "Left":0.211667,
+ "Width":2.59292,
+ "Height":0.608542
+ }
+ ]
+ },
+ {
+ "row":2,
+ "col":1,
+ "FreeCell":true
+ },
+ {
+ "row":2,
+ "col":3,
+ "FreeCell":true
+ },
+ {
+ "row":2,
+ "col":4,
+ "FreeCell":true
+ },
+ {
+ "row":2,
+ "col":5,
+ "FreeCell":true
+ },
+ {
+ "row":2,
+ "col":6,
+ "FreeCell":true,
+ "Control":[
+ {
+ "Type":"MemoBox",
+ "Name":"MemoBox2",
+ "Left":0.396875,
+ "Width":2.59292,
+ "Height":0.396875,
+ "Text":"[#{billNum}#]"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "ReportFooter":[
+ {
+ "Name":"ReportFooter1",
+ "Height":3.20146,
+ "Control":[
+ {
+ "Type":"FreeGrid",
+ "Name":"FreeGrid4",
+ "Left":0.0264583,
+ "Top":0.3175,
+ "Border":{
+ "Styles":"[DrawLeft|DrawTop|DrawRight|DrawBottom]"
+ },
+ "RowCount":2,
+ "FreeGridColumn":[
+ {
+ "index":2,
+ "Width":2.43417
+ },
+ {
+ "index":3,
+ "Width":4.60375
+ },
+ {
+ "index":4,
+ "Width":1.74625
+ },
+ {
+ "index":5,
+ "Width":3.57188
+ }
+ ],
+ "FreeGridRow":[
+ {
+ "index":2,
+ "Height":1.5875
+ }
+ ],
+ "FreeGridCell":[
+ {
+ "row":2,
+ "col":3,
+ "Font":{
+ "Name":"宋体",
+ "Size":180000,
+ "Bold":true,
+ "Charset":134
+ },
+ "Text":"[#{billSerialNum}#]"
+ },
+ {
+ "row":2,
+ "col":5,
+ "Text":"[#{printDate}#]"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/C8-扶手.grf b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/C8-扶手.grf
new file mode 100644
index 0000000..60e02a2
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/C8-扶手.grf
@@ -0,0 +1 @@
+BASE64QBYAAHicvVdNj9tEGD6nUv+Eew2WPf6I01uzy24PTYWSVXtYRciNp7sjHDsaO3RLyZFD1UMPCKlSxQEhrogTSCDEn2EXOPEXmBnPjL9mHDcb0UPjfT9n3vd5P+bf3/54dffOwHgCcYbSxLhv+KZvAtMyhpR8kia5cZ9KDIzH4QoS/vWPb/78/WvGHhhz9AWh2ZZnWVZBeQrRxSXRcQXh6DLEGSQU23EJYcvsfoJRkkNcmC5IxzAPUXyKUSQczuAyxRHTZQRyHARjwj5nfw0KYnmyzxJsFCRmUSHxOUp2SKxDnC/TCNo95cAOuUw6ZD8L+v+WByaNN6tE3IYrtu7CDTfY8iJqduMW3UKgS0icnx1/UT34EYEGTMrcPOSJt83ReGyPCmt12SMYx+3siTiwOw8F9TjMQ57ursRKZRoRpXJHzqVyGS+liZ2gaBkC3Ya0qJGGMs1tduLpDOUxbCXFMn0r8FxQywoTVefkFKebNTf1PIwzOOzO1hm8yh/E6IIypiiKqF1W4DUJqoWS67e/6K7fw20tz73dXv/6zV/v393OswIkvf3fvP755vWbAzgHezj/+/uv/vnhp5tvv7uF/2y/qL+thLwC2HIOhJj0GTYJGAQ5bEWXg5doGcMpuXf86THK1kYJ97rkMxTHjzerTv4cYhR2Sq3pVCLVBjsk0mizzB+hRC/zDF6g5AnvOioBmERdbNHtlP4JDI5kJ+qSAFqJTO9aKDs7JTythOi3NMlsYJA5vk5x/hCGkSbPVQFRXdp5kuQ4VXSss5drauoEQ8h2CIlF7kMwKgX0CD5nrdEajZ2RV4I3XVOqY1doE7KIiHWloMzzlzHMiOHzYxy+oKa+pB9Emf3O6OHZ1yTN83S14FUgi68cjRs6RH1JnqUvOA1Imjh8fWWoXJ/IoCSCVyRcw5L0FEX5JY2gF4w8QZYHUCgDlbIVuKNxH223re2ZduAFTh9tr61tmcC2fX/UR91vq7sks64XSG3+sWiFlYS8jGmbXRuRNd+YKlYjvqTQrBKojUI/xxtYYTSBXLdcAnqehzlaTtIrY1jlclRLrl1n8wg4pms7tlNjqVcC4bRo3KezB9Ppx7OPjJK3lZ+LznSoQ1IFFvdxfu9Vq79v78k6+RDrziEDPoWrVBduzmsEu+gjtmmPLd9RpcE3XQuMgSYNztgPRl6NWXl2NY9QfX5JHn+GucDjry7JmaR0bayHYtB+lYl/WxUaSKb4fK3mpwaJWpzj+TokTQrskUlPm8k9jPmHhMUkxHT/UsKC84AKFqKHqXABTG+sx0VRnntWIGgGQ9+U9jCmL7g9jLmHNHYbALWMHRRAPfqKBkCKBtELQAq9/hXdmprFb2OLry54J2mqW+SrAq0FzzGBZbv+oRY8V7HgAZ/sARK0/9uGd8tVTrGNAdN1XLvXQuS0tV3SU5x+m6BilyOLuOuDXtqKXc4xvZEdfOgytiMq5RuhtuFqbe/Y5Lr7XHMm6yeymMeBZdXmsXoaq2dxZRI3qla+Y/ttS50tsrQs3741q93Ff/fO9j/5TWYU
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/Q5NF.grf b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/Q5NF.grf
new file mode 100644
index 0000000..9b27cc9
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/Q5NF.grf
@@ -0,0 +1,355 @@
+{
+ "Version":"6.6.2.0",
+ "Font":{
+ "Name":"宋体",
+ "Size":105000,
+ "Weight":400,
+ "Charset":134
+ },
+ "Printer":{
+ },
+ "DetailGrid":{
+ "Recordset":{
+ "Field":[
+ {
+ "Name":"knr"
+ },
+ {
+ "Name":"vin"
+ },
+ {
+ "Name":"partcode1"
+ },
+ {
+ "Name":"partcode2"
+ },
+ {
+ "Name":"sn"
+ }
+ ]
+ },
+ "Column":[
+ {
+ "Name":"knr"
+ },
+ {
+ "Name":"vin",
+ "Width":5.37104
+ },
+ {
+ "Name":"partcode1",
+ "Width":5.60917
+ },
+ {
+ "Name":"sn",
+ "Width":1.19063
+ }
+ ],
+ "ColumnContent":{
+ "Height":1.79917,
+ "ColumnContentCell":[
+ {
+ "Column":"knr",
+ "DataField":"knr"
+ },
+ {
+ "Column":"vin",
+ "DataField":"vin"
+ },
+ {
+ "Column":"partcode1",
+ "DataField":"partcode1"
+ },
+ {
+ "Column":"sn",
+ "DataField":"sn"
+ }
+ ]
+ },
+ "ColumnTitle":{
+ "Height":0.608542,
+ "ColumnTitleCell":[
+ {
+ "GroupTitle":false,
+ "Column":"knr",
+ "TextAlign":"MiddleCenter",
+ "Text":"kin号"
+ },
+ {
+ "GroupTitle":false,
+ "Column":"vin",
+ "TextAlign":"MiddleCenter",
+ "Text":"底盘号"
+ },
+ {
+ "GroupTitle":false,
+ "Column":"partcode1",
+ "TextAlign":"MiddleCenter",
+ "Text":"顶部饰板"
+ },
+ {
+ "GroupTitle":false,
+ "Column":"sn",
+ "TextAlign":"MiddleCenter",
+ "Text":"序号"
+ }
+ ]
+ }
+ },
+ "Parameter":[
+ {
+ "Name":"vehicleModel"
+ },
+ {
+ "Name":"billNum"
+ },
+ {
+ "Name":"billSerialNum"
+ },
+ {
+ "Name":"printDate"
+ },
+ {
+ "Name":"productLine"
+ },
+ {
+ "Name":"beginVin"
+ },
+ {
+ "Name":"endVin"
+ },
+ {
+ "Name":"knr"
+ },
+ {
+ "Name":"partCode1"
+ },
+ {
+ "Name":"partCode2"
+ },
+ {
+ "Name":"sn"
+ },
+ {
+ "Name":"partCode3"
+ },
+ {
+ "Name":"partCode5"
+ },
+ {
+ "Name":"vin"
+ },
+ {
+ "Name":"direction"
+ }
+ ],
+ "ReportHeader":[
+ {
+ "Name":"ReportHeader1",
+ "Height":1.79917,
+ "Control":[
+ {
+ "Type":"FreeGrid",
+ "Name":"FreeGrid2",
+ "Left":0.079375,
+ "Top":0.3175,
+ "Border":{
+ "Styles":"[DrawLeft|DrawTop|DrawRight|DrawBottom]"
+ },
+ "ColumnCount":7,
+ "RowCount":2,
+ "FreeGridColumn":[
+ {
+ "index":1,
+ "Width":1.5875
+ },
+ {
+ "index":2,
+ "Width":1.08479
+ },
+ {
+ "index":4,
+ "Width":4.60375
+ },
+ {
+ "index":5,
+ "Width":0.211667
+ },
+ {
+ "index":6,
+ "Width":3.41313
+ },
+ {
+ "index":7,
+ "Width":1.24354
+ }
+ ],
+ "FreeGridRow":[
+ ],
+ "FreeGridCell":[
+ {
+ "row":1,
+ "col":1,
+ "FreeCell":true,
+ "Control":[
+ {
+ "Type":"StaticBox",
+ "Name":"StaticBox1",
+ "Width":3.41313,
+ "Height":0.608542,
+ "Text":"GRAMMER-"
+ }
+ ]
+ },
+ {
+ "row":1,
+ "col":2,
+ "Text":"[#{vehicleModel}#]"
+ },
+ {
+ "row":1,
+ "col":3,
+ "FreeCell":true,
+ "Control":[
+ {
+ "Type":"MemoBox",
+ "Name":"MemoBox1",
+ "Left":1.19063,
+ "Width":6.40292,
+ "Height":0.396875,
+ "Font":{
+ "Name":"宋体",
+ "Size":142500,
+ "Bold":true,
+ "Charset":134
+ },
+ "Text":"[#{billNum}#]"
+ }
+ ],
+ "ColSpan":2
+ },
+ {
+ "row":1,
+ "col":5,
+ "FreeCell":true
+ },
+ {
+ "row":1,
+ "col":6,
+ "FreeCell":true,
+ "Control":[
+ {
+ "Type":"Barcode",
+ "Name":"Barcode2",
+ "Left":0.211667,
+ "Width":2.59292,
+ "Height":0.608542
+ }
+ ]
+ },
+ {
+ "row":1,
+ "col":7,
+ "Text":"[#{direction}#]"
+ },
+ {
+ "row":2,
+ "col":1,
+ "FreeCell":true
+ },
+ {
+ "row":2,
+ "col":3,
+ "FreeCell":true
+ },
+ {
+ "row":2,
+ "col":4,
+ "FreeCell":true
+ },
+ {
+ "row":2,
+ "col":5,
+ "FreeCell":true
+ },
+ {
+ "row":2,
+ "col":6,
+ "FreeCell":true,
+ "Control":[
+ {
+ "Type":"MemoBox",
+ "Name":"MemoBox2",
+ "Left":0.396875,
+ "Width":2.59292,
+ "Height":0.396875,
+ "Text":"[#{billNum}#]"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "ReportFooter":[
+ {
+ "Name":"ReportFooter1",
+ "Height":3.20146,
+ "Control":[
+ {
+ "Type":"FreeGrid",
+ "Name":"FreeGrid4",
+ "Left":0.0264583,
+ "Top":0.3175,
+ "Border":{
+ "Styles":"[DrawLeft|DrawTop|DrawRight|DrawBottom]"
+ },
+ "RowCount":2,
+ "FreeGridColumn":[
+ {
+ "index":2,
+ "Width":2.43417
+ },
+ {
+ "index":3,
+ "Width":4.60375
+ },
+ {
+ "index":4,
+ "Width":1.74625
+ },
+ {
+ "index":5,
+ "Width":3.57188
+ }
+ ],
+ "FreeGridRow":[
+ {
+ "index":2,
+ "Height":1.5875
+ }
+ ],
+ "FreeGridCell":[
+ {
+ "row":2,
+ "col":3,
+ "Font":{
+ "Name":"宋体",
+ "Size":180000,
+ "Bold":true,
+ "Charset":134
+ },
+ "Text":"[#{billSerialNum}#]"
+ },
+ {
+ "row":2,
+ "col":5,
+ "Text":"[#{printDate}#]"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/menban.grf b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/menban.grf
new file mode 100644
index 0000000..2203a83
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/menban.grf
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/zhuhuban.grf b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/zhuhuban.grf
new file mode 100644
index 0000000..583c7ba
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/grf/zhuhuban.grf
@@ -0,0 +1 @@
+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
\ No newline at end of file
diff --git a/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/packages.config b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/packages.config
new file mode 100644
index 0000000..08df8e6
--- /dev/null
+++ b/Modules/WebApplicationGridJJReport/WebApplicationGridJJReport/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/Extends/MenBanReports/MenBanPackingListDto.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/Extends/MenBanReports/MenBanPackingListDto.cs
index de20e8e..9db318d 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/Extends/MenBanReports/MenBanPackingListDto.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/Extends/MenBanReports/MenBanPackingListDto.cs
@@ -32,6 +32,10 @@ namespace WY.NewJit.Extends
///
public string VehicleModel { get; set; }
+ ///
+ /// 报表显示车型
+ ///
+ public string VehicleModel_Disp { get; set; }
///
/// 供应商厂家代码
@@ -106,7 +110,10 @@ namespace WY.NewJit.Extends
///
public string EndHostSN { set; get; }
-
+ ///
+ /// 排序字段
+ ///
+ public int SN { get; set; }
public MenBanPackingListDto()
{
@@ -155,6 +162,23 @@ namespace WY.NewJit.Extends
}
+ public class MenBanPackingListResultDto
+ {
+ public List MainList1 { get; set; }
+
+ public List MainList2 { get; set; }
+
+ public List DetailList1 { get; set; }
+
+ public List DetailList2 { get; set; }
+ public MenBanPackingListResultDto()
+ {
+ MainList1 = new List();
+ MainList2 = new List();
+ DetailList1 = new List();
+ DetailList2 = new List();
+ }
+ }
}
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/Extends/MenBanReports/MenBanPackingRecDto.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/Extends/MenBanReports/MenBanPackingRecDto.cs
index ba07fbc..e4053fa 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/Extends/MenBanReports/MenBanPackingRecDto.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/Extends/MenBanReports/MenBanPackingRecDto.cs
@@ -75,9 +75,15 @@ namespace WY.NewJit.Extends
///
public virtual string SN { get; set; }
+ ///
+ /// 扫描零件号,供发运使用
+ ///
+ public string ScanPartCode { get; set; }
-
-
+ ///
+ /// 备注
+ ///
+ public string Remark { get; set; }
}
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/Extends/MenBanReports/MenBanPrintInputDto.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/Extends/MenBanReports/MenBanPrintInputDto.cs
index 52e931e..44a433d 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/Extends/MenBanReports/MenBanPrintInputDto.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/Extends/MenBanReports/MenBanPrintInputDto.cs
@@ -37,7 +37,7 @@ namespace WY.NewJit.Extends
///
/// 补打时使用
///
- public virtual List M100IdList { get; set; }
+ //public virtual List M100IdList { get; set; }
#endregion
}
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgBaseData/Dics/Dtos/DicItemDto.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgBaseData/Dics/Dtos/DicItemDto.cs
index 00c8ae9..cdb62f3 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgBaseData/Dics/Dtos/DicItemDto.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgBaseData/Dics/Dtos/DicItemDto.cs
@@ -27,5 +27,65 @@ namespace WY.NewJit.MsgBaseData
/// 字典项名称
///
public string DicItemName { get; set; }
+
+ ///
+ /// 分类1(零件大类对应分组)
+ ///
+ public virtual string DicItemSort1 { get; set; }
+
+ ///
+ /// 分类2 (零件大类对应产线)
+ ///
+ public virtual string DicItemSort2 { get; set; }
+
+ ///
+ /// 分类3(零件大类对应车型)
+ ///
+ public virtual string DicItemSort3 { get; set; }
+
+ ///
+ /// 分类4(零件大类对应打印报表的三位零件大类)
+ ///
+ public virtual string DicItemSort4 { get; set; }
+
+ ///
+ /// 分类5 (零件大类对应客户零件号)
+ ///
+ public virtual string DicItemSort5 { get; set; }
+
+ ///
+ /// 分类6(零件大类对应显示车型)
+ ///
+ public virtual string DicItemSort6 { get; set; }
+
+ ///
+ /// 分类7(零件大类对应报表字段显示顺序)
+ ///
+ public virtual string DicItemSort7 { get; set; }
+
+ ///
+ /// 分类8(零件大类对应装箱清单号的前缀,例如C或T)
+ ///
+ public virtual string DicItemSort8 { get; set; }
+
+ ///
+ /// 分类9(零件大类对应 打印标准数量 12 或 24)
+ ///
+ public virtual string DicItemSort9 { get; set; }
+
+ ///
+ /// 分类10(零件大类对应 是否扫描 1 需要扫描 0 不需要扫描)
+ ///
+ public virtual string DicItemSort10 { get; set; }
+
+ ///
+ ///
+ ///
+ public virtual string DicItemSort11 { get; set; }
+ ///
+ ///
+ ///
+ public virtual string DicItemSort12 { get; set; }
+
}
}
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM100s/Dtos/BillM100Dto.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM100s/Dtos/BillM100Dto.cs
index eab856e..348cf10 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM100s/Dtos/BillM100Dto.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM100s/Dtos/BillM100Dto.cs
@@ -45,14 +45,14 @@ namespace WY.NewJit.MsgCheck
///
/// 总成ID
///
- [ExporterHeader(DisplayName = "总成ID")]
- [ImporterHeader(Name = "总成ID")]
+ [ExporterHeader(IsIgnore =true)]
+ [ImporterHeader(IsIgnore = true)]
public Guid? AssemblyID { get; set; }
///
/// 上线时间
///
- [ExporterHeader(DisplayName = "上线时间")]
+ [ExporterHeader(DisplayName = "上线时间", Format ="yyyy-MM-dd HH:mm")]
[ImporterHeader(Name = "上线时间")]
public DateTime? OnlineTime { get; set; }
@@ -73,14 +73,14 @@ namespace WY.NewJit.MsgCheck
///
/// 版本
///
- [ExporterHeader(DisplayName = "版本")]
- [ImporterHeader(Name = "版本")]
+ [ExporterHeader(IsIgnore = true)]
+ [ImporterHeader(IsIgnore = true)]
public string Version { get; set; }
///
/// 接收时间
///
- [ExporterHeader(DisplayName = "接收时间")]
+ [ExporterHeader(DisplayName = "接收时间", Format = "yyyy-MM-dd HH:mm")]
[ImporterHeader(Name = "接收时间")]
public DateTime? ReceiveTime { get; set; }
@@ -101,28 +101,55 @@ namespace WY.NewJit.MsgCheck
///
/// 涂装重复单据包含的零件列表
///
+ [ExporterHeader(IsIgnore = true)]
+ [ImporterHeader(IsIgnore = true)]
public List BillM100Parts { get; set; }
///
/// 手工操作类型:0 none,1 手工添加,2 手工修改
///
- [ExporterHeader(DisplayName = "手工操作类型")]
- [ImporterHeader(Name = "手工操作类型")]
+ [ExporterHeader(IsIgnore = true)]
+ [ImporterHeader(IsIgnore = true)]
public ManualOperationTypeEnum OperationType { get; set; }
///
/// 手工操作员
///
- [ExporterHeader(DisplayName = "手工操作员")]
- [ImporterHeader(Name = "手工操作员")]
+ [ExporterHeader(IsIgnore = true)]
+ [ImporterHeader(IsIgnore = true)]
public string Operator { get; set; }
///
/// 手工操作日期
///
- [ExporterHeader(DisplayName = "手工操作日期")]
- [ImporterHeader(Name = "手工操作日期")]
+ [ExporterHeader(IsIgnore = true)]
+ [ImporterHeader(IsIgnore = true)]
public DateTime? OperationTime { get; set; }
+ [ExporterHeader(DisplayName = "零件1")]
+ [ImporterHeader(Name = "零件1")]
+ public string PartCode1 { get; set; }
+
+ [ExporterHeader(DisplayName = "零件2")]
+ [ImporterHeader(Name = "零件2")]
+ public string PartCode2 { get; set; }
+
+ [ExporterHeader(DisplayName = "零件3")]
+ [ImporterHeader(Name = "零件3")]
+ public string PartCode3 { get; set; }
+
+ [ExporterHeader(DisplayName = "零件4")]
+ [ImporterHeader(Name = "零件4")]
+ public string PartCode4 { get; set; }
+
+ [ExporterHeader(DisplayName = "零件5")]
+ [ImporterHeader(Name = "零件5")]
+ public string PartCode5 { get; set; }
+
+ [ExporterHeader(DisplayName = "零件6")]
+ [ImporterHeader(Name = "零件6")]
+ public string PartCode6 { get; set; }
+
+
}
}
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM100s/Dtos/BillM100PartDto.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM100s/Dtos/BillM100PartDto.cs
index 52f9451..f136eb5 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM100s/Dtos/BillM100PartDto.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM100s/Dtos/BillM100PartDto.cs
@@ -34,5 +34,31 @@ namespace WY.NewJit.MsgCheck
[ExporterHeader(DisplayName = "描述")]
[ImporterHeader(Name = "描述")]
public string Description { get; set; }
+
+ ///
+ /// 零件类型:产线
+ ///
+ public virtual string PartType { get; set; }
+
+ ///
+ /// 零件类型:分组
+ ///
+ public virtual string PartType2 { get; set; }
+
+ ///
+ /// 零件类型:零件大类
+ ///
+ public virtual string PartType3 { get; set; }
+
+ ///
+ /// 零件在主表横向排列顺序
+ ///
+ public int? DisplaySN { get; set; }
+
+ ///
+ /// 零件在主表横向排列显示的列名
+ ///
+ public string DisplayColumnName { get; set; }
+
}
}
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM110s/Dtos/BillM110Dto.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM110s/Dtos/BillM110Dto.cs
index fdb57c9..cdabb63 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM110s/Dtos/BillM110Dto.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM110s/Dtos/BillM110Dto.cs
@@ -124,5 +124,31 @@ namespace WY.NewJit.MsgCheck
[ImporterHeader(Name = "手工操作日期")]
public DateTime? OperationTime { get; set; }
+ #region 横向显示零件
+ [ExporterHeader(DisplayName = "零件1")]
+ [ImporterHeader(Name = "零件1")]
+ public string PartCode1 { get; set; }
+
+ [ExporterHeader(DisplayName = "零件2")]
+ [ImporterHeader(Name = "零件2")]
+ public string PartCode2 { get; set; }
+
+ [ExporterHeader(DisplayName = "零件3")]
+ [ImporterHeader(Name = "零件3")]
+ public string PartCode3 { get; set; }
+
+ [ExporterHeader(DisplayName = "零件4")]
+ [ImporterHeader(Name = "零件4")]
+ public string PartCode4 { get; set; }
+
+ [ExporterHeader(DisplayName = "零件5")]
+ [ImporterHeader(Name = "零件5")]
+ public string PartCode5 { get; set; }
+
+ [ExporterHeader(DisplayName = "零件6")]
+ [ImporterHeader(Name = "零件6")]
+ public string PartCode6 { get; set; }
+
+ #endregion
}
}
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM110s/Dtos/BillM110PartDto.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM110s/Dtos/BillM110PartDto.cs
index 8b788ff..2f045b5 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM110s/Dtos/BillM110PartDto.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM110s/Dtos/BillM110PartDto.cs
@@ -34,5 +34,33 @@ namespace WY.NewJit.MsgCheck
[ExporterHeader(DisplayName = "描述")]
[ImporterHeader(Name = "描述")]
public string Description { get; set; }
+
+ #region 新增
+ ///
+ /// 零件类型:产线
+ ///
+ public virtual string PartType { get; set; }
+
+ ///
+ /// 零件类型:分组
+ ///
+ public virtual string PartType2 { get; set; }
+
+ ///
+ /// 零件类型:零件大类
+ ///
+ public virtual string PartType3 { get; set; }
+
+ ///
+ /// 零件在主表横向排列顺序
+ ///
+ public int? DisplaySN { get; set; }
+
+ ///
+ /// 零件在主表横向排列显示的列名
+ ///
+ public string DisplayColumnName { get; set; }
+
+ #endregion
}
}
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM110s/Interfaces/IBillM110AppService.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM110s/Interfaces/IBillM110AppService.cs
index 900ce5c..913f0aa 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM110s/Interfaces/IBillM110AppService.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/MsgCheck/BillM110s/Interfaces/IBillM110AppService.cs
@@ -67,14 +67,14 @@ namespace WY.NewJit.MsgCheck
///
/// 生产线
/// 起始大众顺序号
- Task> GetPrintStartHostSN2(string productLine, string isZhuHuBan,string GroupName = null);
+ //Task> GetPrintStartHostSN2(string productLine, string isZhuHuBan,string GroupName = null);
///
/// 打印前检查门板大众顺序号是否断号
///
///
/// 断号时Item不为空
- Task> CheckMBHostSNBreakNum(MenBanPrintInputDto input);
+ //Task> CheckMBHostSNBreakNum(MenBanPrintInputDto input);
///
/// 打印前检查柱护板大众顺序号是否断号
@@ -105,7 +105,7 @@ namespace WY.NewJit.MsgCheck
///
/// 生产线编号列表
/// 生产线超时情况
- Task> ProductLineTimeoutRemind(TimeOutRemindInputDto input);
+ //Task> ProductLineTimeoutRemind(TimeOutRemindInputDto input);
//Task> GetReplenishPrintListAsync(QueryBillM110Dto input);
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/WY.NewJit.Application.Contracts.xml b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/WY.NewJit.Application.Contracts.xml
index c7408b9..9073733 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/WY.NewJit.Application.Contracts.xml
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application.Contracts/WY.NewJit.Application.Contracts.xml
@@ -24,6 +24,11 @@
左或右
+
+
+ 报表显示车型
+
+
供应商厂家代码
@@ -94,6 +99,11 @@
顺序号结束
+
+
+ 排序字段
+
+
生产线
@@ -184,6 +194,16 @@
上箱位号
+
+
+ 扫描零件号,供发运使用
+
+
+
+
+ 备注
+
+
打印类型:提供初次打印、重新打印、针对重新解析后单据的补打功能
@@ -209,11 +229,6 @@
装箱单主表ID列表,报废时传入一个,重打时可传入多个
-
-
- 补打时使用
-
-
门板主实体列表
@@ -945,6 +960,66 @@
字典项名称
+
+
+ 分类1(零件大类对应分组)
+
+
+
+
+ 分类2 (零件大类对应产线)
+
+
+
+
+ 分类3(零件大类对应车型)
+
+
+
+
+ 分类4(零件大类对应打印报表的三位零件大类)
+
+
+
+
+ 分类5 (零件大类对应客户零件号)
+
+
+
+
+ 分类6(零件大类对应显示车型)
+
+
+
+
+ 分类7(零件大类对应报表字段显示顺序)
+
+
+
+
+ 分类8(零件大类对应装箱清单号的前缀,例如C或T)
+
+
+
+
+ 分类9(零件大类对应 打印标准数量 12 或 24)
+
+
+
+
+ 分类10(零件大类对应 是否扫描 1 需要扫描 0 不需要扫描)
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1546,6 +1621,31 @@
描述
+
+
+ 零件类型:产线
+
+
+
+
+ 零件类型:分组
+
+
+
+
+ 零件类型:零件大类
+
+
+
+
+ 零件在主表横向排列顺序
+
+
+
+
+ 零件在主表横向排列显示的列名
+
+
流水号#
@@ -2092,6 +2192,31 @@
描述
+
+
+ 零件类型:产线
+
+
+
+
+ 零件类型:分组
+
+
+
+
+ 零件类型:零件大类
+
+
+
+
+ 零件在主表横向排列顺序
+
+
+
+
+ 零件在主表横向排列显示的列名
+
+
流水号#
@@ -2441,27 +2566,6 @@
导入文件流
执行成功返回真
-
-
- 根据生产线获取正常打印单据的起始大众顺序号
-
- 生产线
- 起始大众顺序号
-
-
-
- 打印前检查门板大众顺序号是否断号
-
-
- 断号时Item不为空
-
-
-
- 生产线超时提醒
-
- 生产线编号列表
- 生产线超时情况
-
零件查询结果DTO
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgBaseData/Dics/DicAppService.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgBaseData/Dics/DicAppService.cs
index c34b702..e3cda14 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgBaseData/Dics/DicAppService.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgBaseData/Dics/DicAppService.cs
@@ -77,12 +77,18 @@ namespace WY.NewJit.MsgBaseData
{
List lst = _dicDomainService.GetDicItems(dicTypeName);
- List items =
- ObjectMapper.Map, List>(lst);
+ List dtoLst = ObjectMapper.Map, List>(lst);
- items = items.OrderBy(itm => itm.DicItemCode).ThenBy(itm => itm.DicItemName).ToList();
+ if (dicTypeName == "零件大类")
+ {
+ dtoLst = dtoLst.OrderBy(itm => itm.DicItemSort2).ThenBy(itm => itm.DicItemSort1).ThenBy(itm => itm.DicItemSort7).ToList();
+ }
+ else
+ {
+ dtoLst = dtoLst.OrderBy(itm => itm.DicItemCode).ThenBy(itm => itm.DicItemName).ToList();
+ }
- return new ListResultDto(items);
+ return new ListResultDto(dtoLst);
}
catch (Exception ex)
{
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/BillM100AppService.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/BillM100AppService.cs
index 8971068..1545883 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/BillM100AppService.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/BillM100AppService.cs
@@ -1,31 +1,32 @@
using Magicodes.ExporterAndImporter.Core;
using Magicodes.ExporterAndImporter.Excel;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
+using Shouldly;
using System;
using System.Collections.Generic;
+using System.ComponentModel;
+using System.Diagnostics;
using System.Linq;
using System.Linq.Dynamic.Core;
+using System.Reflection;
using System.Text;
using System.Threading.Tasks;
+using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
+using Volo.Abp.BlobStoring;
using Volo.Abp.Domain.Repositories;
-using Volo.Abp.Uow;
using Volo.Abp.Domain.Repositories.Dapper;
-using WY.NewJit.EntityFrameworkCore;
+using Volo.Abp.Uow;
using WY.NewJit.Common;
-using Shouldly;
-using Volo.Abp.BlobStoring;
-using Microsoft.AspNetCore.Mvc;
+using WY.NewJit.Commons;
+using WY.NewJit.EntityFrameworkCore;
using WY.NewJit.Extends;
-using WY.NewJit.MsgBaseData;
using WY.NewJit.Extends.PaiGe;
using WY.NewJit.Extends.PaiGe.WMS;
-using System.Reflection;
-using WY.NewJit.Commons;
-using Volo.Abp;
-using System.Diagnostics;
+using WY.NewJit.MsgBaseData;
namespace WY.NewJit.MsgCheck
{
@@ -156,6 +157,8 @@ namespace WY.NewJit.MsgCheck
private List _zhbCacheList = new List();
private string _topBoxPositionNumPrefix;
+
+ private List _partCfgLst;
#endregion
#region 构造函数
@@ -607,6 +610,239 @@ select * from
return ret;
}
+ ///
+ /// 包含主表横向排列零件字段
+ ///
+ ///
+ ///
+ private async Task QueryByConditionAsync2(QueryBillM100Dto input)
+ {
+ M100_M110_Result ret = new M100_M110_Result();
+ //取零件大类配置
+ List partLargeTypeLst = await _dicItemRepository.GetListAsync(itm => itm.DicTypeCode == "零件大类");
+ partLargeTypeLst = partLargeTypeLst.OrderBy(itm => itm.DicItemSort2).ThenBy(itm => itm.DicItemSort1).ToList();
+
+ var query = await _billM100Repository.GetQueryableAsync();
+ var includeQry = query.Include(itm => itm.BillM100Parts);
+ var m100Query = includeQry.Where(itm => itm.IsReceiveM110 == false || itm.IsReceiveM110 == null);
+
+ if (input.SerialNumBegin != null)
+ {
+ m100Query = m100Query.Where(itm => itm.SerialNum >= input.SerialNumBegin);
+ }
+ if (input.SerialNumEnd != null)
+ {
+ m100Query = m100Query.Where(itm => itm.SerialNum <= input.SerialNumBegin);
+ }
+ if (input.HostSNBegin != null)
+ {
+ m100Query = m100Query.Where(itm => itm.HostSN >= input.HostSNBegin);
+ }
+ if (input.HostSNEnd != null)
+ {
+ m100Query = m100Query.Where(itm => itm.HostSN <= input.HostSNEnd);
+ }
+ if (!string.IsNullOrEmpty(input.KNRBegin))
+ {
+ m100Query = m100Query.Where(itm => itm.KNR.CompareTo(input.KNRBegin) >= 0);
+ }
+ if (!string.IsNullOrEmpty(input.KNREnd))
+ {
+ m100Query = m100Query.Where(itm => itm.KNR.CompareTo(input.KNREnd) <= 0);
+ }
+ if (!string.IsNullOrEmpty(input.VINBegin))
+ {
+ m100Query = m100Query.Where(itm => itm.VIN.CompareTo(input.VINBegin) >= 0);
+ }
+ if (!string.IsNullOrEmpty(input.VINEnd))
+ {
+ m100Query = m100Query.Where(itm => itm.VIN.CompareTo(input.VINEnd) <= 0);
+ }
+ if (input.AssemblyID != null)
+ {
+ m100Query = m100Query.Where(itm => itm.AssemblyID != null);
+ }
+ if (input.OnlineTimeBegin != null)
+ {
+ m100Query = m100Query.Where(itm => itm.OnlineTime >= input.OnlineTimeBegin);
+ }
+ if (input.OnlineTimeEnd != null)
+ {
+ m100Query = m100Query.Where(itm => itm.OnlineTime <= input.OnlineTimeEnd);
+ }
+ if (input.VehicleModelCode != null)
+ {
+ m100Query = m100Query.Where(itm => itm.VehicleModelCode == input.VehicleModelCode);
+ }
+ if (input.ProductLine != null)
+ {
+ m100Query = m100Query.Where(itm => itm.ProductLine == input.ProductLine);
+ }
+ if (input.Version != null)
+ {
+ m100Query = m100Query.Where(itm => itm.Version == input.Version);
+ }
+ if (input.ReceiveTimeBegin != null)
+ {
+ m100Query = m100Query.Where(itm => itm.ReceiveTime >= input.ReceiveTimeBegin);
+ }
+ if (input.ReceiveTimeEnd != null)
+ {
+ m100Query = m100Query.Where(itm => itm.ReceiveTime <= input.ReceiveTimeEnd);
+ }
+ //if (input.IsBillMaintenance == true) //M100单据信息维护模块使用
+ //{
+ // where += " and b.Operator is not null";
+ //}
+ if (input.CanNotPrint == true)
+ {
+ m100Query = m100Query.Where(itm => itm.CanNotPrint == true);
+ }
+ else if (input.CanNotPrint == false)
+ {
+ m100Query = m100Query.Where(itm => itm.CanNotPrint == false || itm.CanNotPrint == null);
+ }
+
+ if (input.ZHBBillStatus != null && input.ZHBBillStatus != ZHBBillStatusEnum.None)
+ {
+ if (input.ZHBBillStatus == ZHBBillStatusEnum.Print) //柱护板已打印
+ {
+ m100Query = m100Query.Where(itm => itm.PrintBillNum != "" && itm.PrintBillNum != null);
+ }
+ else if (input.ZHBBillStatus == ZHBBillStatusEnum.NotPrint) //柱护板未打印
+ {
+ m100Query = m100Query.Where(itm => itm.PrintBillNum == "" || itm.PrintBillNum == null);
+ }
+ }
+ else if (input.BillStatus != null && input.BillStatus != BillStatusEnum.None)
+ {
+ m100Query = m100Query.Where(itm => itm.BillStatus == input.BillStatus);
+ }
+ else
+ {
+ //m100Query = m100Query.Where(itm => itm.BillStatus == BillStatusEnum.Match || itm.BillStatus == BillStatusEnum.Publish); //单据状态是已匹配、已打印
+ }
+
+ if (input.IsNeedReplenishPrint == true) //只显示需要补打的记录
+ {
+ m100Query = m100Query.Where(itm => itm.NeedReplenishPrint == 1);
+ }
+ //M100
+ var m100Lst = m100Query.OrderBy(itm => itm.SerialNumStr).Skip(input.SkipCount).Take(input.MaxResultCount).OrderByDescending(itm => itm.SerialNumStr).ToList(); //倒序排列
+ List m100Dtos = ObjectMapper.Map, List>(m100Lst);
+ if (m100Dtos.Count == 0)
+ {
+ return ret;
+ }
+ var m100Parts = m100Dtos[0].BillM100Parts;
+
+ foreach (BillM100Dto m100Dto in m100Dtos) //遍历M100
+ {
+ foreach (var partDto in m100Dto.BillM100Parts) //遍历子件
+ {
+ //按产线、分组、零件大类 过滤
+ var partLargeTypeObj = partLargeTypeLst.FirstOrDefault(itm =>
+ itm.DicItemSort2 == partDto.PartType
+ && itm.DicItemSort1 == partDto.PartType2
+ && itm.DicItemCode == partDto.PartType3);
+ if (partLargeTypeObj != null)
+ {
+ partDto.DisplaySN = partLargeTypeObj.DicItemSort7.TryToInt();
+ partDto.DisplayColumnName = partLargeTypeObj.DicItemName;
+ }
+ }
+ var filterParts = m100Dto.BillM100Parts.Where(itm => itm.DisplaySN != null).OrderBy(itm => itm.DisplaySN).ToList();
+ for (int i = 0; i < filterParts.Count; i++)
+ {
+ var filterPart = filterParts[i];
+ switch (i)
+ {
+ case 0:
+ m100Dto.PartCode1 = filterPart.PartCode;
+ break;
+ case 1:
+ m100Dto.PartCode2 = filterPart.PartCode;
+ break;
+ case 2:
+ m100Dto.PartCode3 = filterPart.PartCode;
+ break;
+ case 3:
+ m100Dto.PartCode4 = filterPart.PartCode;
+ break;
+ case 4:
+ m100Dto.PartCode5 = filterPart.PartCode;
+ break;
+ case 5:
+ m100Dto.PartCode6 = filterPart.PartCode;
+ break;
+ }
+ }
+ m100Dto.BillM100Parts = new List();
+ }
+ ret.PartDisplayColumnName = m100Parts.Where(itm => itm.DisplaySN != null).OrderBy(itm => itm.DisplaySN).Select(itm => itm.DisplayColumnName).JoinAsString(",");
+ ret.M100Dtos = m100Dtos;
+ ret.M100_TotalCount = await m100Query.CountAsync();
+ return ret;
+ }
+
+ ///
+ /// 填充M110主表横向零件字段
+ ///
+ ///
+ ///
+ private async Task> FillPartCodeField(List m110Dtos)
+ {
+ //取零件大类配置
+ List partLargeTypeLst = await _dicItemRepository.GetListAsync(itm => itm.DicTypeCode == "零件大类");
+ partLargeTypeLst = partLargeTypeLst.OrderBy(itm => itm.DicItemSort2).ThenBy(itm => itm.DicItemSort1).ToList();
+
+ foreach (BillM110Dto m110Dto in m110Dtos) //遍历M110
+ {
+ foreach (var partDto in m110Dto.BillM110Parts) //遍历子件
+ {
+ //按产线、分组、零件大类 过滤
+ var partLargeTypeObj = partLargeTypeLst.FirstOrDefault(itm =>
+ itm.DicItemSort2 == partDto.PartType
+ && itm.DicItemSort1 == partDto.PartType2
+ && itm.DicItemCode == partDto.PartType3);
+ if (partLargeTypeObj != null)
+ {
+ partDto.DisplaySN = partLargeTypeObj.DicItemSort7.TryToInt();
+ partDto.DisplayColumnName = partLargeTypeObj.DicItemName;
+ }
+ }
+ var filterParts = m110Dto.BillM110Parts.Where(itm => itm.DisplaySN != null).OrderBy(itm => itm.DisplaySN).ToList();
+ for (int i = 0; i < filterParts.Count; i++)
+ {
+ var filterPart = filterParts[i];
+ switch (i)
+ {
+ case 0:
+ m110Dto.PartCode1 = filterPart.PartCode;
+ break;
+ case 1:
+ m110Dto.PartCode2 = filterPart.PartCode;
+ break;
+ case 2:
+ m110Dto.PartCode3 = filterPart.PartCode;
+ break;
+ case 3:
+ m110Dto.PartCode4 = filterPart.PartCode;
+ break;
+ case 4:
+ m110Dto.PartCode5 = filterPart.PartCode;
+ break;
+ case 5:
+ m110Dto.PartCode6 = filterPart.PartCode;
+ break;
+ }
+ }
+ m110Dto.BillM110Parts = new List();
+ }
+ return m110Dtos;
+ }
+
+
///
/// 取单据包含的ERP总成列表
///
@@ -889,34 +1125,50 @@ select * from
//}
///
- /// 打印左侧或右侧门板
+ /// 将M100转换成MenBanPackingList主子表
///
///
///
- ///
///
- ///
///
- ///
+ /// 报表分类,对应DicItemSort4
+ /// 零件大类字典项
///
- private MenBanPackingList DoMBPrint(MenBanPrintInputDto input, int pageIdx, double maxSN, List billLst, string reportSort, string[] partLargeType)
+ private MenBanPackingList DoMBPrint(MenBanPrintInputDto input, int pageIdx, double maxSN, List billLst, string reportSort, List partLargeTypeLst, Guid sortId)
{
- const int _colNumberPerPage = 12;
+ const int _colNumberPerPage = 12; //??临时的,等
+ var partLargeTypeObj = partLargeTypeLst.FirstOrDefault(itm => itm.DicItemCode == reportSort);
+ if (partLargeTypeObj == null)
+ {
+ throw new UserFriendlyException($"零件大类字典中,DicItemCode列没有配置{reportSort}");
+ }
+ string[] partLargeTypes = partLargeTypeLst.Select(itm => itm.DicItemCode).ToArray(); //取零件大类
+
+ //取扫描零件的索引
+ int idx = partLargeTypeLst.FindIndex(itm => itm.Id == partLargeTypeObj.Id);
+ if (idx < 0)
+ {
+ idx = 0;
+ }
//取当前页内容
List curPageLst = billLst.Skip(pageIdx * _colNumberPerPage).Take(_colNumberPerPage).ToList();
- var vmLst = curPageLst.Select(itm => itm.VehicleModelCode).Distinct().JoinAsString(","); //取车型
+ //var vmLst = curPageLst.Select(itm => itm.VehicleModelCode).Distinct().JoinAsString(","); //取车型
string ymd = ServerHelper.CurrentDateTime.ToString("yyyyMMdd");
string serialNum = maxSN.ToString().PadLeft(3, '0'); //075
MenBanPackingList packingMain = new MenBanPackingList();
packingMain.SetId(GuidGenerator.Create());
- packingMain.BillNum = $"C{ymd}{serialNum}{reportSort}";
- packingMain.VehicleModel = vmLst;
+
+ packingMain.BillNum = $"{partLargeTypeObj.DicItemSort8}{ymd}{serialNum}{reportSort}"; //partLargeTypeObj.DicItemSort8包含C或T
packingMain.BillSerialNum = serialNum;
+ packingMain.VehicleModel = partLargeTypeObj.DicItemSort3; //车型
+ packingMain.VehicleModel_Disp = partLargeTypeObj.DicItemSort6; //车型(报表显示的)
packingMain.PrintDate = ServerHelper.CurrentDateTime;
+ packingMain.PartType = partLargeTypeObj.DicItemCode; //零件大类
packingMain.ProductLine = billLst[0].ProductLine;
+ packingMain.SortId = sortId;
var tempLst = curPageLst.Where(itm => string.IsNullOrEmpty(itm.VIN) == false).OrderBy(itm => itm.OnlineTime).ThenBy(itm => itm.HostSN).ToList();
if (tempLst.Count > 0)
@@ -942,41 +1194,136 @@ select * from
packingDetail.VIN += "*断号*";
}
//第一个零件
- if (partLargeType.Length >= 1)
+ if (partLargeTypes.Length >= 1)
{
- var partObj = billObj.BillM100Parts.FirstOrDefault(itm => itm.PartType3 == partLargeType[0]);
+ var partObj = billObj.BillM100Parts.FirstOrDefault(itm => itm.PartType3 == partLargeTypes[0]);
if (partObj != null)
{
packingDetail.PartCode1 = partObj.PartCode;
}
}
//第二个零件
- if (partLargeType.Length >= 2)
+ if (partLargeTypes.Length >= 2)
{
- var partObj = billObj.BillM100Parts.FirstOrDefault(itm => itm.PartType3 == partLargeType[1]);
+ var partObj = billObj.BillM100Parts.FirstOrDefault(itm => itm.PartType3 == partLargeTypes[1]);
if (partObj != null)
{
packingDetail.PartCode2 = partObj.PartCode;
}
}
//第三个零件
- if (partLargeType.Length >= 3)
+ if (partLargeTypes.Length >= 3)
{
- var partObj = billObj.BillM100Parts.FirstOrDefault(itm => itm.PartType3 == partLargeType[2]);
+ var partObj = billObj.BillM100Parts.FirstOrDefault(itm => itm.PartType3 == partLargeTypes[2]);
if (partObj != null)
{
packingDetail.PartCode3 = partObj.PartCode;
}
}
//第四个零件
- if (partLargeType.Length >= 4)
+ if (partLargeTypes.Length >= 4)
{
- var partObj = billObj.BillM100Parts.FirstOrDefault(itm => itm.PartType3 == partLargeType[3]);
+ var partObj = billObj.BillM100Parts.FirstOrDefault(itm => itm.PartType3 == partLargeTypes[3]);
if (partObj != null)
{
packingDetail.PartCode4 = partObj.PartCode;
}
}
+
+ switch (idx)
+ {
+ case 0:
+ if (partLargeTypeLst[0].DicItemSort5 == "厂内零件号")
+ {
+ var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == packingDetail.PartCode1);
+ if (partCfgObj == null)
+ {
+ packingDetail.Remark = $"根据客户零件{packingDetail.PartCode1}无法取得厂内零件";
+ }
+ else
+ {
+ packingDetail.ScanPartCode = partCfgObj.RelationKey;
+ }
+ }
+ else
+ {
+ packingDetail.ScanPartCode = packingDetail.PartCode1;
+ }
+ break;
+ case 1:
+ if (partLargeTypeLst[0].DicItemSort5 == "厂内零件号")
+ {
+ var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == packingDetail.PartCode2);
+ if (partCfgObj == null)
+ {
+ packingDetail.Remark = $"根据客户零件{packingDetail.PartCode2}无法取得厂内零件";
+ }
+ else
+ {
+ packingDetail.ScanPartCode = partCfgObj.RelationKey;
+ }
+ }
+ else
+ {
+ packingDetail.ScanPartCode = packingDetail.PartCode2;
+ }
+ break;
+ case 2:
+ if (partLargeTypeLst[0].DicItemSort5 == "厂内零件号")
+ {
+ var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == packingDetail.PartCode3);
+ if (partCfgObj == null)
+ {
+ packingDetail.Remark = $"根据客户零件{packingDetail.PartCode3}无法取得厂内零件";
+ }
+ else
+ {
+ packingDetail.ScanPartCode = partCfgObj.RelationKey;
+ }
+ }
+ else
+ {
+ packingDetail.ScanPartCode = packingDetail.PartCode3;
+ }
+ break;
+ case 3:
+ if (partLargeTypeLst[0].DicItemSort5 == "厂内零件号")
+ {
+ var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == packingDetail.PartCode4);
+ if (partCfgObj == null)
+ {
+ packingDetail.Remark = $"根据客户零件{packingDetail.PartCode4}无法取得厂内零件";
+ }
+ else
+ {
+ packingDetail.ScanPartCode = partCfgObj.RelationKey;
+ }
+ }
+ else
+ {
+ packingDetail.ScanPartCode = packingDetail.PartCode4;
+ }
+ break;
+ case 4:
+ if (partLargeTypeLst[0].DicItemSort5 == "厂内零件号")
+ {
+ var partCfgObj = _partCfgLst.FirstOrDefault(itm => itm.PartCode == packingDetail.PartCode5);
+ if (partCfgObj == null)
+ {
+ packingDetail.Remark = $"根据客户零件{packingDetail.PartCode5}无法取得厂内零件";
+ }
+ else
+ {
+ packingDetail.ScanPartCode = partCfgObj.RelationKey;
+ }
+ }
+ else
+ {
+ packingDetail.ScanPartCode = packingDetail.PartCode5;
+ }
+ break;
+ }
+
packingDetail.SN = sn.ToString();
packingMain.Details.Add(packingDetail);
sn++;
@@ -3021,119 +3368,18 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
M100_M110_Result ret = new M100_M110_Result();
try
{
- var query = await _billM100Repository.GetQueryableAsync();
- var includeQry = query.Include(itm => itm.BillM100Parts);
- var m100Query = includeQry.Where(itm => itm.IsReceiveM110 == false || itm.IsReceiveM110 == null);
-
- if (input.SerialNumBegin != null)
- {
- m100Query = m100Query.Where(itm => itm.SerialNum >= input.SerialNumBegin);
- }
- if (input.SerialNumEnd != null)
- {
- m100Query = m100Query.Where(itm => itm.SerialNum <= input.SerialNumBegin);
- }
- if (input.HostSNBegin != null)
- {
- m100Query = m100Query.Where(itm => itm.HostSN >= input.HostSNBegin);
- }
- if (input.HostSNEnd != null)
- {
- m100Query = m100Query.Where(itm => itm.HostSN <= input.HostSNEnd);
- }
- if (!string.IsNullOrEmpty(input.KNRBegin))
- {
- m100Query = m100Query.Where(itm => itm.KNR.CompareTo(input.KNRBegin) >= 0);
- }
- if (!string.IsNullOrEmpty(input.KNREnd))
- {
- m100Query = m100Query.Where(itm => itm.KNR.CompareTo(input.KNREnd) <= 0);
- }
- if (!string.IsNullOrEmpty(input.VINBegin))
- {
- m100Query = m100Query.Where(itm => itm.VIN.CompareTo(input.VINBegin) >= 0);
- }
- if (!string.IsNullOrEmpty(input.VINEnd))
- {
- m100Query = m100Query.Where(itm => itm.VIN.CompareTo(input.VINEnd) <= 0);
- }
- if (input.AssemblyID != null)
- {
- m100Query = m100Query.Where(itm => itm.AssemblyID != null);
- }
- if (input.OnlineTimeBegin != null)
- {
- m100Query = m100Query.Where(itm => itm.OnlineTime >= input.OnlineTimeBegin);
- }
- if (input.OnlineTimeEnd != null)
- {
- m100Query = m100Query.Where(itm => itm.OnlineTime <= input.OnlineTimeEnd);
- }
- if (input.VehicleModelCode != null)
- {
- m100Query = m100Query.Where(itm => itm.VehicleModelCode == input.VehicleModelCode);
- }
- if (input.ProductLine != null)
- {
- m100Query = m100Query.Where(itm => itm.ProductLine == input.ProductLine);
- }
- if (input.Version != null)
- {
- m100Query = m100Query.Where(itm => itm.Version == input.Version);
- }
- if (input.ReceiveTimeBegin != null)
+ if (input.ProductLine.IsNullOrEmpty2())
{
- m100Query = m100Query.Where(itm => itm.ReceiveTime >= input.ReceiveTimeBegin);
+ throw new UserFriendlyException("生产线参数不能为空");
}
- if (input.ReceiveTimeEnd != null)
- {
- m100Query = m100Query.Where(itm => itm.ReceiveTime <= input.ReceiveTimeEnd);
- }
- //if (input.IsBillMaintenance == true) //M100单据信息维护模块使用
- //{
- // where += " and b.Operator is not null";
- //}
- if (input.CanNotPrint == true)
- {
- m100Query = m100Query.Where(itm => itm.CanNotPrint == true);
- }
- else if (input.CanNotPrint == false)
- {
- m100Query = m100Query.Where(itm => itm.CanNotPrint == false || itm.CanNotPrint == null);
- }
-
- if (input.ZHBBillStatus != null && input.ZHBBillStatus != ZHBBillStatusEnum.None)
- {
- if (input.ZHBBillStatus == ZHBBillStatusEnum.Print) //柱护板已打印
- {
- m100Query = m100Query.Where(itm => itm.PrintBillNum != "" && itm.PrintBillNum != null);
- }
- else if (input.ZHBBillStatus == ZHBBillStatusEnum.NotPrint) //柱护板未打印
- {
- m100Query = m100Query.Where(itm => itm.PrintBillNum == "" || itm.PrintBillNum == null);
- }
- }
- else if (input.BillStatus != null && input.BillStatus != BillStatusEnum.None)
- {
- m100Query = m100Query.Where(itm => itm.BillStatus == input.BillStatus);
- }
- else
- {
- //m100Query = m100Query.Where(itm => itm.BillStatus == BillStatusEnum.Match || itm.BillStatus == BillStatusEnum.Publish); //单据状态是已匹配、已打印
- }
-
- if (input.IsNeedReplenishPrint == true) //只显示需要补打的记录
- {
- m100Query = m100Query.Where(itm => itm.NeedReplenishPrint == 1);
- }
- //M100
- var m100Lst = m100Query.OrderBy(itm => itm.SerialNumStr).Skip(input.SkipCount).Take(input.MaxResultCount).OrderByDescending(itm => itm.SerialNumStr).ToList();
- ret.M100_TotalCount = await m100Query.CountAsync();
- ret.BillM100s = m100Lst;
- //M110
+ //填充M100,字段中文名称
+ ret = await QueryByConditionAsync2(input);
+ //填充M110
string serialNumStr = await _billM110_Repository.Where(itm => itm.ProductLine == input.ProductLine).MaxAsync(itm => itm.SerialNumStr);
var m110_Lst = await _billM110_Repository.GetListAsync(itm => itm.SerialNumStr == serialNumStr, true);
- ret.Bill_M110s = m110_Lst;
+ List m110_Dtos = ObjectMapper.Map, List>(m110_Lst);
+ m110_Dtos = await FillPartCodeField(m110_Dtos);
+ ret.M110_Dtos = m110_Dtos;
return ret;
}
@@ -3145,9 +3391,6 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
}
}
-
-
-
///
/// 按主键获取唯一实体
///
@@ -3296,19 +3539,53 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
{
input.SkipCount = 0;
input.MaxResultCount = 50000;
- PagedResultDto query = new PagedResultDto();
- if (!string.IsNullOrEmpty(input.GroupName))
- {
- query = await QueryZHBByConditionAsync(input, (PagedAndSortedBase)input);
- }
- else
+ //PagedResultDto query = new PagedResultDto();
+ //if (!string.IsNullOrEmpty(input.GroupName))
+ //{
+ // query = await QueryZHBByConditionAsync(input, (PagedAndSortedBase)input);
+ //}
+ //else
+ //{
+ // query = await QueryByConditionAsync(input, (PagedAndSortedBase)input);
+ //}
+ M100_M110_Result result = await QueryByConditionAsync2(input);
+
+ string[] fieldNames = result.PartDisplayColumnName.Split(",");
+ for (int i = 0; i < fieldNames.Length; i++)
{
- query = await QueryByConditionAsync(input, (PagedAndSortedBase)input);
+ switch (i)
+ {
+ case 0:
+ ExporterHeaderAttribute attr = typeof(BillM100Dto).GetProperty("PartCode1").GetCustomAttribute(typeof(ExporterHeaderAttribute)) as ExporterHeaderAttribute;
+ attr.DisplayName = fieldNames[i];
+ break;
+ case 1:
+ attr = typeof(BillM100Dto).GetProperty("PartCode2").GetCustomAttribute(typeof(ExporterHeaderAttribute)) as ExporterHeaderAttribute;
+ attr.DisplayName = fieldNames[i];
+ break;
+ case 2:
+ attr = typeof(BillM100Dto).GetProperty("PartCode3").GetCustomAttribute(typeof(ExporterHeaderAttribute)) as ExporterHeaderAttribute;
+ attr.DisplayName = fieldNames[i];
+ break;
+ case 3:
+ attr = typeof(BillM100Dto).GetProperty("PartCode4").GetCustomAttribute(typeof(ExporterHeaderAttribute)) as ExporterHeaderAttribute;
+ attr.DisplayName = fieldNames[i];
+ break;
+ case 4:
+ attr = typeof(BillM100Dto).GetProperty("PartCode5").GetCustomAttribute(typeof(ExporterHeaderAttribute)) as ExporterHeaderAttribute;
+ attr.DisplayName = fieldNames[i];
+ break;
+ case 5:
+ attr = typeof(BillM100Dto).GetProperty("PartCode6").GetCustomAttribute(typeof(ExporterHeaderAttribute)) as ExporterHeaderAttribute;
+ attr.DisplayName = fieldNames[i];
+ break;
+ }
}
- List items = query.Items.ToList();
+
+ //List items = query.Items.ToList();
//将实体列表转换成excel文件流
IExporter exporter = new ExcelExporter();
- byte[] byteArr = await exporter.ExportAsByteArray(items);
+ byte[] byteArr = await exporter.ExportAsByteArray(result.M100Dtos);
byteArr.ShouldNotBeNull();
//将excel文件流保存到服务器端文件系统
string fileName = string.Format("单据M100_{0}.xlsx", Guid.NewGuid().ToString());
@@ -3414,6 +3691,12 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
return ret;
}
}
+
+ _partCfgLst = await _partCfgRepository.GetListAsync();
+ //取零件大类字典
+ List partLargeTypeLst = await _dicItemRepository.GetListAsync(itm => itm.DicTypeCode == "零件大类");
+ partLargeTypeLst = partLargeTypeLst.OrderBy(itm => itm.DicItemSort2).ThenBy(itm => itm.DicItemSort1).ToList();
+ //取M100数据
ListResultDto tempLst = await GetMBReportDetailList(input, true); //-----------------------------
List billLst = tempLst.Item;
if (tempLst.Status == false)
@@ -3423,19 +3706,18 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
return ret;
}
- _logger.LogWarning($"SaveMenBanReport读取数据 - {sw.ElapsedMilliseconds}毫秒");
+ //_logger.LogWarning($"SaveMenBanReport读取数据 - {sw.ElapsedMilliseconds}毫秒");
int pageCnt = (int)Math.Ceiling(billLst.Count / 12.0); //每页打印12列,取打印页数
- //double maxBillNum = 0;
-
- //DateTime printTime = ServerHelper.CurrentDateTime;
- var reportSortDic = _dicItemRepository
- .Where(itm => itm.DicTypeCode == "零件大类" && itm.DicItemSort2 == input.ProductLine)
- .ToList()
+ //过滤产线(DicItemSort2),按“报表分类”(DicItemSort4)分组,分组后按DicItemSort7排序
+ Dictionary> reportSortDic = partLargeTypeLst
+ .Where(itm => itm.DicItemSort2 == input.ProductLine && string.IsNullOrEmpty(itm.DicItemSort4) == false)
.GroupBy(itm => itm.DicItemSort4)
- .ToDictionary(itm => itm.Key, it2 => it2.Select(itm => itm.DicItemCode).ToArray());
+ .ToDictionary(itm => itm.Key, it2 => it2.OrderBy(itm => itm.DicItemSort7).ToList());
+
+ Guid sortId = GuidGenerator.Create(); //每次打印所有记录的SortId是相同的
for (int pageIdx = 0; pageIdx < pageCnt; pageIdx++)
{
@@ -3445,24 +3727,24 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
//生成顺序号:按生产线分组,取当前生产线的最大流水号:001至999往复循环
double maxSN = await _lineSNDomianService.GetMaxSN(ProductTypeEnum.门板, input.ProductLine, string.Empty);
- MenBanPackingList packingObj = DoMBPrint(input, pageIdx, maxSN, billLst, reportSortItem.Key, reportSortItem.Value);
+ MenBanPackingList packingObj = DoMBPrint(input, pageIdx, maxSN, billLst, reportSortItem.Key, reportSortItem.Value, sortId);
reportMainLst.Add(packingObj);
}
}
- _logger.LogWarning($"SaveMenBanReport转换数据 - {sw.ElapsedMilliseconds}毫秒");
+ //_logger.LogWarning($"SaveMenBanReport转换数据 - {sw.ElapsedMilliseconds}毫秒");
//插入门板打印记录表
await _menBanPackingListRepository.InsertManyAsync(reportMainLst, true);
retLst.AddRange(reportMainLst.Select(itm => itm.Id));
- _logger.LogWarning($"SaveMenBanReport插入门板打印记录表 - {sw.ElapsedMilliseconds}毫秒");
+ //_logger.LogWarning($"SaveMenBanReport插入门板打印记录表 - {sw.ElapsedMilliseconds}毫秒");
//调用派格版库存接口
//await SaveMiddleTable_MB(reportMainLst);
- _logger.LogWarning($"SaveMenBanReport插入中间表 - {sw.ElapsedMilliseconds}毫秒");
+ //_logger.LogWarning($"SaveMenBanReport插入中间表 - {sw.ElapsedMilliseconds}毫秒");
//更新M100的门板打印标志:BillStatus=3
@@ -3475,110 +3757,21 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
billObj.NeedReplenishPrint = 0; //不需要补打
await _billM100Repository.UpdateAsync(billObj, true);
}
- else if (billObj.BillStatus == BillStatusEnum.NotMatch)
- {
- //billObj.PrintTime = ServerHelper.CurrentDateTime;
- billObj.NeedReplenishPrint = 1; //需要补打
- await _billM100Repository.UpdateAsync(billObj, true);
- }
+ //else if (billObj.BillStatus == BillStatusEnum.NotMatch)
+ //{
+ // //billObj.PrintTime = ServerHelper.CurrentDateTime;
+ // billObj.NeedReplenishPrint = 1; //需要补打
+ // await _billM100Repository.UpdateAsync(billObj, true);
+ //}
}
- _logger.LogWarning($"SaveMenBanReport更新M100的门板打印标志 - {sw.ElapsedMilliseconds}毫秒");
+ //_logger.LogWarning($"SaveMenBanReport更新M100的门板打印标志 - {sw.ElapsedMilliseconds}毫秒");
}
//else if (input.PrintType == PrintTypeEnum.重新打印) //和正常打印单据完全一样,可以打印部分单据
//{
// throw new BusinessException("请调用LoadMenBanReport方法!");
//}
- //else if (input.PrintType == PrintTypeEnum.补打)
- //{
- // List billLst = _billM100Repository.Where(itm => input.M100IdList.Contains(itm.Id)).OrderBy(itm => itm.SerialNumStr).ToList();
- // if (billLst.Count == 0)
- // {
- // ret.Message = "没有补打的单据,请先选择要补打的单据!";
- // ret.Status = false;
- // return ret;
- // }
-
- // int pageCnt = (int)Math.Ceiling(billLst.Count / 12.0); //每页打印12列,取打印页数
-
- // double maxBillNum = 0;
-
- // DateTime printTime = ServerHelper.CurrentDateTime;
-
- // for (int pageIdx = 0; pageIdx < pageCnt; pageIdx++)
- // {
- // //取右上角顺序号:按生产线分组,取当前生产线的最大流水号:01至99循环,例如01左、01右
- // double maxSN = 0; // await _lineSNDomianService.GetMaxSN(ProductTypeEnum.门板, input.ProductLine, string.Empty);
- // // 先打印两张:左后左前,再打印两张:右后右前
- // List leftLst = DoMBPrint(input, pageIdx, ref maxBillNum, maxSN, printTime, billLst, "左");
- // List rightLst = DoMBPrint(input, pageIdx, ref maxBillNum, maxSN, printTime, billLst, "右");
-
- // //作废时需要同时作废相同VIN的左右两页,SortId相同表示是同一组左右
- // Guid sortId = GuidGenerator.Create();
- // foreach (var leftItm in leftLst)
- // {
- // leftItm.SortId = sortId;
- // }
- // foreach (var rightItm in rightLst)
- // {
- // rightItm.SortId = sortId;
- // }
-
- // reportMainLst.AddRange(rightLst);
- // reportMainLst.AddRange(leftLst);
- // }
- // //校验底盘号、零件是否重复打印
- // string checkVinPartRepeatSql = @"
- // select top 1 a.BillNum from FisMenBanPackingList a join FisMenBanPackingRec b
- // on a.Id = b.MenBanPackingListId
- // where a.ReportStatus = 0
- // and b.VIN = '{0}' and (TopSAPMaterialNum = '{1}' or BelowSAPMaterialNum = '{1}')
- // ";
- // foreach (MenBanPackingList reportMainObj in reportMainLst)
- // {
- // foreach (MenBanPackingRec reportRecObj in reportMainObj.Details)
- // {
- // string sql1 = string.Format(checkVinPartRepeatSql, reportRecObj.VIN, reportRecObj.PartCode2);
- // string checkVinPartRepeatBillNum1 = _newJitDapperRepository.GetSingleBySql(sql1, true);
- // if (string.IsNullOrEmpty(checkVinPartRepeatBillNum1) == false)
- // {
- // throw new BusinessException("1001", $"与装箱单号{checkVinPartRepeatBillNum1}中的底盘号{reportRecObj.VIN}、零件号{reportRecObj.PartCode2}之间重复!");
- // }
-
- // string sql2 = string.Format(checkVinPartRepeatSql, reportRecObj.VIN, reportRecObj.PartCode4);
- // string checkVinPartRepeatBillNum2 = _newJitDapperRepository.GetSingleBySql(sql2, true);
- // if (string.IsNullOrEmpty(checkVinPartRepeatBillNum2) == false)
- // {
- // throw new BusinessException("1001", $"与装箱单号{checkVinPartRepeatBillNum2}中的底盘号{reportRecObj.VIN}、零件号{reportRecObj.PartCode4}之间重复!");
- // }
- // }
- // }
-
- // //调用派格版库存接口
- // await SaveMiddleTable_MB(reportMainLst);
-
- // //插入门板打印记录表
- // //await _menBanPackingListRepository.InsertManyAsync(reportMainLst);
- // foreach (var reportMainObj in reportMainLst)
- // {
- // var insObj = await _menBanPackingListRepository.InsertAsync(reportMainObj, true);
- // if (insObj != null)
- // {
- // retLst.Add(insObj.Id);
- // }
- // }
- // //更新M100的门板打印标志:BillStatus=3
- // foreach (BillM100 billObj in billLst)
- // {
- // if (billObj.BillStatus == BillStatusEnum.Match)
- // {
- // billObj.SetBillStatus(BillStatusEnum.Publish);
- // billObj.PrintTime = ServerHelper.CurrentDateTime;
- // await _billM100Repository.UpdateAsync(billObj);
- // }
- // }
- //} //补打if
await uow.CompleteAsync();
ret.Status = true;
ret.Item = retLst;
@@ -3672,6 +3865,50 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
}
}
+ [UnitOfWork]
+ [HttpPost]
+ [Route("load-menban-report2")]
+ public virtual async Task LoadMenBanReport2(List input)
+ {
+ _logger.LogDebug(_errorMessagePrefix + "LoadMenBanReport2 进入");
+ MenBanPackingListResultDto ret = new MenBanPackingListResultDto();
+ try
+ {
+ List reportLst = await LoadMenBanReport(input);
+
+ List partLargeTypeLst = await _dicItemRepository.GetListAsync(itm => itm.DicTypeCode == "零件大类");
+ foreach (MenBanPackingListDto report in reportLst)
+ {
+ var partLargeTypeObj = partLargeTypeLst.FirstOrDefault(itm => itm.DicItemSort2 == report.ProductLine && itm.DicItemCode == report.PartType);
+ if (partLargeTypeObj != null)
+ {
+ report.SN = partLargeTypeObj.DicItemSort7.TryToIntZero();
+ }
+ }
+ reportLst = reportLst.OrderBy(itm => itm.SN).ToList();
+ if (reportLst.Count > 0)
+ {
+ ret.MainList1.Add(reportLst[0]);
+ ret.DetailList1.AddRange(reportLst[0].Details);
+ reportLst[0].Details = null;
+ }
+ if (reportLst.Count > 1)
+ {
+ ret.MainList2.Add(reportLst[1]);
+ ret.DetailList2.AddRange(reportLst[1].Details);
+ reportLst[1].Details = null;
+ }
+ return ret;
+ }
+ catch (Exception ex)
+ {
+ string errorMsg = _errorMessagePrefix + "LoadMenBanReport2 执行出错:" + ex.Message;
+ _logger.LogError(errorMsg);
+ throw new UserFriendlyException(errorMsg);
+ }
+ }
+
+
private static string GetTrueString(string str)
{
return str == null ? " " : str.Trim(); ;
@@ -4481,7 +4718,7 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
// _zhbCacheList = _materialExtRepository.Where(itm => itm.MaterialType == "2").ToList(); //取柱护板零件
- // _logger.LogWarning($"SaveZhuHuBanReport 加载缓存 - {sw.ElapsedMilliseconds}毫秒");
+ // //_logger.LogWarning($"SaveZhuHuBanReport 加载缓存 - {sw.ElapsedMilliseconds}毫秒");
@@ -4502,7 +4739,7 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
// forWMSLst.AddRange(acLstOnlyWMSUse);
- // _logger.LogWarning($"SaveZhuHuBanReport 转换A上C上 - {sw.ElapsedMilliseconds}毫秒");
+ // //_logger.LogWarning($"SaveZhuHuBanReport 转换A上C上 - {sw.ElapsedMilliseconds}毫秒");
@@ -4559,7 +4796,7 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
// forWMSLst.AddRange(hsLst2);
- // _logger.LogWarning($"SaveZhuHuBanReport 转换除A上C上的其它 - {sw.ElapsedMilliseconds}毫秒");
+ // //_logger.LogWarning($"SaveZhuHuBanReport 转换除A上C上的其它 - {sw.ElapsedMilliseconds}毫秒");
@@ -4568,7 +4805,7 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
// #endregion
- // _logger.LogWarning($"SaveZhuHuBanReport 保存中间库 - {sw.ElapsedMilliseconds}毫秒");
+ // //_logger.LogWarning($"SaveZhuHuBanReport 保存中间库 - {sw.ElapsedMilliseconds}毫秒");
@@ -4587,7 +4824,7 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
// await _zhuHuBanPackingListRepository.InsertManyAsync(reportMainLst);
- // _logger.LogWarning($"SaveZhuHuBanReport 插入柱护板打印记录表 - {sw.ElapsedMilliseconds}毫秒");
+ // //_logger.LogWarning($"SaveZhuHuBanReport 插入柱护板打印记录表 - {sw.ElapsedMilliseconds}毫秒");
@@ -4603,7 +4840,7 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
// await _billM100Repository.UpdateManyAsync(updLst);
- // _logger.LogWarning($"SaveZhuHuBanReport 更新M100的柱护板打印标志 - {sw.ElapsedMilliseconds}毫秒");
+ // //_logger.LogWarning($"SaveZhuHuBanReport 更新M100的柱护板打印标志 - {sw.ElapsedMilliseconds}毫秒");
// }
// else if (input.PrintType == PrintTypeEnum.重新打印) //和正常打印单据完全一样,可以打印部分单据
@@ -4725,7 +4962,7 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
// await uow.CompleteAsync();
- // _logger.LogWarning($"SaveZhuHuBanReport CompleteAsync - {sw.ElapsedMilliseconds}毫秒");
+ // //_logger.LogWarning($"SaveZhuHuBanReport CompleteAsync - {sw.ElapsedMilliseconds}毫秒");
// ret.Status = true;
// ret.Item = retLst;
@@ -4783,7 +5020,7 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
// }
- // _logger.LogWarning($"LoadZhuHuBanReport 取柱护板数据 - {sw.ElapsedMilliseconds}毫秒");
+ // //_logger.LogWarning($"LoadZhuHuBanReport 取柱护板数据 - {sw.ElapsedMilliseconds}毫秒");
// //按大众顺序号排序
@@ -4912,7 +5149,7 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
// #endregion
- // _logger.LogWarning($"LoadZhuHuBanReport 排序及转换 - {sw.ElapsedMilliseconds}毫秒");
+ // //_logger.LogWarning($"LoadZhuHuBanReport 排序及转换 - {sw.ElapsedMilliseconds}毫秒");
// ret.Status = true;
// return ret;
@@ -5226,16 +5463,20 @@ select min(SerialNumStr) from FisBillM100 a left join d on a.VIN=d.VIN
public class M100_M110_Result
{
- public List BillM100s { get; set; }
- public List Bill_M110s { get; set; }
+ public List M100Dtos { get; set; }
+ public List M110_Dtos { get; set; }
- public int M100_TotalCount { get; set; }
+ public long M100_TotalCount { get; set; } = 0;
+
+ ///
+ /// 零件在主表横向排列显示的列名
+ ///
+ public string PartDisplayColumnName { get; set; } = "";
public M100_M110_Result()
{
- BillM100s = new List();
- Bill_M110s = new List();
+ M100Dtos = new List();
+ M110_Dtos = new List();
}
}
-
}
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/MenBanPackingRecService.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/MenBanPackingRecService.cs
index 4925f91..832bfed 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/MenBanPackingRecService.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM100s/MenBanPackingRecService.cs
@@ -225,45 +225,45 @@ namespace Win.Sfs.SettleAccount.FISes
///
/// IDs
/// 是否执行成功
- [HttpPost]
- [Route("delete")]
- [UnitOfWork(isTransactional: false)]
- public virtual async Task> DeleteListAsync(List ids)
- {
-
- var _list=await _menBanPackingListRepository.Where(p => ids.Contains(p.Id)).ToListAsync();
- var sortList=_list.Select(p => p.SortId).Distinct().ToList();//筛选出匹配门板
- _list = _menBanPackingListRepository.Where(p => sortList.Contains(p.SortId)).ToList();
-
- var idList = _list.Select(p => p.Id).ToList();
- var _ls=_list.Select(p => p.BillNum).ToList();
- var _strList = new List ();
+ //[HttpPost]
+ //[Route("delete")]
+ //[UnitOfWork(isTransactional: false)]
+ //public virtual async Task> DeleteListAsync(List ids)
+ //{
+
+ // var _list=await _menBanPackingListRepository.Where(p => ids.Contains(p.Id)).ToListAsync();
+ // var sortList=_list.Select(p => p.SortId).Distinct().ToList();//筛选出匹配门板
+ // _list = _menBanPackingListRepository.Where(p => sortList.Contains(p.SortId)).ToList();
+
+ // var idList = _list.Select(p => p.Id).ToList();
+ // var _ls=_list.Select(p => p.BillNum).ToList();
+ // var _strList = new List ();
- _ls.ForEach(p=>{
- _strList.Add(string.Format("'{0}'", p));
- });
- string str=string.Join(",", _strList.ToArray());
- var _lst=_wmsRepository.GetListBySql(string.Format("select * from TB_BILL where (state=1 or state=2) and BillNum in ({0}) ", str));
- if (_lst.Count() == 0)
- {
- await _menBanPackingListRepository.DeleteManyAsync(idList.ToArray());
-
- var _childList = await _menBanPackingListRepository.Where(p => idList.Contains(p.Id)).SelectMany(p => p.Details).ToListAsync();
- var _child = _childList.Select(p => p.M100BillId).Distinct().ToList();
- var _lst1= await _billM100Repository.Where(p => _child.Contains(p.Id)).ToListAsync();
- _lst1.ForEach(p =>
- {
- if (p.BillStatus == BillStatusEnum.Publish)
- {
- p.SetBillStatus(BillStatusEnum.Match);
- }
-
- });
- await _billM100Repository.UpdateManyAsync(_lst1);
+ // _ls.ForEach(p=>{
+ // _strList.Add(string.Format("'{0}'", p));
+ // });
+ // string str=string.Join(",", _strList.ToArray());
+ // var _lst=_wmsRepository.GetListBySql(string.Format("select * from TB_BILL where (state=1 or state=2) and BillNum in ({0}) ", str));
+ // if (_lst.Count() == 0)
+ // {
+ // await _menBanPackingListRepository.DeleteManyAsync(idList.ToArray());
+
+ // var _childList = await _menBanPackingListRepository.Where(p => idList.Contains(p.Id)).SelectMany(p => p.Details).ToListAsync();
+ // var _child = _childList.Select(p => p.M100BillId).Distinct().ToList();
+ // var _lst1= await _billM100Repository.Where(p => _child.Contains(p.Id)).ToListAsync();
+ // _lst1.ForEach(p =>
+ // {
+ // if (p.BillStatus == BillStatusEnum.Publish)
+ // {
+ // p.SetBillStatus(BillStatusEnum.Match);
+ // }
+
+ // });
+ // await _billM100Repository.UpdateManyAsync(_lst1);
- }
- return _lst.Select(p => p.BillNum).ToList();
- }
+ // }
+ // return _lst.Select(p => p.BillNum).ToList();
+ //}
///
/// 取待报废的全部数据,用于展示
@@ -286,109 +286,109 @@ namespace Win.Sfs.SettleAccount.FISes
///
/// IDs
/// 是否执行成功
- [HttpPost]
- [Route("scrap")]
- [UnitOfWork(isTransactional: false)]
- public virtual async Task> ScrapAsync(List ids)
- {
- var selLst = await _menBanPackingListRepository.Where(p => ids.Contains(p.Id)).ToListAsync();
- if (selLst == null || selLst.Count == 0)
- {
- throw new BusinessException("1001", "没有选中要作废的已打印装箱单!");
- }
- foreach (var _obj in selLst)
- {
- string maxBillNum = await _menBanPackingListRepository.Where(itm => itm.ProductLine == _obj.ProductLine && itm.ReportStatus == ReportStatusEnum.已打印).MaxAsync(itm => itm.BillNum); //取当前生产线的最大装箱单号
- if (string.IsNullOrEmpty(maxBillNum) == false)
- {
- MenBanPackingList firObj = await _menBanPackingListRepository.FirstOrDefaultAsync(itm => itm.BillNum == maxBillNum);
- if (firObj != null)
- {
- if (_obj.SortId != firObj.SortId)
- {
- throw new BusinessException("1001", "只能报废当前生产线的最后打印单据,要报废的单据不是最后打印单据!");
- }
- }
- }
- }
-
- var sortList = selLst.Select(p => p.SortId).Distinct().ToList();//筛选出匹配门板
- List pairlist = _menBanPackingListRepository.Where(p => sortList.Contains(p.SortId)).ToList();
-
-
- var idList = pairlist.Select(p => p.Id).ToList();
- var _ls = pairlist.Select(p => p.BillNum).ToList();
- var _strList = new List();
-
- _ls.ForEach(p => {
- _strList.Add(string.Format("'{0}'", p));
- });
- string str = string.Join(",", _strList.ToArray());
- var wmsLst = _wmsRepository.GetListBySql(string.Format("select top 100 * from TB_BILL with(nolock) where (state=1 or state=2) and BillNum in ({0}) ", str));
- if (wmsLst.Count() == 0) //库存没有排序
- {
- //调用库存系统接口
- List billNumLst = pairlist.Select(itm => itm.BillNum).Distinct().ToList();
- foreach (string billNumStr in billNumLst)
- {
- DelOrScrapWMSInterface(billNumStr, true);
- }
-
- #region 作废时单据序号减一
- string curProductLine = selLst[0].ProductLine;
- DateTime curPrintDate = selLst[0].PrintDate;
- //string curPartType = selLst[0].PartType;
- var priorLst = _menBanPackingListRepository.Where(itm => itm.ReportStatus == ReportStatusEnum.已打印 && itm.ProductLine == curProductLine && idList.Contains(itm.Id) == false);
- if (priorLst.Any())
- {
- string maxBillNum = priorLst.Max(itm => itm.BillNum); //除去要作废记录,取当前生产线的最大单据号
- MenBanPackingList priorObj = priorLst.FirstOrDefault(itm => itm.BillNum == maxBillNum); //除去要作废记录,取当前生产线的最后打印记录
- double updRecCnt = await _lineSNDomianServic.SetMaxSN(ProductTypeEnum.门板, curProductLine, "", priorObj.PrintDate, priorObj.BillSerialNum.TryToDoubleZero(), null); //调用减号接口
- }
- else
- {
- double updRecCnt2 = await _lineSNDomianServic.SetMaxSN(ProductTypeEnum.门板, curProductLine, "", curPrintDate, 0, null); //调用减号接口,没有上条记录时 单据号传0
- }
- #endregion
-
- foreach (var itm in pairlist)
- {
- itm.ReportStatus = WY.NewJit.Extends.PaiGe.ReportStatusEnum.已作废;
- }
-
- await _menBanPackingListRepository.UpdateManyAsync(pairlist);
- //批量改为未打印
- var _childList = await _menBanPackingListRepository.Where(p => idList.Contains(p.Id)).SelectMany(p => p.Details).ToListAsync();
- var _child = _childList.Select(p => p.M100BillId).Distinct().ToList();
- var m100Lst = await _billM100Repository.Where(p => _child.Contains(p.Id)).ToListAsync();
- m100Lst.ForEach(p =>
- {
- if (p.BillStatus == BillStatusEnum.Publish)
- {
- p.SetBillStatus(BillStatusEnum.Match);
- }
- p.PrintTime = null;
- });
- await _billM100Repository.UpdateManyAsync(m100Lst);
-
- }
- else
- {
- throw new BusinessException("1001", "WMS已经排序,不能报废!");
- }
- return wmsLst.Select(p => p.BillNum).ToList();
- }
+ //[HttpPost]
+ //[Route("scrap")]
+ //[UnitOfWork(isTransactional: false)]
+ //public virtual async Task> ScrapAsync(List ids)
+ //{
+ // var selLst = await _menBanPackingListRepository.Where(p => ids.Contains(p.Id)).ToListAsync();
+ // if (selLst == null || selLst.Count == 0)
+ // {
+ // throw new BusinessException("1001", "没有选中要作废的已打印装箱单!");
+ // }
+ // foreach (var _obj in selLst)
+ // {
+ // string maxBillNum = await _menBanPackingListRepository.Where(itm => itm.ProductLine == _obj.ProductLine && itm.ReportStatus == ReportStatusEnum.已打印).MaxAsync(itm => itm.BillNum); //取当前生产线的最大装箱单号
+ // if (string.IsNullOrEmpty(maxBillNum) == false)
+ // {
+ // MenBanPackingList firObj = await _menBanPackingListRepository.FirstOrDefaultAsync(itm => itm.BillNum == maxBillNum);
+ // if (firObj != null)
+ // {
+ // if (_obj.SortId != firObj.SortId)
+ // {
+ // throw new BusinessException("1001", "只能报废当前生产线的最后打印单据,要报废的单据不是最后打印单据!");
+ // }
+ // }
+ // }
+ // }
+
+ // var sortList = selLst.Select(p => p.SortId).Distinct().ToList();//筛选出匹配门板
+ // List pairlist = _menBanPackingListRepository.Where(p => sortList.Contains(p.SortId)).ToList();
+
+
+ // var idList = pairlist.Select(p => p.Id).ToList();
+ // var _ls = pairlist.Select(p => p.BillNum).ToList();
+ // var _strList = new List();
+
+ // _ls.ForEach(p => {
+ // _strList.Add(string.Format("'{0}'", p));
+ // });
+ // string str = string.Join(",", _strList.ToArray());
+ // var wmsLst = _wmsRepository.GetListBySql(string.Format("select top 100 * from TB_BILL with(nolock) where (state=1 or state=2) and BillNum in ({0}) ", str));
+ // if (wmsLst.Count() == 0) //库存没有排序
+ // {
+ // //调用库存系统接口
+ // List billNumLst = pairlist.Select(itm => itm.BillNum).Distinct().ToList();
+ // foreach (string billNumStr in billNumLst)
+ // {
+ // DelOrScrapWMSInterface(billNumStr, true);
+ // }
+
+ // #region 作废时单据序号减一
+ // string curProductLine = selLst[0].ProductLine;
+ // DateTime curPrintDate = selLst[0].PrintDate;
+ // //string curPartType = selLst[0].PartType;
+ // var priorLst = _menBanPackingListRepository.Where(itm => itm.ReportStatus == ReportStatusEnum.已打印 && itm.ProductLine == curProductLine && idList.Contains(itm.Id) == false);
+ // if (priorLst.Any())
+ // {
+ // string maxBillNum = priorLst.Max(itm => itm.BillNum); //除去要作废记录,取当前生产线的最大单据号
+ // MenBanPackingList priorObj = priorLst.FirstOrDefault(itm => itm.BillNum == maxBillNum); //除去要作废记录,取当前生产线的最后打印记录
+ // double updRecCnt = await _lineSNDomianServic.SetMaxSN(ProductTypeEnum.门板, curProductLine, "", priorObj.PrintDate, priorObj.BillSerialNum.TryToDoubleZero(), null); //调用减号接口
+ // }
+ // else
+ // {
+ // double updRecCnt2 = await _lineSNDomianServic.SetMaxSN(ProductTypeEnum.门板, curProductLine, "", curPrintDate, 0, null); //调用减号接口,没有上条记录时 单据号传0
+ // }
+ // #endregion
+
+ // foreach (var itm in pairlist)
+ // {
+ // itm.ReportStatus = WY.NewJit.Extends.PaiGe.ReportStatusEnum.已作废;
+ // }
+
+ // await _menBanPackingListRepository.UpdateManyAsync(pairlist);
+ // //批量改为未打印
+ // var _childList = await _menBanPackingListRepository.Where(p => idList.Contains(p.Id)).SelectMany(p => p.Details).ToListAsync();
+ // var _child = _childList.Select(p => p.M100BillId).Distinct().ToList();
+ // var m100Lst = await _billM100Repository.Where(p => _child.Contains(p.Id)).ToListAsync();
+ // m100Lst.ForEach(p =>
+ // {
+ // if (p.BillStatus == BillStatusEnum.Publish)
+ // {
+ // p.SetBillStatus(BillStatusEnum.Match);
+ // }
+ // p.PrintTime = null;
+ // });
+ // await _billM100Repository.UpdateManyAsync(m100Lst);
+
+ // }
+ // else
+ // {
+ // throw new BusinessException("1001", "WMS已经排序,不能报废!");
+ // }
+ // return wmsLst.Select(p => p.BillNum).ToList();
+ //}
#region 格拉默
[HttpGet]
[Route("get-packinglist-by-billnum")]
- public async Task> GetPackingListByBillNum(string billNum)
+ public async Task> GetPackingListByBillNum(string billNum)
{
_logger.LogDebug(_errorMessagePrefix + "GetPackingListByBillNum 进入");
-
+ WY.NewJit.ListResultDto ret = new WY.NewJit.ListResultDto();
try
{
- List dicItemLst = await _dicItemRepository.GetListAsync(itm => itm.DicTypeCode == "零件大类");
+ List partLargeTypeLst = await _dicItemRepository.GetListAsync(itm => itm.DicTypeCode == "零件大类");
List partCfgLst = await _partCfgRepository.GetListAsync();
@@ -443,16 +443,17 @@ namespace Win.Sfs.SettleAccount.FISes
//第一个零件
if (detailObj.PartCode1.HasValue() && detailObj.PartCode1.Length >= 9)
{
- var dicItemObj = dicItemLst.FirstOrDefault(itm => itm.DicItemSort3 == targetObj.VehicleModel && itm.DicItemCode == detailObj.PartCode1.Substring(6, 3));
+ //根据车型、零件大类取记录
+ var partLargeTypeObj = partLargeTypeLst.FirstOrDefault(itm => itm.DicItemSort3 == targetObj.VehicleModel && itm.DicItemCode == detailObj.PartCode1.Substring(6, 3));
var partCfgObj = partCfgLst.FirstOrDefault(itm => itm.PartCode == detailObj.PartCode1);
- if (dicItemObj.DicItemSort5 == "客户零件")
+ if (partLargeTypeObj.DicItemSort5 == "客户零件号")
{
if (partCfgObj != null)
{
detailObj.PartCode1 = partCfgObj.PartCode;
}
}
- else if (dicItemObj.DicItemSort5 == "厂内零件")
+ else if (partLargeTypeObj.DicItemSort5 == "厂内零件号")
{
if (partCfgObj != null)
{
@@ -463,16 +464,16 @@ namespace Win.Sfs.SettleAccount.FISes
//第二个零件
if (detailObj.PartCode2.HasValue() && detailObj.PartCode2.Length >= 9)
{
- var dicItemObj = dicItemLst.FirstOrDefault(itm => itm.DicItemSort3 == targetObj.VehicleModel && itm.DicItemCode == detailObj.PartCode2.Substring(6, 3));
+ var dicItemObj = partLargeTypeLst.FirstOrDefault(itm => itm.DicItemSort3 == targetObj.VehicleModel && itm.DicItemCode == detailObj.PartCode2.Substring(6, 3));
var partCfgObj = partCfgLst.FirstOrDefault(itm => itm.PartCode == detailObj.PartCode2);
- if (dicItemObj.DicItemSort5 == "客户零件")
+ if (dicItemObj.DicItemSort5 == "客户零件号")
{
if (partCfgObj != null)
{
detailObj.PartCode2 = partCfgObj.PartCode;
}
}
- else if (dicItemObj.DicItemSort5 == "厂内零件")
+ else if (dicItemObj.DicItemSort5 == "厂内零件号")
{
if (partCfgObj != null)
{
@@ -483,16 +484,16 @@ namespace Win.Sfs.SettleAccount.FISes
//第三个零件
if (detailObj.PartCode3.HasValue() && detailObj.PartCode3.Length >= 9)
{
- var dicItemObj = dicItemLst.FirstOrDefault(itm => itm.DicItemSort3 == targetObj.VehicleModel && itm.DicItemCode == detailObj.PartCode3.Substring(6, 3));
+ var dicItemObj = partLargeTypeLst.FirstOrDefault(itm => itm.DicItemSort3 == targetObj.VehicleModel && itm.DicItemCode == detailObj.PartCode3.Substring(6, 3));
var partCfgObj = partCfgLst.FirstOrDefault(itm => itm.PartCode == detailObj.PartCode3);
- if (dicItemObj.DicItemSort5 == "客户零件")
+ if (dicItemObj.DicItemSort5 == "客户零件号")
{
if (partCfgObj != null)
{
detailObj.PartCode3 = partCfgObj.PartCode;
}
}
- else if (dicItemObj.DicItemSort5 == "厂内零件")
+ else if (dicItemObj.DicItemSort5 == "厂内零件号")
{
if (partCfgObj != null)
{
@@ -503,16 +504,16 @@ namespace Win.Sfs.SettleAccount.FISes
//第四个零件
if (detailObj.PartCode4.HasValue() && detailObj.PartCode4.Length >= 9)
{
- var dicItemObj = dicItemLst.FirstOrDefault(itm => itm.DicItemSort3 == targetObj.VehicleModel && itm.DicItemCode == detailObj.PartCode4.Substring(6, 3));
+ var dicItemObj = partLargeTypeLst.FirstOrDefault(itm => itm.DicItemSort3 == targetObj.VehicleModel && itm.DicItemCode == detailObj.PartCode4.Substring(6, 3));
var partCfgObj = partCfgLst.FirstOrDefault(itm => itm.PartCode == detailObj.PartCode4);
- if (dicItemObj.DicItemSort5 == "客户零件")
+ if (dicItemObj.DicItemSort5 == "客户零件号")
{
if (partCfgObj != null)
{
detailObj.PartCode4 = partCfgObj.PartCode;
}
}
- else if (dicItemObj.DicItemSort5 == "厂内零件")
+ else if (dicItemObj.DicItemSort5 == "厂内零件号")
{
if (partCfgObj != null)
{
@@ -526,27 +527,42 @@ namespace Win.Sfs.SettleAccount.FISes
#endregion
#endregion
- return targetLst;
+ ret.Status = true;
+ ret.Item = targetLst;
+ return ret;
}
catch (Exception ex)
{
string errorMsg = _errorMessagePrefix + "GetPackingListByBillNum 执行出错:" + ex.Message;
_logger.LogError(errorMsg);
- throw new UserFriendlyException(errorMsg);
+ ret.Status = false;
+ ret.Message = errorMsg;
+ return ret;
}
}
[HttpPost]
[Route("update-scan-status")]
- public virtual async Task UpdateScanStatus(string billNum)
+ public virtual async Task UpdateScanStatus(string billNum)
{
- var lst = await _menBanPackingListRepository.GetListAsync(itm => itm.BillNum == billNum);
- foreach (var item in lst)
+ ObjectResultDto ret = new ObjectResultDto();
+ try
+ {
+ var lst = await _menBanPackingListRepository.GetListAsync(itm => itm.BillNum == billNum);
+ foreach (var item in lst)
+ {
+ item.ReportStatus = ReportStatusEnum.已扫描;
+ var succ = await _menBanPackingListRepository.UpdateAsync(item);
+ }
+ ret.Status = true;
+ return ret;
+ }
+ catch (Exception ex)
{
- item.ReportStatus = ReportStatusEnum.已扫描;
- var succ = await _menBanPackingListRepository.UpdateAsync(item);
+ ret.Status = false;
+ ret.Message = $"调用UpdateScanStatus方法报错:{ex.Message}";
+ throw;
}
- return true;
}
#endregion
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM110s/BillM110AppService.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM110s/BillM110AppService.cs
index 8be7ed5..3d25573 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM110s/BillM110AppService.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgCheck/BillM110s/BillM110AppService.cs
@@ -897,90 +897,90 @@ select * from
///
///
///
- private MenBanPackingList DoMBPrint(MenBanPrintInputDto input, int pageIdx, double maxSN, List billLst, string reportSort, string[] partLargeType)
- {
- const int _colNumberPerPage = 12;
+ //private MenBanPackingList DoMBPrint(MenBanPrintInputDto input, int pageIdx, double maxSN, List billLst, string reportSort, string[] partLargeType)
+ //{
+ // const int _colNumberPerPage = 12;
- //取当前页内容
- List curPageLst = billLst.Skip(pageIdx * _colNumberPerPage).Take(_colNumberPerPage).ToList();
+ // //取当前页内容
+ // List curPageLst = billLst.Skip(pageIdx * _colNumberPerPage).Take(_colNumberPerPage).ToList();
- var vmLst = curPageLst.Select(itm => itm.VehicleModelCode).Distinct().JoinAsString(","); //取车型
- string ymd = ServerHelper.CurrentDateTime.ToString("yyyyMMdd");
- string serialNum = maxSN.ToString().PadLeft(3, '0'); //075
+ // var vmLst = curPageLst.Select(itm => itm.VehicleModelCode).Distinct().JoinAsString(","); //取车型
+ // string ymd = ServerHelper.CurrentDateTime.ToString("yyyyMMdd");
+ // string serialNum = maxSN.ToString().PadLeft(3, '0'); //075
- MenBanPackingList packingMain = new MenBanPackingList();
- packingMain.SetId(GuidGenerator.Create());
- packingMain.BillNum = $"C{ymd}{serialNum}{reportSort}";
- packingMain.VehicleModel = vmLst;
- packingMain.BillSerialNum = serialNum;
- packingMain.PrintDate = ServerHelper.CurrentDateTime;
- packingMain.ProductLine = billLst[0].ProductLine;
+ // MenBanPackingList packingMain = new MenBanPackingList();
+ // packingMain.SetId(GuidGenerator.Create());
+ // packingMain.BillNum = $"C{ymd}{serialNum}{reportSort}";
+ // packingMain.VehicleModel = vmLst;
+ // packingMain.BillSerialNum = serialNum;
+ // packingMain.PrintDate = ServerHelper.CurrentDateTime;
+ // packingMain.ProductLine = billLst[0].ProductLine;
- var tempLst = curPageLst.Where(itm => string.IsNullOrEmpty(itm.VIN) == false).OrderBy(itm => itm.OnlineTime).ThenBy(itm => itm.HostSN).ToList();
- if (tempLst.Count > 0)
- {
- packingMain.BeginVin = tempLst[0].VIN;
- packingMain.EndVin = tempLst[tempLst.Count - 1].VIN;
- packingMain.BeginHostSN = tempLst[0].HostSN.ToString();
- packingMain.EndHostSN = tempLst[tempLst.Count - 1].HostSN.ToString();
- }
- packingMain.MinOnlineTime = tempLst.Min(itm => itm.OnlineTime); //本单据最早的上线时间
- //明细
- int sn = 1;
- foreach (BillM110 billObj in curPageLst)
- {
- MenBanPackingRec packingDetail = new MenBanPackingRec();
- packingDetail.SetId(GuidGenerator.Create());
- packingDetail.M100BillId = billObj.Id;
- packingDetail.KNR = billObj.KNR;
- packingDetail.VIN = billObj.VIN;
- packingDetail.HostSN = billObj.HostSN?.ToString();
- if (billObj.VIN == null)
- {
- packingDetail.VIN += "*断号*";
- }
- //第一个零件
- if (partLargeType.Length >= 1)
- {
- var partObj = billObj.BillM110Parts.FirstOrDefault(itm => itm.PartType3 == partLargeType[0]);
- if (partObj != null)
- {
- packingDetail.PartCode1 = partObj.PartCode;
- }
- }
- //第二个零件
- if (partLargeType.Length >= 2)
- {
- var partObj = billObj.BillM110Parts.FirstOrDefault(itm => itm.PartType3 == partLargeType[1]);
- if (partObj != null)
- {
- packingDetail.PartCode2 = partObj.PartCode;
- }
- }
- //第三个零件
- if (partLargeType.Length >= 3)
- {
- var partObj = billObj.BillM110Parts.FirstOrDefault(itm => itm.PartType3 == partLargeType[2]);
- if (partObj != null)
- {
- packingDetail.PartCode3 = partObj.PartCode;
- }
- }
- //第四个零件
- if (partLargeType.Length >= 4)
- {
- var partObj = billObj.BillM110Parts.FirstOrDefault(itm => itm.PartType3 == partLargeType[3]);
- if (partObj != null)
- {
- packingDetail.PartCode4 = partObj.PartCode;
- }
- }
- packingDetail.SN = sn.ToString();
- packingMain.Details.Add(packingDetail);
- sn++;
- }
- return packingMain;
- }
+ // var tempLst = curPageLst.Where(itm => string.IsNullOrEmpty(itm.VIN) == false).OrderBy(itm => itm.OnlineTime).ThenBy(itm => itm.HostSN).ToList();
+ // if (tempLst.Count > 0)
+ // {
+ // packingMain.BeginVin = tempLst[0].VIN;
+ // packingMain.EndVin = tempLst[tempLst.Count - 1].VIN;
+ // packingMain.BeginHostSN = tempLst[0].HostSN.ToString();
+ // packingMain.EndHostSN = tempLst[tempLst.Count - 1].HostSN.ToString();
+ // }
+ // packingMain.MinOnlineTime = tempLst.Min(itm => itm.OnlineTime); //本单据最早的上线时间
+ // //明细
+ // int sn = 1;
+ // foreach (BillM110 billObj in curPageLst)
+ // {
+ // MenBanPackingRec packingDetail = new MenBanPackingRec();
+ // packingDetail.SetId(GuidGenerator.Create());
+ // packingDetail.M100BillId = billObj.Id;
+ // packingDetail.KNR = billObj.KNR;
+ // packingDetail.VIN = billObj.VIN;
+ // packingDetail.HostSN = billObj.HostSN?.ToString();
+ // if (billObj.VIN == null)
+ // {
+ // packingDetail.VIN += "*断号*";
+ // }
+ // //第一个零件
+ // if (partLargeType.Length >= 1)
+ // {
+ // var partObj = billObj.BillM110Parts.FirstOrDefault(itm => itm.PartType3 == partLargeType[0]);
+ // if (partObj != null)
+ // {
+ // packingDetail.PartCode1 = partObj.PartCode;
+ // }
+ // }
+ // //第二个零件
+ // if (partLargeType.Length >= 2)
+ // {
+ // var partObj = billObj.BillM110Parts.FirstOrDefault(itm => itm.PartType3 == partLargeType[1]);
+ // if (partObj != null)
+ // {
+ // packingDetail.PartCode2 = partObj.PartCode;
+ // }
+ // }
+ // //第三个零件
+ // if (partLargeType.Length >= 3)
+ // {
+ // var partObj = billObj.BillM110Parts.FirstOrDefault(itm => itm.PartType3 == partLargeType[2]);
+ // if (partObj != null)
+ // {
+ // packingDetail.PartCode3 = partObj.PartCode;
+ // }
+ // }
+ // //第四个零件
+ // if (partLargeType.Length >= 4)
+ // {
+ // var partObj = billObj.BillM110Parts.FirstOrDefault(itm => itm.PartType3 == partLargeType[3]);
+ // if (partObj != null)
+ // {
+ // packingDetail.PartCode4 = partObj.PartCode;
+ // }
+ // }
+ // packingDetail.SN = sn.ToString();
+ // packingMain.Details.Add(packingDetail);
+ // sn++;
+ // }
+ // return packingMain;
+ //}
///
/// 上箱位号加前缀
@@ -1998,83 +1998,83 @@ select * from
///
///
/// 断号时Item不为空
- [UnitOfWork(false)]
- [HttpPost]
- [Route("check-mb-hostsn-break-num")]
- public virtual async Task> CheckMBHostSNBreakNum(MenBanPrintInputDto input)
- {
- List retLst = new List();
- try
- {
- int lastNum = await GetMenBanLastPrintNum(input); //从M110中取当前产线、已经打印的最大大众顺序号
- if (lastNum > 0)
- {
- if ((lastNum % 10000) == 1999)
- {
- if ((input.BeginHostSN % 10000) != 1)
- {
- string msg = $"单据之间断号,上次打印的最后大众顺序号为【{lastNum}】,与本次打印开始号【{input.BeginHostSN}】中间存在断号!";
- retLst.Add(msg);
- _logger.LogDebug(msg);
- }
- }
- else
- {
- if (lastNum + 1 != input.BeginHostSN)
- {
- string msg = $"单据之间断号,上次打印的最后大众顺序号为【{lastNum}】,与本次打印开始号【{input.BeginHostSN}】中间存在断号!";
- retLst.Add(msg);
- _logger.LogDebug(msg);
- }
- }
- }
+ //[UnitOfWork(false)]
+ //[HttpPost]
+ //[Route("check-mb-hostsn-break-num")]
+ //public virtual async Task> CheckMBHostSNBreakNum(MenBanPrintInputDto input)
+ //{
+ // List retLst = new List();
+ // try
+ // {
+ // int lastNum = await GetMenBanLastPrintNum(input); //从M110中取当前产线、已经打印的最大大众顺序号
+ // if (lastNum > 0)
+ // {
+ // if ((lastNum % 10000) == 1999)
+ // {
+ // if ((input.BeginHostSN % 10000) != 1)
+ // {
+ // string msg = $"单据之间断号,上次打印的最后大众顺序号为【{lastNum}】,与本次打印开始号【{input.BeginHostSN}】中间存在断号!";
+ // retLst.Add(msg);
+ // _logger.LogDebug(msg);
+ // }
+ // }
+ // else
+ // {
+ // if (lastNum + 1 != input.BeginHostSN)
+ // {
+ // string msg = $"单据之间断号,上次打印的最后大众顺序号为【{lastNum}】,与本次打印开始号【{input.BeginHostSN}】中间存在断号!";
+ // retLst.Add(msg);
+ // _logger.LogDebug(msg);
+ // }
+ // }
+ // }
- ListResultDto tempLst = await GetMBReportDetailList(input, false);
- List billLst = tempLst.Item;
- if (billLst.Count < 2)
- {
- return new ListResultDto(retLst);
- }
- for (int i = 1; i < billLst.Count; i++)
- {
- BillM110 priorObj = billLst[i - 1];
- BillM110 curObj = billLst[i];
- int priorHostSN = (int)billLst[i - 1].HostSN;
- int curHostSN = (int)billLst[i].HostSN;
+ // ListResultDto tempLst = await GetMBReportDetailList(input, false);
+ // List billLst = tempLst.Item;
+ // if (billLst.Count < 2)
+ // {
+ // return new ListResultDto(retLst);
+ // }
+ // for (int i = 1; i < billLst.Count; i++)
+ // {
+ // BillM110 priorObj = billLst[i - 1];
+ // BillM110 curObj = billLst[i];
+ // int priorHostSN = (int)billLst[i - 1].HostSN;
+ // int curHostSN = (int)billLst[i].HostSN;
- if (curHostSN > priorHostSN) //0005、0006
- {
- if (curHostSN > priorHostSN + 1) //0005、0008时,补号 0006、0007
- {
- retLst.Add($"大众顺序号{priorObj.HostSN}与{curObj.HostSN}之间存在断号情况!");
- }
- }
- else if (curHostSN < priorHostSN) //1999到0001的情况
- {
- if (curHostSN + _hostSNMaxVal > priorHostSN + 1) //0005、0008时,补号 0006、0007
- {
- retLst.Add($"大众顺序号{priorObj.HostSN}与{curObj.HostSN}之间存在断号情况!");
- }
- }
- }
- if (retLst.Count == 0 && billLst.Count < input.EndHostSN - input.BeginHostSN + 1)
- {
- retLst.Add($"本车装箱单不满架!");
- }
+ // if (curHostSN > priorHostSN) //0005、0006
+ // {
+ // if (curHostSN > priorHostSN + 1) //0005、0008时,补号 0006、0007
+ // {
+ // retLst.Add($"大众顺序号{priorObj.HostSN}与{curObj.HostSN}之间存在断号情况!");
+ // }
+ // }
+ // else if (curHostSN < priorHostSN) //1999到0001的情况
+ // {
+ // if (curHostSN + _hostSNMaxVal > priorHostSN + 1) //0005、0008时,补号 0006、0007
+ // {
+ // retLst.Add($"大众顺序号{priorObj.HostSN}与{curObj.HostSN}之间存在断号情况!");
+ // }
+ // }
+ // }
+ // if (retLst.Count == 0 && billLst.Count < input.EndHostSN - input.BeginHostSN + 1)
+ // {
+ // retLst.Add($"本车装箱单不满架!");
+ // }
- return new ListResultDto(retLst);
- }
- catch (Exception ex)
- {
- ListResultDto ret = new ListResultDto();
- ret.Status = false;
- ret.Message = _errorMessagePrefix + "打印前检查大众顺序号是否断号ChecMBkHostSNBreakNum 执行出错:" + ex.Message;
- _logger.LogError(ret.Message);
- return ret;
- }
+ // return new ListResultDto(retLst);
+ // }
+ // catch (Exception ex)
+ // {
+ // ListResultDto ret = new ListResultDto();
+ // ret.Status = false;
+ // ret.Message = _errorMessagePrefix + "打印前检查大众顺序号是否断号ChecMBkHostSNBreakNum 执行出错:" + ex.Message;
+ // _logger.LogError(ret.Message);
+ // return ret;
+ // }
- }
+ //}
///
/// 打印前检查大众顺序号是否断号
@@ -2154,72 +2154,72 @@ select * from
/// 柱护板是1 门板是非1
/// 柱护板分组类型
/// 起始大众顺序号
- [UnitOfWork]
- [HttpGet]
- [Route("get-print-start-hostsn2")]
- public virtual async Task> GetPrintStartHostSN2(string productLine, string isZhuHuBan,string GroupName=null)
- {
- int? beginHostSN = null;
- try
- {
- if (isZhuHuBan == "1") //是柱护板, 根据PrintBillNum非空判断是柱护板
- {
- //string minSNStr = await _billM110Repository.Where(itm =>
- // itm.ProductLine == productLine //指定生产线
- // && itm.CanNotPrint != true //能打印
- // && string.IsNullOrEmpty(itm.PrintBillNum) == true //等于 未打印
- // && itm.NeedReplenishPrint != 1 //排除补打
- // ).MinAsync(itm => itm.SerialNumStr);
- string sql = @"
-with d as
-(
- select *from [dbo].[FisZHBPrintStatus] where groupName='{1}'
-)
-
-select min(SerialNumStr) from FisBillM110 a left join d on a.VIN=d.VIN
-
- where ProductLine='{0}' and (CanNotPrint !=1 or CanNotPrint is null) and (PrintBillNum is null or PrintBillNum ='') and (NeedReplenishPrint!=1 or NeedReplenishPrint is null) and d.BillStatus is null";
-
- sql = string.Format(sql, productLine, GroupName);
- var minSNStr = await _newJitDapperRepository.GetSingleBySqlAsync(sql);
-
-
- beginHostSN = await _billM110Repository.Where(itm =>
- itm.ProductLine == productLine //指定生产线
- && itm.CanNotPrint != true //能打印
- && string.IsNullOrEmpty(itm.PrintBillNum) == true //等于 未打印
- && itm.SerialNumStr == minSNStr
- ).MinAsync(itm => itm.HostSN);
- }
- else //---------------门板-----------------------------------------------------------------------------------
- {
- string minSNStr2 = await _billM110Repository.Where(itm =>
- itm.ProductLine == productLine //指定生产线
- && itm.CanNotPrint != true //能打印
- //&& itm.BillStatus == BillStatusEnum.Match //等于 未打印(和M110上线信息匹配)
- && itm.BillStatus != BillStatusEnum.Publish //未知总成也显示在装箱单
- && itm.NeedReplenishPrint != 1 //排除补打
- ).MinAsync(itm => itm.SerialNumStr);
+// [UnitOfWork]
+// [HttpGet]
+// [Route("get-print-start-hostsn2")]
+// public virtual async Task> GetPrintStartHostSN2(string productLine, string isZhuHuBan,string GroupName=null)
+// {
+// int? beginHostSN = null;
+// try
+// {
+// if (isZhuHuBan == "1") //是柱护板, 根据PrintBillNum非空判断是柱护板
+// {
+// //string minSNStr = await _billM110Repository.Where(itm =>
+// // itm.ProductLine == productLine //指定生产线
+// // && itm.CanNotPrint != true //能打印
+// // && string.IsNullOrEmpty(itm.PrintBillNum) == true //等于 未打印
+// // && itm.NeedReplenishPrint != 1 //排除补打
+// // ).MinAsync(itm => itm.SerialNumStr);
+// string sql = @"
+//with d as
+//(
+// select *from [dbo].[FisZHBPrintStatus] where groupName='{1}'
+//)
- beginHostSN = await _billM110Repository.Where(itm =>
- itm.ProductLine == productLine //指定生产线
- && itm.CanNotPrint != true //能打印
- //&& itm.BillStatus == BillStatusEnum.Match //等于 未打印
- && itm.BillStatus != BillStatusEnum.Publish //未知总成也显示在装箱单
- && itm.SerialNumStr == minSNStr2
- ).MinAsync(itm => itm.HostSN);
- }
- return new ObjectResultDto(beginHostSN);
- }
- catch (Exception ex)
- {
- ObjectResultDto ret = new ObjectResultDto();
- ret.Status = false;
- ret.Message = _errorMessagePrefix + "GetPrintStartHostSN2 执行出错:" + ex.Message;
- _logger.LogError(ret.Message);
- return ret;
- }
- }
+//select min(SerialNumStr) from FisBillM110 a left join d on a.VIN=d.VIN
+
+// where ProductLine='{0}' and (CanNotPrint !=1 or CanNotPrint is null) and (PrintBillNum is null or PrintBillNum ='') and (NeedReplenishPrint!=1 or NeedReplenishPrint is null) and d.BillStatus is null";
+
+// sql = string.Format(sql, productLine, GroupName);
+// var minSNStr = await _newJitDapperRepository.GetSingleBySqlAsync(sql);
+
+
+// beginHostSN = await _billM110Repository.Where(itm =>
+// itm.ProductLine == productLine //指定生产线
+// && itm.CanNotPrint != true //能打印
+// && string.IsNullOrEmpty(itm.PrintBillNum) == true //等于 未打印
+// && itm.SerialNumStr == minSNStr
+// ).MinAsync(itm => itm.HostSN);
+// }
+// else //---------------门板-----------------------------------------------------------------------------------
+// {
+// string minSNStr2 = await _billM110Repository.Where(itm =>
+// itm.ProductLine == productLine //指定生产线
+// && itm.CanNotPrint != true //能打印
+// //&& itm.BillStatus == BillStatusEnum.Match //等于 未打印(和M110上线信息匹配)
+// && itm.BillStatus != BillStatusEnum.Publish //未知总成也显示在装箱单
+// && itm.NeedReplenishPrint != 1 //排除补打
+// ).MinAsync(itm => itm.SerialNumStr);
+
+// beginHostSN = await _billM110Repository.Where(itm =>
+// itm.ProductLine == productLine //指定生产线
+// && itm.CanNotPrint != true //能打印
+// //&& itm.BillStatus == BillStatusEnum.Match //等于 未打印
+// && itm.BillStatus != BillStatusEnum.Publish //未知总成也显示在装箱单
+// && itm.SerialNumStr == minSNStr2
+// ).MinAsync(itm => itm.HostSN);
+// }
+// return new ObjectResultDto(beginHostSN);
+// }
+// catch (Exception ex)
+// {
+// ObjectResultDto ret = new ObjectResultDto();
+// ret.Status = false;
+// ret.Message = _errorMessagePrefix + "GetPrintStartHostSN2 执行出错:" + ex.Message;
+// _logger.LogError(ret.Message);
+// return ret;
+// }
+// }
///
/// 打印门板装箱单
@@ -3209,334 +3209,334 @@ select min(SerialNumStr) from FisBillM110 a left join d on a.VIN=d.VIN
///
/// 生产线编号列表
/// 生产线超时情况
- [UnitOfWork]
- [HttpPost]
- [Route("product-line-timeout-remind")]
- public virtual async Task> ProductLineTimeoutRemind(TimeOutRemindInputDto input)
- {
- List retLst = new List();
- foreach (string plStr in input.ProductLineList)
- {
- TimeOutRemindResultDto retObj = new TimeOutRemindResultDto();
- retObj.ProductLine = plStr;
- retObj.ConfigMinutes = _configuration[$"ConfigDic:ProductLineTimeoutRemind:{plStr}"].TryToInt() ?? 30;
+ //[UnitOfWork]
+ //[HttpPost]
+ //[Route("product-line-timeout-remind")]
+ //public virtual async Task> ProductLineTimeoutRemind(TimeOutRemindInputDto input)
+ //{
+ // List retLst = new List();
+ // foreach (string plStr in input.ProductLineList)
+ // {
+ // TimeOutRemindResultDto retObj = new TimeOutRemindResultDto();
+ // retObj.ProductLine = plStr;
+ // retObj.ConfigMinutes = _configuration[$"ConfigDic:ProductLineTimeoutRemind:{plStr}"].TryToInt() ?? 30;
- string maxSNStr = await _billM110Repository.Where(itm => itm.ProductLine == plStr).MaxAsync(itm => itm.SerialNumStr);
- BillM110 lastBill = await _billM110Repository.FirstOrDefaultAsync(itm => itm.ProductLine == plStr && itm.SerialNumStr == maxSNStr);
- if (lastBill != null)
- {
- retObj.LastReceiveTime = lastBill.ReceiveTime ?? ServerHelper.CurrentDateTime;
- retObj.TimeoutMinutes = MinuteDiff(retObj.LastReceiveTime, ServerHelper.CurrentDateTime);
- }
- retLst.Add(retObj);
- }
- return new ListResultDto(retLst);
- }
+ // string maxSNStr = await _billM110Repository.Where(itm => itm.ProductLine == plStr).MaxAsync(itm => itm.SerialNumStr);
+ // BillM110 lastBill = await _billM110Repository.FirstOrDefaultAsync(itm => itm.ProductLine == plStr && itm.SerialNumStr == maxSNStr);
+ // if (lastBill != null)
+ // {
+ // retObj.LastReceiveTime = lastBill.ReceiveTime ?? ServerHelper.CurrentDateTime;
+ // retObj.TimeoutMinutes = MinuteDiff(retObj.LastReceiveTime, ServerHelper.CurrentDateTime);
+ // }
+ // retLst.Add(retObj);
+ // }
+ // return new ListResultDto(retLst);
+ //}
- private int MinuteDiff(DateTime beginTime, DateTime endTime)
- {
- TimeSpan beginSpan = new TimeSpan(beginTime.Ticks);
- TimeSpan endSpan = new TimeSpan(endTime.Ticks);
- TimeSpan diffSpan = endSpan.Subtract(beginSpan).Duration();
- return (int)(diffSpan.TotalMinutes);
- }
+ //private int MinuteDiff(DateTime beginTime, DateTime endTime)
+ //{
+ // TimeSpan beginSpan = new TimeSpan(beginTime.Ticks);
+ // TimeSpan endSpan = new TimeSpan(endTime.Ticks);
+ // TimeSpan diffSpan = endSpan.Subtract(beginSpan).Duration();
+ // return (int)(diffSpan.TotalMinutes);
+ //}
#endregion
#region 保存报表、加载打印报表分离
//[UnitOfWork]
- [UnitOfWork(IsDisabled = true)]
- [HttpPost]
- [Route("save-menban-report")]
- public virtual async Task>> SaveMenBanReport(MenBanPrintInputDto input)
- {
- Stopwatch sw = new Stopwatch();
+ //[UnitOfWork(IsDisabled = true)]
+ //[HttpPost]
+ //[Route("save-menban-report")]
+ //public virtual async Task>> SaveMenBanReport(MenBanPrintInputDto input)
+ //{
+ // Stopwatch sw = new Stopwatch();
- _logger.LogDebug(_errorMessagePrefix + "SaveMenBanReport 进入");
+ // _logger.LogDebug(_errorMessagePrefix + "SaveMenBanReport 进入");
- List retLst = new List();
- ObjectResultDto> ret = new ObjectResultDto>();
- ret.Status = false;
+ // List retLst = new List();
+ // ObjectResultDto> ret = new ObjectResultDto>();
+ // ret.Status = false;
- using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true, isolationLevel: System.Data.IsolationLevel.Unspecified))
- {
- try
- {
- List reportMainLst = new List();
+ // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true, isolationLevel: System.Data.IsolationLevel.Unspecified))
+ // {
+ // try
+ // {
+ // List reportMainLst = new List();
- if (input.PrintType == PrintTypeEnum.正常打印)
- {
- if (input.BeginHostSN != 0 && input.EndHostSN != 0)
- {
- if (input.BeginHostSN > input.EndHostSN)
- {
- ret.Message = "止大众顺序号必须大于等于起大众顺序号!";
- ret.Status = false;
- return ret;
- }
- }
- ListResultDto tempLst = await GetMBReportDetailList(input, true); //-----------------------------
- List billLst = tempLst.Item;
- if (tempLst.Status == false)
- {
- ret.Message = tempLst.Message;
- ret.Status = false;
- return ret;
- }
+ // if (input.PrintType == PrintTypeEnum.正常打印)
+ // {
+ // if (input.BeginHostSN != 0 && input.EndHostSN != 0)
+ // {
+ // if (input.BeginHostSN > input.EndHostSN)
+ // {
+ // ret.Message = "止大众顺序号必须大于等于起大众顺序号!";
+ // ret.Status = false;
+ // return ret;
+ // }
+ // }
+ // ListResultDto tempLst = await GetMBReportDetailList(input, true); //-----------------------------
+ // List billLst = tempLst.Item;
+ // if (tempLst.Status == false)
+ // {
+ // ret.Message = tempLst.Message;
+ // ret.Status = false;
+ // return ret;
+ // }
- _logger.LogWarning($"SaveMenBanReport读取数据 - {sw.ElapsedMilliseconds}毫秒");
+ // _logger.LogWarning($"SaveMenBanReport读取数据 - {sw.ElapsedMilliseconds}毫秒");
- int pageCnt = (int)Math.Ceiling(billLst.Count / 12.0); //每页打印12列,取打印页数
+ // int pageCnt = (int)Math.Ceiling(billLst.Count / 12.0); //每页打印12列,取打印页数
- //double maxBillNum = 0;
+ // //double maxBillNum = 0;
- //DateTime printTime = ServerHelper.CurrentDateTime;
+ // //DateTime printTime = ServerHelper.CurrentDateTime;
- var reportSortDic = _dicItemRepository
- .Where(itm => itm.DicTypeCode == "零件大类" && itm.DicItemSort2 == input.ProductLine)
- .ToList()
- .GroupBy(itm => itm.DicItemSort4)
- .ToDictionary(itm => itm.Key, it2 => it2.Select(itm => itm.DicItemCode).ToArray());
+ // var reportSortDic = _dicItemRepository
+ // .Where(itm => itm.DicTypeCode == "零件大类" && itm.DicItemSort2 == input.ProductLine)
+ // .ToList()
+ // .GroupBy(itm => itm.DicItemSort4)
+ // .ToDictionary(itm => itm.Key, it2 => it2.Select(itm => itm.DicItemCode).ToArray());
- for (int pageIdx = 0; pageIdx < pageCnt; pageIdx++)
- {
+ // for (int pageIdx = 0; pageIdx < pageCnt; pageIdx++)
+ // {
- foreach (var reportSortItem in reportSortDic)
- {
- //生成顺序号:按生产线分组,取当前生产线的最大流水号:001至999往复循环
- double maxSN = await _lineSNDomianService.GetMaxSN(ProductTypeEnum.门板, input.ProductLine, string.Empty);
+ // foreach (var reportSortItem in reportSortDic)
+ // {
+ // //生成顺序号:按生产线分组,取当前生产线的最大流水号:001至999往复循环
+ // double maxSN = await _lineSNDomianService.GetMaxSN(ProductTypeEnum.门板, input.ProductLine, string.Empty);
- MenBanPackingList packingObj = DoMBPrint(input, pageIdx, maxSN, billLst, reportSortItem.Key, reportSortItem.Value);
- reportMainLst.Add(packingObj);
- }
- }
+ // MenBanPackingList packingObj = DoMBPrint(input, pageIdx, maxSN, billLst, reportSortItem.Key, reportSortItem.Value);
+ // reportMainLst.Add(packingObj);
+ // }
+ // }
- _logger.LogWarning($"SaveMenBanReport转换数据 - {sw.ElapsedMilliseconds}毫秒");
+ // _logger.LogWarning($"SaveMenBanReport转换数据 - {sw.ElapsedMilliseconds}毫秒");
- //插入门板打印记录表
- await _menBanPackingListRepository.InsertManyAsync(reportMainLst, true);
- retLst.AddRange(reportMainLst.Select(itm => itm.Id));
+ // //插入门板打印记录表
+ // await _menBanPackingListRepository.InsertManyAsync(reportMainLst, true);
+ // retLst.AddRange(reportMainLst.Select(itm => itm.Id));
- _logger.LogWarning($"SaveMenBanReport插入门板打印记录表 - {sw.ElapsedMilliseconds}毫秒");
+ // _logger.LogWarning($"SaveMenBanReport插入门板打印记录表 - {sw.ElapsedMilliseconds}毫秒");
- //调用派格版库存接口
- //await SaveMiddleTable_MB(reportMainLst);
+ // //调用派格版库存接口
+ // //await SaveMiddleTable_MB(reportMainLst);
- _logger.LogWarning($"SaveMenBanReport插入中间表 - {sw.ElapsedMilliseconds}毫秒");
+ // _logger.LogWarning($"SaveMenBanReport插入中间表 - {sw.ElapsedMilliseconds}毫秒");
- //更新M110的门板打印标志:BillStatus=3
- foreach (BillM110 billObj in billLst)
- {
- if (billObj.BillStatus == BillStatusEnum.Match)
- {
- billObj.SetBillStatus(BillStatusEnum.Publish);
- billObj.PrintTime = ServerHelper.CurrentDateTime;
- billObj.NeedReplenishPrint = 0; //不需要补打
- await _billM110Repository.UpdateAsync(billObj, true);
- }
- else if (billObj.BillStatus == BillStatusEnum.NotMatch)
- {
- //billObj.PrintTime = ServerHelper.CurrentDateTime;
- billObj.NeedReplenishPrint = 1; //需要补打
- await _billM110Repository.UpdateAsync(billObj, true);
- }
- }
+ // //更新M110的门板打印标志:BillStatus=3
+ // foreach (BillM110 billObj in billLst)
+ // {
+ // if (billObj.BillStatus == BillStatusEnum.Match)
+ // {
+ // billObj.SetBillStatus(BillStatusEnum.Publish);
+ // billObj.PrintTime = ServerHelper.CurrentDateTime;
+ // billObj.NeedReplenishPrint = 0; //不需要补打
+ // await _billM110Repository.UpdateAsync(billObj, true);
+ // }
+ // else if (billObj.BillStatus == BillStatusEnum.NotMatch)
+ // {
+ // //billObj.PrintTime = ServerHelper.CurrentDateTime;
+ // billObj.NeedReplenishPrint = 1; //需要补打
+ // await _billM110Repository.UpdateAsync(billObj, true);
+ // }
+ // }
- _logger.LogWarning($"SaveMenBanReport更新M110的门板打印标志 - {sw.ElapsedMilliseconds}毫秒");
+ // _logger.LogWarning($"SaveMenBanReport更新M110的门板打印标志 - {sw.ElapsedMilliseconds}毫秒");
- }
- //else if (input.PrintType == PrintTypeEnum.重新打印) //和正常打印单据完全一样,可以打印部分单据
- //{
- // throw new BusinessException("请调用LoadMenBanReport方法!");
- //}
- //else if (input.PrintType == PrintTypeEnum.补打)
- //{
- // List billLst = _billM110Repository.Where(itm => input.M110IdList.Contains(itm.Id)).OrderBy(itm => itm.SerialNumStr).ToList();
- // if (billLst.Count == 0)
- // {
- // ret.Message = "没有补打的单据,请先选择要补打的单据!";
- // ret.Status = false;
- // return ret;
- // }
-
- // int pageCnt = (int)Math.Ceiling(billLst.Count / 12.0); //每页打印12列,取打印页数
-
- // double maxBillNum = 0;
-
- // DateTime printTime = ServerHelper.CurrentDateTime;
-
- // for (int pageIdx = 0; pageIdx < pageCnt; pageIdx++)
- // {
- // //取右上角顺序号:按生产线分组,取当前生产线的最大流水号:01至99循环,例如01左、01右
- // double maxSN = 0; // await _lineSNDomianService.GetMaxSN(ProductTypeEnum.门板, input.ProductLine, string.Empty);
- // // 先打印两张:左后左前,再打印两张:右后右前
- // List leftLst = DoMBPrint(input, pageIdx, ref maxBillNum, maxSN, printTime, billLst, "左");
- // List rightLst = DoMBPrint(input, pageIdx, ref maxBillNum, maxSN, printTime, billLst, "右");
-
- // //作废时需要同时作废相同VIN的左右两页,SortId相同表示是同一组左右
- // Guid sortId = GuidGenerator.Create();
- // foreach (var leftItm in leftLst)
- // {
- // leftItm.SortId = sortId;
- // }
- // foreach (var rightItm in rightLst)
- // {
- // rightItm.SortId = sortId;
- // }
-
- // reportMainLst.AddRange(rightLst);
- // reportMainLst.AddRange(leftLst);
- // }
- // //校验底盘号、零件是否重复打印
- // string checkVinPartRepeatSql = @"
- // select top 1 a.BillNum from FisMenBanPackingList a join FisMenBanPackingRec b
- // on a.Id = b.MenBanPackingListId
- // where a.ReportStatus = 0
- // and b.VIN = '{0}' and (TopSAPMaterialNum = '{1}' or BelowSAPMaterialNum = '{1}')
- // ";
- // foreach (MenBanPackingList reportMainObj in reportMainLst)
- // {
- // foreach (MenBanPackingRec reportRecObj in reportMainObj.Details)
- // {
- // string sql1 = string.Format(checkVinPartRepeatSql, reportRecObj.VIN, reportRecObj.PartCode2);
- // string checkVinPartRepeatBillNum1 = _newJitDapperRepository.GetSingleBySql(sql1, true);
- // if (string.IsNullOrEmpty(checkVinPartRepeatBillNum1) == false)
- // {
- // throw new BusinessException("1001", $"与装箱单号{checkVinPartRepeatBillNum1}中的底盘号{reportRecObj.VIN}、零件号{reportRecObj.PartCode2}之间重复!");
- // }
-
- // string sql2 = string.Format(checkVinPartRepeatSql, reportRecObj.VIN, reportRecObj.PartCode4);
- // string checkVinPartRepeatBillNum2 = _newJitDapperRepository.GetSingleBySql(sql2, true);
- // if (string.IsNullOrEmpty(checkVinPartRepeatBillNum2) == false)
- // {
- // throw new BusinessException("1001", $"与装箱单号{checkVinPartRepeatBillNum2}中的底盘号{reportRecObj.VIN}、零件号{reportRecObj.PartCode4}之间重复!");
- // }
- // }
- // }
-
- // //调用派格版库存接口
- // await SaveMiddleTable_MB(reportMainLst);
-
- // //插入门板打印记录表
- // //await _menBanPackingListRepository.InsertManyAsync(reportMainLst);
- // foreach (var reportMainObj in reportMainLst)
- // {
- // var insObj = await _menBanPackingListRepository.InsertAsync(reportMainObj, true);
- // if (insObj != null)
- // {
- // retLst.Add(insObj.Id);
- // }
- // }
- // //更新M110的门板打印标志:BillStatus=3
- // foreach (BillM110 billObj in billLst)
- // {
- // if (billObj.BillStatus == BillStatusEnum.Match)
- // {
- // billObj.SetBillStatus(BillStatusEnum.Publish);
- // billObj.PrintTime = ServerHelper.CurrentDateTime;
- // await _billM110Repository.UpdateAsync(billObj);
- // }
- // }
- //} //补打if
- await uow.CompleteAsync();
- ret.Status = true;
- ret.Item = retLst;
- return ret;
- }
- catch (Exception ex)
- {
- await uow.RollbackAsync();
- string errorMsg = _errorMessagePrefix + "SaveMenBanReport 执行出错:" + ex.Message;
- _logger.LogError(errorMsg);
- ret.Status = false;
- ret.Message = ex.Message;
- return ret;
- }
- } //事务
- }
+ // }
+ // //else if (input.PrintType == PrintTypeEnum.重新打印) //和正常打印单据完全一样,可以打印部分单据
+ // //{
+ // // throw new BusinessException("请调用LoadMenBanReport方法!");
+ // //}
+ // //else if (input.PrintType == PrintTypeEnum.补打)
+ // //{
+ // // List billLst = _billM110Repository.Where(itm => input.M110IdList.Contains(itm.Id)).OrderBy(itm => itm.SerialNumStr).ToList();
+ // // if (billLst.Count == 0)
+ // // {
+ // // ret.Message = "没有补打的单据,请先选择要补打的单据!";
+ // // ret.Status = false;
+ // // return ret;
+ // // }
+
+ // // int pageCnt = (int)Math.Ceiling(billLst.Count / 12.0); //每页打印12列,取打印页数
+
+ // // double maxBillNum = 0;
+
+ // // DateTime printTime = ServerHelper.CurrentDateTime;
+
+ // // for (int pageIdx = 0; pageIdx < pageCnt; pageIdx++)
+ // // {
+ // // //取右上角顺序号:按生产线分组,取当前生产线的最大流水号:01至99循环,例如01左、01右
+ // // double maxSN = 0; // await _lineSNDomianService.GetMaxSN(ProductTypeEnum.门板, input.ProductLine, string.Empty);
+ // // // 先打印两张:左后左前,再打印两张:右后右前
+ // // List leftLst = DoMBPrint(input, pageIdx, ref maxBillNum, maxSN, printTime, billLst, "左");
+ // // List rightLst = DoMBPrint(input, pageIdx, ref maxBillNum, maxSN, printTime, billLst, "右");
+
+ // // //作废时需要同时作废相同VIN的左右两页,SortId相同表示是同一组左右
+ // // Guid sortId = GuidGenerator.Create();
+ // // foreach (var leftItm in leftLst)
+ // // {
+ // // leftItm.SortId = sortId;
+ // // }
+ // // foreach (var rightItm in rightLst)
+ // // {
+ // // rightItm.SortId = sortId;
+ // // }
+
+ // // reportMainLst.AddRange(rightLst);
+ // // reportMainLst.AddRange(leftLst);
+ // // }
+ // // //校验底盘号、零件是否重复打印
+ // // string checkVinPartRepeatSql = @"
+ // // select top 1 a.BillNum from FisMenBanPackingList a join FisMenBanPackingRec b
+ // // on a.Id = b.MenBanPackingListId
+ // // where a.ReportStatus = 0
+ // // and b.VIN = '{0}' and (TopSAPMaterialNum = '{1}' or BelowSAPMaterialNum = '{1}')
+ // // ";
+ // // foreach (MenBanPackingList reportMainObj in reportMainLst)
+ // // {
+ // // foreach (MenBanPackingRec reportRecObj in reportMainObj.Details)
+ // // {
+ // // string sql1 = string.Format(checkVinPartRepeatSql, reportRecObj.VIN, reportRecObj.PartCode2);
+ // // string checkVinPartRepeatBillNum1 = _newJitDapperRepository.GetSingleBySql(sql1, true);
+ // // if (string.IsNullOrEmpty(checkVinPartRepeatBillNum1) == false)
+ // // {
+ // // throw new BusinessException("1001", $"与装箱单号{checkVinPartRepeatBillNum1}中的底盘号{reportRecObj.VIN}、零件号{reportRecObj.PartCode2}之间重复!");
+ // // }
+
+ // // string sql2 = string.Format(checkVinPartRepeatSql, reportRecObj.VIN, reportRecObj.PartCode4);
+ // // string checkVinPartRepeatBillNum2 = _newJitDapperRepository.GetSingleBySql(sql2, true);
+ // // if (string.IsNullOrEmpty(checkVinPartRepeatBillNum2) == false)
+ // // {
+ // // throw new BusinessException("1001", $"与装箱单号{checkVinPartRepeatBillNum2}中的底盘号{reportRecObj.VIN}、零件号{reportRecObj.PartCode4}之间重复!");
+ // // }
+ // // }
+ // // }
+
+ // // //调用派格版库存接口
+ // // await SaveMiddleTable_MB(reportMainLst);
+
+ // // //插入门板打印记录表
+ // // //await _menBanPackingListRepository.InsertManyAsync(reportMainLst);
+ // // foreach (var reportMainObj in reportMainLst)
+ // // {
+ // // var insObj = await _menBanPackingListRepository.InsertAsync(reportMainObj, true);
+ // // if (insObj != null)
+ // // {
+ // // retLst.Add(insObj.Id);
+ // // }
+ // // }
+ // // //更新M110的门板打印标志:BillStatus=3
+ // // foreach (BillM110 billObj in billLst)
+ // // {
+ // // if (billObj.BillStatus == BillStatusEnum.Match)
+ // // {
+ // // billObj.SetBillStatus(BillStatusEnum.Publish);
+ // // billObj.PrintTime = ServerHelper.CurrentDateTime;
+ // // await _billM110Repository.UpdateAsync(billObj);
+ // // }
+ // // }
+ // //} //补打if
+ // await uow.CompleteAsync();
+ // ret.Status = true;
+ // ret.Item = retLst;
+ // return ret;
+ // }
+ // catch (Exception ex)
+ // {
+ // await uow.RollbackAsync();
+ // string errorMsg = _errorMessagePrefix + "SaveMenBanReport 执行出错:" + ex.Message;
+ // _logger.LogError(errorMsg);
+ // ret.Status = false;
+ // ret.Message = ex.Message;
+ // return ret;
+ // }
+ // } //事务
+ //}
- [UnitOfWork]
- [HttpPost]
- [Route("load-menban-report")]
- public virtual async Task> LoadMenBanReport(List input)
- {
- _logger.LogDebug(_errorMessagePrefix + "LoadMenBanReport 进入");
+ //[UnitOfWork]
+ //[HttpPost]
+ //[Route("load-menban-report")]
+ //public virtual async Task> LoadMenBanReport(List input)
+ //{
+ // _logger.LogDebug(_errorMessagePrefix + "LoadMenBanReport 进入");
- try
- {
- List reportMainLst = new List();
+ // try
+ // {
+ // List reportMainLst = new List();
- reportMainLst = await _menBanPackingListRepository.GetListAsync(itm => input.Contains(itm.Id) == true, true);
- //按大众顺序号排序
- foreach (var reportMainObj in reportMainLst)
- {
- List recLst = reportMainObj.Details;
- if (recLst == null)
- continue;
-
- bool has1999 = recLst.Any(itm => itm.HostSN.Contains("1999") || itm.HostSN.Contains("1998") || itm.HostSN.Contains("1997")
- || itm.HostSN.Contains("1996") || itm.HostSN.Contains("1995") || itm.HostSN.Contains("1994")
- || itm.HostSN.Contains("1993") || itm.HostSN.Contains("1992") || itm.HostSN.Contains("1991")
- || itm.HostSN.Contains("1990") || itm.HostSN.Contains("1989") || itm.HostSN.Contains("1988")
- || itm.HostSN.Contains("1987") || itm.HostSN.Contains("1986") || itm.HostSN.Contains("1985")
- || itm.HostSN.Contains("1984") || itm.HostSN.Contains("1983") || itm.HostSN.Contains("1982")
- || itm.HostSN.Contains("1981") || itm.HostSN.Contains("1980") || itm.HostSN.Contains("1979")
- || itm.HostSN.Contains("1978") || itm.HostSN.Contains("1977") || itm.HostSN.Contains("1976")
- );
- bool has0001 = recLst.Any(itm => itm.HostSN.Contains("0001") || itm.HostSN.Contains("0002") || itm.HostSN.Contains("0003")
- || itm.HostSN.Contains("0004") || itm.HostSN.Contains("0005") || itm.HostSN.Contains("0006")
- || itm.HostSN.Contains("0007") || itm.HostSN.Contains("0008") || itm.HostSN.Contains("0009")
- || itm.HostSN.Contains("0010") || itm.HostSN.Contains("0011") || itm.HostSN.Contains("0012")
- || itm.HostSN.Contains("0013") || itm.HostSN.Contains("0014") || itm.HostSN.Contains("0015")
- || itm.HostSN.Contains("0016") || itm.HostSN.Contains("0017") || itm.HostSN.Contains("0018")
- || itm.HostSN.Contains("0019") || itm.HostSN.Contains("0020") || itm.HostSN.Contains("0021")
- || itm.HostSN.Contains("0022") || itm.HostSN.Contains("0023") || itm.HostSN.Contains("0024")
- );
- if (has1999 && has0001)
- {
- reportMainObj.Details = recLst.OrderBy(itm => (itm.HostSN.TryToIntZero() % 10000) < 240 ? (itm.HostSN.TryToIntZero() % 10000 + 1999) : (itm.HostSN.TryToIntZero() % 10000)).ToList();
- }
- else
- {
- reportMainObj.Details = recLst.OrderBy(itm => itm.HostSN).ToList();
- }
- }
+ // reportMainLst = await _menBanPackingListRepository.GetListAsync(itm => input.Contains(itm.Id) == true, true);
+ // //按大众顺序号排序
+ // foreach (var reportMainObj in reportMainLst)
+ // {
+ // List recLst = reportMainObj.Details;
+ // if (recLst == null)
+ // continue;
- #region 格式转换
- //实体 转 DTO
- List targetLst = ObjectMapper.Map, List>(reportMainLst);
- targetLst = targetLst.OrderBy(itm => itm.BillNum).ToList();
+ // bool has1999 = recLst.Any(itm => itm.HostSN.Contains("1999") || itm.HostSN.Contains("1998") || itm.HostSN.Contains("1997")
+ // || itm.HostSN.Contains("1996") || itm.HostSN.Contains("1995") || itm.HostSN.Contains("1994")
+ // || itm.HostSN.Contains("1993") || itm.HostSN.Contains("1992") || itm.HostSN.Contains("1991")
+ // || itm.HostSN.Contains("1990") || itm.HostSN.Contains("1989") || itm.HostSN.Contains("1988")
+ // || itm.HostSN.Contains("1987") || itm.HostSN.Contains("1986") || itm.HostSN.Contains("1985")
+ // || itm.HostSN.Contains("1984") || itm.HostSN.Contains("1983") || itm.HostSN.Contains("1982")
+ // || itm.HostSN.Contains("1981") || itm.HostSN.Contains("1980") || itm.HostSN.Contains("1979")
+ // || itm.HostSN.Contains("1978") || itm.HostSN.Contains("1977") || itm.HostSN.Contains("1976")
+ // );
+ // bool has0001 = recLst.Any(itm => itm.HostSN.Contains("0001") || itm.HostSN.Contains("0002") || itm.HostSN.Contains("0003")
+ // || itm.HostSN.Contains("0004") || itm.HostSN.Contains("0005") || itm.HostSN.Contains("0006")
+ // || itm.HostSN.Contains("0007") || itm.HostSN.Contains("0008") || itm.HostSN.Contains("0009")
+ // || itm.HostSN.Contains("0010") || itm.HostSN.Contains("0011") || itm.HostSN.Contains("0012")
+ // || itm.HostSN.Contains("0013") || itm.HostSN.Contains("0014") || itm.HostSN.Contains("0015")
+ // || itm.HostSN.Contains("0016") || itm.HostSN.Contains("0017") || itm.HostSN.Contains("0018")
+ // || itm.HostSN.Contains("0019") || itm.HostSN.Contains("0020") || itm.HostSN.Contains("0021")
+ // || itm.HostSN.Contains("0022") || itm.HostSN.Contains("0023") || itm.HostSN.Contains("0024")
+ // );
+ // if (has1999 && has0001)
+ // {
+ // reportMainObj.Details = recLst.OrderBy(itm => (itm.HostSN.TryToIntZero() % 10000) < 240 ? (itm.HostSN.TryToIntZero() % 10000 + 1999) : (itm.HostSN.TryToIntZero() % 10000)).ToList();
+ // }
+ // else
+ // {
+ // reportMainObj.Details = recLst.OrderBy(itm => itm.HostSN).ToList();
+ // }
+ // }
- //子表BillNum赋值, BillNum填充空格
- foreach (var masterObj in targetLst)
- {
- masterObj.BillNum = GetTrueString(masterObj.BillNum);
- int sn = 1;
- foreach (var detailObj in masterObj.Details)
- {
- detailObj.BillNum = masterObj.BillNum;
- detailObj.KNR = GetTrueString(detailObj.KNR);
- detailObj.SN = (sn++).ToString();
- detailObj.VIN = detailObj.VIN.TryToRight(6); //底盘号返回后六位
- }
- }
- #endregion
- return targetLst;
- }
- catch (Exception ex)
- {
- string errorMsg = _errorMessagePrefix + "LoadMenBanReport 执行出错:" + ex.Message;
- _logger.LogError(errorMsg);
- throw new UserFriendlyException(errorMsg);
- }
- }
+ // #region 格式转换
+ // //实体 转 DTO
+ // List targetLst = ObjectMapper.Map, List>(reportMainLst);
+ // targetLst = targetLst.OrderBy(itm => itm.BillNum).ToList();
- private static string GetTrueString(string str)
- {
- return str == null ? " " : str.Trim(); ;
- }
+ // //子表BillNum赋值, BillNum填充空格
+ // foreach (var masterObj in targetLst)
+ // {
+ // masterObj.BillNum = GetTrueString(masterObj.BillNum);
+ // int sn = 1;
+ // foreach (var detailObj in masterObj.Details)
+ // {
+ // detailObj.BillNum = masterObj.BillNum;
+ // detailObj.KNR = GetTrueString(detailObj.KNR);
+ // detailObj.SN = (sn++).ToString();
+ // detailObj.VIN = detailObj.VIN.TryToRight(6); //底盘号返回后六位
+ // }
+ // }
+ // #endregion
+ // return targetLst;
+ // }
+ // catch (Exception ex)
+ // {
+ // string errorMsg = _errorMessagePrefix + "LoadMenBanReport 执行出错:" + ex.Message;
+ // _logger.LogError(errorMsg);
+ // throw new UserFriendlyException(errorMsg);
+ // }
+ //}
+
+ //private static string GetTrueString(string str)
+ //{
+ // return str == null ? " " : str.Trim(); ;
+ //}
///
/// 打印柱护板装箱单
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml
index 0af46ef..b95e117 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/WY.NewJit.Application.xml
@@ -1013,6 +1013,20 @@
根据筛选条件获取实体列表
+
+
+ 包含主表横向排列零件字段
+
+
+
+
+
+
+ 填充M110主表横向零件字段
+
+
+
+
根据条件取用于打印的门板单据列表
@@ -1031,17 +1045,16 @@
-
+
- 打印左侧或右侧门板
+ 将M100转换成MenBanPackingList主子表
-
-
-
+ 报表分类,对应DicItemSort4
+ 零件大类字典项
@@ -1118,6 +1131,11 @@
生产线编号列表
生产线超时情况
+
+
+ 零件在主表横向排列显示的列名
+
+
M100单据管理应用服务实现
@@ -1392,35 +1410,6 @@
-
-
- 打印左侧或右侧门板
-
-
-
-
-
-
-
-
-
-
-
-
- 打印前检查大众顺序号是否断号
-
-
- 断号时Item不为空
-
-
-
- 根据生产线获取正常打印单据的起始大众顺序号2
-
- 生产线
- 柱护板是1 门板是非1
- 柱护板分组类型
- 起始大众顺序号
-
根据筛选条件获取分页实体列表
@@ -1472,13 +1461,6 @@
导入文件流
执行成功返回真
-
-
- 生产线超时提醒
-
- 生产线编号列表
- 生产线超时情况
-
R100单据管理应用服务实现
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain.Shared/Common/ObjectResultDto.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain.Shared/Common/ObjectResultDto.cs
index b750ab7..a7bb060 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain.Shared/Common/ObjectResultDto.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain.Shared/Common/ObjectResultDto.cs
@@ -7,7 +7,6 @@ namespace WY.NewJit
public class ObjectResultDto
{
- private bool isRepeat;
public ObjectResultDto()
{
@@ -15,11 +14,6 @@ namespace WY.NewJit
this.Message = "";
}
- public ObjectResultDto(bool isRepeat)
- {
- this.isRepeat = isRepeat;
- }
-
public ObjectResultDto(bool status, string errorMessage)
{
this.Status = status;
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain.Shared/MsgCheck/BillStatusEnum.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain.Shared/MsgCheck/BillStatusEnum.cs
index 4c29e6d..67188fb 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain.Shared/MsgCheck/BillStatusEnum.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain.Shared/MsgCheck/BillStatusEnum.cs
@@ -13,19 +13,19 @@ namespace WY.NewJit.MsgCheck
///
/// 未匹配
///
- [Description("未匹配")]
- NotMatch = 1,
+ //[Description("未匹配")]
+ //NotMatch = 1,
///
- /// 已匹配,未打印
+ /// 未发运
///
- [Description("已匹配")]
+ [Description("未发运")]
Match = 2,
///
- /// 已打印
+ /// 已发运
///
- [Description("已打印")]
+ [Description("已发运")]
Publish = 3,
///
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/Extends/PaiGe/MenBanReports/MenBanPackingList.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/Extends/PaiGe/MenBanReports/MenBanPackingList.cs
index 746dabb..6aa4fde 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/Extends/PaiGe/MenBanReports/MenBanPackingList.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/Extends/PaiGe/MenBanReports/MenBanPackingList.cs
@@ -30,6 +30,10 @@ namespace WY.NewJit.Extends
///
public string VehicleModel { get; set; }
+ ///
+ /// 报表显示车型
+ ///
+ public string VehicleModel_Disp { get; set; }
///
/// 供应商厂家代码
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/Extends/PaiGe/MenBanReports/MenBanPackingRec.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/Extends/PaiGe/MenBanReports/MenBanPackingRec.cs
index 06e74af..21d2c85 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/Extends/PaiGe/MenBanReports/MenBanPackingRec.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/Extends/PaiGe/MenBanReports/MenBanPackingRec.cs
@@ -64,7 +64,15 @@ namespace WY.NewJit.Extends
///
public virtual string SN { get; set; }
+ ///
+ /// 扫描零件号,供发运使用
+ ///
+ public string ScanPartCode { get; set; }
+ ///
+ /// 备注
+ ///
+ public string Remark { get; set; }
public void SetId(Guid id)
{
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/MsgBaseData/Entitys/DicItem.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/MsgBaseData/Entitys/DicItem.cs
index 4a882cf..a4b39b1 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/MsgBaseData/Entitys/DicItem.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/MsgBaseData/Entitys/DicItem.cs
@@ -48,10 +48,45 @@ namespace WY.NewJit.MsgBaseData
public virtual string DicItemSort4 { get; set; }
///
- /// 分类5
+ /// 分类5 (零件大类对应客户零件号)
///
public virtual string DicItemSort5 { get; set; }
+ ///
+ /// 分类6(零件大类对应显示车型)
+ ///
+ public virtual string DicItemSort6 { get; set; }
+
+ ///
+ /// 分类7(零件大类对应报表字段显示顺序)
+ ///
+ public virtual string DicItemSort7 { get; set; }
+
+ ///
+ /// 分类8(零件大类对应装箱清单号的前缀,例如C或T)
+ ///
+ public virtual string DicItemSort8 { get; set; }
+
+ ///
+ /// 分类9(零件大类对应 打印标准数量 12 或 24)
+ ///
+ public virtual string DicItemSort9 { get; set; }
+
+ ///
+ /// 分类9(零件大类对应 是否扫描 1 需要扫描 0 不需要扫描)
+ ///
+ public virtual string DicItemSort10 { get; set; }
+
+ ///
+ ///
+ ///
+ public virtual string DicItemSort11 { get; set; }
+ ///
+ ///
+ ///
+ public virtual string DicItemSort12 { get; set; }
+
+
protected DicItem()
{
//此构造函数是提供给ORM用来从数据库中获取实体.
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/MsgBaseData/Services/LineSNDomianService.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/MsgBaseData/Services/LineSNDomianService.cs
index 42c4a0a..41cc749 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/MsgBaseData/Services/LineSNDomianService.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/MsgBaseData/Services/LineSNDomianService.cs
@@ -19,7 +19,7 @@ namespace WY.NewJit.MsgBaseData
}
///
- /// 生成门板或柱护板右上角顺序号
+ /// 生成门板或柱护板右上角顺序号,每天零点开始往复循环1-99
///
/// 门板或柱护板
/// 产线
@@ -38,7 +38,7 @@ namespace WY.NewJit.MsgBaseData
}
DateTime now = DateTime.Now;
- DateTime today8 = new DateTime(now.Year, now.Month, now.Day, 8, 0, 0);
+ DateTime today8 = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0);
if (typeObj != null)
{
diff --git a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/MsgCheck/Entitys/BillM100.cs b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/MsgCheck/Entitys/BillM100.cs
index d73462d..9d84b04 100644
--- a/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/MsgCheck/Entitys/BillM100.cs
+++ b/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Domain/MsgCheck/Entitys/BillM100.cs
@@ -67,7 +67,7 @@ namespace WY.NewJit.MsgCheck
public virtual DateTime? ReceiveTime { get; protected set; }
///
- /// 单据状态(0 空;1 未匹配;2 已匹配未打印;3 已打印)
+ /// 单据状态(2 未发运;3 已发运),发运接口更新为3
///
public virtual BillStatusEnum BillStatus { get; protected set; }
@@ -82,7 +82,7 @@ namespace WY.NewJit.MsgCheck
public virtual DateTime? PrintTime { get; set; }
///
- /// 打印单号【派格版本:不为空时表示已打印柱护板】
+ /// 打印单号(已经打印时更新为单号)
///
public virtual string PrintBillNum { get; set; }
diff --git a/Shared/Win.Sfs.Shared/bin/Debug/Win.Sfs.Shared.2.0.0.nupkg b/Shared/Win.Sfs.Shared/bin/Debug/Win.Sfs.Shared.2.0.0.nupkg
index 60cefce..f3be9fb 100644
Binary files a/Shared/Win.Sfs.Shared/bin/Debug/Win.Sfs.Shared.2.0.0.nupkg and b/Shared/Win.Sfs.Shared/bin/Debug/Win.Sfs.Shared.2.0.0.nupkg differ
diff --git a/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Sfs.Shared.dll b/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Sfs.Shared.dll
index f34ed9b..f88760c 100644
Binary files a/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Sfs.Shared.dll and b/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Sfs.Shared.dll differ
diff --git a/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Sfs.Shared.pdb b/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Sfs.Shared.pdb
index af937c0..472c778 100644
Binary files a/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Sfs.Shared.pdb and b/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Sfs.Shared.pdb differ
diff --git a/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Utils.dll b/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Utils.dll
index 769153a..04339d6 100644
Binary files a/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Utils.dll and b/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Utils.dll differ
diff --git a/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Utils.pdb b/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Utils.pdb
index 603b194..b067310 100644
Binary files a/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Utils.pdb and b/Shared/Win.Sfs.Shared/bin/Debug/netcoreapp5/Win.Utils.pdb differ
diff --git a/Shared/Win.Sfs.Shared/obj/Debug/Win.Sfs.Shared.2.0.0.nuspec b/Shared/Win.Sfs.Shared/obj/Debug/Win.Sfs.Shared.2.0.0.nuspec
index 7a8575a..a4187c7 100644
--- a/Shared/Win.Sfs.Shared/obj/Debug/Win.Sfs.Shared.2.0.0.nuspec
+++ b/Shared/Win.Sfs.Shared/obj/Debug/Win.Sfs.Shared.2.0.0.nuspec
@@ -5,7 +5,7 @@
2.0.0
Win.Sfs.Shared
Package Description
-
+
diff --git a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.AssemblyInfo.cs b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.AssemblyInfo.cs
index 09328bf..6d53d66 100644
--- a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.AssemblyInfo.cs
+++ b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.AssemblyInfo.cs
@@ -14,7 +14,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Win.Sfs.Shared")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("2.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("2.0.0+9f1698b0f932dfc3e8d926fe272b9e5c15605da4")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("2.0.0+a5a9bdc002c0bde27fed59155b4f42778c8a586e")]
[assembly: System.Reflection.AssemblyProductAttribute("Win.Sfs.Shared")]
[assembly: System.Reflection.AssemblyTitleAttribute("Win.Sfs.Shared")]
[assembly: System.Reflection.AssemblyVersionAttribute("2.0.0.0")]
diff --git a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.AssemblyInfoInputs.cache b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.AssemblyInfoInputs.cache
index 07049b5..7f783e5 100644
--- a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.AssemblyInfoInputs.cache
+++ b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.AssemblyInfoInputs.cache
@@ -1 +1 @@
-d755eed168280a373eeb0870bc5023deded8bf4c7a53f8c511dbfc9601ca31ed
+ce8bce8f0148848382678a78ba43b96b07f28bbbffd2234bcd66f38b2eecf85f
diff --git a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.csproj.AssemblyReference.cache b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.csproj.AssemblyReference.cache
index eea8334..0ad3b9a 100644
Binary files a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.csproj.AssemblyReference.cache and b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.csproj.AssemblyReference.cache differ
diff --git a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.dll b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.dll
index f34ed9b..f88760c 100644
Binary files a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.dll and b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.dll differ
diff --git a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.pdb b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.pdb
index af937c0..472c778 100644
Binary files a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.pdb and b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/Win.Sfs.Shared.pdb differ
diff --git a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/ref/Win.Sfs.Shared.dll b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/ref/Win.Sfs.Shared.dll
index 3762e96..4be7eda 100644
Binary files a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/ref/Win.Sfs.Shared.dll and b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/ref/Win.Sfs.Shared.dll differ
diff --git a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/refint/Win.Sfs.Shared.dll b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/refint/Win.Sfs.Shared.dll
index 3762e96..4be7eda 100644
Binary files a/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/refint/Win.Sfs.Shared.dll and b/Shared/Win.Sfs.Shared/obj/Debug/netcoreapp5/refint/Win.Sfs.Shared.dll differ
diff --git a/Shared/Win.Utils/bin/Debug/Win.Utils.2.0.0.nupkg b/Shared/Win.Utils/bin/Debug/Win.Utils.2.0.0.nupkg
index 1d78a1f..d8c5b7d 100644
Binary files a/Shared/Win.Utils/bin/Debug/Win.Utils.2.0.0.nupkg and b/Shared/Win.Utils/bin/Debug/Win.Utils.2.0.0.nupkg differ
diff --git a/Shared/Win.Utils/bin/Debug/netcoreapp5/Win.Utils.dll b/Shared/Win.Utils/bin/Debug/netcoreapp5/Win.Utils.dll
index 769153a..04339d6 100644
Binary files a/Shared/Win.Utils/bin/Debug/netcoreapp5/Win.Utils.dll and b/Shared/Win.Utils/bin/Debug/netcoreapp5/Win.Utils.dll differ
diff --git a/Shared/Win.Utils/bin/Debug/netcoreapp5/Win.Utils.pdb b/Shared/Win.Utils/bin/Debug/netcoreapp5/Win.Utils.pdb
index 603b194..b067310 100644
Binary files a/Shared/Win.Utils/bin/Debug/netcoreapp5/Win.Utils.pdb and b/Shared/Win.Utils/bin/Debug/netcoreapp5/Win.Utils.pdb differ
diff --git a/Shared/Win.Utils/obj/Debug/Win.Utils.2.0.0.nuspec b/Shared/Win.Utils/obj/Debug/Win.Utils.2.0.0.nuspec
index 5ad4f77..7a63211 100644
--- a/Shared/Win.Utils/obj/Debug/Win.Utils.2.0.0.nuspec
+++ b/Shared/Win.Utils/obj/Debug/Win.Utils.2.0.0.nuspec
@@ -5,7 +5,7 @@
2.0.0
Win.Utils
Package Description
-
+
diff --git a/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.AssemblyInfo.cs b/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.AssemblyInfo.cs
index 7d9588d..508caa2 100644
--- a/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.AssemblyInfo.cs
+++ b/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.AssemblyInfo.cs
@@ -14,7 +14,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Win.Utils")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("2.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("2.0.0+32f3c7c4f91a6e47f64ef11cb91719a67226370a")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("2.0.0+655f97fce0dd87165ead1e3cce91aba34298af56")]
[assembly: System.Reflection.AssemblyProductAttribute("Win.Utils")]
[assembly: System.Reflection.AssemblyTitleAttribute("Win.Utils")]
[assembly: System.Reflection.AssemblyVersionAttribute("2.0.0.0")]
diff --git a/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.AssemblyInfoInputs.cache b/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.AssemblyInfoInputs.cache
index 0b62015..ca30889 100644
--- a/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.AssemblyInfoInputs.cache
+++ b/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.AssemblyInfoInputs.cache
@@ -1 +1 @@
-b809d5ff0b4e2ed0d2cfb967cbf1ed268b666995e296a8a123408bdd3804a21c
+d35c56c2a77531ab3e36b55a499477cd4f9db824953aa80b990cafe5b4adf800
diff --git a/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.dll b/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.dll
index 769153a..04339d6 100644
Binary files a/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.dll and b/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.dll differ
diff --git a/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.pdb b/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.pdb
index 603b194..b067310 100644
Binary files a/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.pdb and b/Shared/Win.Utils/obj/Debug/netcoreapp5/Win.Utils.pdb differ
diff --git a/Shared/Win.Utils/obj/Debug/netcoreapp5/ref/Win.Utils.dll b/Shared/Win.Utils/obj/Debug/netcoreapp5/ref/Win.Utils.dll
index 172dccf..52cfa20 100644
Binary files a/Shared/Win.Utils/obj/Debug/netcoreapp5/ref/Win.Utils.dll and b/Shared/Win.Utils/obj/Debug/netcoreapp5/ref/Win.Utils.dll differ
diff --git a/Shared/Win.Utils/obj/Debug/netcoreapp5/refint/Win.Utils.dll b/Shared/Win.Utils/obj/Debug/netcoreapp5/refint/Win.Utils.dll
index 172dccf..52cfa20 100644
Binary files a/Shared/Win.Utils/obj/Debug/netcoreapp5/refint/Win.Utils.dll and b/Shared/Win.Utils/obj/Debug/netcoreapp5/refint/Win.Utils.dll differ