Files
PastSaid 5472714e30 aa
2024-08-29 09:42:49 +08:00

983 lines
45 KiB
C#

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 < 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(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 == "909珠海华南洁能加华加油站有限公司")) ? 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 == "909珠海华南洁能加华加油站有限公司") ? 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);
}
}
}