Files
Gatedge.HuiWei.BOS.JJGZMJ/aoyuPlugIn/汇威/API新增单据/API_fygj.cs
2025-06-20 09:17:36 +08:00

541 lines
23 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}
}
}
}