Files
PastSaid 16fbd10312 1
2024-04-29 17:57:07 +08:00

983 lines
45 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.Data;
using System.Linq;
using System.Text;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.BusinessEntity;
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.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.Interaction;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.FormElement;
using Kingdee.BOS.JSON;
using Kingdee.BOS.KDThread;
using Kingdee.BOS.Log;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.ServiceHelper.Excel;
using Kingdee.BOS.Util;
namespace HNJNSH910.GDHNJN.BusinessForm.BusinessPlugIn
{
[HotUpdate]
[Description("加油接口--上传文件")]
public class ImportCommon : AbstractDynamicFormPlugIn
{
private DataTable dtexcel;
private string _filePath;
private List<DynamicObject> _dataObjs;
private IBillView _billView;
private string importObjectId = "";
private string billTypeId = "";
private string btnStr = "";
private List<string> coverBaseNumers;
public override void ButtonClick(ButtonClickEventArgs e)
{
base.ButtonClick(e);
importObjectId = View.Model.GetValue("F_PCMT_importObjectId").ToString();
billTypeId = View.Model.GetValue("F_PCMT_billTypeId").ToString();
if ((btnStr = e.Key.ToUpperInvariant()) == null)
{
return;
}
string text = btnStr;
if (!(text == "F_PCMT_IMPORTDATA"))
{
if (text == "F_PCMT_COVERIMPORTDATA" && IsNotNull())
{
StartAsyncTaskAction();
}
}
else if (IsNotNull())
{
StartAsyncTaskAction();
}
}
private bool IsNotNull()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
ExcelOperation val = new ExcelOperation();
DataSet val2 = null;
val2 = val.ReadFromFile(_filePath, 0, 0);
dtexcel = val2.Tables[0];
if (dtexcel == null)
{
View.ShowMessage("没有找到模板请重新选择!");
return false;
}
return true;
}
private void Import()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
ExcelOperation val = new ExcelOperation();
DataSet val2 = null;
val2 = val.ReadFromFile(_filePath, 2, 1);
dtexcel = val2.Tables[0];
string importIndexStr = GetImportIndexStr();
List<string> list = new List<string>();
for (int i = 0; i < ((InternalDataCollectionBase)dtexcel.Rows).Count; i++)
{
if (!list.Contains(dtexcel.Rows[i][importIndexStr]))
{
list.Add(dtexcel.Rows[i][importIndexStr].ToString());
}
}
_dataObjs = new List<DynamicObject>();
foreach (string item in list)
{
DataRow[] array = dtexcel.Select(importIndexStr + "='" + item + "'");
DataTable dt = DataTableExtensions.CopyToDataTable<DataRow>((IEnumerable<DataRow>)array);
ImportData(dt, importObjectId, billTypeId);
}
OperateOption operateOption = OperateOption.Create();
int num = _dataObjs.Count / 1000 + ((_dataObjs.Count % 1000 != 0) ? 1 : 0);
IOperationResult operationResult = null;
DynamicObject[] arrObjs = _dataObjs.ToArray();
for (int j = 0; j < num; j++)
{
DynamicObject[] currentObjs = GetCurrentObjs(arrObjs, j, 1000);
IOperationResult operationResult2 = BusinessDataServiceHelper.Save(base.Context, _billView.BillBusinessInfo, currentObjs, operateOption, "Save");
Logger.Info(importObjectId + " " + billTypeId + " 第" + (j + 1) + "批导入执行Save操作", "is true.");
if (operationResult == null)
{
operationResult = operationResult2;
Logger.Info(importObjectId + " " + billTypeId + " 第" + (j + 1) + "批导入执行Save操作", "is success.");
}
else
{
operationResult.MergeResult(operationResult2);
Logger.Info(importObjectId + " " + billTypeId + " 第" + (j + 1) + "批导入执行Save操作", "is success.");
}
}
if (operationResult == null)
{
View.ShowErrMessage("未知原因导致单据保存失败!");
Logger.Info(importObjectId + " " + billTypeId + "导入执行Save操作", "saveResult == null.");
return;
}
if (operationResult.IsSuccess)
{
View.ShowOperateResult(operationResult.OperateResult);
Logger.Info(importObjectId + " " + billTypeId + "导入执行Save操作", "saveResult.IsSuccess == true.");
return;
}
if (operationResult.InteractionContext != null && operationResult.InteractionContext.Option.GetInteractionFlag().Count > 0)
{
Logger.Info(importObjectId + " " + billTypeId + "导入执行Save操作", "saveResult.InteractionContext != null.");
}
if (operationResult.IsShowMessage)
{
Logger.Info(importObjectId + " " + billTypeId + "导入执行Save操作", "saveResult.IsShowMessage.");
operationResult.MergeValidateErrors();
View.ShowOperateResult(operationResult.OperateResult);
Logger.Info(importObjectId + " " + billTypeId + "导入执行Save操作", "saveResult.IsShowMessage执行完成.");
}
else
{
View.ShowMessage("上传完成");
}
}
private void CoverImport()
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
ExcelOperation val = new ExcelOperation();
DataSet val2 = null;
val2 = val.ReadFromFile(_filePath, 2, 1);
dtexcel = val2.Tables[0];
string importIndexStr = GetImportIndexStr();
List<string> list = new List<string>();
for (int i = 0; i < ((InternalDataCollectionBase)dtexcel.Rows).Count; i++)
{
if (!list.Contains(dtexcel.Rows[i][importIndexStr]))
{
list.Add(dtexcel.Rows[i][importIndexStr].ToString());
}
}
_dataObjs = new List<DynamicObject>();
coverBaseNumers = new List<string>();
foreach (string item in list)
{
DataRow[] array = dtexcel.Select(importIndexStr + "='" + item + "'");
DynamicObjectCollection dynamicObjectCollection = CoverImportData(item, array);
if (dynamicObjectCollection == null || dynamicObjectCollection.Count == 0)
{
DataTable dt = DataTableExtensions.CopyToDataTable<DataRow>((IEnumerable<DataRow>)array);
ImportData(dt, importObjectId, billTypeId);
}
}
OperateOption operateOption = OperateOption.Create();
IOperationResult operationResult = null;
int num = _dataObjs.Count / 1000 + ((_dataObjs.Count % 1000 != 0) ? 1 : 0);
DynamicObject[] arrObjs = _dataObjs.ToArray();
for (int j = 0; j < num; j++)
{
DynamicObject[] currentObjs = GetCurrentObjs(arrObjs, j, 1000);
IOperationResult operationResult2 = BusinessDataServiceHelper.Save(base.Context, _billView.BillBusinessInfo, currentObjs, operateOption, "Save");
Logger.Info(importObjectId + " " + billTypeId + " 第" + (j + 1) + "批导入执行Save操作", "is true.");
if (operationResult == null)
{
operationResult = operationResult2;
Logger.Info(importObjectId + " " + billTypeId + " 第" + (j + 1) + "批导入执行Save操作", "is success.");
}
else
{
operationResult.MergeResult(operationResult2);
Logger.Info(importObjectId + " " + billTypeId + " 第" + (j + 1) + "批导入执行Save操作", "is success.");
}
}
IOperationResult operationResult3 = null;
bool flag = false;
if (coverBaseNumers.Count != 0)
{
string text = "";
foreach (string coverBaseNumer in coverBaseNumers)
{
if (operationResult3 == null)
{
text = text + "编码" + coverBaseNumer + ":修改覆盖完成!" + Environment.NewLine;
}
else
{
operationResult3.OperateResult.Add(new OperateResult
{
Name = coverBaseNumer,
Message = "覆盖完成",
MessageType = MessageType.Normal,
SuccessStatus = true
});
operationResult.MergeResult(operationResult3);
}
}
flag = true;
if (operationResult3 == null)
{
View.ShowMessage(text);
}
}
if (operationResult == null)
{
if (!flag)
{
View.ShowErrMessage("未知原因导致单据保存失败!");
Logger.Info(importObjectId + " " + billTypeId + "导入执行Save操作", "saveResult == null.");
return;
}
}
else
{
if (operationResult.IsSuccess)
{
View.ShowOperateResult(operationResult.OperateResult);
Logger.Info(importObjectId + " " + billTypeId + "导入执行Save操作", "saveResult.IsSuccess == true.");
return;
}
if (operationResult.InteractionContext != null && operationResult.InteractionContext.Option.GetInteractionFlag().Count > 0)
{
Logger.Info(importObjectId + " " + billTypeId + "导入执行Save操作", "saveResult.InteractionContext != null.");
}
if (operationResult.IsShowMessage)
{
Logger.Info(importObjectId + " " + billTypeId + "导入执行Save操作", "saveResult.IsShowMessage.");
operationResult.MergeValidateErrors();
View.ShowOperateResult(operationResult.OperateResult);
Logger.Info(importObjectId + " " + billTypeId + "导入执行Save操作", "saveResult.IsShowMessage执行完成.");
return;
}
}
View.ShowMessage("上传完成");
}
private DynamicObjectCollection CoverImportData(string billNo, DataRow[] dr)
{
DynamicObjectCollection dynamicObjectCollection = null;
switch (importObjectId)
{
case "BD_CUSTOMER":
dynamicObjectCollection = GetCoverBillObjs(billNo, "T_BD_CUSTOMER");
if (dynamicObjectCollection != null && dynamicObjectCollection.Count != 0)
{
updateCust(dr, billNo);
if (!coverBaseNumers.Contains(billNo))
{
coverBaseNumers.Add(billNo);
}
}
break;
case "BD_MATERIAL":
dynamicObjectCollection = GetCoverBillObjs(billNo, "T_BD_MATERIAL");
if (dynamicObjectCollection != null && dynamicObjectCollection.Count != 0)
{
updateMaterial(dr, billNo);
if (!coverBaseNumers.Contains(billNo))
{
coverBaseNumers.Add(billNo);
}
}
break;
case "WISE_ItemClass_3003":
dynamicObjectCollection = GetCoverBillObjs(billNo, "Wise_t_Cust100018");
if (dynamicObjectCollection != null && dynamicObjectCollection.Count != 0)
{
updateOilCard(dr, billNo);
if (!coverBaseNumers.Contains(billNo))
{
coverBaseNumers.Add(billNo);
}
}
break;
}
return dynamicObjectCollection;
}
private DynamicObjectCollection GetCoverBillObjs(string billNo, string tableName)
{
List<string> list = new List<string>();
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendFormat("/*dialect*/select * from {0} where FNUMBER='{1}'", tableName, billNo);
return DBUtils.ExecuteDynamicObject(base.Context, stringBuilder.ToString(), null, null, (CommandType)1);
}
private void updateCust(DataRow[] dr, string billNo)
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendFormat("/*dialect*/update T_BD_CUSTOMER_L set FNAME='{1}'\r\n from T_BD_CUSTOMER_L a\r\n inner join T_BD_CUSTOMER b on a.FCUSTID=b.FCUSTID\r\n where FNUMBER='{0}';\r\n\r\n update T_BD_CUSTOMER set FADDRESS ='{2}' ,FMODIFYDATE =GETDATE()\r\n from T_BD_CUSTOMER a\r\n where FNUMBER='{0}'", billNo, dr[0]["客户名称"].ToString(), dr[0]["地址"].ToString());
DBUtils.Execute(base.Context, stringBuilder.ToString());
}
private void updateMaterial(DataRow[] dr, string billNo)
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendFormat("/*dialect*/update T_BD_MATERIAL_L set FNAME='{1}' ,FSPECIFICATION='{2}' \r\n from T_BD_MATERIAL_L a \r\n inner join T_BD_MATERIAL b on a.FMATERIALID=b.FMATERIALID \r\n where FNUMBER='{0}';\r\n --update t_BD_MaterialBase set FBASEUNITID=(select FUNITID from T_BD_UNIT_L where FNAME='xx' )\r\n --from t_BD_MaterialBase a\r\n --inner join T_BD_MATERIAL b on a.FMATERIALID=b.FMATERIALID \r\n --where b.FNUMBER='xx' ;", billNo, dr[0]["名称"].ToString(), dr[0]["规格型号"].ToString());
DBUtils.Execute(base.Context, stringBuilder.ToString());
}
private void updateOilCard(DataRow[] dr, string billNo)
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendFormat("/*dialect*/update Wise_t_Cust100018 set F_103='{1}' ,F_104='{2}' \r\n from Wise_t_Cust100018 a \r\n where FNUMBER='{0}'", billNo, dr[0]["车牌号码"].ToString(), dr[0]["客户代码"].ToString());
DBUtils.Execute(base.Context, stringBuilder.ToString());
}
private DynamicObject[] GetCurrentObjs(DynamicObject[] arrObjs, int startIndexBatch, int count)
{
if (arrObjs.Length < count)
{
return arrObjs;
}
int num = startIndexBatch * count;
int num2 = num + (count - 1);
if (arrObjs.Length < num2)
{
num2 = arrObjs.Length - 1;
}
Logger.Info("分批导入序号:", num + " -" + num2);
DynamicObject[] array = new DynamicObject[num2 - num + 1];
for (int i = 0; i < num2 - num + 1; i++)
{
array[i] = arrObjs[num + i];
}
return array;
}
private string GetImportIndexStr()
{
string result = "";
switch (importObjectId)
{
case "BD_MATERIAL":
result = "代码";
break;
case "BD_CUSTOMER":
result = "客户代码";
break;
case "WISE_ItemClass_3003":
result = "卡片代码";
break;
case "BD_Supplier":
result = "代码";
break;
case "SAL_OUTSTOCK":
if (billTypeId == "SAL_OUTSTOCK_OIL")
{
result = "油单号";
}
if (billTypeId == "SAL_OUTSTOCK_SHOP")
{
result = "单据编号";
}
break;
case "STK_INSTOCK":
result = "单据编号";
break;
}
return result;
}
public override void CustomEvents(CustomEventsArgs e)
{
if (e.Key.EqualsIgnoreCase("F_PCMT_FileUpdate"))
{
if (e.EventName.EqualsIgnoreCase("FILECHANGED"))
{
JSONObject jSONObject = KDObjectConverter.DeserializeObject<JSONObject>(e.EventArgs);
if (jSONObject != null)
{
JSONArray jSONArray = new JSONArray(jSONObject["NewValue"].ToString());
if (jSONArray.Count > 0)
{
string text = (jSONArray[0] as Dictionary<string, object>)["ServerFileName"].ToString();
if (CheckFile(text))
{
_filePath = GetFilePath(text);
EnableButton("F_PCMT_ImportData", bEnable: true);
EnableButton("F_PCMT_CoverImportData", bEnable: true);
}
}
else
{
EnableButton("F_PCMT_ImportData", bEnable: false);
EnableButton("F_PCMT_CoverImportData", bEnable: false);
}
}
}
else if (e.EventName.EqualsIgnoreCase("STATECHANGED"))
{
JSONObject jSONObject2 = KDObjectConverter.DeserializeObject<JSONObject>(e.EventArgs);
if (jSONObject2["State"].ToString() != "2")
{
EnableButton("F_PCMT_ImportData", bEnable: false);
EnableButton("F_PCMT_CoverImportData", bEnable: false);
}
}
}
base.CustomEvents(e);
}
private bool CheckFile(string fileName)
{
bool flag = false;
string[] array = fileName.Split('.');
if (array.Length == 2 && (array[1].EqualsIgnoreCase("xls") || array[1].EqualsIgnoreCase("xlsx")))
{
flag = true;
}
if (!flag)
{
View.ShowWarnningMessage("请选择正确的文件进行引入。");
}
return flag;
}
private void EnableButton(string key, bool bEnable)
{
View.GetControl<Button>(key).Enabled = bEnable;
}
private string GetFilePath(string serverFileName)
{
string directory = "FileUpLoadServices\\UploadFiles";
return PathUtils.GetPhysicalPath(directory, serverFileName);
}
private void ImportData(DataTable dt, string importObjectId, string billTypeId)
{
IBillView billView = CreateMaterialView(importObjectId);
((IBillViewService)billView).LoadData();
DynamicFormViewPlugInProxy service = billView.GetService<DynamicFormViewPlugInProxy>();
service.FireOnLoad();
SetBillFormProperty(billView);
switch (importObjectId)
{
case "BD_MATERIAL":
FillMaterialPropertys(billView, dt);
break;
case "BD_CUSTOMER":
FillCustomerPropertys(billView, dt);
break;
case "WISE_ItemClass_3003":
FillCardPropertys(billView, dt);
break;
case "BD_Supplier":
FillSupplierPropertys(billView, dt);
break;
case "SAL_OUTSTOCK":
if (billTypeId == "SAL_OUTSTOCK_OIL")
{
FillSalOutStockBillPropertys(billView, dt);
}
if (billTypeId == "SAL_OUTSTOCK_SHOP")
{
FillSalOutStockShopPropertys(billView, dt);
}
break;
case "STK_INSTOCK":
FillPoInStockBillPropertys(billView, dt);
break;
}
}
private void FillMaterialPropertys(IBillView billView, DataTable dt)
{
IDynamicFormViewService dynamicFormViewService = billView as IDynamicFormViewService;
dynamicFormViewService.SetItemValueByNumber("FUseOrgId", "100", 0);
dynamicFormViewService.SetItemValueByNumber("FCreateOrgId", "100", 0);
dynamicFormViewService.UpdateValue("FNumber", 0, dt.Rows[0]["代码"].ToString());
dynamicFormViewService.UpdateValue("FName", 0, dt.Rows[0]["名称"].ToString());
dynamicFormViewService.UpdateValue("FSpecification", 0, dt.Rows[0]["规格型号"].ToString());
string unitNumber = GetUnitNumber(dt.Rows[0]["基本计量单位"].ToString());
dynamicFormViewService.SetItemValueByNumber("FBaseUnitId", unitNumber, 0);
string materialGroup = GetMaterialGroup(dt.Rows[0]["代码"].ToString());
dynamicFormViewService.SetItemValueByNumber("FMaterialGroup", materialGroup, 0);
string currentOrgName = base.Context.CurrentOrganizationInfo.Name.ToString();
string cHLB = GetCHLB(currentOrgName);
dynamicFormViewService.SetItemValueByNumber("FCategoryID", cHLB, 0);
}
private void FillCustomerPropertys(IBillView billView, DataTable dt)
{
IDynamicFormViewService dynamicFormViewService = billView as IDynamicFormViewService;
dynamicFormViewService.SetItemValueByNumber("FUseOrgId", "100", 0);
dynamicFormViewService.SetItemValueByNumber("FCreateOrgId", "100", 0);
dynamicFormViewService.UpdateValue("FNumber", 0, dt.Rows[0]["客户代码"].ToString());
dynamicFormViewService.UpdateValue("FName", 0, dt.Rows[0]["客户名称"].ToString());
dynamicFormViewService.UpdateValue("FTEL", 0, dt.Rows[0]["联系电话"].ToString());
dynamicFormViewService.UpdateValue("FFAX", 0, dt.Rows[0]["传真"].ToString());
dynamicFormViewService.UpdateValue("FADDRESS", 0, dt.Rows[0]["地址"].ToString());
dynamicFormViewService.UpdateValue("F_PCMT_CONTACT", 0, dt.Rows[0]["联系人"].ToString());
}
private void FillCardPropertys(IBillView billView, DataTable dt)
{
IDynamicFormViewService dynamicFormViewService = billView as IDynamicFormViewService;
dynamicFormViewService.UpdateValue("FNumber", 0, dt.Rows[0]["卡片代码"].ToString());
dynamicFormViewService.UpdateValue("FName", 0, dt.Rows[0]["卡片代码"].ToString());
dynamicFormViewService.UpdateValue("F_101", 0, dt.Rows[0]["卡种类"].ToString());
dynamicFormViewService.UpdateValue("F_103", 0, dt.Rows[0]["车牌号码"].ToString());
dynamicFormViewService.UpdateValue("F_104", 0, dt.Rows[0]["客户代码"].ToString());
}
private void FillSupplierPropertys(IBillView billView, DataTable dt)
{
IDynamicFormViewService dynamicFormViewService = billView as IDynamicFormViewService;
dynamicFormViewService.UpdateValue("FNumber", 0, dt.Rows[0]["代码"].ToString());
dynamicFormViewService.UpdateValue("FName", 0, dt.Rows[0]["名称"].ToString());
dynamicFormViewService.UpdateValue("FAddress", 0, dt.Rows[0]["地址"].ToString());
dynamicFormViewService.UpdateValue("F_PCMT_CONTACT", 0, dt.Rows[0]["联系人"].ToString());
dynamicFormViewService.UpdateValue("F_PCMT_TelPhone", 0, dt.Rows[0]["移动电话"].ToString());
dynamicFormViewService.UpdateValue("F_PCMT_Tel", 0, dt.Rows[0]["电话"].ToString());
}
private void FillSalOutStockBillPropertys(IBillView billView, DataTable dt)
{
IDynamicFormViewService dynamicFormViewService = billView as IDynamicFormViewService;
dynamicFormViewService.UpdateValue("FBillNo", 0, dt.Rows[0]["油单号"].ToString());
dynamicFormViewService.SetItemValueByNumber("FCustomerID", dt.Rows[0]["客户代码"].ToString(), 0);
string text = base.Context.CurrentOrganizationInfo.Name.ToString();
string text2 = "";
text2 = ((!(text == "910华南洁能中山石化有限公司")) ? GetSalDept(text) : dt.Rows[0]["部门编码"].ToString());
dynamicFormViewService.SetItemValueByNumber("FSaleDeptID", text2, 0);
string text3 = "";
text3 = ((dt.Rows[0]["加油日期"].ToString().Length <= 5) ? GetBillDate(dt.Rows[0]["加油日期"].ToString()) : dt.Rows[0]["加油日期"].ToString());
dynamicFormViewService.UpdateValue("FDATE", 0, text3);
dynamicFormViewService.UpdateValue("FHEADSELFB0152", 0, text3 + " " + dt.Rows[0]["加油时间"]);
string salMode = GetSalMode(dt.Rows[0]["客户代码"].ToString());
dynamicFormViewService.UpdateValue("F_PCMT_SalMode", 0, salMode);
if (((InternalDataCollectionBase)dt.Rows).Count - 1 > 0)
{
billView.Model.BatchCreateNewEntryRow("FEntity", ((InternalDataCollectionBase)dt.Rows).Count - 1);
}
for (int i = 0; i < ((InternalDataCollectionBase)dt.Rows).Count; i++)
{
billView.Model.SetEntryCurrentRowIndex("FEntity", i);
dynamicFormViewService.SetItemValueByNumber("FENTRYSELFB0166", dt.Rows[i]["卡号代码"].ToString(), i);
dynamicFormViewService.UpdateValue("FENTRYSELFB0167", i, dt.Rows[i]["客户代码"].ToString());
dynamicFormViewService.UpdateValue("FENTRYSELFB0168", i, dt.Rows[i]["车牌号码"].ToString());
dynamicFormViewService.SetItemValueByNumber("FMaterialID", dt.Rows[i]["品名"].ToString(), i);
dynamicFormViewService.UpdateValue("FRealQty", i, dt.Rows[i]["数量(KG)"]);
decimal num = Convert.ToDecimal(dt.Rows[i]["金额"]) / Convert.ToDecimal(dt.Rows[i]["数量(KG)"]);
dynamicFormViewService.UpdateValue("FTAXPRICE", i, num);
dynamicFormViewService.SetItemValueByNumber("FStockID", dt.Rows[i]["油站"].ToString(), i);
dynamicFormViewService.UpdateValue("FEntrynote", i, dt.Rows[i]["摘要"].ToString());
dynamicFormViewService.UpdateValue("F_PCMT_Discount", i, dt.Rows[i]["折扣额"].ToString());
dynamicFormViewService.UpdateValue("FENTRYSELFB0170", i, dt.Rows[i]["数量(L)"]);
dynamicFormViewService.UpdateValue("FENTRYSELFB0171", i, dt.Rows[i]["单价(L)"]);
dynamicFormViewService.UpdateValue("FENTRYSELFB0172", i, dt.Rows[i]["哩数"]);
dynamicFormViewService.UpdateValue("FALLAMOUNT", i, dt.Rows[i]["金额"]);
}
}
private void FillSalOutStockShopPropertys(IBillView billView, DataTable dt)
{
IDynamicFormViewService dynamicFormViewService = billView as IDynamicFormViewService;
dynamicFormViewService.UpdateValue("FBillNo", 0, dt.Rows[0]["单据编号"].ToString());
dynamicFormViewService.SetItemValueByNumber("FCustomerID", dt.Rows[0]["客户代码"].ToString(), 0);
string text = base.Context.CurrentOrganizationInfo.Name.ToString();
string text2 = "";
text2 = ((!(text == "910华南洁能中山石化有限公司")) ? GetSalDept(text) : dt.Rows[0]["部门编码"].ToString());
dynamicFormViewService.SetItemValueByNumber("FSaleDeptID", text2, 0);
string text3 = "";
text3 = ((dt.Rows[0]["记账日期"].ToString().Length <= 5) ? GetBillDate(dt.Rows[0]["记账日期"].ToString()) : dt.Rows[0]["记账日期"].ToString());
dynamicFormViewService.UpdateValue("FDATE", 0, text3);
string salMode = GetSalMode(dt.Rows[0]["客户代码"].ToString());
dynamicFormViewService.UpdateValue("F_PCMT_SalMode", 0, salMode);
if (((InternalDataCollectionBase)dt.Rows).Count - 1 > 0)
{
billView.Model.BatchCreateNewEntryRow("FEntity", ((InternalDataCollectionBase)dt.Rows).Count - 1);
}
for (int i = 0; i < ((InternalDataCollectionBase)dt.Rows).Count; i++)
{
billView.Model.SetEntryCurrentRowIndex("FEntity", i);
dynamicFormViewService.UpdateValue("FENTRYSELFB0167", i, dt.Rows[i]["客户代码"].ToString());
dynamicFormViewService.UpdateValue("FENTRYSELFB0169", i, dt.Rows[i]["客户名称"].ToString());
dynamicFormViewService.SetItemValueByNumber("FMaterialID", dt.Rows[i]["产品代码"].ToString(), i);
dynamicFormViewService.UpdateValue("FRealQty", i, dt.Rows[i]["数量"].ToString());
decimal num = Convert.ToDecimal(dt.Rows[i]["金额"]) / Convert.ToDecimal(dt.Rows[i]["数量"]);
dynamicFormViewService.UpdateValue("FTAXPRICE", i, num);
dynamicFormViewService.UpdateValue("FTAXAMOUNT", i, dt.Rows[i]["税额"]);
dynamicFormViewService.SetItemValueByNumber("FStockID", dt.Rows[i]["油站"].ToString(), i);
dynamicFormViewService.UpdateValue("FALLAMOUNT", i, dt.Rows[i]["金额"]);
}
}
private void FillPoInStockBillPropertys(IBillView billView, DataTable dt)
{
IDynamicFormViewService dynamicFormViewService = billView as IDynamicFormViewService;
dynamicFormViewService.UpdateValue("FBillNo", 0, dt.Rows[0]["单据编号"].ToString());
dynamicFormViewService.SetItemValueByNumber("FSupplierId", dt.Rows[0]["供应商代码"].ToString(), 0);
string text = "";
text = ((dt.Rows[0]["日期"].ToString().Length <= 5) ? GetBillDate(dt.Rows[0]["日期"].ToString()) : dt.Rows[0]["日期"].ToString());
dynamicFormViewService.UpdateValue("FDate", 0, text);
dynamicFormViewService.SetItemValueByNumber("FSTOCKDEPTID", dt.Rows[0]["部门"].ToString(), 0);
dynamicFormViewService.SetItemValueByNumber("FPurchaseDeptId", dt.Rows[0]["部门"].ToString(), 0);
dynamicFormViewService.SetItemValueByNumber("FPURCHASERID", dt.Rows[0]["业务员"].ToString(), 0);
dynamicFormViewService.UpdateValue("FHEADSELFA0142", 0, dt.Rows[0]["供应商代码"].ToString());
if (((InternalDataCollectionBase)dt.Rows).Count - 1 > 0)
{
billView.Model.BatchCreateNewEntryRow("FInStockEntry", ((InternalDataCollectionBase)dt.Rows).Count - 1);
}
for (int i = 0; i < ((InternalDataCollectionBase)dt.Rows).Count; i++)
{
billView.Model.SetEntryCurrentRowIndex("FInStockEntry", i);
dynamicFormViewService.SetItemValueByNumber("FMaterialID", dt.Rows[i]["新编号"].ToString(), i);
dynamicFormViewService.UpdateValue("FRealQty", i, dt.Rows[i]["实收数量"]);
decimal num = Convert.ToDecimal(dt.Rows[i]["金额"]) / Convert.ToDecimal(dt.Rows[i]["实收数量"]);
dynamicFormViewService.UpdateValue("FTaxPrice", i, num);
string taxRate = GetTaxRate(dt.Rows[0]["供应商代码"].ToString());
dynamicFormViewService.UpdateValue("FEntryTaxRate", i, taxRate);
dynamicFormViewService.SetItemValueByNumber("FStockID", dt.Rows[i]["收料仓库码"].ToString(), i);
dynamicFormViewService.UpdateValue("FNOTE", i, dt.Rows[i]["备注"].ToString());
dynamicFormViewService.UpdateValue("FEntrySelfA0158", i, dt.Rows[i]["单价"]);
dynamicFormViewService.UpdateValue("FEntrySelfA0159", i, dt.Rows[i]["金额"]);
dynamicFormViewService.UpdateValue("FALLAMOUNT", i, dt.Rows[i]["金额"]);
}
}
private string GetBillDate(string billDateStr)
{
string s = DateTime.FromOADate(Convert.ToInt32(billDateStr)).ToString("d");
return DateTime.Parse(s).ToString("yyyy-MM-dd");
}
private string GetCHLB(string currentOrgName)
{
string result = "CHLB05_SYS";
if (currentOrgName == "03江门市中南杜阮加油站有限公司")
{
result = "CHLB01_SYS";
}
return result;
}
private string GetSalDept(string currentOrgName)
{
string result = "";
if (!(currentOrgName == "03江门市中南杜阮加油站有限公司"))
{
if (currentOrgName == "906广东华南洁能石化集团有限公司南屏加油站")
{
result = "032";
}
}
else
{
result = "001";
}
return result;
}
private string GetSalMode(string customerNumber)
{
string result = "1";
if (customerNumber == "ZZ")
{
result = "2";
}
if (customerNumber.SubStr(0, 1) == "T" && customerNumber != "TQY001")
{
result = "3";
}
if (customerNumber == "TQY001")
{
result = "4";
}
return result;
}
private string GetMaterialGroup(string materialNumber)
{
string text = string.Empty;
try
{
int num = materialNumber.IndexOf('.');
if (num > -1)
{
string[] array = materialNumber.Split('.');
for (int i = 0; i < array.Length - 1 && i < 2; i++)
{
text += array[i];
text += ".";
}
text = text.Substring(0, text.Length - 1);
}
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendFormat("select * from T_BD_MATERIALGROUP where FNUMBER = '{0}'", text);
DynamicObjectCollection dynamicObjectCollection = DBUtils.ExecuteDynamicObject(base.Context, stringBuilder.ToString(), null, null, (CommandType)1);
if (dynamicObjectCollection != null && dynamicObjectCollection.Count > 0)
{
text = dynamicObjectCollection[0]["FNUMBER"].ToString();
}
}
catch (Exception ex)
{
throw ex;
}
return text;
}
private string GetTaxRate(string supplierNumber)
{
string result = "";
try
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendFormat("/*dialect*/select su.FNUMBER,suF.FTAXRATEID ,isnull( tax.FTAXRATE,0 ) as FTAXRATE\r\n from T_BD_SUPPLIER su \r\n left join t_BD_SupplierFinance suF on su.FSUPPLIERID=suF.FSUPPLIERID\r\n left join T_BD_TAXRATE tax on tax.FID=suF.FTAXRATEID\r\n where su.FNUMBER= '{0}'", supplierNumber);
DynamicObjectCollection dynamicObjectCollection = DBUtils.ExecuteDynamicObject(base.Context, stringBuilder.ToString(), null, null, (CommandType)1);
if (dynamicObjectCollection != null && dynamicObjectCollection.Count > 0)
{
result = dynamicObjectCollection[0]["FTAXRATE"].ToString();
}
}
catch (Exception ex)
{
throw ex;
}
return result;
}
private string GetUnitNumber(string unitName)
{
string result = "";
try
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendFormat("/*dialect*/select a.FUNITID,FNUMBER,FNAME from T_BD_UNIT a \r\n inner join T_BD_UNIT_L b on a.FUNITID=b.FUNITID and b.FLOCALEID=2052\r\n where FNAME= '{0}'", unitName);
DynamicObjectCollection dynamicObjectCollection = DBUtils.ExecuteDynamicObject(base.Context, stringBuilder.ToString(), null, null, (CommandType)1);
if (dynamicObjectCollection != null && dynamicObjectCollection.Count > 0)
{
result = dynamicObjectCollection[0]["FNUMBER"].ToString();
}
}
catch (Exception ex)
{
throw ex;
}
return result;
}
private void SaveBill(IBillView billView, OperateOption saveOption)
{
Form form = billView.BillBusinessInfo.GetForm();
if (form.FormIdDynamicProperty != null)
{
form.FormIdDynamicProperty.SetValue(billView.Model.DataObject, form.Id);
}
IOperationResult operationResult = BusinessDataServiceHelper.Save(base.Context, billView.BillBusinessInfo, billView.Model.DataObject, saveOption, "Save");
if (operationResult == null)
{
View.ShowErrMessage("未知原因导致保存物料失败!");
}
else if (operationResult.IsSuccess)
{
operationResult.OperateResult.Add(new OperateResult
{
Name = "11",
Message = operationResult.OperateResult.ToString(),
MessageType = MessageType.Normal,
SuccessStatus = true
});
operationResult.OperateResult.Add(new OperateResult
{
Name = "11",
Message = operationResult.OperateResult.ToString(),
MessageType = MessageType.Normal,
SuccessStatus = true
});
View.ShowOperateResult(operationResult.OperateResult);
}
else
{
if (operationResult.InteractionContext == null || operationResult.InteractionContext.Option.GetInteractionFlag().Count > 0)
{
}
if (operationResult.IsShowMessage)
{
operationResult.MergeValidateErrors();
View.ShowOperateResult(operationResult.OperateResult);
}
}
}
private void SetBillFormProperty(IBillView billView)
{
Form form = billView.BillBusinessInfo.GetForm();
if (form.FormIdDynamicProperty != null)
{
form.FormIdDynamicProperty.SetValue(billView.Model.DataObject, form.Id);
}
_dataObjs.Add(billView.Model.DataObject);
_billView = billView;
}
private IBillView CreateMaterialView(string formId)
{
FormMetadata formMetadata = MetaDataServiceHelper.Load(base.Context, formId, true) as FormMetadata;
Form form = formMetadata.BusinessInfo.GetForm();
Type type = Type.GetType("Kingdee.BOS.Web.Import.ImportBillView,Kingdee.BOS.Web");
IDynamicFormViewService dynamicFormViewService = (IDynamicFormViewService)Activator.CreateInstance(type);
BillOpenParameter param = CreateOpenParameter(formMetadata);
IResourceServiceProvider formServiceProvider = form.GetFormServiceProvider();
dynamicFormViewService.Initialize(param, formServiceProvider);
return dynamicFormViewService as IBillView;
}
private BillOpenParameter CreateOpenParameter(FormMetadata meta)
{
Form form = meta.BusinessInfo.GetForm();
BillOpenParameter billOpenParameter = new BillOpenParameter(form.Id, meta.GetLayoutInfo().Id);
billOpenParameter.Context = base.Context;
billOpenParameter.ServiceName = form.FormServiceName;
billOpenParameter.PageId = Guid.NewGuid().ToString();
billOpenParameter.FormMetaData = meta;
billOpenParameter.Status = OperationStatus.ADDNEW;
billOpenParameter.PkValue = null;
billOpenParameter.CreateFrom = CreateFrom.Default;
billOpenParameter.GroupId = "";
billOpenParameter.ParentId = 0;
billOpenParameter.DefaultBillTypeId = "";
billOpenParameter.DefaultBusinessFlowId = "";
billOpenParameter.SetCustomParameter("ShowConfirmDialogWhenChangeOrg", false);
List<AbstractDynamicFormPlugIn> list = form.CreateFormPlugIns();
billOpenParameter.SetCustomParameter(FormConst.PlugIns, list);
PreOpenFormEventArgs preOpenFormEventArgs = new PreOpenFormEventArgs(base.Context, billOpenParameter);
foreach (AbstractDynamicFormPlugIn item in list)
{
item.PreOpenForm(preOpenFormEventArgs);
}
if (preOpenFormEventArgs.Cancel)
{
}
return billOpenParameter;
}
private void ModifyBill(IBillView billView, string pkValue)
{
billView.OpenParameter.Status = OperationStatus.EDIT;
billView.OpenParameter.CreateFrom = CreateFrom.Default;
billView.OpenParameter.PkValue = pkValue;
billView.OpenParameter.DefaultBillTypeId = string.Empty;
((IDynamicFormViewService)billView).LoadData();
}
protected void StartAsyncTaskAction()
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Expected O, but got Unknown
ResultInfo result = new ResultInfo();
View.Session["ProcessRateValue"] = 10;
View.ShowProcessForm(delegate
{
if (result.Successful)
{
View.ShowMessage(result.Message);
}
else
{
View.ShowErrMessage(result.Message);
}
}, "进度条提示");
MainWorker.QuequeTask(base.Context, delegate
{
try
{
string text = btnStr;
if (!(text == "F_PCMT_IMPORTDATA"))
{
if (text == "F_PCMT_COVERIMPORTDATA")
{
CoverImport();
}
}
else
{
Import();
}
result.Successful = true;
result.Message = "导入执行成功";
}
catch (Exception ex)
{
Logger.Error("BAS", "the action call is error.", ex);
View.ShowErrMessage(ex.ToString());
result.Successful = false;
}
finally
{
View.Session["ProcessRateValue"] = 100;
}
}, null);
}
}
}