using BHR.K3.Common.App;
using Kingdee.BOS;
using Kingdee.BOS.App;
using Kingdee.BOS.Business.Bill.Operation;
using Kingdee.BOS.Contracts;
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.Log;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.ControlElement;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Orm.Metadata.DataEntity;
using Kingdee.BOS.Resource;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.ServiceHelper.Excel;
using Kingdee.BOS.Util;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
namespace K3.App.Service.PlugIn
{
[Description("查询产品BOM成本")]
//[Kingdee.BOS.Util.HotUpdate]
/// <summary>
///
/// </summary>
public class GETBOMCOSTPlugIn: AbstractDynamicFormPlugIn
{
private string Fmaterialid_Number = "";
public override void ButtonClick(ButtonClickEventArgs e)
{
base.ButtonClick(e);
LogObject log = new LogObject();
if (e.Key.Equals("FREFRESH"))
{
// EntityExport export = new EntityExport();
// export.EntityKey = "F_BHR_BOMCOSTEntity";
//DynamicObject FBillINFO = this.View.Model.DataObject;//
//long Fmaterialid_id = Convert.ToInt64((this.View.Model.GetValue("FBillMaterialId") as DynamicObject)["id"]);
Fmaterialid_Number = (this.View.Model.GetValue("FBillMaterialId") as DynamicObject)["Number"].ToString();
// var FBillMaterialId = FBillINFO["BillMaterialId"] as DynamicObject;
// this.View.ShowMessage(JsonConvert.SerializeObject(FBillMaterialId["Number"]) + Fmaterialid_Number, MessageBoxType.Notice);
Entity BomListEntity = View.BillBusinessInfo.GetEntity("F_BHR_BOMCOSTEntity");
DynamicObjectCollection BomList = this.View.Model.GetEntityDataObject(BomListEntity);
BomList.Clear();
string sql = string.Format(GetConfigEntity.GetConfig("BHR_BOMITEM_SUPPLIERPRICE"), Fmaterialid_Number);
var Qloglist = DBServiceHelper.ExecuteDynamicObject(Context, sql);
//this.View.ShowMessage(JsonConvert.SerializeObject(Qloglist));
if (Qloglist == null || Qloglist.Count == 0)
return;
foreach (DynamicObject Dobj in Qloglist)
{ //每一行的值定义成 DynamicObject类型
DynamicObject row = new DynamicObject(BomListEntity.DynamicObjectType);
#region 字段为基础资料时使用本方法赋值
row["F_BHR_PMATERIALID_Id"] = Convert.ToInt64(Dobj["FPMATERIALID"]);
BaseDataField PMATERIALFld = this.View.BusinessInfo.GetField("F_BHR_PMATERIALID") as BaseDataField;
DynamicObject[] PMATERIALID = AppServiceContext.ViewService.LoadFromCache(this.Context, new Object[] {
row["F_BHR_PMATERIALID_Id"] }, PMATERIALFld.RefFormDynamicObjectType);
if (PMATERIALID != null && PMATERIALID.Count() > 0)
{
row["F_BHR_PMATERIALID"] = PMATERIALID[0];
}
row["F_BHR_MATERIALID_Id"] = Convert.ToInt64(Dobj["FMATERIALID"]);
BaseDataField MATERIALIDFld = this.View.BusinessInfo.GetField("F_BHR_MATERIALID") as BaseDataField;
DynamicObject[] MATERIALID = AppServiceContext.ViewService.LoadFromCache(this.Context,
new Object[] { row["F_BHR_MATERIALID_Id"] }, MATERIALIDFld.RefFormDynamicObjectType);
if (PMATERIALID != null && PMATERIALID.Count() > 0)
{
row["F_BHR_MATERIALID"] = MATERIALID[0];
}
#endregion
//row["F_BHR_PMATERIALID"] = Dobj["FPMATERIALNO"];
// row["F_BHR_MATERIALID"] = Dobj["FMATERIALNO"];
// row["F_BHR_MATERIALNAME"] = Dobj["FMATERIALNAME"];
// row["F_BHR_SPECIFICATION"] = Dobj["FSPECIFICATION"];
row["F_BHR_FSEQ"] = Dobj["FSEQ"];
row["F_BHR_FREPLACEGROUP"] = Dobj["FREPLACEGROUP"];
row["F_BHR_FMATERIALTYPE"] = Dobj["FMATERIALTYPE"];
row["F_BHR_ERPCLSID"] = Dobj["FERPCLSID"];
row["F_BHR_FNUMERATOR"] = Dobj["FNUMERATOR"];
row["F_BHR_FDENOMINATOR"] = Dobj["FDENOMINATOR"];
row["F_BHR_FQTY"] = Dobj["FQTY"];
row["F_BHR_FPOSITIONNO"] = Dobj["FPOSITIONNO"];
row["F_BHR_FSUPPLIERNO"] =Dobj["FSUPPLIERNO"];
row["F_BHR_FSUPPLIERNAME"] = Dobj["FSUPPLIERNAME"];
row["F_BHR_FCYFORTYPE"] = Dobj["FCYFORTYPE"];
row["F_BHR_FCYFORPRICE"] = Dobj["FCYFORPRICE"];
row["F_BHR_FPRICE"] = Dobj["FPRICE"];
row["F_BHR_FTAXPRICE"] = Dobj["FTAXPRICE"];
row["F_BHR_FTAXAMOUNT"] = Dobj["FTAXAMOUNT"];
BomList.Add(row);
}
this.View.UpdateView("F_BHR_BOMCOSTEntity");
/*记录操作日志*/
log.Environment = OperatingEnvironment.BizOperate;
log.OperateName = "查询BOM成本记录";
log.ObjectTypeId = "FormId"; //操作的业务对象ID
log.SubSystemId = this.View.OpenParameter.SubSystemId; //子系统Id
log.Description = "查询BOM成本"+ Fmaterialid_Number;
LogServiceHelper.WriteLog(this.Context, log);
}
}
private FormMetadata FormMeta { get; set; }
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
if (e.BarItemKey == "BHR_tbExport")
{
Entity BomListEntity = View.BillBusinessInfo.GetEntity("F_BHR_BOMCOSTEntity");
DynamicObjectCollection BomList = this.View.Model.GetEntityDataObject(BomListEntity);
var i = from a in BomList
select new
{
F_BHR_PMATERIALNO = (a["F_BHR_PMATERIALID"] as DynamicObject)["Number"] ,
F_BHR_FSEQ=a["F_BHR_FSEQ"],
F_BHR_FREPLACEGROUP=a["F_BHR_FREPLACEGROUP"],
F_BHR_FMATERIALTYPE = a["F_BHR_FMATERIALTYPE"],
F_BHR_MATERIALNO = (a["F_BHR_MATERIALID"] as DynamicObject)["Number"],
F_BHR_MATERIALNAME = (JsonConvert.DeserializeObject<List<JObject>>
(JsonConvert.SerializeObject((a["F_BHR_MATERIALID"] as DynamicObject)["Name"]))[0])["Value"] as object,
F_BHR_SPECIFICATION = (JsonConvert.DeserializeObject<List<JObject>>
(JsonConvert.SerializeObject((a["F_BHR_MATERIALID"] as DynamicObject)["Specification"]))[0])["Value"] as object,
F_BHR_ERPCLSID = a["F_BHR_ERPCLSID"],
F_BHR_BASEUNIT = ((JsonConvert.DeserializeObject<List<JObject>>
(JsonConvert.SerializeObject((a["F_BHR_MATERIALID"] as DynamicObject)["MaterialBase"]))[0])["BaseUnitId"])["Number"] as object,
F_BHR_FNUMERATOR = a["F_BHR_FNUMERATOR"],
F_BHR_FDENOMINATOR = a["F_BHR_FDENOMINATOR"],
F_BHR_FQTY = a["F_BHR_FQTY"],
F_BHR_FPOSITIONNO = a["F_BHR_FPOSITIONNO"],
F_BHR_FSUPPLIERNO = a["F_BHR_FSUPPLIERNO"],
F_BHR_FSUPPLIERNAME = a["F_BHR_FSUPPLIERNAME"],
F_BHR_FPRICE = a["F_BHR_FPRICE"],
F_BHR_FTAXPRICE = a["F_BHR_FTAXPRICE"],
F_BHR_FTAXAMOUNT = a["F_BHR_FTAXAMOUNT"]
};
if (i == null)
return;
DataTable dt = JsonConvert.DeserializeObject<DataTable>(JsonConvert.SerializeObject(i));// (DataTable)i;
CustomLog.WriteOperaterLog(Context, "导出BOM成本", "ENG_BomQueryCost".ToUpper(), this.View.OpenParameter.SubSystemId, "BOMID:" + Fmaterialid_Number);
#region 测试代码
//var Ob = BomList.Select(t =>(t["F_BHR_PMATERIALID_C"]));
//this.View.ShowMessage(JsonConvert.SerializeObject(dt));
/* foreach (DynamicObject @object in BomList)
{
// DynamicObject row = new DynamicObject(new DynamicObjectType a);
DynamicObject obj = new DynamicObject(BomListEntity.DynamicObjectType);
BaseDataField bsdField = this.View.BusinessInfo.GetField("F_BHR_MATERIALID_C") as BaseDataField;
if (obj.DynamicObjectType.Properties.Contains(bsdField.NameProperty.PropertyName))
{
//obj[bsdField .NameProperty.PropertyName] //obj[bsdField .NumberProperty.PropertyName]}
this.View.ShowMessage(JsonConvert.SerializeObject(obj[bsdField.NameProperty.PropertyName]));
}
}*/
#endregion
//生成文件名称
string fileName = string.Format("{0}_{1}", View.BusinessInfo.GetForm().Name + "BOM成本", DateTime.Now.ToString("yyyyMMddHHmmssff"));//View.BusinessInfo.GetForm().Name
string fileType = "xlsx";
string[] illegalStrs = new string[] { "/", "\\" };
foreach (var str1 in illegalStrs)
{
fileName = fileName.Replace(str1, "");
}
fileName = PathUtils.GetValidFileName(fileName);
string filePath = PathUtils.GetPhysicalPath(KeyConst.TEMPFILEPATH, fileName);
filePath += "." + fileType;//xlsx文件类型
string outServicePath = PathUtils.GetServerPath(KeyConst.TEMPFILEPATH, fileName);
outServicePath += "." + fileType;
//
//ExportExcelEntity.DynamicObjectCollectionTOExcel(i, "BOMCOST_ExcportTemplate_1", fileName, filePath)
// this.View.ShowMessage();
ExportExcelEntity.DataTableTOExcel(dt, "BOMCOST_ExcportTemplate_1", fileName, filePath);
//下载文件
DynamicFormShowParameter param = new DynamicFormShowParameter();
param.FormId = "BOS_FileDownLoad";
param.OpenStyle.ShowType = ShowType.Modal;
param.CustomParams.Add("IsExportData", "true");
param.CustomParams.Add("url", outServicePath);
View.ShowForm(param);
}
}
public class MultiLanguageText
{
/// <summary>
///
/// </summary>
public int PkId { get; set; }
/// <summary>
///
/// </summary>
public int LocaleId { get; set; }
/// <summary>
/// 贴片半成品-塑壳适配器
/// </summary>
public string Name { get; set; }
/// <summary>
/// 贴片半成品-塑壳适配器,G0005,18W,12V1.5A
/// </summary>
public string Specification { get; set; }
}
private List<ExcelField> CreateMergeHeaderList(List<Appearance> formAp, string entityKey)
{
List<ExcelField> list = new List<ExcelField>();
EntityAppearance entityAppearance = this.View.LayoutInfo.GetEntityAppearance(entityKey);
if ((entityAppearance != null) && (entityAppearance.Entity != null))
{
using (List<Field>.Enumerator enumerator = entityAppearance.Entity.Fields.GetEnumerator())
{
while (enumerator.MoveNext())
{
Func<Appearance, bool> predicate = null;
Func<Appearance, bool> func2 = null;
Field i = enumerator.Current;
List<string> source = new List<string>();
if (predicate == null)
{
predicate = x => x.Key.EqualsIgnoreCase(i.Key);
}
Appearance appearance2 = entityAppearance.Layoutinfo.Appearances.FirstOrDefault<Appearance>(predicate);
if (appearance2 == null)
{
if (func2 == null)
{
func2 = x => x.Key.EqualsIgnoreCase(i.Key);
}
appearance2 = formAp.FirstOrDefault<Appearance>(func2);
}
source = appearance2.Caption[this.View.Context.UserLocale.LCID].Split(new string[] { "&" }, StringSplitOptions.RemoveEmptyEntries).ToList<string>();
string item = i.Name[this.View.Context.UserLocale.LCID];
if (source.Count > 0)
{
item = source.Last<string>();
source.Remove(item);
}
Type type = i.GetType();
ExcelField field = new ExcelField
{
Caption = item,
FieldName = i.PropertyName,
Width = Convert.ToInt32(appearance2.Width.ToString()),
Profix = source,
Align = (((type == typeof(DecimalField)) || (type == typeof(IntegerField))) || (type == typeof(AmountField))) ? 1 : 0,
ColumnType = i.GetPropertyType(),
FieldKey = i.Key
};
list.Add(field);
}
}
}
return list;
}
public override void BeforeExportDataNew(BeforeExportDataNewArgs e)
{
//
base.BeforeExportDataNew(e);
}
}
}
Kingdee 云星空 自定义查询产品BOM成本
于 2022-04-14 20:18:43 首次发布