aa
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
using HandleUtils;
|
||||
using HUIWEI.Lexmark.sftp.SDK.Doamin;
|
||||
using HUIWEI.Lexmark.sftp.SDK.Domain;
|
||||
using Kingdee.BOS;
|
||||
using Kingdee.BOS.Contracts;
|
||||
using Kingdee.BOS.Core;
|
||||
@@ -18,9 +18,11 @@ using Newtonsoft.Json;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.ComponentModel;
|
||||
using HUIWEI.Lexmark.sftp.SDK.Domain;
|
||||
using Kingdee.BOS.WebApi.DataEntities;
|
||||
using Kingdee.BOS.Core.Metadata;
|
||||
using Kingdee.BOS.Core.DynamicForm;
|
||||
using Kingdee.BOS.App;
|
||||
using Kingdee.BOS.Orm;
|
||||
|
||||
namespace HUIWEI.Lexmark.sftp.SDK.PO
|
||||
{
|
||||
@@ -46,6 +48,7 @@ SELECT t0.FID,t0.FNUMBER,t0.FSALEORGID
|
||||
,t0.FSFTPUSER,t0.FSFTPCLIENT,t0.FSFTPPASSWORD,t0.FSFTPLINKPATH,t0.FSFTPPORT
|
||||
,t0.FSFTPPUTPATH,t0.FSFTPGETPATH
|
||||
,t0.FSFTPBEFORESAVEPATH,t0.FSFTPAFTERSAVEPATH
|
||||
,t0.FEncoding
|
||||
,t1.FNUMBER AS 'OrgNumber'
|
||||
,t2.FNUMBER AS 'CustNumber'
|
||||
,t3.FNUMBER AS 'DeliveryWay'
|
||||
@@ -94,11 +97,21 @@ WHERE 1=1
|
||||
//文件接收地址
|
||||
var receivePath = row["FSFTPBEFORESAVEPATH"].ToString() + "/RECEIVE/";
|
||||
|
||||
var encoding = row["FEncoding"].Long2Int();
|
||||
|
||||
//设置上下文组织
|
||||
ctx.CurrentOrganizationInfo = new OrganizationInfo();
|
||||
ctx.CurrentOrganizationInfo.ID = row["FSALEORGID"].Long2Int();
|
||||
|
||||
if (encoding == 0)
|
||||
encoding = 65001;
|
||||
//encoding = 1252;
|
||||
|
||||
if (!Directory.Exists(receivePath))
|
||||
Directory.CreateDirectory(receivePath);
|
||||
|
||||
SFTPHelper helper = new SFTPHelper(FSFTPLinkPath, FSFTPUser, FSFTPPassword, FSFTPPort);
|
||||
|
||||
//%LEXMK_SFTP_PRD%HUIWE_SFTP_PRD%BINARY%
|
||||
helper.Mget(FSFTPGetPath, receivePath, (List<string> fileNames) =>
|
||||
{
|
||||
var diInfos = new DirectoryInfo(receivePath);
|
||||
@@ -106,12 +119,10 @@ WHERE 1=1
|
||||
|
||||
foreach (var fileInfo in fileInfos)
|
||||
{
|
||||
|
||||
var fileName = fileInfo.Name;
|
||||
var result = false;
|
||||
|
||||
var orderTypePath = "";
|
||||
|
||||
var moveReceivePath = "";
|
||||
var poNo = "";
|
||||
var billNo = "";
|
||||
@@ -119,7 +130,7 @@ WHERE 1=1
|
||||
var resMsg = "";
|
||||
try
|
||||
{
|
||||
using (StreamReader sr = new StreamReader(receivePath + fileName, Encoding.GetEncoding(1252)))
|
||||
using (StreamReader sr = new StreamReader(receivePath + fileName, Encoding.GetEncoding(encoding)))
|
||||
{
|
||||
var xml = XmlUtils.LoadSecureXmlDocByReader(sr);
|
||||
|
||||
@@ -153,7 +164,11 @@ WHERE 1=1
|
||||
Logger.Error($"服务器插件:{schedule.Name}", ex.Message, ex);
|
||||
}
|
||||
|
||||
ReceiveLog(ctx, fileName, moveReceivePath, poNo, billNo, billId, orderTypePath, result ? "1" : "-1", resMsg);
|
||||
var receiveResult = ReceiveLog(ctx, fileName, moveReceivePath, poNo, billNo, billId, orderTypePath, result ? "1" : "-1", resMsg);
|
||||
if (receiveResult != null && !receiveResult.IsSuccess)
|
||||
{
|
||||
Logger.Info($"服务器插件:{schedule.Name},日志记录", JsonUtil.Serialize(receiveResult));
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -176,36 +191,64 @@ WHERE 1=1
|
||||
|
||||
BillNo = "";
|
||||
BillId = 0;
|
||||
var sqlL = $@"/*dialect*/
|
||||
SELECT t0.FID,t0f.FENTRYID AS FINID,t0e.FENTRYID,t0e.FCPOITEMNO,t0.FHeadPO
|
||||
FROM T_SAL_ORDER t0
|
||||
INNER JOIN T_SAL_ORDERFIN t0f on t0f.FID = t0.FID
|
||||
INNER JOIN T_SAL_ORDERENTRY t0e on t0e.FID = t0.FID
|
||||
WHERE t0.FHeadPO = '{purchaseOrder.Header.PurchaseOrderNumber}'
|
||||
";
|
||||
|
||||
// sqlL = $@"/*dialect*/
|
||||
//SELECT * FROM TMP_SALEORDER_20240628 t0
|
||||
//WHERE t0.FHeadPO = '{header.PurchaseOrderNumber}'
|
||||
// var sqlL = $@"/*dialect*/
|
||||
//SELECT t0.FID,t0f.FENTRYID AS FINID,t0e.FENTRYID,t0e.FCPOITEMNO,t0.FHeadPO
|
||||
// ,t0.FDOCUMENTSTATUS
|
||||
//FROM T_SAL_ORDER t0
|
||||
// INNER JOIN T_SAL_ORDERFIN t0f on t0f.FID = t0.FID
|
||||
// INNER JOIN T_SAL_ORDERENTRY t0e on t0e.FID = t0.FID
|
||||
//WHERE t0.FHeadPO = '{purchaseOrder.Header.PurchaseOrderNumber}'
|
||||
//";
|
||||
|
||||
var sqlL = $@"/*dialect*/
|
||||
EXEC PROC_SELECT_SAL_ORDER_BY_LEX '{purchaseOrder.Header.PurchaseOrderNumber}'
|
||||
";
|
||||
var dbSet = DBServiceHelper.ExecuteDynamicObject(ctx, sqlL);
|
||||
|
||||
string result = string.Empty;
|
||||
|
||||
//Logger.Info("AAAAAA", purchaseOrder.Header.OrderType);
|
||||
if (purchaseOrder.Header.OrderType.Equals("ORDERS"))
|
||||
{
|
||||
if (dbSet == null || dbSet.Count == 0)
|
||||
result = Add(ctx, purchaseOrder, sftpBaseInfo);
|
||||
}
|
||||
else if (purchaseOrder.Header.OrderType.Equals("ORDCHG"))
|
||||
else
|
||||
{
|
||||
result = Update(ctx, purchaseOrder, sftpBaseInfo, dbSet);
|
||||
if (dbSet != null && dbSet.Count > 0)
|
||||
{
|
||||
var data = dbSet[0];
|
||||
var documentStatus = data["FDOCUMENTSTATUS"] == null ? "" : data["FDOCUMENTSTATUS"].ToString();
|
||||
var doUnAudit = data["DoUnAudit"] == null ? "" : data["DoUnAudit"].ToString();
|
||||
|
||||
//如果但是是审核状态先反审核
|
||||
if (doUnAudit.Equals("Y") && (documentStatus.Equals("C")))
|
||||
{
|
||||
//审核\反审核id为10001的物料数据
|
||||
//获取单据状态转换服务
|
||||
ISetStatusService setStatusService = ServiceHelper.GetService<ISetStatusService>();
|
||||
//获取元数据服务
|
||||
IMetaDataService metaDataService = ServiceHelper.GetService<IMetaDataService>();
|
||||
//构建id为10001的数据集合
|
||||
List<KeyValuePair<object, object>> lstKeyValuePairs = new List<KeyValuePair<object, object>>();
|
||||
KeyValuePair<object, object> keyValuePair = new KeyValuePair<object, object>(data["FID"], "");
|
||||
lstKeyValuePairs.Add(keyValuePair);
|
||||
//获取物料元数据
|
||||
FormMetadata materialMetaData = metaDataService.Load(ctx, "SAL_SaleOrder") as FormMetadata;
|
||||
//反审核
|
||||
IOperationResult unAuditResult = setStatusService.SetBillStatus(ctx, materialMetaData.BusinessInfo, lstKeyValuePairs, null, "UnAudit");
|
||||
}
|
||||
|
||||
result = Update(ctx, purchaseOrder, sftpBaseInfo, dbSet);
|
||||
}
|
||||
}
|
||||
|
||||
if (result.IsNullOrEmpty())
|
||||
if (!result.Contains("{"))
|
||||
{
|
||||
resMsg = result;
|
||||
return false;
|
||||
}
|
||||
|
||||
var resultData = JsonConvert.DeserializeObject<ResultData>(result);
|
||||
ResultData resultData = JsonConvert.DeserializeObject<ResultData>(result);
|
||||
|
||||
if (resultData != null)
|
||||
{
|
||||
@@ -219,16 +262,162 @@ WHERE t0.FHeadPO = '{purchaseOrder.Header.PurchaseOrderNumber}'
|
||||
BillNo = resReturn.FBillNo;
|
||||
|
||||
Logger.Info("EID转换", $"客户订单号:{purchaseOrder.Header.PurchaseOrderNumber},销售订单号:{res.Number},类型:{purchaseOrder.Header.OrderType}");
|
||||
return res.ResponseStatus.IsSuccess;
|
||||
}
|
||||
else
|
||||
{
|
||||
resMsg = JsonUtil.SerializeWithOutNull(res.ResponseStatus.Errors);
|
||||
Logger.Info("EID转换", $"客户订单号:{purchaseOrder.Header.PurchaseOrderNumber},错误信息:{resMsg}");
|
||||
}
|
||||
|
||||
resMsg = JsonUtil.SerializeWithOutNull(res.ResponseStatus);
|
||||
|
||||
return res.ResponseStatus.IsSuccess;
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// app层代码
|
||||
/// </summary>
|
||||
/// <param name="ctx"></param>
|
||||
/// <param name="purchaseOrder"></param>
|
||||
/// <param name="sftpBaseInfo"></param>
|
||||
/// <param name="BillNo"></param>
|
||||
/// <param name="BillId"></param>
|
||||
/// <param name="resMsg"></param>
|
||||
/// <returns></returns>
|
||||
private bool AddOrUpdate(Context ctx, PurchaseOrderDoamin purchaseOrder, DynamicObject sftpBaseInfo, ref string BillNo, ref long BillId, ref string resMsg)
|
||||
{
|
||||
BillNo = "";
|
||||
BillId = 0;
|
||||
resMsg = "";
|
||||
|
||||
var header = purchaseOrder.Header;
|
||||
var lineItem = purchaseOrder.LineItem;
|
||||
|
||||
try
|
||||
{
|
||||
var sqlL = $@"/*dialect*/
|
||||
EXEC PROC_SELECT_SAL_ORDER_BY_LEX '{purchaseOrder.Header.PurchaseOrderNumber}'
|
||||
";
|
||||
var dbSet = DBServiceHelper.ExecuteDynamicObject(ctx, sqlL);
|
||||
|
||||
string result = string.Empty;
|
||||
|
||||
|
||||
//获取元数据服务
|
||||
IMetaDataService metaDataService = ServiceHelper.GetService<IMetaDataService>();
|
||||
//获取物料元数据
|
||||
FormMetadata saleOrderMetaData = metaDataService.Load(ctx, "SAL_SaleOrder") as FormMetadata;
|
||||
|
||||
DynamicObject dataObj = null;
|
||||
var dynaicObjType = saleOrderMetaData.BusinessInfo.GetDynamicObjectType();
|
||||
if (purchaseOrder.Header.OrderType.Equals("ORDERS"))
|
||||
{
|
||||
if (dbSet == null || dbSet.Count == 0)
|
||||
{
|
||||
////代码调用的话再Option中传入忽略警告参数
|
||||
//OperateOption operation = OperateOption.Create(); operation.SetIgnoreWarning(true);
|
||||
dataObj = new DynamicObject(dynaicObjType);
|
||||
result = AddSalOrder(ctx, purchaseOrder, sftpBaseInfo, dataObj);
|
||||
}
|
||||
else
|
||||
{
|
||||
var data = dbSet[0];
|
||||
resMsg = $"客户订单号:{purchaseOrder.Header.PurchaseOrderNumber}已存在,ERP销售订单号:{data["FBILLNO"]},请重新核对数据!";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (dbSet != null && dbSet.Count > 0)
|
||||
{
|
||||
var data = dbSet[0];
|
||||
var documentStatus = data["FDOCUMENTSTATUS"] == null ? "" : data["FDOCUMENTSTATUS"].ToString();
|
||||
var doUnAudit = data["DoUnAudit"] == null ? "" : data["DoUnAudit"].ToString();
|
||||
BillId = data["FID"].Long2Int();
|
||||
|
||||
//如果但是是审核状态先反审核
|
||||
if (doUnAudit.Equals("Y") && (documentStatus.Equals("C")))
|
||||
{
|
||||
//审核\反审核id为10001的物料数据
|
||||
//获取单据状态转换服务
|
||||
ISetStatusService setStatusService = ServiceHelper.GetService<ISetStatusService>();
|
||||
|
||||
var lstDict = new Dictionary<object, object>
|
||||
{
|
||||
{ BillId, "" }
|
||||
};
|
||||
|
||||
//反审核
|
||||
IOperationResult unAuditResult = setStatusService.SetBillStatus(ctx, saleOrderMetaData.BusinessInfo, lstDict.ToList(), null, "UnAudit");
|
||||
|
||||
if (unAuditResult == null || !unAuditResult.IsSuccess)
|
||||
{
|
||||
var unAuditResMsg = unAuditResult.OperateResult.ToList();
|
||||
var r = unAuditResMsg[0];
|
||||
}
|
||||
}
|
||||
|
||||
//获取加载数据服务
|
||||
IViewService viewService = ServiceHelper.GetService<IViewService>();
|
||||
|
||||
|
||||
|
||||
var option = OperateOption.Create();
|
||||
option.SetThrowExceptionWhenNotFind(false);//内码不存在时返回null
|
||||
|
||||
//var saleOrderObj = viewService.LoadSingle(ctx, BillId, dynaicObjType, option);
|
||||
dataObj = viewService.LoadSingle(ctx, BillId, dynaicObjType, option);
|
||||
|
||||
result = UpdateSalOrder(ctx, purchaseOrder, sftpBaseInfo, dataObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private string AddSalOrder(Context ctx, PurchaseOrderDoamin purchaseOrder, DynamicObject sftpBaseInfo, DynamicObject dataObj)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
private string UpdateSalOrder(Context ctx, PurchaseOrderDoamin purchaseOrder, DynamicObject sftpBaseInfo, DynamicObject dataObj)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新
|
||||
/// </summary>
|
||||
@@ -335,26 +524,7 @@ WHERE t0.FHeadPO = '{purchaseOrder.Header.PurchaseOrderNumber}'
|
||||
var materials = lineItem.Select(x => x.MaterialNumber).ToList();
|
||||
|
||||
var materialSqlL = $@"/*dialect*/
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT t0.FMATERIALID,t0.FNUMBER,t0_l.FNAME,t0_l.FSPECIFICATION,t1.FNUMBER Unit
|
||||
,CONCAT('FF',ISNULL(t0ap.FAUXPROPERTYID,0)) AS 'FAUXPROPERTYID'
|
||||
,CONVERT(int,t0ap.FISENABLE) FISENABLE
|
||||
FROM T_BD_MATERIAL t0
|
||||
INNER JOIN T_BD_MATERIAL_L t0_l on t0_l.FMATERIALID = t0.FMATERIALID
|
||||
AND t0_l.FLOCALEID = 2052
|
||||
INNER JOIN T_BD_MATERIALSALE t0s on t0s.FMATERIALID = t0.FMATERIALID
|
||||
INNER JOIN T_BD_UNIT t1 on t1.FUNITID = t0s.FSALEUNITID
|
||||
LEFT JOIN t_BD_MaterialAuxPty t0ap on t0.FMATERIALID = t0ap.FMATERIALID
|
||||
WHERE 1=1
|
||||
AND t0.FUSEORGID = {sftpBaseInfo["FSALEORGID"].Long2Int()}
|
||||
AND t0_l.FSPECIFICATION IN ('{string.Join("','", materials)}')
|
||||
) t0
|
||||
PIVOT
|
||||
(
|
||||
SUM(t0.FISENABLE) FOR
|
||||
t0.FAUXPROPERTYID IN (FF100001,FF100002)
|
||||
) t1
|
||||
EXEC CHECK_MATERIAL_BY_LEX {sftpBaseInfo["FSALEORGID"].Long2Int()},'{string.Join(",", materials)}'
|
||||
";
|
||||
|
||||
// materialSqlL = $@"/*dialect*/
|
||||
@@ -379,6 +549,7 @@ PIVOT
|
||||
if (dbEntry != null)
|
||||
entryRow.Add("FENTRYID", dbEntry["FENTRYID"].Long2Int());
|
||||
|
||||
entryRow.Add("FLexMaterialNumber", item.MaterialNumber);
|
||||
//要货日期
|
||||
entryRow.Add("F_PAEZ_Datetime", requestedDeliveryDate);
|
||||
//客户订单号
|
||||
@@ -529,34 +700,11 @@ PIVOT
|
||||
var materials = lineItem.Select(x => x.MaterialNumber).ToList();
|
||||
|
||||
var materialSqlL = $@"/*dialect*/
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT t0.FMATERIALID,t0.FNUMBER,t0_l.FNAME,t0_l.FSPECIFICATION,t1.FNUMBER Unit
|
||||
,CONCAT('FF',ISNULL(t0ap.FAUXPROPERTYID,0)) AS 'FAUXPROPERTYID'
|
||||
,CONVERT(int,t0ap.FISENABLE) FISENABLE
|
||||
FROM T_BD_MATERIAL t0
|
||||
INNER JOIN T_BD_MATERIAL_L t0_l on t0_l.FMATERIALID = t0.FMATERIALID
|
||||
AND t0_l.FLOCALEID = 2052
|
||||
INNER JOIN T_BD_MATERIALSALE t0s on t0s.FMATERIALID = t0.FMATERIALID
|
||||
INNER JOIN T_BD_UNIT t1 on t1.FUNITID = t0s.FSALEUNITID
|
||||
LEFT JOIN t_BD_MaterialAuxPty t0ap on t0.FMATERIALID = t0ap.FMATERIALID
|
||||
WHERE 1=1
|
||||
AND t0.FUSEORGID = {sftpBaseInfo["FSALEORGID"].Long2Int()}
|
||||
AND t0_l.FSPECIFICATION IN ('{string.Join("','", materials)}')
|
||||
) t0
|
||||
PIVOT
|
||||
(
|
||||
SUM(t0.FISENABLE) FOR
|
||||
t0.FAUXPROPERTYID IN (FF100001,FF100002)
|
||||
) t1
|
||||
EXEC CHECK_MATERIAL_BY_LEX {sftpBaseInfo["FSALEORGID"].Long2Int()},'{string.Join(",", materials)}'
|
||||
";
|
||||
// materialSqlL = $@"/*dialect*/
|
||||
//SELECT * FROM TMP_MATERIAL_20240628 WHERE FSPECIFICATION IN ('{string.Join("','", materials)}')
|
||||
//";
|
||||
|
||||
var datas = DBServiceHelper.ExecuteDynamicObject(ctx, materialSqlL);
|
||||
if (datas == null || datas.Count == 0)
|
||||
return "";
|
||||
return $"对应客户产品:{string.Join(",", materials)},不存在。";
|
||||
|
||||
// 通过循环创建单据体行:
|
||||
foreach (var item in lineItem)
|
||||
@@ -569,6 +717,9 @@ PIVOT
|
||||
var materialNumber = item.MaterialNumber;
|
||||
var material = datas.FirstOrDefault(w => w["FSPECIFICATION"].ToString().Equals(materialNumber));
|
||||
|
||||
if (material == null)
|
||||
return $"对应客户产品:{materialNumber},不存在。";
|
||||
|
||||
//要货日期
|
||||
entryRow.Add("F_PAEZ_Datetime", requestedDeliveryDate);
|
||||
//客户订单号
|
||||
@@ -576,6 +727,8 @@ PIVOT
|
||||
//客户订单行号
|
||||
entryRow.Add("FCPOItemNo", item.ItemLineNumber);
|
||||
|
||||
entryRow.Add("FLexMaterialNumber", item.MaterialNumber);
|
||||
|
||||
entryRow.Add("FMaterialId", new JObject { { "FNumber", material["FNUMBER"].ToString() } });
|
||||
entryRow.Add("FUnitID", new JObject { { "FNumber", material["Unit"].ToString() } });
|
||||
entryRow.Add("FPriceUnitId", new JObject { { "FNumber", material["Unit"].ToString() } });
|
||||
@@ -600,10 +753,10 @@ PIVOT
|
||||
entryRow.Add("FOUTLMTUNIT", "SAL");
|
||||
}
|
||||
|
||||
|
||||
var dataJson = jsonRoot.ToString();
|
||||
//Logger.Info("测试EDI转换", jsonRoot.ToString());
|
||||
Logger.Info("测试EDI转换", jsonRoot.ToString());
|
||||
var result = Save("SAL_SaleOrder", jsonRoot.ToString(), ctx);
|
||||
Logger.Info($"服务器插件:EDI 返回结果日志记录", result);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -613,7 +766,6 @@ PIVOT
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 时间格式转换
|
||||
/// </summary>
|
||||
@@ -668,7 +820,7 @@ SELECT * FROM VIEW_Lexmark_SFTP_Link_WebApi
|
||||
return result;
|
||||
}
|
||||
|
||||
private bool ReceiveLog(Context ctx, string FFileName, string FFilePath, string FPO, string FERPBillNo, long FERPBillId, string FFileTypeText, string FIsSuccess, string msg)
|
||||
private IOperationResult ReceiveLog(Context ctx, string FFileName, string FFilePath, string FPO, string FERPBillNo, long FERPBillId, string FFileTypeText, string FIsSuccess, string msg)
|
||||
{
|
||||
//AddSftpOpRecord(FFileName, FFilePath, FPO, FERPBillNo, FERPBillId, FFileTypeText):
|
||||
|
||||
@@ -681,6 +833,7 @@ SELECT * FROM VIEW_Lexmark_SFTP_Link_WebApi
|
||||
newObj["FReceiveOrSend"] = "1";
|
||||
newObj["FFileName"] = FFileName;
|
||||
newObj["FFilePath"] = FFilePath;
|
||||
newObj["FDate"] = DateTime.Now;
|
||||
newObj["FPO"] = FPO;
|
||||
newObj["FERPBillNo"] = FERPBillNo;
|
||||
newObj["FERPBillId"] = FERPBillId;
|
||||
@@ -696,7 +849,9 @@ SELECT * FROM VIEW_Lexmark_SFTP_Link_WebApi
|
||||
//# 例如,可以添加一个"OnlySave",这个操作不注册任何服务插件和服务端服务,仅用于保存单据数据到数据库
|
||||
var saveRslt = BusinessDataServiceHelper.Save(ctx, meta.BusinessInfo, ObjList.ToArray(), null, "Save");
|
||||
|
||||
return true;
|
||||
Logger.Info($"服务器插件:EDI日志记录信息(ReceiveLog)", JsonUtil.SerializeWithOutNull(saveRslt));
|
||||
|
||||
return saveRslt;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user