Files
Gatedge.HuiWei.BOS.JJGZMJ/aoyuPlugIn/MJ_wgd_lb.cs
2025-06-20 09:17:36 +08:00

377 lines
16 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.ComponentModel;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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.Core.List.PlugIn;
using Kingdee.BOS.WebApi.FormService;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System.Web.Script.Serialization;
namespace aoyuPlugIn
{
[Description("列表费用归集新增")]
[Kingdee.BOS.Util.HotUpdate]
public class MJ_wgd_lb : AbstractListPlugIn
{
//列表菜单事件
public override void AfterBarItemClick(AfterBarItemClickEventArgs e)
{
base.AfterBarItemClick(e);
if (e.BarItemKey == "tbfygjlb")//生成费用归集单
{
if (this.ListView.SelectedRowsInfo.Count > 0)
{
for (int i = 0; i < this.ListView.SelectedRowsInfo.Count; i++)
{
//取指定行单据编号
string fbillno = this.ListView.SelectedRowsInfo[i].BillNo;
//string zt = this.ListView.SelectedRowsInfo[i].DataRow["FDOCUMENTSTATUS"].ToString();//取单据状态
SaveBill(fbillno);
}
}
}
}
//调用API生成费用归集单--本机
public Boolean SaveBill2(string fbillno)
{
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)
{
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;
}
}
}