983 lines
45 KiB
C#
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 < ((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);
|
||
}
|
||
}
|
||
}
|