1492 lines
74 KiB
C#
1492 lines
74 KiB
C#
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<string> List = new List<string>() { "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<string>("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<string>("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<Table> tables = mainPart.Document.Body.Elements<Table>();
|
||
|
||
// foreach (Table table in tables)
|
||
// {
|
||
// // 遍历表格中的所有行
|
||
// foreach (TableRow row in table.Elements<TableRow>())
|
||
// {
|
||
// // 遍历行中的所有单元格
|
||
// foreach (TableCell cell in row.Elements<TableCell>())
|
||
// {
|
||
// // 获取单元格的段落(可能有多个)
|
||
// foreach (Paragraph paragraph in cell.Elements<DocumentFormat.OpenXml.Wordprocessing.Paragraph>())
|
||
// {
|
||
// // 获取段落的属性(这些属性可以包含字体、字号等信息)
|
||
// 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<Run>())
|
||
// {
|
||
// // 获取运行的属性(这些属性可以包含字体、字号、颜色等信息)
|
||
// 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<string> List = new List<string>() { "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);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 保存Txt到服务器商
|
||
/// </summary>
|
||
/// <param name="Data">接口调用数据</param>
|
||
/// <param name="path">Txt地址</param>
|
||
/// <param name="Result">接口返回数据</param>
|
||
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";//正式 集成登录秘钥
|
||
|
||
|
||
/// <summary>
|
||
/// 获取文档云的Token
|
||
/// </summary>
|
||
/// <param name="username">用户名</param>
|
||
/// <param name="password">密码</param>
|
||
/// <returns></returns>
|
||
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<JObject>(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<JObject>(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<JObject>(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;
|
||
}
|
||
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 创建多层级文件夹
|
||
/// </summary>
|
||
/// <param name="Token"></param>
|
||
/// <param name="parentFolderId">父级文件夹id</param>
|
||
/// <param name="FYear">年份</param>
|
||
/// <param name="contractFolderName">合同文件夹名称</param>
|
||
/// <returns></returns>
|
||
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<JObject>(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;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 创建BPM流程发起产品生产出货预置单
|
||
/// </summary>
|
||
public static string CreateDocument2(DynamicObjectCollection data, Context ctx)
|
||
{
|
||
StringBuilder xml = new StringBuilder("FormData=<FormData>");
|
||
xml.Append("<productshipinit>");
|
||
xml.Append("<SN></SN>");
|
||
xml.Append("<ReqDate>" + Convert.ToString(data[0]["创建时间"]) + "</ReqDate>");//创建时间
|
||
xml.Append("<Applicant>" + Convert.ToString(data[0]["填单人"]) + "</Applicant>");//填单人
|
||
xml.Append("<DeptName>" + Convert.ToString(data[0]["填单人部门"]) + "</DeptName>"); //填单人部门
|
||
xml.Append("<Model>" + Convert.ToString(data[0]["规格型号"]) + "</Model>"); //规格型号
|
||
xml.Append("<Customer>" + Convert.ToString(data[0]["购货单位"]) + "</Customer>");//购货单位
|
||
xml.Append("<Project>" + Convert.ToString(data[0]["项目名称"]) + "</Project>");//项目名称
|
||
xml.Append("<Seller>" + Convert.ToString(data[0]["销售人员"]) + "</Seller>"); //销售人员
|
||
xml.Append("<SellerDept>" + Convert.ToString(data[0]["销售人员部门"]) + "</SellerDept>"); //销售人员部门
|
||
xml.Append("<Position>" + Convert.ToString(data[0]["填单人职位"]) + "</Position>"); //填单人职位
|
||
xml.Append("<ContractNo>" + Convert.ToString(data[0]["合同号"]) + "</ContractNo>");//合同号
|
||
xml.Append("<deliverydate>" + Convert.ToString(data[0]["发货日期"]) + "</deliverydate>");//发货日期
|
||
xml.Append("</productshipinit>");
|
||
foreach (var item in data)
|
||
{
|
||
xml.Append("<productshipinit_item>");
|
||
xml.Append("<itemnumber>" + Convert.ToString(item["物料代码"]) + "</itemnumber>"); //物料代码
|
||
xml.Append("<itemmodel>" + Convert.ToString(item["物料名称"]) + "</itemmodel>"); //物料名称
|
||
xml.Append("<qty>" + Convert.ToString(item["数量"]) + "</qty>"); //数量
|
||
xml.Append("<Brand>" + Convert.ToString(item["品牌"]) + "</Brand>"); //品牌
|
||
xml.Append("<demand>" + Convert.ToString(item["备注"]) + "</demand>"); //定制单出货次数
|
||
xml.Append("</productshipinit_item>");
|
||
}
|
||
xml.Append("</FormData>");
|
||
//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<JObject>(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;
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// 创建BPM流程发起产品定制再次出货确认单
|
||
/// </summary>
|
||
public static string CreateDocument(DynamicObjectCollection data, Context ctx)
|
||
{
|
||
StringBuilder xml = new StringBuilder("FormData=<FormData>");
|
||
xml.Append("<CustMadeAgain>");
|
||
xml.Append("<SN></SN>");
|
||
xml.Append("<ReqDate>" + Convert.ToString(data[0]["创建时间"]) + "</ReqDate>");//创建时间
|
||
xml.Append("<Applicant>" + Convert.ToString(data[0]["填单人"]) + "</Applicant>");//填单人
|
||
xml.Append("<DeptName>" + Convert.ToString(data[0]["填单人部门"]) + "</DeptName>"); //填单人部门
|
||
xml.Append("<Position>" + Convert.ToString(data[0]["填单人职位"]) + "</Position>"); //填单人职位
|
||
xml.Append("<ContactNo>" + Convert.ToString(data[0]["合同号"]) + "</ContactNo>");//合同号
|
||
xml.Append("<Customer>" + Convert.ToString(data[0]["购货单位"]) + "</Customer>");//购货单位
|
||
xml.Append("<Project>" + Convert.ToString(data[0]["项目名称"]) + "</Project>");//项目名称
|
||
xml.Append("<Seller>" + Convert.ToString(data[0]["销售人员"]) + "</Seller>"); //销售人员
|
||
xml.Append("<SellerDept>" + Convert.ToString(data[0]["销售人员部门"]) + "</SellerDept>"); //销售人员部门
|
||
xml.Append("<vModel>" + Convert.ToString(data[0]["规格型号"]) + "</vModel>"); //规格型号
|
||
xml.Append("</CustMadeAgain>");
|
||
foreach (var item in data)
|
||
{
|
||
xml.Append("<CustMadeAgain_Item>");
|
||
xml.Append("<MaterialCode>" + Convert.ToString(item["物料代码"]) + "</MaterialCode>"); //物料代码
|
||
xml.Append("<MaterialName>" + Convert.ToString(item["物料名称"]) + "</MaterialName>"); //物料名称
|
||
xml.Append("<Model>" + Convert.ToString(item["规格型号"]) + "</Model>"); //规格型号
|
||
xml.Append("<Brand>" + Convert.ToString(item["品牌"]) + "</Brand>"); //品牌
|
||
xml.Append("<Qty>" + Convert.ToString(item["数量"]) + "</Qty>"); //数量
|
||
xml.Append("<Remarks>" + Convert.ToString(item["备注"]) + "</Remarks>"); //备注
|
||
xml.Append("<CustMadeQty>" + Convert.ToString(item["定制单出货次数"]) + "</CustMadeQty>"); //定制单出货次数
|
||
xml.Append("</CustMadeAgain_Item>");
|
||
}
|
||
xml.Append("</FormData>");
|
||
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<JObject>(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;
|
||
}
|
||
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 创建工程项目
|
||
/// </summary>
|
||
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<DynamicFormViewPlugInProxy>();
|
||
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);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 调用PMS接口
|
||
/// </summary>
|
||
/// <param name="templatePath"></param>
|
||
/// <param name="data"></param>
|
||
/// <param name="outputPath"></param>
|
||
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<AbstractDynamicFormPlugIn> 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;
|
||
}
|
||
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// 保存单据
|
||
/// </summary>
|
||
/// <param name="ctx"></param>
|
||
/// <param name="billView"></param>
|
||
/// <param name="saveOption"></param>
|
||
/// <param name="IsAutoSubmitAudit">是否自动提交审核</param>
|
||
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;
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 审核单据
|
||
/// </summary>
|
||
/// <param name="ctx"></param>
|
||
/// <param name="fid"></param>
|
||
/// <param name="Key"></param>
|
||
/// <returns></returns>
|
||
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
|
||
}
|
||
/// <summary>
|
||
/// 提交单据
|
||
/// </summary>
|
||
/// <param name="ctx"></param>
|
||
/// <param name="fid"></param>
|
||
/// <param name="Key"></param>
|
||
/// <returns></returns>
|
||
|
||
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;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 分配
|
||
/// </summary>
|
||
/// <param name="ctx"></param>
|
||
/// <param name="fid"></param>
|
||
/// <param name="Key"></param>
|
||
/// <returns></returns>
|
||
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<object> { 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;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 创建核销记录单
|
||
/// </summary>
|
||
public static string CreateAutoWrireRecord(Context ctx, string FOrgId, List<DynamicObject> 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<DynamicFormViewPlugInProxy>();
|
||
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<DynamicObject> 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);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 创建核销记录单(收款单为主)
|
||
/// </summary>
|
||
public static string CreateAutoWrireRecord2(Context ctx, string FOrgId, List<CombinaAddClass1> 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<DynamicFormViewPlugInProxy>();
|
||
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<CombinaAddClass1> 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("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("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);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 创建核销记录单(销售订单/应收单为主)
|
||
/// </summary>
|
||
public static string CreateAutoWrireRecord3(Context ctx, string FOrgId, CombinaAddClass1 DATA1, List<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<DynamicFormViewPlugInProxy>();
|
||
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<CombinaAddSK> 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("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("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);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 数字小写转大写
|
||
/// </summary>
|
||
/// <param name="number"></param>
|
||
/// <returns></returns>
|
||
public static string ConvertToChineseUppercase(int number)
|
||
{
|
||
// 定义一个字典来存储数字到大写汉字的映射
|
||
Dictionary<int, string> numberToChineseMap = new Dictionary<int, string>
|
||
{
|
||
{ 0, "零" },
|
||
{ 1, "一" },
|
||
{ 2, "二" },
|
||
{ 3, "三" },
|
||
{ 4, "四" },
|
||
{ 5, "五" },
|
||
{ 6, "六" },
|
||
{ 7, "七" },
|
||
{ 8, "八" },
|
||
{ 9, "九" }
|
||
};
|
||
|
||
// 检查字典中是否包含该数字
|
||
if (numberToChineseMap.ContainsKey(number))
|
||
{
|
||
return numberToChineseMap[number];
|
||
}
|
||
else
|
||
{
|
||
// 处理超出范围的情况,可以抛出异常或者返回默认值
|
||
throw new ArgumentException("数字超出范围");
|
||
}
|
||
}
|
||
}
|
||
}
|