using System;
|
using System.Collections.Generic;
|
using Kingdee.BOS.Util;
|
using Kingdee.BOS.Core.Metadata.EntityElement;
|
using Kingdee.BOS.Core.DynamicForm.PlugIn;
|
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
|
using Kingdee.BOS.Orm.DataEntity;
|
using System.ComponentModel;
|
using Kingdee.BOS.ServiceHelper;
|
using System.Data;
|
using Newtonsoft.Json.Linq;
|
using ZD.Cloud.WebApi;
|
using Newtonsoft.Json;
|
using Kingdee.BOS.Core.DynamicForm;
|
using System.Linq;
|
using RestSharp;
|
using zymes_Project.Utility;
|
|
namespace zymes_Project.OperationService
|
{
|
[Description("[仓库仓位-审核]服务插件]")]
|
[HotUpdate]
|
public class zymes_RealessStock : AbstractOperationServicePlugIn
|
{
|
Dictionary<string, string> dictionary = new Dictionary<string, string>();
|
public override void OnPrepareOperationServiceOption(OnPrepareOperationServiceEventArgs e)
|
{
|
base.OnPrepareOperationServiceOption(e);
|
|
//为了在BeginOperationTransaction里检查数据抛出异常时
|
//只回滚当前单据的事务,这里设置为不支持批量事务,这样BOS会
|
//循环为每一张单据创建事务调用操作
|
e.SupportTransaction = true;
|
e.SurportBatchTransaction = false;
|
}
|
public override void OnPreparePropertys(PreparePropertysEventArgs e)
|
{
|
base.OnPreparePropertys(e);
|
e.FieldKeys.Add("FEntity");
|
e.FieldKeys.Add("FEntity_FEntryID");
|
}
|
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
|
{
|
base.AfterExecuteOperationTransaction(e);
|
Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息
|
foreach (var billObj in e.DataEntitys)
|
{
|
var forgName = Context.CurrentOrganizationInfo.Name;
|
if (!forgName.Contains("杭州斯莫尔磁性材料有限公司"))
|
continue;
|
//var sql = $"exec zymes_RealessStock {billObj["Id"]} ";
|
var id = billObj["Id"].ToString();
|
string sql = string.Empty;
|
sql = string.Format(@"
|
/*dialect*/
|
select a.FSTOCKID as HItemID,a.FSTOCKID as HERPItemID,a.FNumber as HNumber,l.FName as HName,a.FNumber as HShortNumber,0 as HParentID
|
,1 as HLevel,'true' as HEndFlag,case when a.FFORBIDSTATUS='A' then 'false' else 'true' end as HStopflag,'CLD-ERP导入' as HRemark
|
,a.FIsOpenLocation as HSPFlag,a.FSTOCKID as HSPGroupID,a.FAllowMinusQty as HUnderStock,'已使用' as HUseFlag
|
,getdate() as HMakeTime,a.FCREATEORGID as HCREATEORGID,a.FUSEORGID as HUSEORGID,a.FSTOCKPROPERTY as HSTOCKPROPERTY
|
from T_BD_STOCK a with(nolock)
|
inner join T_BD_STOCK_L l with(nolock) on a.FSTOCKID=l.FSTOCKID
|
Where a.FSTOCKID = {0}
|
|
select c.HID as HItemID,c.HID as HERPItemID,c.HNumber as HNumber,c.HName as HName,c.HNumber as HShortNumber,0 as HParentID,c.HSPType as HSPType,c.HSrcSPType as HSrcSPType,c.HDesSPType as HDesSPType
|
,1 as HLevel,'true' as HEndFlag,'false' as HStopflag,'CLD-ERP导入' as HRemark,a.FSTOCKID as HSPGroupID,'已使用' as HUseFlag,getdate() as HMakeTime,a.FCREATEORGID as HCREATEORGID,a.FUSEORGID as HUSEORGID
|
from T_BD_STOCK A with(nolock)
|
inner join T_BD_STOCK_L L with(nolock) on A.FSTOCKID=L.FSTOCKID
|
inner join T_BD_FLEXVALUESCOM ST with(nolock) on a.FSTOCKID = st.FSTOCKID
|
inner join (select c.FID HID,c.FF100001 HSPTypeID
|
,''""FStockLocId"":{""FSTOCKLOCID__FF100001"":{""FNUMBER"":""'' HSPType
|
,''""FSrcStockLocId"":{""FSRCSTOCKLOCID__FF100001"":{""FNUMBER"":""'' HSrcSPType
|
,''""FDestStockLocId"":{""FDESTSTOCKLOCID__FF100001"":{""FNUMBER"":""'' HDesSPType
|
,s.FNUMBER HNumber, sp.FName HName
|
from T_BAS_FLEXVALUESDETAIL c
|
inner
|
join T_BAS_FLEXVALUESENTRY s on s.FENTRYID = c.FF100001
|
inner
|
join T_BAS_FLEXVALUESENTRY_L sp on sp.FENTRYID = c.FF100001) c on c.HID = st.FSTOCKLOCID
|
inner join T_ORG_ORGANIZATIONS_L o with(nolock) on o.FORGID = A.FUSEORGID
|
where ST.FISDISABLE = '0' AND ST.FSYSDISABLE = '0'
|
and l.FLOCALEID = 2052 and isnull(o.FNAME,'') <> ''
|
and a.FSTOCKID = {0}
|
",id);
|
DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql);
|
DataTable maindt = ds.Tables[0];//仓库
|
DataTable subdt = ds.Tables[1];//仓位
|
if (maindt.Rows.Count == 0)
|
{
|
LogService.Write("仓库仓位同步异常:" + sql);
|
continue;
|
}
|
JArray array = new JArray();//明细表
|
foreach (DataRow dr in subdt.Rows)
|
{
|
JObject fentrymodel = new JObject();
|
foreach (DataColumn column in subdt.Columns)
|
{
|
fentrymodel.Add(column.ColumnName, dr[column.ColumnName].ToString());
|
}
|
array.Add(fentrymodel);
|
}
|
JObject model = new JObject();//主表
|
DataRow maindr = maindt.Rows[0];
|
foreach (DataColumn column in maindt.Columns)
|
{
|
model.Add(column.ColumnName, maindr[column.ColumnName].ToString());
|
}
|
model.Add("HStockplaceEntry", array);
|
JObject jsonRoot = new JObject()
|
{
|
["model"] = model
|
};
|
LogService.Write("仓库仓位同步示例:" + JsonConvert.SerializeObject(jsonRoot));
|
//string clientUrl = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "ClientUrl");//K/3 Cloud 业务站点地址
|
var client = new RestSharp.RestClient("http://61.130.182.102:18181/simoerAPI/");
|
var requestPost = new RestRequest("Gy_Warehouse/SaveGy_WarehouseListApi", Method.POST);
|
requestPost.AddParameter("application/json", JsonConvert.SerializeObject(jsonRoot), ParameterType.RequestBody);
|
IRestResponse responsePost = client.Execute(requestPost);
|
var contentPost = responsePost.Content;
|
if (!contentPost.Contains("成功"))
|
{
|
LogService.Write("仓库仓位同步异常,POST方式获取结果," + billObj["Id"] + "," + contentPost);
|
LogService.Write("仓库仓位同步异常,POST," + "Gy_Warehouse/SaveGy_WarehouseListApi");
|
LogService.Write("仓库仓位同步异常,JsonConvert.SerializeObject(_jsonRoot)," + JsonConvert.SerializeObject(jsonRoot));
|
}
|
};
|
|
foreach (var item in dictionary)
|
{
|
ResultMessage.dataError(this.OperationResult.OperateResult, item.Key, item.Value);
|
}
|
}
|
public static class ResultMessage
|
{/// <summary>
|
/// 修改提示信息
|
/// </summary>
|
/// <param name="operateResult"></param>
|
/// <param name="billno"></param>
|
public static void dataError(OperateResultCollection operateResult, string billno, string message)
|
{
|
OperateResult operate = operateResult.Where(n => n.Number == billno).First();
|
operate.Message = message;
|
operate.SuccessStatus = false;
|
operate.MessageType = MessageType.FatalError;
|
}
|
}
|
}
|
}
|