using Kingdee.BOS; using Kingdee.BOS.Core; using Kingdee.BOS.Core.Bill; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Enums; using Kingdee.BOS.Core.Interaction; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Metadata.FormElement; using Kingdee.BOS.JSON; using Kingdee.BOS.Orm; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Text; using Xceed.Document.NET; using Xceed.Words.NET; namespace Pilot_KD_Parino.Common { public static class CommonHelper { public static void DolondWord(string templatePath, DataSet data, string outputPath, string FType) { List List = new List() { "CS", "ES" }; // 加载模板文档 using (var document = DocX.Load(templatePath)) { //int n = data.Tables.Count; var datatable = data.Tables[0]; foreach (DataRow item in datatable.Rows) { document.ReplaceText("{" + Convert.ToString(item["Key"]) + "}", Convert.ToString(item["Value"])); } int x = document.Tables.Count; if (FType == "D") { } else if (FType == "S") { // 假设模板中的表格是第一个表格 var table = document.Tables[2]; Row previousRow = (Row)table.Rows[1]; //for (int i = table.Rows.Count - 4; i >= 1; i--) // 从最后一行开始删除,避免索引超出范围 //{ // table.Rows[i].Remove(); //} table.Rows[1].Remove(); var datatable2 = data.Tables[1]; foreach (DataRow item in datatable2.Rows) { Row newRow = table.InsertRow(previousRow, table.Rows.Count - 1); foreach (var cell in newRow.Cells) { { // 注意:如果单元格中有多个段落或更复杂的结构,你可能需要遍历它们并分别复制样式 Border Border = new Border() { Size = BorderSize.four, Color = Color.Black }; cell.SetBorder(TableCellBorderType.Left, Border); cell.SetBorder(TableCellBorderType.Right, Border); cell.SetBorder(TableCellBorderType.Top, Border); cell.SetBorder(TableCellBorderType.Bottom, Border); } } for (int i = 0; i < datatable2.Columns.Count; i++) { newRow.Cells[i].ReplaceText("{" + i.ToString() + "}", Convert.ToString(item[i])); } } } else if (FType == "W") { // 假设模板中的表格是第一个表格 var table = document.Tables[1]; Row previousRow = (Row)table.Rows[1]; //for (int i = table.Rows.Count - 4; i >= 1; i--) // 从最后一行开始删除,避免索引超出范围 //{ // table.Rows[i].Remove(); //} table.Rows[1].Remove(); var datatable2 = data.Tables[1]; foreach (DataRow item in datatable2.Rows) { Row newRow = table.InsertRow(previousRow, table.Rows.Count - 2); foreach (var cell in newRow.Cells) { { // 注意:如果单元格中有多个段落或更复杂的结构,你可能需要遍历它们并分别复制样式 Border Border = new Border() { Size = BorderSize.four, Color = Color.Black }; cell.SetBorder(TableCellBorderType.Left, Border); cell.SetBorder(TableCellBorderType.Right, Border); cell.SetBorder(TableCellBorderType.Top, Border); cell.SetBorder(TableCellBorderType.Bottom, Border); } } for (int i = 0; i < datatable2.Columns.Count; i++) { newRow.Cells[i].ReplaceText("{" + i.ToString() + "}", Convert.ToString(item[i])); } } } else if (FType == "SX-1" || FType == "SX-2") { #region 这里开始复制 // 假设模板中的表格是第一个表格 var table = document.Tables[2]; //// 清空表格中的所有行(除了表头,如果有的话) //// 注意:这里假设第一行是表头,不删除 Row previousRowNew = (Row)table.Rows[1]; Row previousRowthreeNew = (Row)table.Rows[2]; Row previousRowfourNew = (Row)table.Rows[3]; for (int i = 3; i >= 1; i--) { table.Rows[i].Remove(); } var datatable2 = data.Tables[2]; // 使用LINQ来获取去重后的FType字段 var DistinctFTypes = datatable2.AsEnumerable() .Select(row => row.Field("FType")) .Distinct() .ToList(); int Index = DistinctFTypes.Count; foreach (var item in DistinctFTypes) { Row previousRow = previousRowNew; var previousRowthree = previousRowthreeNew; var previousRowfour = previousRowfourNew; //插入组合中具体的数据行 var Rows = datatable2.AsEnumerable().Where(t => Convert.ToString(t["FType"]) == item).ToList(); //插入一个组合 #region Row newRowfour = table.InsertRow(previousRowfour, 1); newRowfour.Cells[1].ReplaceText("{9}", Convert.ToString(Rows[0][11])); foreach (var Row in Rows) { Row newRowthree = table.InsertRow(previousRowthree, 1); for (int i = 0; i < 9; i++) { newRowthree.Cells[i].ReplaceText("{" + i.ToString() + "}", Convert.ToString(Row[i])); } document.ReplaceText("{10}", Convert.ToString(Row[10])); } Row newRow = table.InsertRow(previousRow, 1); newRow.Cells[0].ReplaceText("{0}", string.Format("{0}、{1}", ConvertToChineseUppercase(Index), Convert.ToString(item))); #endregion Index--; } #endregion } else if (!List.Contains(FType) && FType != "HH" && FType != "TH") { // 假设模板中的表格是第一个表格 var table = document.Tables[1]; Row previousRow = (Row)table.Rows[1]; //for (int i = table.Rows.Count - 4; i >= 1; i--) // 从最后一行开始删除,避免索引超出范围 //{ // table.Rows[i].Remove(); //} table.Rows[1].Remove(); var datatable2 = data.Tables[1]; foreach (DataRow item in datatable2.Rows) { Row newRow = table.InsertRow(previousRow, table.Rows.Count - 3); foreach (var cell in newRow.Cells) { { // 注意:如果单元格中有多个段落或更复杂的结构,你可能需要遍历它们并分别复制样式 Border Border = new Border() { Size = BorderSize.four, Color = Color.Black }; cell.SetBorder(TableCellBorderType.Left, Border); cell.SetBorder(TableCellBorderType.Right, Border); cell.SetBorder(TableCellBorderType.Top, Border); cell.SetBorder(TableCellBorderType.Bottom, Border); } } for (int i = 0; i < datatable2.Columns.Count; i++) { newRow.Cells[i].ReplaceText("{" + i.ToString() + "}", Convert.ToString(item[i])); } } } else if (List.Contains(FType)) { #region 这里开始复制 // 假设模板中的表格是第一个表格 var table = document.Tables[3]; //// 清空表格中的所有行(除了表头,如果有的话) //// 注意:这里假设第一行是表头,不删除 Row previousRowNew = (Row)table.Rows[1]; Row previousRowthreeNew = (Row)table.Rows[2]; Row previousRowfourNew = (Row)table.Rows[3]; for (int i = 3; i >= 1; i--) { table.Rows[i].Remove(); } var datatable2 = data.Tables[2]; // 使用LINQ来获取去重后的FType字段 var DistinctFTypes = datatable2.AsEnumerable() .Select(row => row.Field("FType")) .Distinct() .ToList(); int Index = DistinctFTypes.Count; foreach (var item in DistinctFTypes) { Row previousRow = previousRowNew; var previousRowthree = previousRowthreeNew; var previousRowfour = previousRowfourNew; //插入组合中具体的数据行 var Rows = datatable2.AsEnumerable().Where(t => Convert.ToString(t["FType"]) == item).ToList(); //插入一个组合 #region Row newRowfour = table.InsertRow(previousRowfour, 1); newRowfour.Cells[1].ReplaceText("{9}", Convert.ToString(Rows[0][11])); foreach (var Row in Rows) { Row newRowthree = table.InsertRow(previousRowthree, 1); for (int i = 0; i < 9; i++) { newRowthree.Cells[i].ReplaceText("{" + i.ToString() + "}", Convert.ToString(Row[i])); } document.ReplaceText("{10}", Convert.ToString(Row[10])); } Row newRow = table.InsertRow(previousRow, 1); newRow.Cells[0].ReplaceText("{0}", string.Format("{0}、{1}", ConvertToChineseUppercase(Index), Convert.ToString(item))); #endregion Index--; } #endregion } else if (FType == "HH") { // 获取模板文档中的表格 var table = document.Tables[1]; Row previousRow = (Row)table.Rows[1]; var roww = table.Rows; table.Rows[1].Remove(); //获取存储过程的查询 var datatable2 = data.Tables[3]; foreach (DataRow item in datatable2.Rows) { int textn = table.Rows.Count; Row newRow = table.InsertRow(previousRow, table.Rows.Count - 3); foreach (var cell in newRow.Cells) { { // 注意:如果单元格中有多个段落或更复杂的结构,你可能需要遍历它们并分别复制样式 Border Border = new Border() { Size = BorderSize.four, Color = Color.Black }; cell.SetBorder(TableCellBorderType.Left, Border); cell.SetBorder(TableCellBorderType.Right, Border); cell.SetBorder(TableCellBorderType.Top, Border); cell.SetBorder(TableCellBorderType.Bottom, Border); } } for (int i = 0; i < datatable2.Columns.Count; i++) { newRow.Cells[i].ReplaceText("{" + i.ToString() + "}", Convert.ToString(item[i])); } } } else { // 获取模板文档中的表格 var table = document.Tables[1]; Row previousRow = (Row)table.Rows[1]; var roww = table.Rows; table.Rows[1].Remove(); //获取存储过程的查询 var datatable2 = data.Tables[4]; foreach (DataRow item in datatable2.Rows) { int textn = table.Rows.Count; Row newRow = table.InsertRow(previousRow, table.Rows.Count - 3); foreach (var cell in newRow.Cells) { { // 注意:如果单元格中有多个段落或更复杂的结构,你可能需要遍历它们并分别复制样式 Border Border = new Border() { Size = BorderSize.four, Color = Color.Black }; cell.SetBorder(TableCellBorderType.Left, Border); cell.SetBorder(TableCellBorderType.Right, Border); cell.SetBorder(TableCellBorderType.Top, Border); cell.SetBorder(TableCellBorderType.Bottom, Border); } } for (int i = 0; i < datatable2.Columns.Count; i++) { newRow.Cells[i].ReplaceText("{" + i.ToString() + "}", Convert.ToString(item[i])); } } } if (!Directory.Exists(Path.GetDirectoryName(outputPath))) { Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); } // 保存新文档 document.SaveAs(outputPath); } } public static void DolondWord2(DataSet data) { // 模板文件路径 string templatePath = @"D:\模板\模板.docx"; // 输出文件路径 string outputPath = @"D:\模板\重新导出的结果.docx"; //// 模板文件路径 //string templatePath = @"D:\模板\模板.docx"; //// 输出文件路径 //string outputPath = @"D:\模板\重新导出的结果.docx"; //using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(templatePath, false)) //{ // // 获取主文档部分 // MainDocumentPart mainPart = wordDoc.MainDocumentPart; // // 获取文档中的所有表格 // IEnumerable tables = mainPart.Document.Body.Elements
(); // foreach (Table table in tables) // { // // 遍历表格中的所有行 // foreach (TableRow row in table.Elements()) // { // // 遍历行中的所有单元格 // foreach (TableCell cell in row.Elements()) // { // // 获取单元格的段落(可能有多个) // foreach (Paragraph paragraph in cell.Elements()) // { // // 获取段落的属性(这些属性可以包含字体、字号等信息) // ParagraphProperties paragraphProperties = paragraph.ParagraphProperties; // // 示例:打印段落的对齐方式 // if (paragraphProperties.Justification != null) // { // Console.WriteLine($"Cell in table {table.TableId.Value} row {row.RowIndex.Value} has paragraph justification: {paragraphProperties.Justification.Value}"); // } // // 获取段落中的运行(Run),它们包含文本及其格式 // foreach (Run run in paragraph.Elements()) // { // // 获取运行的属性(这些属性可以包含字体、字号、颜色等信息) // RunProperties runProperties = run.RunProperties; // // 示例:打印运行的字体和字号 // if (runProperties.RunFonts != null && runProperties.FontSize != null) // { // Console.WriteLine($"Cell in table {table.TableId.Value} row {row.RowIndex.Value} has run font: {runProperties.RunFonts.Ascii}, size: {runProperties.FontSize.Val}"); // } // // 注意:如果单元格中有多个运行,每个运行可能有不同的样式 // } // } // // 注意:单元格也可能包含其他元素,如表格嵌套、图片等,这里只处理了段落和运行 // } // } // } //} List List = new List() { "CS", "ES", "S" }; // 加载模板文档 using (var document = DocX.Load(templatePath)) { var datatable = data.Tables[0]; //foreach (DataRow item in datatable.Rows) //{ // document.ReplaceText("{" + Convert.ToString(item["Key"]) + "}", Convert.ToString(item["Value"])); //} if (!List.Contains("D")) { // 假设模板中的表格是第一个表格 var table = document.Tables[1]; Row previousRow = (Row)table.Rows[1]; //for (int i = table.Rows.Count - 4; i >= 1; i--) // 从最后一行开始删除,避免索引超出范围 //{ // table.Rows[i].Remove(); //} table.Rows[1].Remove(); var datatable2 = data.Tables[1]; foreach (DataRow item in datatable2.Rows) { Row newRow = table.InsertRow(previousRow, table.Rows.Count - 3); foreach (var cell in newRow.Cells) { { // 注意:如果单元格中有多个段落或更复杂的结构,你可能需要遍历它们并分别复制样式 Border Border = new Border() { Size = BorderSize.four, Color = Color.Black }; cell.SetBorder(TableCellBorderType.Left, Border); cell.SetBorder(TableCellBorderType.Right, Border); cell.SetBorder(TableCellBorderType.Top, Border); cell.SetBorder(TableCellBorderType.Bottom, Border); } } for (int i = 0; i < datatable2.Columns.Count; i++) { newRow.Cells[i].ReplaceText("{" + i.ToString() + "}", Convert.ToString(item[i])); } } } if (!Directory.Exists(Path.GetDirectoryName(outputPath))) { Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); } // 保存新文档 document.SaveAs(outputPath); } } /// /// 保存Txt到服务器商 /// /// 接口调用数据 /// Txt地址 /// 接口返回数据 public static void SaveTxt(string Data, string path, string Result) { if (!Directory.Exists(Path.GetDirectoryName(path))) { Directory.CreateDirectory(Path.GetDirectoryName(path)); } StringBuilder sb = new StringBuilder(); sb.AppendLine("\r\n"); sb.AppendLine("----------------------调用接口所用JSon----------------------"); sb.AppendLine(Data); sb.AppendLine("\r\n"); sb.AppendLine("----------------------调用接口返回JSon----------------------"); sb.AppendLine(Result); FileStream fs = new FileStream(path, FileMode.Create); StreamWriter sw = new StreamWriter(fs); fs.Position = fs.Length; //开始写入          sw.Write(sb.ToString()); //清空缓冲区        sw.Flush(); //关闭流            sw.Close(); fs.Close(); } public static String ApiUrl = "http://doc.pmac.com.cn/api/services"; //正式地址 public static String CustApiUrl = "http://10.0.110.12:8090/Api"; //正式地址 创建多级文件夹使用,8090端口 public static String integrationKey = "675cb5b3-6405-78ab-4834-82c25131851b";//正式 集成登录秘钥 //测试环境 //public static String username = "erp1";//正式 集成登录秘钥 //public static String password = "edoc@erp";//正式 集成登录秘钥 //正式环境 public static String username = "admin";//正式 集成登录秘钥 public static String password = "PIL@edoc3";//正式 集成登录秘钥 /// /// 获取文档云的Token /// /// 用户名 /// 密码 /// public static string UserLogin(string FApiPath) { ///声明返回Token String token = ""; //声明接口名称 String url = "/Org/UserLogin"; String postJson = "{\"userName\": \"" + username + "\",\"password\": \"" + password + "\" } "; HttpClient httpClient = new HttpClient(); httpClient.Url = ApiUrl + url; httpClient.Content = postJson; var resule = JsonConvert.DeserializeObject(httpClient.Post()); token = Convert.ToString(resule["data"]); //写入Txt到服务器地址 SaveTxt(Convert.ToString(httpClient.Url), FApiPath, JsonConvert.SerializeObject(resule)); return token; } /// public static string GetFolderInfoByNamePath(string Token, string FPath, string FApiPath, Context ctx) { ///声明返回Token String FolderId = ""; //声明接口名称 String url = string.Format(@"/Folder/GetFolderInfoByNamePath?token={0}&folderNamePath={1}", Token, FPath); HttpClient httpClient = new HttpClient(); httpClient.Url = ApiUrl + url; var resule = JsonConvert.DeserializeObject(httpClient.Get()); if (resule["data"] != null) { try { FolderId = Convert.ToString(resule["data"]["FolderId"]); } catch { FolderId = ""; } } //写入Txt到服务器地址 SaveTxt(Convert.ToString(httpClient.Url), FApiPath, JsonConvert.SerializeObject(resule)); return FolderId; } public static string CreateFolder(string Token, string parentFolderId, string folderName, string FApiPath, Context ctx) { ///声明返回Token String FolderId = ""; //声明接口名称 String url = "/Folder/CreateFolder"; HttpClient httpClient = new HttpClient(); httpClient.Url = ApiUrl + url; httpClient.Content = "{\"token\": \"" + Token + "\",\"name\": \"" + folderName + "\",\"parentFolderId\":" + parentFolderId + " } "; var resule = JsonConvert.DeserializeObject(httpClient.Post()); if (resule["data"] != null) { FolderId = Convert.ToString(resule["data"]["FolderId"]); } //写入Txt到服务器地址 SaveTxt(Convert.ToString(httpClient.Url) + "\r\n" + httpClient.Content, FApiPath, JsonConvert.SerializeObject(resule)); return FolderId; } /// /// 创建多层级文件夹 /// /// /// 父级文件夹id /// 年份 /// 合同文件夹名称 /// public static string batchCreateFolder(string Token, string parentFolderId, string FYear, string contractFolderName, string FApiPath) { ///声明返回Token String FolderId = ""; //声明接口名称 String url = "/Folder/CreateFolder"; //声明对象 HttpClient httpClient = new HttpClient(); //赋值接口Url httpClient.Url = ApiUrl + url; #region 设置A阶段文件夹 JSONObject obj1 = new JSONObject(); obj1.Add("Name", "A-商机至合同阶段"); JSONArray arry1 = new JSONArray(); String[] jd1Array = { "A01-合同扫描件", "A02-技术方案资料", "A04-中标相关资料", "A05-其他资料" }; for (int i = 0; i < jd1Array.Length; i++) { JSONObject obj11 = new JSONObject(); obj11.Add("Name", jd1Array[i]); arry1.Add(obj11); } obj1.Add("FolderChildren", arry1); #endregion #region 设置B阶段文件夹 JSONObject obj2 = new JSONObject(); obj2.Add("Name", "B-实施准备阶段"); JSONArray arry2 = new JSONArray(); String[] jd2rray = { "B01-项目需求分析", "B02-项目启动会议", "B03-施工组织计划", "B04-供货采购计划", "B05-成本管理计划", "B06-项目管理计划", "B07-施工方案", "B08-施工分包管理", "B09-施工布线指导", "B10-其他文件" }; for (int i = 0; i < jd2rray.Length; i++) { JSONObject obj22 = new JSONObject(); obj22.Add("Name", jd2rray[i]); arry2.Add(obj22); } obj2.Add("FolderChildren", arry2); #endregion #region 设置C阶段文件夹 JSONObject obj3 = new JSONObject(); obj3.Add("Name", "C-实施执行阶段"); JSONArray arry3 = new JSONArray(); String[] jd3rray = { "C01-网络拓扑图", "C02-设计院成套厂图纸", "C03-机柜原理及结构图", "C04-深化施工平面图", "C05-项目设备点表", "C06-采集器配置备份", "C07-系统及数据库备份", "C08-第三方产品资料库", "C09-工程签证单", "C10-分项工程报验单", "C11-工程联络单", "C12-分包成本管理", "C13-整套竣工图纸", "C14-产品定制单", "C15-前最终施工图纸全套", "C16-报价工程量清单", "C17-项目交接单", "C18-注册码", "C19-机柜出厂测试报告", "C20-系统调试方案", "C21-项目日志", "C22-其他文件" }; for (int i = 0; i < jd3rray.Length; i++) { JSONObject obj33 = new JSONObject(); obj33.Add("Name", jd3rray[i]); arry3.Add(obj33); } obj3.Add("FolderChildren", arry3); #endregion #region 设置D阶段文件夹 JSONObject obj4 = new JSONObject(); obj4.Add("Name", "D-验收交付阶段"); JSONArray arry4 = new JSONArray(); String[] jd4rray = { "D01-验收报告扫描件", "D02-设备调试记录报告", "D03-发货单(签字回单)", "D04-试运行或真实运行报告", "D05-审计结算资料", "D06-项目总结报告", "D07-遗留问题清单", "D08-说明书或操作手册", "D09-现场照片或界面截图", "D10-移交甲方的资料", "D11-其他文件" }; for (int i = 0; i < jd4rray.Length; i++) { JSONObject obj44 = new JSONObject(); obj44.Add("Name", jd4rray[i]); arry4.Add(obj44); } obj4.Add("FolderChildren", arry4); #endregion #region 设置E阶段文件夹 JSONObject obj5 = new JSONObject(); obj5.Add("Name", "E-验收后运维阶段"); JSONArray arry5 = new JSONArray(); String[] jd5rray = { "E01-用户证明和客户评价文件", "E02-巡检报告", "E03-售后满意度调查表", "E04-现场更新资料备份", "E05-其他文件" }; for (int i = 0; i < jd5rray.Length; i++) { JSONObject obj55 = new JSONObject(); obj55.Add("Name", jd5rray[i]); arry5.Add(obj55); } obj5.Add("FolderChildren", arry5); #endregion //5个阶段的所有文件夹放入到对应合同目录下 //合同文件夹 JSONObject dataObj = new JSONObject(); JSONArray arry0 = new JSONArray(); arry0.Add(obj1); arry0.Add(obj2); arry0.Add(obj3); arry0.Add(obj4); arry0.Add(obj5); dataObj.Add("FolderChildren", arry0); //将合同目录放到对应年份的目录下 JSONArray yearArray = new JSONArray(); yearArray.Add(dataObj); JSONObject yearobj = new JSONObject(); yearobj.Add("FolderName", FYear); yearobj.Add("FolderChildren", yearArray); //开始创建 JSONObject obj = new JSONObject(); obj.Add("Token", Token); obj.Add("ParentFolderId", parentFolderId); obj.Add("name", contractFolderName); obj.Add("FolderChildren", arry0); String postJson = obj.ToString(); httpClient.Content = postJson; var resule = JsonConvert.DeserializeObject(httpClient.Post()); if (resule["data"] != null) { FolderId = Convert.ToString(resule["data"]["FolderId"]); } //写入Txt到服务器地址 SaveTxt(Convert.ToString(httpClient.Url) + "\r\n" + httpClient.Content, FApiPath, JsonConvert.SerializeObject(resule)); return FolderId; } /// /// 创建BPM流程发起产品生产出货预置单 /// public static string CreateDocument2(DynamicObjectCollection data, Context ctx) { StringBuilder xml = new StringBuilder("FormData="); xml.Append(""); xml.Append(""); xml.Append("" + Convert.ToString(data[0]["创建时间"]) + "");//创建时间 xml.Append("" + Convert.ToString(data[0]["填单人"]) + "");//填单人 xml.Append("" + Convert.ToString(data[0]["填单人部门"]) + ""); //填单人部门 xml.Append("" + Convert.ToString(data[0]["规格型号"]) + ""); //规格型号 xml.Append("" + Convert.ToString(data[0]["购货单位"]) + "");//购货单位 xml.Append("" + Convert.ToString(data[0]["项目名称"]) + "");//项目名称 xml.Append("" + Convert.ToString(data[0]["销售人员"]) + ""); //销售人员 xml.Append("" + Convert.ToString(data[0]["销售人员部门"]) + ""); //销售人员部门 xml.Append("" + Convert.ToString(data[0]["填单人职位"]) + ""); //填单人职位 xml.Append("" + Convert.ToString(data[0]["合同号"]) + "");//合同号 xml.Append("" + Convert.ToString(data[0]["发货日期"]) + "");//发货日期 xml.Append(""); foreach (var item in data) { xml.Append(""); xml.Append("" + Convert.ToString(item["物料代码"]) + ""); //物料代码 xml.Append("" + Convert.ToString(item["物料名称"]) + ""); //物料名称 xml.Append("" + Convert.ToString(item["数量"]) + ""); //数量 xml.Append("" + Convert.ToString(item["品牌"]) + ""); //品牌 xml.Append("" + Convert.ToString(item["备注"]) + ""); //定制单出货次数 xml.Append(""); } xml.Append(""); //HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://10.0.120.98/bpm/YZSoft/WebService/YZService.ashx?Method=PostTask&UserAccount=" + data[0]["bpm账号"] + "&ProcessName=产品生产出货预置单&Action=提交&Comment=''&" + xml); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://10.0.120.98/bpm/YZSoft/WebService/YZService.ashx?Method=PostTask&UserAccount=" + data[0]["bpm账号"] + "&ProcessName=产品生产出货预置单&Action=提交&Comment=''&" + xml); request.Method = "POST"; request.ContentType = "text/xml"; Encoding encoding = Encoding.GetEncoding("UTF-8"); // 要发送的数据 byte[] buffer = encoding.GetBytes(xml.ToString()); // 获取请求流 using (Stream writer = request.GetRequestStream()) { // 写入数据 writer.Write(buffer, 0, buffer.Length); } string retString = ""; string sn = "失败"; //获取响应 using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { // 处理响应 Stream myResponseStream = response.GetResponseStream();//获取返回值 using (StreamReader reader = new StreamReader(myResponseStream, Encoding.UTF8)) { try { retString = reader.ReadToEnd(); //获取SN数据 var snOBJ = JsonConvert.DeserializeObject(retString); if (Convert.ToString(snOBJ["success"]).ToUpper() == "TRUE") { sn = Convert.ToString(snOBJ["SN"]); } } catch { } } } //写入Txt到服务器地址 //SaveTxt("http://10.0.120.98/bpm/YZSoft/WebService/YZService.ashx?Method=PostTask&UserAccount="+data[0]["bpm账号"] + "&ProcessName=产品生产出货预置单&Action=提交&Comment=''&" + xml, // string.Format(@"D:\Api日志\{2}\创建流程\{0}\创建流程\{1}.txt", // Convert.ToString(data[0]["单据编号"]), DateTime.Now.ToString("yyyyMMddHHmmssfff"), ctx.DataCenterName), retString); SaveTxt("http://bpm.pmac.com.cn/bpm/YZSoft/WebService/YZService.ashx?Method=PostTask&UserAccount=" + data[0]["bpm账号"] + "&ProcessName=产品生产出货预置单&Action=提交&Comment=''&" + xml, string.Format(@"D:\Api日志\{2}\创建流程\{0}\创建流程\{1}.txt", Convert.ToString(data[0]["单据编号"]), DateTime.Now.ToString("yyyyMMddHHmmssfff"), ctx.DataCenterName), retString); return sn; } /// /// 创建BPM流程发起产品定制再次出货确认单 /// public static string CreateDocument(DynamicObjectCollection data, Context ctx) { StringBuilder xml = new StringBuilder("FormData="); xml.Append(""); xml.Append(""); xml.Append("" + Convert.ToString(data[0]["创建时间"]) + "");//创建时间 xml.Append("" + Convert.ToString(data[0]["填单人"]) + "");//填单人 xml.Append("" + Convert.ToString(data[0]["填单人部门"]) + ""); //填单人部门 xml.Append("" + Convert.ToString(data[0]["填单人职位"]) + ""); //填单人职位 xml.Append("" + Convert.ToString(data[0]["合同号"]) + "");//合同号 xml.Append("" + Convert.ToString(data[0]["购货单位"]) + "");//购货单位 xml.Append("" + Convert.ToString(data[0]["项目名称"]) + "");//项目名称 xml.Append("" + Convert.ToString(data[0]["销售人员"]) + ""); //销售人员 xml.Append("" + Convert.ToString(data[0]["销售人员部门"]) + ""); //销售人员部门 xml.Append("" + Convert.ToString(data[0]["规格型号"]) + ""); //规格型号 xml.Append(""); foreach (var item in data) { xml.Append(""); xml.Append("" + Convert.ToString(item["物料代码"]) + ""); //物料代码 xml.Append("" + Convert.ToString(item["物料名称"]) + ""); //物料名称 xml.Append("" + Convert.ToString(item["规格型号"]) + ""); //规格型号 xml.Append("" + Convert.ToString(item["品牌"]) + ""); //品牌 xml.Append("" + Convert.ToString(item["数量"]) + ""); //数量 xml.Append("" + Convert.ToString(item["备注"]) + ""); //备注 xml.Append("" + Convert.ToString(item["定制单出货次数"]) + ""); //定制单出货次数 xml.Append(""); } xml.Append(""); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://bpm.pmac.com.cn/bpm/YZSoft/WebService/YZService.ashx?Method=PostTask&UserAccount=" + data[0]["bpm账号"] + "&ProcessName=产品定制再次出货确认单&Action=提交&Comment=''&" + xml); //HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://10.0.120.98/bpm/YZSoft/WebService/YZService.ashx?Method=PostTask&UserAccount=" + data[0]["bpm账号"] + "&ProcessName=产品定制再次出货确认单&Action=提交&Comment=''&" + xml); request.Method = "POST"; request.ContentType = "text/xml"; Encoding encoding = Encoding.GetEncoding("UTF-8"); // 要发送的数据 byte[] buffer = encoding.GetBytes(xml.ToString()); // 获取请求流 using (Stream writer = request.GetRequestStream()) { // 写入数据 writer.Write(buffer, 0, buffer.Length); } string retString = ""; string sn = "失败"; //获取响应 using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { // 处理响应 Stream myResponseStream = response.GetResponseStream();//获取返回值 using (StreamReader reader = new StreamReader(myResponseStream, Encoding.UTF8)) { try { retString = reader.ReadToEnd(); //获取SN数据 var snOBJ = JsonConvert.DeserializeObject(retString); if (Convert.ToString(snOBJ["success"]).ToUpper() == "TRUE") { sn = Convert.ToString(snOBJ["SN"]); } } catch { } } } ////写入Txt到服务器地址 //SaveTxt("http://10.0.120.98/bpm/YZSoft/WebService/YZService.ashx?Method=PostTask&UserAccount=" + data[0]["bpm账号"] + "&ProcessName=产品定制再次出货确认单&Action=提交&Comment=''&" + xml, // string.Format(@"D:\Api日志\{2}\创建流程\{0}\创建流程\{1}.txt", // Convert.ToString(data[0]["单据编号"]), DateTime.Now.ToString("yyyyMMddHHmmssfff"), ctx.DataCenterName), retString); //写入Txt到服务器地址 SaveTxt("http://bpm.pmac.com.cn/bpm/YZSoft/WebService/YZService.ashx?Method=PostTask&UserAccount=" + data[0]["bpm账号"] + "&ProcessName=产品定制再次出货确认单&Action=提交&Comment=''&" + xml, string.Format(@"D:\Api日志\{2}\创建流程\{0}\创建流程\{1}.txt", Convert.ToString(data[0]["单据编号"]), DateTime.Now.ToString("yyyyMMddHHmmssfff"), ctx.DataCenterName), retString); return sn; } /// /// 创建工程项目 /// public static string CreateItemData(Context ctx, string FOrgId, string FNumber, string FName) { string FID; string FBILLNO; // 构建一个IBillView实例,通过此实例,可以方便的填写 IBillView billView = CommonHelper.CreateBillView(ctx, "BAS_PreBaseDataOne"); // 新建一个空白劳动合同 // billView.CreateNewModelData(); ((IBillViewService)billView).LoadData(); // 触发插件的OnLoad事件: // 组织控制基类插件,在OnLoad事件中,对主业务组织改变是否提示选项进行初始化。 // 如果不触发OnLoad事件,会导致主业务组织赋值不成功 DynamicFormViewPlugInProxy eventProxy = billView.GetService(); eventProxy.FireOnLoad(); // 填写每日打卡记录 CreateItem(billView, ctx, FOrgId, FNumber, FName); // 保存每日打卡记录 OperateOption saveOption = OperateOption.Create(); Form form = billView.BillBusinessInfo.GetForm(); if (form.FormIdDynamicProperty != null) { form.FormIdDynamicProperty.SetValue(billView.Model.DataObject, form.Id); } //保存工程项目 CommonHelper.SaveBill(ctx, billView, saveOption, true, out FID, out FBILLNO); return FID; } private static void CreateItem(IBillView billView, Context ctx, string FOrgId, string FNumber, string FName) { //赋值创建组织 billView.Model.SetValue("FCreateOrgId", FOrgId, 0); //赋值使用组织 billView.Model.SetValue("FUseOrgId", FOrgId, 0); //赋值编码 billView.Model.SetValue("FNumber", FNumber, 0); //赋值名称 billView.Model.SetValue("FName", FName, 0); } /// /// 调用PMS接口 /// /// /// /// public static string PMSLogin(DynamicObjectCollection data, Context ctx, string Json, string FType) { String userName = "test"; String password = "crm@2022.PMS"; String url_str = "http://portal.pmac.com.cn/distributor.action?serviceName="; String getUserBinding_url = url_str + "clogin&userName=" + userName + "&password=" + password; WebClient client = new WebClient(); client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; client.Encoding = Encoding.UTF8; string result = client.UploadString(getUserBinding_url, ""); SaveTxt(getUserBinding_url, string.Format(@"D:\Api日志\{2}\创建待分配项目\{0}\{3}\登录\{1}.txt", Convert.ToString(data[0]["单据编号"]), DateTime.Now.ToString("yyyyMMddHHmmssfff"), ctx.DataCenterName, FType), result); JObject jo = (JObject)JsonConvert.DeserializeObject(result);//获取binding string userBinding = jo["binding"] == null ? "" : jo["binding"].ToString(); return userBinding; } public static string PushPMSItem(DynamicObjectCollection data, Context ctx, string Json, string FType, string Token) { //String userName = "test"; //String password = "crm@2022.PMS"; //String url_str = "http://portal.pmac.com.cn/distributor.action?serviceName="; //String getUserBinding_url = url_str + "clogin&userName=" + userName + "&password=" + password; //WebClient client = new WebClient(); //client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; //client.Encoding = Encoding.UTF8; //string result = client.UploadString(getUserBinding_url, ""); //SaveTxt(getUserBinding_url, // string.Format(@"D:\Api日志\{2}\创建待分配项目\{0}\登录\{1}.txt", // Convert.ToString(data[0]["单据编号"]), DateTime.Now.ToString("yyyyMMddHHmmssfff"), ctx.DataCenterName), result); //JObject jo = (JObject)JsonConvert.DeserializeObject(result);//获取binding string userBinding = Token; string up_url = ""; up_url = "http://portal.pmac.com.cn/distributor.action?serviceName=insert&objectApiName=" + FType + "&data=[" + Json + "]&binding=" + userBinding; WebClient client2 = new WebClient(); client2.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; client2.Encoding = Encoding.UTF8; String result2 = client2.UploadString(up_url, ""); //写入Txt到服务器地址 SaveTxt(up_url, string.Format(@"D:\Api日志\{2}\创建待分配项目\{0}\{3}\创建待分配项目\{1}.txt", Convert.ToString(data[0]["单据编号"]), DateTime.Now.ToString("yyyyMMddHHmmssfff"), ctx.DataCenterName, FType), result2); return result2; } public static BillOpenParameter CreateOpenParameter(Kingdee.BOS.Context ctx, FormMetadata meta) { Form form = meta.BusinessInfo.GetForm(); // 指定FormId, LayoutId BillOpenParameter openParam = new BillOpenParameter(form.Id, meta.GetLayoutInfo().Id); // 数据库上下文 openParam.Context = ctx; // 本单据模型使用的MVC框架 openParam.ServiceName = form.FormServiceName; // 随机产生一个不重复的PageId,作为视图的标识 openParam.PageId = Guid.NewGuid().ToString(); // 元数据 openParam.FormMetaData = meta; // 界面状态:新增 (修改、查看) openParam.Status = OperationStatus.ADDNEW; // 单据主键:本案例演示新建商品类型,不需要设置主键 openParam.PkValue = null; // 界面创建目的:普通无特殊目的 (为工作流、为下推、为复制等) openParam.CreateFrom = CreateFrom.Default; // 基础资料分组维度:基础资料允许添加多个分组字段,每个分组字段会有一个分组维度 // 具体分组维度Id,请参阅 form.FormGroups 属性 openParam.GroupId = ""; // 基础资料分组:如果需要为新建的基础资料指定所在分组,请设置此属性 openParam.ParentId = 0; // 单据类型 openParam.DefaultBillTypeId = ""; // 业务流程 openParam.DefaultBusinessFlowId = ""; // 主业务组织改变时,不用弹出提示界面 openParam.SetCustomParameter("ShowConfirmDialogWhenChangeOrg", false); // 插件 List plugs = form.CreateFormPlugIns(); openParam.SetCustomParameter(FormConst.PlugIns, plugs); PreOpenFormEventArgs args = new PreOpenFormEventArgs(ctx, openParam); foreach (var plug in plugs) {// 触发插件PreOpenForm事件,供插件确认是否允许打开界面 plug.PreOpenForm(args); } if (args.Cancel == true) {// 插件不允许打开界面 // 本案例不理会插件的诉求,继续.... } // 返回 return openParam; } public static IBillView CreateBillView(Kingdee.BOS.Context ctx, string FKEY) { // 读取商品类型的元数据 FormMetadata meta = MetaDataServiceHelper.Load(ctx, FKEY) as FormMetadata; Form form = meta.BusinessInfo.GetForm(); // 创建用于引入数据的单据view Type type = Type.GetType("Kingdee.BOS.Web.Import.ImportBillView,Kingdee.BOS.Web"); var billView = (IDynamicFormViewService)Activator.CreateInstance(type); // 开始初始化billView: // 创建视图加载参数对象,指定各种参数,如FormId, 视图(LayoutId)等 BillOpenParameter openParam = CommonHelper.CreateOpenParameter(ctx, meta); // 动态领域模型服务提供类,通过此类,构建MVC实例 var provider = form.GetFormServiceProvider(); billView.Initialize(openParam, provider); return billView as IBillView; } /// /// 保存单据 /// /// /// /// /// 是否自动提交审核 public static void SaveBill(Context ctx, IBillView billView, OperateOption saveOption, bool IsAutoSubmitAudit, out string Id, out string FBILLNO) { FBILLNO = ""; Id = ""; // 调用保存操作 IOperationResult saveResult = BusinessDataServiceHelper.Save( ctx, billView.BillBusinessInfo, billView.Model.DataObject, saveOption, "Save"); // 显示处理结果 if (saveResult == null) { billView.ShowErrMessage("未知原因导致保存失败!"); return; } else if (saveResult.IsSuccess == true) {// 保存成功,直接显示 billView.ShowOperateResult(saveResult.OperateResult); object[] pkArray = new object[] { saveResult.OperateResult[0].PKValue }; //获取保存成功的单据编号 //FBillno = saveResult.OperateResult[0].Number; //获取保存成功的FID Id = Convert.ToString(pkArray[0]); FBILLNO = saveResult.OperateResult[0].Number; //是否自动提交审核 if (IsAutoSubmitAudit) { OperateOption submitOption = OperateOption.Create(); //提交 if (Submit(ctx, Convert.ToString(pkArray[0]), billView.BusinessInfo.GetForm().Id) == "提交成功!") { //如果提交成功,则进行审核 Audit(ctx, Convert.ToString(pkArray[0]), billView.BusinessInfo.GetForm().Id); } } return; } else if (saveResult.IsSuccess == false) { saveResult.IsShowMessage = true; //billView.ShowErrMessage(saveResult.InteractionContext.SimpleMessage); var dd=saveResult.ValidationErrors.FirstOrDefault(); if (dd != null) billView.ShowErrMessage(dd.Message); else { billView.ShowErrMessage("不知道为什么,反正就是保存失败了!"); } return; } else if (saveResult.InteractionContext != null && saveResult.InteractionContext.Option.GetInteractionFlag().Count > 0) {// 保存失败,需要用户确认问题 //billView.ShowErrMessage(saveResult.InteractionContext.SimpleMessage); //saveResult.MergeValidateErrors(); //billView.ShowOperateResult(saveResult.OperateResult); var dd = saveResult.ValidationErrors.FirstOrDefault(); if (dd != null) billView.ShowErrMessage(dd.Message); else { billView.ShowErrMessage("不知道为什么,反正就是保存失败了!"); } return; } // 保存失败,显示错误信息 if (saveResult.IsShowMessage) { saveResult.MergeValidateErrors(); billView.ShowOperateResult(saveResult.OperateResult); return; } } /// /// 审核单据 /// /// /// /// /// public static string Audit(Context ctx, string fid, string Key) { //声明错误信息变量 string _Message = string.Empty; #region 审核 //获取单据信息 FormMetadata meta = MetaDataServiceHelper.Load(ctx, Key) as FormMetadata; var data1 = BusinessDataServiceHelper.LoadSingle(ctx, fid, meta.BusinessInfo.GetDynamicObjectType()); object[] idlist = new object[1]; idlist[0] = fid; //审核 OperateOption auditOption = OperateOption.Create(); //auditOption.SetIgnoreWarning(true); auditOption.SetIgnoreWarning(false); auditOption.SetIgnoreInteractionFlag(true); auditOption.AddInteractionFlag("STK_InvCheckResult");// 跳过序列号校验 IOperationResult auditResult = BusinessDataServiceHelper.Audit(ctx, meta.BusinessInfo, idlist, auditOption); //审核成功 if (auditResult.IsSuccess == true) { _Message = "审核成功!"; } //审核失败 else { //遍历错误信息并拼接 foreach (var item in auditResult.ValidationErrors) { _Message = _Message + string.Format("{0}\r\n", item.Message); } if (auditResult.InteractionContext != null) { _Message = _Message + auditResult.InteractionContext.SimpleMessage + "\r\n"; } _Message = _Message.Remove(_Message.LastIndexOf("\r\n"), 2); } //返回错误信息 return _Message; #endregion } /// /// 提交单据 /// /// /// /// /// public static string Submit(Context ctx, string fid, string Key) { //声明错误信息变量 string _Message = string.Empty; //获取单据元数据 FormMetadata meta = MetaDataServiceHelper.Load(ctx, Key) as FormMetadata; //根据单据内码获取对应单据数据包 var data1 = BusinessDataServiceHelper.LoadSingle(ctx, fid, meta.BusinessInfo.GetDynamicObjectType()); //声明单据内码集合 object[] idlist = new object[1]; //将接口的单据内码添加到集合中 idlist[0] = fid; //提交 OperateOption submitOption = null; //调用提交操作 IOperationResult subResult = BusinessDataServiceHelper.Submit(ctx, meta.BusinessInfo, idlist, "Submit", submitOption); //提交成功 if (subResult.IsSuccess == true) { _Message = "提交成功!"; } //提交失败 else { //遍历错误信息并拼接 foreach (var item in subResult.ValidationErrors) { _Message = _Message + string.Format("{0}\r\n", item.Message); } if (subResult.InteractionContext != null) { _Message = _Message + subResult.InteractionContext.SimpleMessage + "\r\n"; } _Message = _Message.Remove(_Message.LastIndexOf("\r\n"), 2); } //返回错误信息 return _Message; } /// /// 分配 /// /// /// /// /// public static string Allocate(Context ctx, string fid, string Key, string orgId, string OrgName) { //声明错误信息变量 string _Message = string.Empty; //获取单据元数据 FormMetadata meta = MetaDataServiceHelper.Load(ctx, Key) as FormMetadata; //根据单据内码获取对应单据数据包 var data1 = BusinessDataServiceHelper.LoadSingle(ctx, fid, meta.BusinessInfo.GetDynamicObjectType()); //声明单据内码集合 object[] idlist = new object[1]; //将接口的单据内码添加到集合中 idlist[0] = fid; //提交 OperateOption submitOption = null; var allocateParameter = new Kingdee.BOS.Core.Metadata.Operation.AllocateParameter (meta.BusinessInfo, meta.InheritPath, 1, BOSEnums.Enu_AllocateType.Allocate, "Allocate"); allocateParameter.PkId = new List { fid }; allocateParameter.DestOrgId = Convert.ToInt64(orgId); allocateParameter.DestOrgName = OrgName; allocateParameter.AutoSubmitAndAudit = true; allocateParameter.AllocateUserId = ctx.UserId; //调用分配操作 IOperationResult subResult = BusinessDataServiceHelper.Allocate(ctx, allocateParameter); //分配成功 if (subResult.IsSuccess == true) { _Message = "分配成功!"; } //提交失败 else { //遍历错误信息并拼接 foreach (var item in subResult.ValidationErrors) { _Message = _Message + string.Format("{0}\r\n", item.Message); } if (subResult.InteractionContext != null) { _Message = _Message + subResult.InteractionContext.SimpleMessage + "\r\n"; } _Message = _Message.Remove(_Message.LastIndexOf("\r\n"), 2); } //返回错误信息 return _Message; } /// /// 创建核销记录单 /// public static string CreateAutoWrireRecord(Context ctx, string FOrgId, List DATA1, DynamicObjectCollection DATA2) { string FBILLNO; string FID; // 构建一个IBillView实例,通过此实例,可以方便的填写 IBillView billView = CommonHelper.CreateBillView(ctx, "QPHY_AutoWrireRecord"); // billView.CreateNewModelData(); ((IBillViewService)billView).LoadData(); // 触发插件的OnLoad事件: // 组织控制基类插件,在OnLoad事件中,对主业务组织改变是否提示选项进行初始化。 // 如果不触发OnLoad事件,会导致主业务组织赋值不成功 DynamicFormViewPlugInProxy eventProxy = billView.GetService(); eventProxy.FireOnLoad(); CreateAutoWrireRecordData(billView, ctx, FOrgId, DATA1, DATA2); OperateOption saveOption = OperateOption.Create(); Form form = billView.BillBusinessInfo.GetForm(); if (form.FormIdDynamicProperty != null) { form.FormIdDynamicProperty.SetValue(billView.Model.DataObject, form.Id); } //保存工程项目 CommonHelper.SaveBill(ctx, billView, saveOption, true, out FID, out FBILLNO); return FBILLNO; } private static void CreateAutoWrireRecordData(IBillView billView, Context ctx, string FOrgId, List DATA1, DynamicObjectCollection DATA2) { billView.Model.SetValue("FOrgId", FOrgId, 0); for (int i = 0; i < DATA1.Count; i++) { var Rowindex = billView.Model.GetEntryRowCount("FEntity"); billView.Model.CreateNewEntryRow("FEntity"); billView.Model.SetValue("FBILLNO2", DATA1[i]["FBILLNO3"], Rowindex); billView.Model.SetValue("FDate2", DATA1[i]["FDate3"], Rowindex); billView.Model.SetValue("FALLAMOUNT2", DATA1[i]["FALLAMOUNT3"], Rowindex); billView.Model.SetValue("FCONTRACTNUMBER", DATA1[i]["FCONTRACTNUMBER3"], Rowindex); billView.Model.SetValue("FClient", DATA1[i]["FClient3"], Rowindex); billView.Model.SetValue("FProject", DATA1[i]["FProject3"], Rowindex); billView.Model.SetValue("FCreated", DATA1[i]["FCreated3"], Rowindex); billView.Model.SetValue("FAmountY", DATA1[i]["FAmountY3"], Rowindex); billView.Model.SetValue("FCurr", DATA1[i]["FCurr3"], Rowindex); } for (int i = 0; i < DATA2.Count; i++) { var Rowindex = billView.Model.GetEntryRowCount("FEntity2"); billView.Model.CreateNewEntryRow("FEntity2"); billView.Model.SetValue("FBILLNO3", DATA2[i]["FBILLNO4"], Rowindex); billView.Model.SetValue("FDate3", DATA2[i]["FDate4"], Rowindex); billView.Model.SetValue("FALLAMOUNT3", DATA2[i]["FALLAMOUNT4"], Rowindex); billView.Model.SetValue("FClient2", DATA2[i]["FClient4"], Rowindex); billView.Model.SetValue("FRemark", DATA2[i]["FRemark4"], Rowindex); billView.Model.SetValue("FCurr2", DATA2[i]["FCurr4"], Rowindex); billView.Model.SetValue("FAmountY2", DATA2[i]["FAmountY4"], Rowindex); } } /// /// 创建核销记录单(收款单为主) /// public static string CreateAutoWrireRecord2(Context ctx, string FOrgId, List DATA1, CombinaAddSK DATA2) { string FBILLNO; string FID; // 构建一个IBillView实例,通过此实例,可以方便的填写 IBillView billView = CommonHelper.CreateBillView(ctx, "QPHY_AutoWrireRecord"); // billView.CreateNewModelData(); ((IBillViewService)billView).LoadData(); // 触发插件的OnLoad事件: // 组织控制基类插件,在OnLoad事件中,对主业务组织改变是否提示选项进行初始化。 // 如果不触发OnLoad事件,会导致主业务组织赋值不成功 DynamicFormViewPlugInProxy eventProxy = billView.GetService(); eventProxy.FireOnLoad(); CreateAutoWrireRecordData2(billView, ctx, FOrgId, DATA1, DATA2); OperateOption saveOption = OperateOption.Create(); Form form = billView.BillBusinessInfo.GetForm(); if (form.FormIdDynamicProperty != null) { form.FormIdDynamicProperty.SetValue(billView.Model.DataObject, form.Id); } //保存工程项目 CommonHelper.SaveBill(ctx, billView, saveOption, true, out FID, out FBILLNO); return FBILLNO; } private static void CreateAutoWrireRecordData2(IBillView billView, Context ctx, string FOrgId, List DATA1, CombinaAddSK DATA2) { billView.Model.SetValue("FOrgId", FOrgId, 0); decimal amount = DATA2.FALLAMOUNT; for (int i = 0; i < DATA1.Count; i++) { decimal amount2 = 0; //考虑到手动核销金额不一定相等的情况 if (amount == DATA1[0].FALLAMOUNT) { amount2 = DATA2.FALLAMOUNT; } else if (amount > DATA1[0].FALLAMOUNT) { amount2 = DATA1[i].FALLAMOUNT; } else if (amount - DATA1[i].FALLAMOUNT > 0) { amount2 = DATA1[i].FALLAMOUNT; amount -= DATA1[i].FALLAMOUNT; } else { amount2 = amount; } var Rowindex = billView.Model.GetEntryRowCount("FEntity"); billView.Model.CreateNewEntryRow("FEntity"); billView.Model.SetValue("FBILLNO2", DATA1[i].FBIllNO, Rowindex); billView.Model.SetValue("FDate2", DATA1[i].FDate, Rowindex); billView.Model.SetValue("FALLAMOUNT2", amount2, Rowindex); billView.Model.SetValue("FALLAMOUNT22", amount2, Rowindex); billView.Model.SetValue("FCONTRACTNUMBER", DATA1[i].FCONTRACTNUMBER, Rowindex); billView.Model.SetValue("FClient", DATA1[i].FClient, Rowindex); billView.Model.SetValue("FCreated", DATA1[i].FCreated, Rowindex); billView.Model.SetValue("FSalesman", DATA1[i].FSalesman, Rowindex); //billView.Model.SetValue("FProject", DATA1[i]["FProject3"], Rowindex); //billView.Model.SetValue("FCreated", DATA1[i]["FCreated3"], Rowindex); //billView.Model.SetValue("FAmountY", DATA1[i]["FAmountY3"], Rowindex); //billView.Model.SetValue("FCurr", DATA1[i]["FCurr3"], Rowindex); } //考虑到手动核销金额不一定相等的情况 decimal amount1 = Convert.ToDecimal(DATA1.Sum(a => a.FALLAMOUNT)); if (DATA2.FALLAMOUNT < amount1) { amount1 = DATA2.FALLAMOUNT; } var Rowindex2 = billView.Model.GetEntryRowCount("FEntity2"); billView.Model.CreateNewEntryRow("FEntity2"); billView.Model.SetValue("FBILLNO3", DATA2.FBIllNO, Rowindex2); billView.Model.SetValue("FDate3", DATA2.FDate, Rowindex2); billView.Model.SetValue("FALLAMOUNT3", amount1, Rowindex2); billView.Model.SetValue("FALLAMOUNT33", amount1, Rowindex2); billView.Model.SetValue("FClient2", DATA2.FClient, Rowindex2); billView.Model.SetValue("FRemark", DATA2.FRemark, Rowindex2); billView.Model.SetValue("FCreated2", DATA2.FCreated, Rowindex2); billView.Model.SetValue("FSalesman2", DATA2.FSalesman, Rowindex2); billView.Model.SetValue("FCONTRACTNUMBER2", DATA2.FCONTRACTNUMBER, Rowindex2); //billView.Model.SetValue("FCurr2", DATA2[i]["FCurr4"], Rowindex); //billView.Model.SetValue("FAmountY2", DATA2[i]["FAmountY4"], Rowindex); } /// /// 创建核销记录单(销售订单/应收单为主) /// public static string CreateAutoWrireRecord3(Context ctx, string FOrgId, CombinaAddClass1 DATA1, List DATA2) { string FBILLNO; string FID; // 构建一个IBillView实例,通过此实例,可以方便的填写 IBillView billView = CommonHelper.CreateBillView(ctx, "QPHY_AutoWrireRecord"); // billView.CreateNewModelData(); ((IBillViewService)billView).LoadData(); // 触发插件的OnLoad事件: // 组织控制基类插件,在OnLoad事件中,对主业务组织改变是否提示选项进行初始化。 // 如果不触发OnLoad事件,会导致主业务组织赋值不成功 DynamicFormViewPlugInProxy eventProxy = billView.GetService(); eventProxy.FireOnLoad(); CreateAutoWrireRecordData3(billView, ctx, FOrgId, DATA1, DATA2); OperateOption saveOption = OperateOption.Create(); Form form = billView.BillBusinessInfo.GetForm(); if (form.FormIdDynamicProperty != null) { form.FormIdDynamicProperty.SetValue(billView.Model.DataObject, form.Id); } //保存工程项目 CommonHelper.SaveBill(ctx, billView, saveOption, true, out FID, out FBILLNO); return FBILLNO; } private static void CreateAutoWrireRecordData3(IBillView billView, Context ctx, string FOrgId, CombinaAddClass1 DATA1, List DATA2) { billView.Model.SetValue("FOrgId", FOrgId, 0); var Rowindex = billView.Model.GetEntryRowCount("FEntity"); billView.Model.CreateNewEntryRow("FEntity"); billView.Model.SetValue("FBILLNO2", DATA1.FBIllNO, Rowindex); billView.Model.SetValue("FDate2", DATA1.FDate, Rowindex); billView.Model.SetValue("FALLAMOUNT2", DATA1.FALLAMOUNT, Rowindex); //billView.Model.SetValue("FALLAMOUNT22", DATA1.FALLAMOUNT, Rowindex); billView.Model.SetValue("FCONTRACTNUMBER", DATA1.FCONTRACTNUMBER, Rowindex); billView.Model.SetValue("FClient", DATA1.FClient, Rowindex); billView.Model.SetValue("FCreated", DATA1.FCreated, Rowindex); billView.Model.SetValue("FSalesman", DATA1.FSalesman, Rowindex); //billView.Model.SetValue("FProject", DATA1[i]["FProject3"], Rowindex); //billView.Model.SetValue("FCreated", DATA1[i]["FCreated3"], Rowindex); //billView.Model.SetValue("FAmountY", DATA1[i]["FAmountY3"], Rowindex); //billView.Model.SetValue("FCurr", DATA1[i]["FCurr3"], Rowindex); for (int i = 0; i < DATA2.Count; i++) { var Rowindex2 = billView.Model.GetEntryRowCount("FEntity2"); billView.Model.CreateNewEntryRow("FEntity2"); billView.Model.SetValue("FBILLNO3", DATA2[i].FBIllNO, Rowindex2); billView.Model.SetValue("FDate3", DATA2[i].FDate, Rowindex2); billView.Model.SetValue("FALLAMOUNT3", DATA2[i].FALLAMOUNT, Rowindex2); //billView.Model.SetValue("FALLAMOUNT33", DATA2[i].FALLAMOUNT, Rowindex2); billView.Model.SetValue("FClient2", DATA2[i].FClient, Rowindex2); billView.Model.SetValue("FCONTRACTNUMBER2", DATA2[i].FCONTRACTNUMBER, Rowindex2); billView.Model.SetValue("FRemark", DATA2[i].FRemark, Rowindex2); billView.Model.SetValue("FCreated2", DATA2[i].FCreated, Rowindex2); billView.Model.SetValue("FSalesman2", DATA2[i].FSalesman, Rowindex2); //billView.Model.SetValue("FCurr2", DATA2[i]["FCurr4"], Rowindex); //billView.Model.SetValue("FAmountY2", DATA2[i]["FAmountY4"], Rowindex); } } /// /// 数字小写转大写 /// /// /// public static string ConvertToChineseUppercase(int number) { // 定义一个字典来存储数字到大写汉字的映射 Dictionary numberToChineseMap = new Dictionary { { 0, "零" }, { 1, "一" }, { 2, "二" }, { 3, "三" }, { 4, "四" }, { 5, "五" }, { 6, "六" }, { 7, "七" }, { 8, "八" }, { 9, "九" } }; // 检查字典中是否包含该数字 if (numberToChineseMap.ContainsKey(number)) { return numberToChineseMap[number]; } else { // 处理超出范围的情况,可以抛出异常或者返回默认值 throw new ArgumentException("数字超出范围"); } } } }