Merge branch 'master' of http://101.37.171.70:10101/r/simoer_jiekou
# Conflicts:
# zymes/zymes_Project.csproj
| New file |
| | |
| | | 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_RealessEntrustOrderBill : 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"); |
| | | e.FieldKeys.Add("OrderEntity"); |
| | | e.FieldKeys.Add("OrderEntity_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; |
| | | LogService.Write("开始同步"); |
| | | var id = billObj["Id"].ToString(); |
| | | LogService.Write($"id为{id}"); |
| | | string sql = string.Empty; |
| | | sql = $@" |
| | | /*dialect*/ |
| | | select a.FID HInterID,a.FENTRYID HEntryID,a.FMATERIALID HMaterID,isnull(a.FUnitID,0) HUnitID,a.FQTY HQty |
| | | ,0 HPrice,0 HTaxPrice,0 HDiscountRate,0 HRelTaxPrice |
| | | ,0 HMoney,0 HTaxRate,0 HTaxMoney,0 HLineTotal,0 HlineTotalBB,getdate() HDate,0 HInStockQty, 0 HInvoiceQty |
| | | ,isnull(aa.FSALEORDERNO,'') HSeOrderBillNo,isnull(aa.FSALEORDERID,0) HSeOrderInterID,isnull(aa.FSALEORDERENTRYID,0) HSeOrderEntryID |
| | | ,isnull(aa.FSRCBILLID,0) HSourceInterID,isnull(aa.FSRCBILLENTRYID,0) HSourceEntryID,isnull(aa.FSRCBILLNO,'') HSourceBillNo,'' HSourceBillType |
| | | ,0 HRelationQty,'' HBatChNo,isnull(a.FAUXPROPID,0) HAuxPropID,isnull(a.FMTONo,'') HMTONo,'' HPlanMode,'CLOUD导入' HRemark |
| | | ,a.FID HERPInterID,a.FEntryID HERPEntryID,isnull(a.FBOMID,0) HBomID,isnull(a.FSTOCKID,0) HWhID,0 HSPID |
| | | ,isnull(aa.FPURORDERNO,'') HPOORderBillNo,isnull(aa.FPURORDERENTRYSEQ,0) HPOOrderSEQ |
| | | from T_SUB_REQORDERENTRY a with(nolock) |
| | | inner join T_SUB_REQORDERENTRY_A aa with(nolock) on a.FID=aa.FID and a.FENTRYID=aa.FENTRYID |
| | | where a.FID={id} |
| | | |
| | | select a.FID HInterID,year(a.FDate) HYear,month(a.FDate) HPeriod,'1601' HBillType,'1601' HBillSubType,a.FDate HDate |
| | | ,a.FBillNo HBillNo ,case when isnull(a.FAPPROVERID,0)=0 then 1 else 2 end HBillStatus |
| | | ,'' HAddress,0 HSSID,a.FDATE HSSDate,0 HSupID,0 HCurID |
| | | ,0 HExRate,0 HEmpID,0 HManagerID,0 HDeptID,'' HExplanation,'CLOUD导入' HRemark,a.FBillNo HInnerBillNo |
| | | ,isnull(us1.FNAME,'') HMaker,a.FCREATEDATE HMakeDate,isnull(us2.FNAME,'') HChecker,a.FAPPROVEDATE HCheckDate |
| | | ,isnull(us3.FNAME,'') HUpDater,a.FMODIFYDATE HUpDateDate,isnull(us4.FNAME,'') HDeleteMan,a.FCANCELDATE HDeleteDate |
| | | ,a.FID HERPInterID,isnull(a.FBILLTYPE,'') HERPBillType,isnull(a.FSUBORGID,0) HSUBORGID,oo.FNUMBER |
| | | from T_SUB_REQORDER a with(nolock) |
| | | left join T_SEC_user us1 with(nolock) on a.FCREATORID=us1.FUSERID |
| | | left join T_SEC_user us2 with(nolock) on a.FAPPROVERID=us2.FUSERID |
| | | left join T_SEC_user us3 with(nolock) on a.FMODIFIERID=us3.FUSERID |
| | | left join T_SEC_user us4 with(nolock) on a.FCANCELER=us4.FUSERID |
| | | left join T_ORG_Organizations oo on oo.FORGID=a.FSUBORGID |
| | | where a.FID={id} |
| | | |
| | | select a.FID HInterID,a.FEntryID,a.FMATERIALID,a.FUnitID,a.FNEEDQTY,a.FNEEDQTY,isnull(C.FStockID,0),isnull(pl.FMEMO,'') |
| | | ,a.FSUBREQID HSourceInterID,a.FSUBREQENTRYID HSourceEntryID,isnull(a.FSUBREQBILLNO,'') HSourceBillNo,'' HSourceBillType |
| | | ,0 HICMOInterID,0 HICMOEntryID,'' HICMOBillNo |
| | | ,isnull(C.FCHILDSUPPLYORGID,0),isnull(C.FSUPPLYORG,0),isnull(C.FGROUPBYOWNERID,0),isnull(C.FSRCTRANSORGID,0),isnull(C.FGROUPBYOWNERID,0),isnull(C.FOWNERID,0),isnull(C.FOWNERTYPEID,'') |
| | | ,q.FSELPICKEDQTY-q.FSELPRCDRETURNQTY,q.FSELTRANSLATEQTY,isnull(a.FAUXPROPID,0),isnull(C.FLOT_TEXT,''),isnull(a.FMTONo,''),0,a.FID,a.FEntryID |
| | | ,q.FSELPICKEDQTY-q.FSELPRCDRETURNQTY |
| | | ,isnull(a.FPROCESSID,0),isnull(a.FBASEUNITID,0),isnull(a.FPROJECTNO,''),isnull(a.FOPERID,0),isnull(a.FSEQ,0) |
| | | ,isnull(c.FSTOCKSTATUSID,0),isnull(c.FRESERVETYPE,'') |
| | | from T_SUB_PPBOMEntry a with(nolock) |
| | | inner join T_SUB_PPBOMENTRY_C C with(nolock) on A.FENTRYID=C.FENTRYID |
| | | inner join T_SUB_PPBOMENTRY_Q Q with(nolock) on A.FENTRYID=Q.FENTRYID |
| | | left join T_SUB_PPBOMENTRY_L pl with(nolock) on pl.FENTRYID=a.FENTRYID and pl.FLOCALEID=2052 |
| | | left join T_SUB_PPBOMENTRY_LK l with(nolock) on a.FENTRYID=l.FENTRYID |
| | | where a.FID={id} |
| | | |
| | | |
| | | |
| | | |
| | | select a.FID HInterID,year(a.FCREATEDate),month(a.FCREATEDate),'1604','1604',a.FCREATEDate |
| | | ,a.FbillNo,case when isnull(a.FAPPROVERID,0)=0 then 1 else 2 end HBillStatus,a.FSUBREQID,a.FSUBREQENTRYID,isnull(a.FSUBBILLNO,''),a.FSUBREQENTRYSEQ |
| | | ,a.FMATERIALID,a.FUNITID,a.FQTY,isnull(a.FSUPPLIERID,0),0 HDEPTID |
| | | ,isnull(us1.FNAME,''),a.FCREATEDATE,isnull(us2.FNAME,''),a.FAPPROVEDATE,isnull(us3.FNAME,''),a.FMODIFYDATE |
| | | ,isnull(a.FSALEORDERNO,''),isnull(a.FSALEORDERID,0),isnull(a.FSALEORDERENTRYID,0),isnull(a.FSALEORDERENTRYSEQ,0) |
| | | ,a.FSUBORGID,a.FSUBORGID,isnull(a.FPARENTOWNERID,0),isnull(a.FPARENTOWNERTYPEID,'') |
| | | ,a.FID,'WWPPBOM' HERPBillType,isnull(a.FSETTLEORGID,0),isnull(a.FREQSRC,'') |
| | | from T_SUB_PPBOM a with(nolock) |
| | | left join T_SEC_user us1 with(nolock) on a.FCREATORID=us1.FUSERID |
| | | left join T_SEC_user us2 with(nolock) on a.FAPPROVERID=us2.FUSERID |
| | | left join T_SEC_user us3 with(nolock) on a.FMODIFIERID=us3.FUSERID |
| | | where a.FID={id} |
| | | "; |
| | | DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql); |
| | | DataTable maindt = ds.Tables[1]; |
| | | DataTable subdt = ds.Tables[0]; |
| | | DataTable mainOrder = ds.Tables[3];//用料清单主表 |
| | | DataTable mainOrdersub = ds.Tables[2];//用料清单子表 |
| | | if (maindt.Rows.Count == 0 || subdt.Rows.Count == 0 || mainOrder.Rows.Count == 0 ) |
| | | { |
| | | LogService.Write("委外订单同步异常:" + sql); |
| | | LogService.Write($"委外主表{maindt.Rows.Count},委外子表{subdt.Rows.Count},用料主{mainOrder.Rows.Count},用料子{mainOrdersub.Rows.Count}" ); |
| | | continue; |
| | | } |
| | | LogService.Write($"委外主表{maindt.Rows.Count},委外子表{subdt.Rows.Count},用料主{mainOrder.Rows.Count},用料子{mainOrdersub.Rows.Count}"); |
| | | //获取创建委外订单的使用组织 |
| | | DataTable dataTable = LogService.Get_DisPlayOrg(Context, maindt.Rows[0]["FNUMBER"].ToString()); |
| | | if (dataTable.Rows.Count == 0) |
| | | continue; |
| | | |
| | | if (dataTable.Rows[0]["FISNEEDPUSH"].ToString() == "0") |
| | | continue; |
| | | |
| | | string http = dataTable.Rows[0]["F_RCZU_MesIp"].ToString(); |
| | | |
| | | 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("HENTRY", array); |
| | | |
| | | |
| | | JArray ppbomArray = new JArray(); |
| | | foreach (DataRow dr in mainOrdersub.Rows) |
| | | { |
| | | JObject fentrymodel = new JObject(); |
| | | foreach (DataColumn column in mainOrdersub.Columns) |
| | | { |
| | | fentrymodel.Add(column.ColumnName, dr[column.ColumnName].ToString()); |
| | | } |
| | | ppbomArray.Add(fentrymodel); |
| | | } |
| | | // 构建用料清单主表 |
| | | JObject ppbomModel = new JObject(); |
| | | DataRow ppbomMainDr = mainOrder.Rows[0]; |
| | | foreach (DataColumn column in mainOrder.Columns) |
| | | { |
| | | ppbomModel.Add(column.ColumnName, ppbomMainDr[column.ColumnName].ToString()); |
| | | } |
| | | ppbomModel.Add("HENTRY", ppbomArray); |
| | | JObject jsonRoot = new JObject() |
| | | { |
| | | ["model"] = model, |
| | | ["ppbomModel"] = ppbomModel |
| | | }; |
| | | LogService.Write("发送的JSON数据: " + JsonConvert.SerializeObject(jsonRoot)); |
| | | // 构建用料清单明细表 |
| | | |
| | | |
| | | var client = new RestSharp.RestClient(http); |
| | | //新增 |
| | | var requestPost = new RestRequest("WW_EntrustOrderBill/SaveWW_EntrustOrderBillListApi", 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"] + "," + responsePost.ErrorMessage); |
| | | LogService.Write("委外订单同步异常,POST," + "Cg_POOrderBill/Cg_POOrderBillSaveApi"); |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | 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_RealessProperty : 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");//获取明细信息 |
| | | |
| | | LogService.Write("进入辅助属性保存方法"); |
| | | //todo 金蝶表中没有组织字段,唯一的组织字段在T_BAS_ASSISTANTDATAENTRY中,然后不匹配,现在暂时定的100038来获取API的路径地址 |
| | | //子表插入 |
| | | foreach (var billObj in e.DataEntitys) |
| | | { |
| | | var forgName = Context.CurrentOrganizationInfo.Name; |
| | | var id = billObj["Id"].ToString(); |
| | | string sql = string.Empty; |
| | | LogService.Write($"id为{id}"); |
| | | sql = $@" |
| | | select DISTINCT f.FID as HItemID,a.FNUMBER as HNumber,a.FNUMBER HShortNumber,b.FDATAVALUE as HName,0 as HParentID |
| | | ,1 as HLevel,1 as HEndFlag,case when a.FFORBIDSTATUS='A' then 0 else 1 end HStopflag,'CLD-ERP导入' as HRemark,'已使用' HUseFlag,getdate() as HMakeTime,100038 as HUSEORGID,100038 HCREATEORGID,0 HPropertyTypeID,'' as HHelpCode,f.FID HERPItemID,oo.FORGFORMID |
| | | from T_BD_FLEXAUXPROPERTY p with(nolock) |
| | | inner join T_BAS_ASSISTANTDATAENTRY a with(nolock) on p.FVALUESOURCE=a.FID |
| | | inner join T_BAS_ASSISTANTDATAENTRY_L b with(nolock) on a.FENTRYID=b.FENTRYID |
| | | inner join (select distinct min(FID) FID,FF100002 from T_BD_FLEXSITEMDETAILV with(nolock) group by FF100002) as f on a.FENTRYID=f.FF100002 |
| | | left join T_ORG_Organizations oo on oo.FORGID='100038' |
| | | left JOIN T_BD_FLEXAUXPROPERTYENTITY tb on tb.FID=f.FID |
| | | where b.FLOCALEID=2052 |
| | | and a.FFORBIDSTATUS='A' and tb.FENTRYID={id} |
| | | select DISTINCT b.FENTRYID HItemID ,b.FENTRYID HERPItemID, f.FID HAuxpuID,a.FMATERIALID HMaterID,b.FISDEFAULT HISDefault,b.FISDISABLE HStopflag,b.FDISPLAYSEQ HSno |
| | | from T_BD_AUXPTYVALUE a with(nolock) |
| | | inner join T_BD_AUXPTYVALUEENTITY b with(nolock) on a.FAUXPTYVALUEID=b.FAUXPTYVALUEID |
| | | inner join T_BD_FLEXSITEMDETAILV f with(nolock) on b.FAUXPTYID=f.FF100002 |
| | | left JOIN T_BD_FLEXAUXPROPERTYENTITY tb on tb.FID=f.FID |
| | | where tb.FENTRYID={id} |
| | | "; |
| | | // Where f.FID = {id} Where f.FID = {id} |
| | | DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | | DataTable dtDetail = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[1]; |
| | | |
| | | if (dt.Rows.Count == 0) |
| | | { |
| | | LogService.Write("辅助属性同步异常:" + sql); |
| | | continue; |
| | | } |
| | | |
| | | //获取辅助属性的使用组织 |
| | | //DataTable dataTable = LogService.Get_DisPlayOrg(Context, dt.Rows[0]["FORGFORMID"].ToString()); |
| | | DataTable dataTable = LogService.Get_DisPlayOrg(Context, "101.2"); |
| | | if (dataTable.Rows.Count == 0) |
| | | continue; |
| | | |
| | | if (dataTable.Rows[0]["FISNEEDPUSH"].ToString() == "0") |
| | | continue; |
| | | |
| | | if (dataTable.Rows.Count == 0 || dataTable.Rows[0]["F_RCZU_MesIp"] == null || string.IsNullOrEmpty(dataTable.Rows[0]["F_RCZU_MesIp"].ToString())) |
| | | { |
| | | LogService.Write("MES IP地址配置为空或不存在"); |
| | | continue; |
| | | } |
| | | string http = dataTable.Rows[0]["F_RCZU_MesIp"].ToString(); |
| | | LogService.Write($"MES IP地址配置: {http}"); |
| | | LogService.Write("组织过滤已过"); |
| | | DataRow dr = dt.Rows[0]; |
| | | JObject model = new JObject(); |
| | | foreach (DataColumn column in dt.Columns) |
| | | { |
| | | model.Add(column.ColumnName, dr[column.ColumnName].ToString()); |
| | | } |
| | | JObject _jsonRoot = new JObject() |
| | | { |
| | | ["model"] = model |
| | | }; |
| | | |
| | | var client = new RestSharp.RestClient(http); |
| | | LogService.Write("进入api"); |
| | | var requestPost = new RestRequest("Gy_Property/SaveGy_PropertyListApi", 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"] + "," + responsePost.ErrorMessage); |
| | | LogService.Write("辅助属性步异常,POST," + "Gy_Property/SaveGy_PropertyListApi"); |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | 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_RealessSeOutStockBack : 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 id = billObj["Id"].ToString(); |
| | | LogService.Write("退货通知单同步id:" + id); |
| | | string sql = string.Empty; |
| | | sql = $@" |
| | | /*dialect*/ |
| | | select |
| | | a.FID as HInterID,year(a.FDate) as HYear,month(a.FDate) as HPeriod, |
| | | '1403' as HBillType,'1403' as HBillSubType,a.FDate as HDate,a.FbillNo as HBillNo, |
| | | case when isnull(a.FAPPROVERID,0)=0 then 1 else 2 end as HBillStatus, |
| | | a.FRETCUSTID as HCusID,a.FSTOCKERID as HManagerID, |
| | | isnull(a.FSALEDEPTID,0) as HDeptID,'CLD导入' as HRemark, |
| | | a.FRECEIVEADDRESS as HAddress,0 as HSSID,0 as HCurID,0 as HWHID,1 as HExRate, |
| | | a.FSALESMANID as HEmpID,'' as HExplanation,'' as HInnerBillNo,a.FSALEORGID as HSALEORGID, |
| | | a.FRETORGID as HDELIVERYORGID,isnull(a.FOWNERID,0) as HOWNERID,isnull(a.FOWNERTYPEID,'') as HOWNERTYPEID, |
| | | isnull(us1.FNAME,'') as HMaker,a.FCREATEDATE as HMakeDate, |
| | | isnull(us2.FNAME,'') as HChecker,a.FAPPROVEDATE as HCheckDate, |
| | | isnull(us3.FNAME,'') as HUpDater,a.FMODIFYDATE as HUpDateDate, |
| | | isnull(us4.FNAME,'') as HDeleteMan,a.FCANCELDATE as HDeleteDate, |
| | | a.FID as HERPInterID,a.FBILLTYPEID as HERPBillType,a.FSETTLECUSID as HSETTLECUSID, |
| | | a.FPAYCUSID as HPAYCUSID,a.FRECEIVECUSID as HRECEIVECUSID,a.FSALEGROUPID as HSALEGROUPID, |
| | | a.FHEADLOCID as HHEADLOCID,a.FRECCONTACTID as HRECCONTACTID,a.FRETURNREASON as HRETURNREASON, |
| | | a.FRETDEPTID as HRETDEPTID,a.FDESCRIPTION as HDESCRIPTION,a.FBUSINESSTYPE as HBUSINESSTYPE,o.FNUMBER HOrganNumber |
| | | from T_SAL_RETURNNOTICE a with(nolock) |
| | | left join T_ORG_Organizations o with (nolock) on a.FSALEORGID = o.FORGID |
| | | left join T_SEC_user us1 with(nolock) on a.FCREATORID=us1.FUSERID |
| | | left join T_SEC_user us2 with(nolock) on a.FAPPROVERID=us2.FUSERID |
| | | left join T_SEC_user us3 with(nolock) on a.FMODIFIERID=us3.FUSERID |
| | | left join T_SEC_user us4 with(nolock) on a.FCANCELLERID=us4.FUSERID |
| | | where a.FID={id} |
| | | select |
| | | a.FID as HInterID,a.FEntryID as HEntryID,a.FMATERIALID as HMaterID,a.FUnitID as HUnitID, |
| | | a.FQty as HQty,isnull(f.FPRICE,0) as HPrice,0 as HMoney,0 as HTaxMoney, |
| | | isnull(f.FTAXPRICE,0) as HTaxPrice,isnull(a.FSTOCKID,0) as HWHID,'CLOUD导入' as HRemark, |
| | | isnull(L.FSBILLID,0) as HSourceInterID,isnull(L.FSID,0) as HSourceEntryID,isnull(a.FSRCBILLNO,'') as HSourceBillNo, |
| | | a.FSRCTYPE as HSourceBillType,0 as HSeOrderInterID,a.FSOENTRYID as HSeOrderEntryID,a.FORDERNO as HSeORderBillNo, |
| | | a.FOWNERID as HOWNERID,a.FOWNERTYPEID as HOWNERTYPEID,isnull(fin.FSETTLEORGID,0) as HSETTLEORGID, |
| | | a.FJOINRETQTY as HRelationQty,a.FAUXPROPID as HAuxPropID,a.FLot_TEXT as HBatchNO,isnull(a.FMTONo,'') as HMTONo, |
| | | a.FID as HERPInterID,a.FEntryID as HERPEntryID,a.FSOBILLTYPEID as HSOBILLTYPEID,a.FRMTYPE as HRMTYPE, |
| | | a.FSTOCKUNITID as HSTOCKUNITID,a.FBASEUNITID as HBASEUNITID,a.FDELIVERYDATE as HDELIVERYDATE, |
| | | a.FDESCRIPTION as HDESCRIPTION,isnull(a.FMAPID,'') as HMAPID,e.FPARENTMATID as HPARENTMATID, |
| | | case when e.FISRETURNCHECK is null then 'false'when e.FISRETURNCHECK = 1 then 'true' else 'false' end as HISRETURNCHECK,e.FROWTYPE as HROWTYPE,e.FROWID as HROWID,e.FPARENTROWID as HPARENTROWID, |
| | | isnull(f.FTAXCOMBINATION,0) as HTAXCOMBINATION,isnull(f.FPRICEUNITID,0) as HPRICEUNITID, |
| | | isnull(f.FTaxRate,0) as HTaxRate,isnull(f.FPRICECOEFFICIENT,0) as HPRICECOEFFICIENT, |
| | | isnull(f.FSYSPRICE,0) as HSYSPRICE,isnull(f.FLIMITDOWNPRICE,0) as HLIMITDOWNPRICE, |
| | | isnull(f.FDISCOUNTRATE,0) as HDISCOUNTRATE,case when f.FISFREE is null then 'false'when f.FISFREE = 1 then 'true' else 'false' end as HISFREE, |
| | | isnull(fin.FSETTLETYPEID,0) as HSETTLETYPEID,isnull(fin.FCHAGECONDITION,0) as HCHAGECONDITION, |
| | | isnull(fin.FSETTLECURRID,0) as HSETTLECURRID,isnull(fin.FLOCALCURRID,0) as HLOCALCURRID, |
| | | isnull(fin.FEXCHANGETYPEID,0) as HEXCHANGETYPEID,case when fin.FISINCLUDEDTAX is null then 'false'when fin.FISINCLUDEDTAX = 1 then 'true' else 'false' end as HISINCLUDEDTAX, |
| | | case when fin.FISPRICEEXCLUDETAX is null then 'false'when fin.FISPRICEEXCLUDETAX = 1 then 'true' else 'false' end as HISPRICEEXCLUDETAX,isnull(tax.FTAXRATEID,0) as HTAXRATEID, |
| | | isnull(tax.FTAXRATE,0) as HTaxRate_TAX,isnull(tax.FTAXAMOUNT,0) as HTAXAMOUNT_TAX, |
| | | isnull(tax.FCOSTPERCENT,0) as HCOSTPERCENT,isnull(tax.FCOSTAMOUNT,0) as HCOSTAMOUNT, |
| | | case when tax.FVAT is null then 'false'when tax.FVAT = 1 then 'true' else 'false' end as HVAT, |
| | | case when tax.FSELLERWITHHOLDING is null then 'false'when tax.FSELLERWITHHOLDING = 1 then 'true' else 'false' end as HSELLERWITHHOLDING, |
| | | case when tax.FBUYERWITHHOLDING is null then 'false'when tax.FBUYERWITHHOLDING = 1 then 'true' else 'false' end as HBUYERWITHHOLDING,a.FEXPUNIT as HEXPUNIT, |
| | | a.FEXPPERIOD as HEXPPERIOD,isnull(a.FPRODUCEDATE,'1900-01-01 00:00:00.000') as HProduceDate,isnull(a.FEXPIRYDATE,'1900-01-01 00:00:00.000') as HExpiryDate |
| | | from T_SAL_RETURNNOTICEENTRY a with(nolock) |
| | | inner join T_SAL_RETURNNOTICEENTRY_E e with(nolock) on a.FENTRYID=e.FENTRYID |
| | | left join T_SAL_RETURNNOTICEENTRY_F f with(nolock) on a.FID=f.FID and a.FENTRYID=f.FENTRYID |
| | | left join T_SAL_RETURNNOTICEENTRY_LK L with(nolock) on a.FENTRYID=L.FENTRYID |
| | | left join T_SAL_RETURNNOTICEFIN fin with(nolock) on a.FENTRYID=fin.FENTRYID |
| | | left join T_SAL_RETURNNOTICEENTRYTAX tax with(nolock) on a.FID=tax.FDETAILID and a.FENTRYID=tax.FENTRYID |
| | | where a.FID={id} |
| | | "; |
| | | LogService.Write("退货通知单:" + sql); |
| | | DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql); |
| | | DataTable maindt = ds.Tables[0]; |
| | | DataTable subdt = ds.Tables[1]; |
| | | if (maindt.Rows.Count == 0 || subdt.Rows.Count == 0) |
| | | { |
| | | LogService.Write("退货通知单同步异常:" + sql); |
| | | continue; |
| | | } |
| | | |
| | | //获取创建销售订单的使用组织 |
| | | DataTable dataTable = LogService.Get_DisPlayOrg(Context, maindt.Rows[0]["HOrganNumber"].ToString()); |
| | | if (dataTable.Rows.Count == 0) |
| | | continue; |
| | | |
| | | if (dataTable.Rows[0]["FISNEEDPUSH"].ToString() == "0") |
| | | continue; |
| | | |
| | | string http = dataTable.Rows[0]["F_RCZU_MesIp"].ToString(); |
| | | |
| | | 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("HENTRY", array); |
| | | JObject jsonRoot = new JObject() |
| | | { |
| | | ["model"] = model |
| | | }; |
| | | LogService.Write("退货通知单同步数据:" + model); |
| | | var client = new RestSharp.RestClient(http); |
| | | //新增 |
| | | var requestPost = new RestRequest("Xs_SeOutStockBackBill/SaveXs_SeOutStockBackBillApi", 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"] + "," + responsePost.ErrorMessage); |
| | | LogService.Write("销售订单同步异常,POST," + "Xs_SeOutStockBackBill/SaveXs_SeOutStockBackBillApi"); |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | 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_RealessSellOut : 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 id = billObj["Id"].ToString(); |
| | | LogService.Write("销售出库单同步id:" + id); |
| | | string sql = string.Empty; |
| | | sql = $@" |
| | | /*dialect*/ |
| | | select a.FID as HInterID,year(a.FDATE) as HYear,month(a.FDATE) as HPeriod,a.FBILLNO as HBillNo,'1205' as HBillType, |
| | | '1205' as HBillSubType,'' as HMainSourceBillType,a.FDATE as HDate,a.FCustomerID as HSupID,0 as HWHID, |
| | | 0 as HSCWHID,0 as HEmpID,0 as HManagerID,0 as HSecManagerID,isnull(a.FSTOCKERID, 0) as HKeeperID, |
| | | isnull(a.FDeliveryDeptID, 0) as HDeptID,0 as HCurID,'' as HSeOrderBillNo,'CLD导入' as HExplanation,'' as HRemark, |
| | | '' as HInnerBillNo,'false' as HRedBlueFlag,case when a.FAPPROVERID = 0 then 1 else 2 end as HBillStatus, |
| | | isnull(us1.FNAME, '') as HMaker,a.FCREATEDATE as HMakeDate,isnull(us2.FNAME, '') as HChecker, |
| | | a.FAPPROVEDATE as HCheckDate,isnull(us3.FNAME, '') as HUpDater,a.FMODIFYDATE as HUpDateDate, |
| | | isnull(us4.FNAME, '') as HDeleteMan,a.FCANCELDATE as HDeleteDate,isnull(a.FOWNERID, 0) as HOWNERID, |
| | | a.FOWNERTYPEID as HOWNERTYPEID,a.FID as HERPInterID,a.FBillTypeID as HERPBillType,a.FBILLNO as HERPBillNo, |
| | | isnull(FSALEORGID, 0) as HPRDORGID,isnull(a.FSTOCKORGID, 0) as HSTOCKORGID,o.FNUMBER HOrganNumber |
| | | from T_SAL_OUTSTOCK a with(nolock) |
| | | left join T_ORG_Organizations o with (nolock) on a.FSALEORGID = o.FORGID |
| | | left join T_SEC_user us1 with(nolock) on a.FCREATORID = us1.FUSERID |
| | | left join T_SEC_user us2 with(nolock) on a.FAPPROVERID = us2.FUSERID |
| | | left join T_SEC_user us3 with(nolock) on a.FMODIFIERID = us3.FUSERID |
| | | left join T_SEC_user us4 with(nolock) on a.FCANCELLERID = us4.FUSERID |
| | | where a.FID ={id} |
| | | select |
| | | a.FID as HInterID,a.FEntryID as HEntryID,a.FMTONO as HMTONo,0 as HPlanMode,'' as HRemark,'' as HExpressNumber, |
| | | a.FMATERIALID as HMaterID,isnull(a.FUNITID, 0) as HUnitID,a.FLOT_TEXT as HBatchNo,isnull(a.FAUXPROPID, 0) as HPropertyID, |
| | | isnull(a.FSTOCKID, 0) as HWHID,isnull(a.FSTOCKLOCID, 0) as HSPID,0 as HSCWHID,0 as HSCSPID, |
| | | a.FMustQty as HQtyMust,a.FRealQty as HQty,b.FPRICE as HPrice,b.FAMOUNT as HMoney,b.FPRICE as HTaxPrice,1 as HTaxRate, |
| | | b.FAMOUNT as HTaxMoney,c.FReturnQty as HRelationQty,0 as HRelationMoney,0 as HSourceInterID,0 as HSourceEntryID, |
| | | isnull(c.FSrcBillNo, '') as HSourceBillNo,'' as HSourceBillType,a.FID as HERPInterID,a.FEntryID as HERPEntryID, |
| | | '' as HERPBillNo_Sub,0 as HPOOrderInterID,0 as HPOOrderEntryID,'' as HPOOrderBillNo,0 as HSeOrderInterID, |
| | | isnull(c.FSOEntryId, 0) as HSeOrderEntryID,'' as HSeOrderBillNo,0 as HICMOInterID,0 as HICMOEntryID,'' as HICMOBillNo, |
| | | 0 as HWWOrderInterID,0 as HWWOrderEntryID,'' as HWWOrderBillNo,isnull(a.FPRODUCEDATE,'1900-01-01 00:00:00.000') as HProduceDate, |
| | | isnull(a.FEXPIRYDATE,'1900-01-01 00:00:00.000') as HExpiryDate,isnull(a.FOWNERID, 0) as HOWNERID,isnull(a.FOWNERTYPEID, '') as HOWNERTYPEID, |
| | | isnull(a.FKEEPERID, 0) as HKEEPERID,isnull(a.FKEEPERTYPEID, '') as HKEEPERTYPEID |
| | | from T_SAL_OUTSTOCKENTRY a with(nolock) |
| | | left join T_SAL_OUTSTOCKENTRY_F b with(nolock) on a.FID = b.FID and a.FENTRYID = b.FENTRYID |
| | | left join T_SAL_OUTSTOCKENTRY_R c with(nolock) on a.FID = c.FID and a.FENTRYID = c.FENTRYID |
| | | where a.FID = {id} |
| | | "; |
| | | LogService.Write("销售出库单:" + sql); |
| | | DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql); |
| | | DataTable maindt = ds.Tables[0]; |
| | | DataTable subdt = ds.Tables[1]; |
| | | if (maindt.Rows.Count == 0 || subdt.Rows.Count == 0) |
| | | { |
| | | LogService.Write("销售出库单同步异常:" + sql); |
| | | continue; |
| | | } |
| | | |
| | | //获取创建销售订单的使用组织 |
| | | DataTable dataTable = LogService.Get_DisPlayOrg(Context, maindt.Rows[0]["HOrganNumber"].ToString()); |
| | | if (dataTable.Rows.Count == 0) |
| | | continue; |
| | | |
| | | if (dataTable.Rows[0]["FISNEEDPUSH"].ToString() == "0") |
| | | continue; |
| | | |
| | | string http = dataTable.Rows[0]["F_RCZU_MesIp"].ToString(); |
| | | |
| | | 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("HENTRY", array); |
| | | JObject jsonRoot = new JObject() |
| | | { |
| | | ["model"] = model |
| | | }; |
| | | LogService.Write("销售出库单同步数据:" + model); |
| | | var client = new RestSharp.RestClient(http); |
| | | //新增 |
| | | var requestPost = new RestRequest("Kf_SellOutBill/SaveKf_SellOutBillApi", 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"] + "," + responsePost.ErrorMessage); |
| | | LogService.Write("销售订单同步异常,POST," + "Kf_SellOutBill/SaveKf_SellOutBillApi"); |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | 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_RealessWW_PPBomBill : 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"); |
| | | e.FieldKeys.Add("OrderEntity"); |
| | | e.FieldKeys.Add("OrderEntity_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; |
| | | LogService.Write("开始同步"); |
| | | var id = billObj["Id"].ToString(); |
| | | LogService.Write($"id为{id}"); |
| | | string sql = string.Empty; |
| | | sql = $@" |
| | | /*dialect*/ |
| | | select a.FID HInterID,a.FEntryID,a.FMATERIALID,a.FUnitID,a.FNEEDQTY,a.FNEEDQTY,isnull(C.FStockID,0),isnull(pl.FMEMO,'') |
| | | ,a.FSUBREQID HSourceInterID,a.FSUBREQENTRYID HSourceEntryID,isnull(a.FSUBREQBILLNO,'') HSourceBillNo,'' HSourceBillType |
| | | ,0 HICMOInterID,0 HICMOEntryID,'' HICMOBillNo |
| | | ,isnull(C.FCHILDSUPPLYORGID,0),isnull(C.FSUPPLYORG,0),isnull(C.FGROUPBYOWNERID,0),isnull(C.FSRCTRANSORGID,0),isnull(C.FGROUPBYOWNERID,0),isnull(C.FOWNERID,0),isnull(C.FOWNERTYPEID,'') |
| | | ,q.FSELPICKEDQTY-q.FSELPRCDRETURNQTY,q.FSELTRANSLATEQTY,isnull(a.FAUXPROPID,0),isnull(C.FLOT_TEXT,''),isnull(a.FMTONo,''),0,a.FID,a.FEntryID |
| | | ,q.FSELPICKEDQTY-q.FSELPRCDRETURNQTY |
| | | ,isnull(a.FPROCESSID,0),isnull(a.FBASEUNITID,0),isnull(a.FPROJECTNO,''),isnull(a.FOPERID,0),isnull(a.FSEQ,0) |
| | | ,isnull(c.FSTOCKSTATUSID,0),isnull(c.FRESERVETYPE,'') |
| | | from T_SUB_PPBOMEntry a with(nolock) |
| | | inner join T_SUB_PPBOMENTRY_C C with(nolock) on A.FENTRYID=C.FENTRYID |
| | | inner join T_SUB_PPBOMENTRY_Q Q with(nolock) on A.FENTRYID=Q.FENTRYID |
| | | left join T_SUB_PPBOMENTRY_L pl with(nolock) on pl.FENTRYID=a.FENTRYID and pl.FLOCALEID=2052 |
| | | left join T_SUB_PPBOMENTRY_LK l with(nolock) on a.FENTRYID=l.FENTRYID |
| | | where a.FID={id} |
| | | |
| | | |
| | | |
| | | |
| | | select a.FID HInterID,year(a.FCREATEDate),month(a.FCREATEDate),'1604','1604',a.FCREATEDate |
| | | ,a.FbillNo,case when isnull(a.FAPPROVERID,0)=0 then 1 else 2 end HBillStatus,a.FSUBREQID,a.FSUBREQENTRYID,isnull(a.FSUBBILLNO,''),a.FSUBREQENTRYSEQ |
| | | ,a.FMATERIALID,a.FUNITID,a.FQTY,isnull(a.FSUPPLIERID,0),0 HDEPTID |
| | | ,isnull(us1.FNAME,''),a.FCREATEDATE,isnull(us2.FNAME,''),a.FAPPROVEDATE,isnull(us3.FNAME,''),a.FMODIFYDATE |
| | | ,isnull(a.FSALEORDERNO,''),isnull(a.FSALEORDERID,0),isnull(a.FSALEORDERENTRYID,0),isnull(a.FSALEORDERENTRYSEQ,0) |
| | | ,a.FSUBORGID,a.FSUBORGID,isnull(a.FPARENTOWNERID,0),isnull(a.FPARENTOWNERTYPEID,'') |
| | | ,a.FID,'WWPPBOM' HERPBillType,isnull(a.FSETTLEORGID,0),isnull(a.FREQSRC,'') |
| | | from T_SUB_PPBOM a with(nolock) |
| | | left join T_SEC_user us1 with(nolock) on a.FCREATORID=us1.FUSERID |
| | | left join T_SEC_user us2 with(nolock) on a.FAPPROVERID=us2.FUSERID |
| | | left join T_SEC_user us3 with(nolock) on a.FMODIFIERID=us3.FUSERID |
| | | left join T_ORG_Organizations oo on oo.FORGID=a.FSUBORGID |
| | | where a.FID={id} |
| | | |
| | | select oo.FNUMBER from T_SUB_PPBOM a left join T_ORG_Organizations oo on oo.FORGID=a.FSUBORGID where a.FID={id} |
| | | "; |
| | | DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql); |
| | | DataTable maindt = ds.Tables[1]; |
| | | DataTable subdt = ds.Tables[0]; |
| | | DataTable ORgdt = ds.Tables[2]; |
| | | if (maindt.Rows.Count == 0 || subdt.Rows.Count == 0 ) |
| | | { |
| | | LogService.Write("委外用料清单同步异常:" + sql); |
| | | continue; |
| | | } |
| | | |
| | | //获取创建委外用料清单的使用组织 |
| | | DataTable dataTable = LogService.Get_DisPlayOrg(Context, ORgdt.Rows[0]["FNUMBER"].ToString()); |
| | | if (dataTable.Rows.Count == 0) |
| | | continue; |
| | | |
| | | if (dataTable.Rows[0]["FISNEEDPUSH"].ToString() == "0") |
| | | continue; |
| | | |
| | | string http = dataTable.Rows[0]["F_RCZU_MesIp"].ToString(); |
| | | |
| | | 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("HENTRY", array); |
| | | JObject jsonRoot = new JObject() |
| | | { |
| | | ["model"] = model |
| | | }; |
| | | |
| | | var client = new RestSharp.RestClient(http); |
| | | //新增 |
| | | var requestPost = new RestRequest("WW_PPBomBillController/SaveWW_PPBomBillApi", 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"] + "," + responsePost.ErrorMessage); |
| | | LogService.Write("委外用料清单同步异常,POST," + "WW_PPBomBillController/SaveWW_PPBomBillApi"); |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | <Compile Include="OperationService\zymes_RealessOperatorGroup.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessPurPrice.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessOperator.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessSeOutStockBack.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessSellOut.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessUnitConvertRate.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessPrdInStock.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessPrdReceive.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessPurInStock.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessWW_PPBomBill.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessEntrustOrderBill.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessRateType.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessDepartment.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessBom.cs" /> |
| | |
| | | <Compile Include="OperationService\zymes_RealessStock.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessCustomer.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessPaymentCondition.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessProperty.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessTaxMIX.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessTaxRate.cs" /> |
| | | <Compile Include="OperationService\zymes_RealessSupplier.cs" /> |