添加项目文件。

This commit is contained in:
liangjunyu
2025-06-20 09:17:36 +08:00
parent 4aee212079
commit 69446e2dda
43 changed files with 5544 additions and 0 deletions

View File

@@ -0,0 +1,540 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using Kingdee.BOS.WebApi.Client;
using Kingdee.BOS;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Bill.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.WebApi.FormService;
using System.Web.Script.Serialization;
using Newtonsoft.Json;
using System.IO;
namespace aoyuPlugIn
{
[Description("费用归集新增")]
[Kingdee.BOS.Util.HotUpdate]
public class API_fygj:AbstractBillPlugIn
{
//调用API生成费用归集单--本机
public Boolean SaveBill2()
{
string fbillno = this.View.Model.GetValue("FBillNo").ToString();
try
{
var sSql = String.Format("EXEC hw_get_wwdd '" + fbillno + "'");
var dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sSql);
int i = 0;
if (dr.Count > 0)
{
try
{
JObject jsonRoot = new JObject();
// NeedUpDateFields: 哪些字段需要更新?为空则表示参数中全部字段,均需要更新
jsonRoot.Add("NeedUpDateFields", new JArray(""));
// Model: 单据详细数据参数
JObject model = new JObject();
jsonRoot.Add("Model", model);
// 开始设置单据字段值
// 必须设置的字段:主键、单据类型、主业务组织,各必录且没有设置默认值的字段
// 特别注意字段Key大小写是敏感的建议从BOS设计器中直接复制字段的标识属性过来
// 单据主键必须填写系统据此判断是新增还是修改单据新增单据填0
model.Add("FID", 0);
//核算体系编码
JObject FACCTGSYSTEMID = new JObject();
FACCTGSYSTEMID.Add("FNumber", "KJHSTX01_SYS");
model.Add("FACCTGSYSTEMID", FACCTGSYSTEMID);
//核算体组织码
JObject FACCTGORGID = new JObject();
FACCTGORGID.Add("FNumber", "107");
model.Add("FACCTGORGID", FACCTGORGID);
//会计政策编码
JObject FACCTPOLICYID = new JObject();
FACCTPOLICYID.Add("FNumber", "KJZC02_SYS");
model.Add("FACCTPOLICYID", FACCTPOLICYID);
////业务类型
//model.Add("FBusinessType", "CG");//标准采购
// 开始构建单据体参数集合参数JArray
JArray entryRows = new JArray();
// 把单据体行集合添加到model中以单据体Key为标识
string entityKey = "FEntity";
model.Add(entityKey, entryRows);
// 通过循环创建单据体行:示例代码仅创建一行
foreach (var item in dr)
{
// 添加新行,把新行加入到单据体行集合
JObject entryRow = new JObject();
entryRows.Add(entryRow);
// 给新行,设置关键字段值
// 单据体主键:必须填写,系统据此判断是新增还是修改行,0是新增
entryRow.Add("FEntryID", 0);
//业务组织
JObject FBIZORGID = new JObject();
FBIZORGID.Add("FNumber", "107");
entryRow.Add("FBIZORGID", FBIZORGID);
//费用项目编码
JObject FEXPENSEITEMID = new JObject();
FEXPENSEITEMID.Add("FNumber", "FYXM04_SYS");
entryRow.Add("FEXPENSEITEMID", FEXPENSEITEMID);
//this.Model.SetValue("F_ISSYQ", item[2], i);
//日期
//entryRow.Add("FDATE", item[0].ToString());
entryRow.Add("FDATE", "2019-5-31");
//成本中心编码
JObject FCOSTCENTERID = new JObject();
FCOSTCENTERID.Add("FNumber", "CBZX000016");
entryRow.Add("FCOSTCENTERID", FCOSTCENTERID);
//金额
entryRow.Add("FAMOUNT", item[1].ToString());
//产品编号
JObject FPRODUCTID = new JObject();
FPRODUCTID.Add("FNumber", item[2].ToString());
entryRow.Add("FPRODUCTID", FPRODUCTID);
i++;
}
// 调用Web API接口服务保存
object result = WebApiServiceCall.Save(this.Context, "CB_EXPENSECOLLECTION", jsonRoot.ToString());
string t = objzjs(result);
if (strJson(t))
{
sSql = string.Format("exec hw_fxwgd '{0}'", fbillno);
DBServiceHelper.Execute(this.Context, sSql);
this.View.ShowMessage("操作成功!");
return true;
}
else
{
this.View.ShowMessage("操作失败!" + t);
return false;
}
}
catch (Exception ex)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("程序运行遇到了未知的错误11");
sb.Append("错误提示:").AppendLine(ex.Message);
sb.Append("错误堆栈:").AppendLine(ex.StackTrace);
this.View.ShowMessage(sb.ToString());
return false;
}
}
else
{
this.View.ShowMessage("无数据,请确认后再操作!");
return false;
}
}
catch (Exception ex) { this.View.ShowMessage("生成费用归集单时发生错误为:" + ex.Message); return false; }
}
//调用API生成费用归集单--汇威
public Boolean SaveBill()
{
string fbillno = this.View.Model.GetValue("FBillNo").ToString();
try
{
var sSql = String.Format("EXEC hw_get_wwdd '" + fbillno + "'");
var dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sSql);
int i = 0;
if (dr.Count > 0)
{
try
{
JObject jsonRoot = new JObject();
// NeedUpDateFields: 哪些字段需要更新?为空则表示参数中全部字段,均需要更新
jsonRoot.Add("NeedUpDateFields", new JArray(""));
// Model: 单据详细数据参数
JObject model = new JObject();
jsonRoot.Add("Model", model);
// 开始设置单据字段值
// 必须设置的字段:主键、单据类型、主业务组织,各必录且没有设置默认值的字段
// 特别注意字段Key大小写是敏感的建议从BOS设计器中直接复制字段的标识属性过来
// 单据主键必须填写系统据此判断是新增还是修改单据新增单据填0
model.Add("FID", 0);
//核算体系编码
JObject FACCTGSYSTEMID = new JObject();
FACCTGSYSTEMID.Add("FNumber", "KJHSTX01_SYS");
model.Add("FACCTGSYSTEMID", FACCTGSYSTEMID);
//核算体组织码
JObject FACCTGORGID = new JObject();
//FACCTGORGID.Add("FNumber", "107");
FACCTGORGID.Add("FNumber", "100");
model.Add("FACCTGORGID", FACCTGORGID);
//会计政策编码
JObject FACCTPOLICYID = new JObject();
//FACCTPOLICYID.Add("FNumber", "KJZC02_SYS");
FACCTPOLICYID.Add("FNumber", "KJZC01_SYS");
model.Add("FACCTPOLICYID", FACCTPOLICYID);
////业务类型
//model.Add("FBusinessType", "CG");//标准采购
// 开始构建单据体参数集合参数JArray
JArray entryRows = new JArray();
// 把单据体行集合添加到model中以单据体Key为标识
string entityKey = "FEntity";
model.Add(entityKey, entryRows);
// 通过循环创建单据体行:示例代码仅创建一行
foreach (var item in dr)
{
// 添加新行,把新行加入到单据体行集合
JObject entryRow = new JObject();
entryRows.Add(entryRow);
// 给新行,设置关键字段值
// 单据体主键:必须填写,系统据此判断是新增还是修改行,0是新增
entryRow.Add("FEntryID", 0);
//业务组织
JObject FBIZORGID = new JObject();
//FBIZORGID.Add("FNumber", "107");
FBIZORGID.Add("FNumber", "100");
entryRow.Add("FBIZORGID", FBIZORGID);
//费用项目编码
JObject FEXPENSEITEMID = new JObject();
FEXPENSEITEMID.Add("FNumber", "FYXM04_SYS");
entryRow.Add("FEXPENSEITEMID", FEXPENSEITEMID);
//this.Model.SetValue("F_ISSYQ", item[2], i);
//日期
entryRow.Add("FDATE", item[0].ToString());
//entryRow.Add("FDATE", "2019-5-31");
//成本中心编码
JObject FCOSTCENTERID = new JObject();
//FCOSTCENTERID.Add("FNumber", "CBZX000016");
FCOSTCENTERID.Add("FNumber", "CBZX000049");
entryRow.Add("FCOSTCENTERID", FCOSTCENTERID);
//金额
entryRow.Add("FAMOUNT", item[1].ToString());
//产品编号
JObject FPRODUCTID = new JObject();
FPRODUCTID.Add("FNumber", item[2].ToString());
entryRow.Add("FPRODUCTID", FPRODUCTID);
i++;
}
// 调用Web API接口服务保存
var result = WebApiServiceCall.Save(this.Context, "CB_EXPENSECOLLECTION", jsonRoot.ToString());
string t = objzjs(result);
if (strJson(t))
{
sSql = string.Format("exec hw_fxwgd '{0}'", fbillno);
DBServiceHelper.Execute(this.Context, sSql);
this.View.ShowMessage("操作成功1");
return true;
}
else
{
this.View.ShowMessage("操作失败!" + t);
return false;
}
}
catch (Exception ex)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("程序运行遇到了未知的错误11");
sb.Append("错误提示:").AppendLine(ex.Message);
sb.Append("错误堆栈:").AppendLine(ex.StackTrace);
this.View.ShowMessage(sb.ToString());
return false;
}
}
else
{
this.View.ShowMessage("无数据,请确认后再操作!");
return false;
}
}
catch (Exception ex) { this.View.ShowMessage("生成费用归集单时发生错误为:" + ex.Message); return false; }
}
//object转json
public string objzjs(Object obj)
{
JavaScriptSerializer js = new JavaScriptSerializer();
string myJson = js.Serialize(obj);
return myJson;
}
// 将字符串转换成Json格式显示
//字符串转json
public bool strJson(string t)
{
string jsonText = t;
// "{"shenzheng":"深圳","beijing":"北京","shanghai":[{"zj1":"zj11","zj2":"zj22"},"zjs"]}";
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);//或者JObject jo = JObject.Parse(jsonText);
//string zone = jo["shenzheng"].ToString();//输出 "深圳"
//string zone_en = jo["shanghai"].ToString();//输出 "[{"zj1":"zj11","zj2":"zj22"},"zjs"]"
//string zj1 = jo["shanghai"][1].ToString();//输出 "zjs"
//Console.WriteLine(jo);
string tt = jo["Result"].ToString();
JObject jo1 = (JObject)JsonConvert.DeserializeObject(tt);
string t3 = jo1["ResponseStatus"].ToString();
JObject jo2 = (JObject)JsonConvert.DeserializeObject(t3);
string t4 = jo2["IsSuccess"].ToString();
if (t4.ToLower() == "true")
return true;
else
return false;
}
public Boolean SaveBill6()
{
string fbillno = this.View.Model.GetValue("FBillNo").ToString();
try
{
var sSql = String.Format("EXEC hw_get_wwdd '" + fbillno + "'");
var dr = DBServiceHelper.ExecuteDynamicObject(this.Context, sSql);
int i = 0;
if (dr.Count > 0)
{
string cwts = "-";
try
{
string url = "https://5f1nococmwz67jl/K3Cloud/";
string dbid = "5c85f54f52a132";
string user = "demo";
string pwd = "888888";
url = "http://61.145.228.58:9656/k3cloud";
dbid = "5e0f100d492605";
user = "Hezhiq";
pwd = "abc123++";
ApiClient client = new ApiClient(url);
var loginResult = client.Login(
dbid,
user,
pwd,
2052);
string result = "登录失败请检查与站点地址、数据中心Id用户名及密码";
// 登陆成功,开始保存数据
if (loginResult == true)
{
// 开始构建Web API参数对象
// 参数根对象包含Creator、NeedUpDateFields、Model这三个子参数
// using Newtonsoft.Json.Linq; // (需引用Newtonsoft.Json.dll)
JObject jsonRoot = new JObject();
// Creator: 创建用户
//jsonRoot.Add("Creator", "Demo");
// NeedUpDateFields: 哪些字段需要更新?为空则表示参数中全部字段,均需要更新
jsonRoot.Add("NeedUpDateFields", new JArray(""));
// Model: 单据详细数据参数
JObject model = new JObject();
jsonRoot.Add("Model", model);
// 开始设置单据字段值
// 必须设置的字段:主键、单据类型、主业务组织,各必录且没有设置默认值的字段
// 特别注意字段Key大小写是敏感的建议从BOS设计器中直接复制字段的标识属性过来
// 单据主键必须填写系统据此判断是新增还是修改单据新增单据填0
model.Add("FID", 0);
//核算体系编码
JObject FACCTGSYSTEMID = new JObject();
FACCTGSYSTEMID.Add("FNumber", "KJHSTX01_SYS");
model.Add("FACCTGSYSTEMID", FACCTGSYSTEMID);
//核算体组织码
JObject FACCTGORGID = new JObject();
FACCTGORGID.Add("FNumber", "107");
model.Add("FACCTGORGID", FACCTGORGID);
//会计政策编码
JObject FACCTPOLICYID = new JObject();
FACCTPOLICYID.Add("FNumber", "KJZC02_SYS");
model.Add("FACCTPOLICYID", FACCTPOLICYID);
////业务类型
//model.Add("FBusinessType", "CG");//标准采购
// 开始构建单据体参数集合参数JArray
JArray entryRows = new JArray();
// 把单据体行集合添加到model中以单据体Key为标识
string entityKey = "FEntity";
model.Add(entityKey, entryRows);
// 通过循环创建单据体行:示例代码仅创建一行
foreach (var item in dr)
{
//string k = item[0].ToString();
//this.Model.SetValue("F_YGNM", item[0], i);
//this.Model.SetValue("F_ISXYG", item[1], i);
//this.Model.SetValue("F_ISSYQ", item[2], i);
// 添加新行,把新行加入到单据体行集合
JObject entryRow = new JObject();
entryRows.Add(entryRow);
// 给新行,设置关键字段值
// 单据体主键:必须填写,系统据此判断是新增还是修改行
entryRow.Add("FEntryID", 0);
//业务组织
JObject FBIZORGID = new JObject();
FBIZORGID.Add("FNumber", "107");
entryRow.Add("FBIZORGID", FBIZORGID);
//费用项目编码
JObject FEXPENSEITEMID = new JObject();
FEXPENSEITEMID.Add("FNumber", "FYXM04_SYS");
entryRow.Add("FEXPENSEITEMID", FEXPENSEITEMID);
//this.Model.SetValue("F_ISSYQ", item[2], i);
//日期
string tm9 = DateTime.Today.ToShortDateString();
entryRow.Add("FDATE", tm9);
//成本中心编码
JObject FCOSTCENTERID = new JObject();
FCOSTCENTERID.Add("FNumber", "CBZX000016");
entryRow.Add("FCOSTCENTERID", FCOSTCENTERID);
//金额
entryRow.Add("FAMOUNT", item[1].ToString());
//产品编号
JObject FPRODUCTID = new JObject();
FPRODUCTID.Add("FNumber", item[2].ToString());
entryRow.Add("FPRODUCTID", FPRODUCTID);
i++;
}
cwts = "准备执行费用归集"+jsonRoot.ToString();
// 调用Web API接口服务保存
result = client.Execute<string>(
"Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save",
new object[] { "CB_EXPENSECOLLECTION", jsonRoot.ToString() });
}
this.View.ShowMessage("操作成功!");
return true;
}
catch (Exception ex)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("程序运行遇到了未知的错误56"+cwts);
sb.Append("错误提示:").AppendLine(ex.Message);
sb.Append("错误堆栈:").AppendLine(ex.StackTrace);
this.View.ShowMessage(sb.ToString());
return false;
}
}
else
{
this.View.ShowMessage("无数据,请确认后再操作!");
return false;
}
}
catch (Exception ex) { this.View.ShowMessage("生成费用归集单时发生错误为:" + ex.Message); return false; }
}
//单据头菜单点击
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
if (e.BarItemKey == "tbfygj")
{
SaveBill();
}
}
}
}