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_RealessSalOrder : 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 id = billObj["Id"].ToString(); |
| | | string sql = string.Empty; |
| | | sql = $@" |
| | | /*dialect*/ |
| | | 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, isnull(f.FTAXPRICE,0) as HTaxPrice, isnull(f.FDISCOUNTRATE,0) as HDiscountRate, |
| | | 0 as HRelTaxPrice, 0 as HMoney,isnull(f.FTAXRATE,0) as HTaxRate, 0 as HTaxMoney, 0 as HLineTotal, 0 as HlineTotalBB, |
| | | isnull(a.FPLANDELIVERYDATE,'') as HDate, a.FSTOCKBASEQTY as HOutStockQty, 0 as HInvoiceQty, a.FNOTE as HRemark, |
| | | isnull(R.FSRCBILLID,0) as HSourceInterID, isnull(LK.FSID,0) as HSourceEntryID, R.FSRCBILLNO as HSourceBillNo, |
| | | R.FSRCTYPE as HSourceBillType, isnull(a.FQty-R.FBASECANOUTQTY,0) as HRelationQty, 0 as HPropertyID, a.FLot_TEXT as HBatChNo, |
| | | a.FAUXPROPID as HAuxPropID, isnull(a.FMTONO,'') as HMTONo, a.FID as HERPInterID, a.FEntryID as HERPEntryID, |
| | | isnull(a.FQty-R.FBASECANRETURNQTY,0) as HBackRelationQty, isnull(a.FSOStockId,0) as HWhID,isnull(a.FSOStockLocalId,0) as HSPID, |
| | | a.FSTOCKORGID as HSTOCKORGID, a.FOWNERID as HOWNERID, a.FOWNERTYPEID as HOWNERTYPEID, isnull(a.FMAPID,'') as HMAPID, |
| | | a.FSTOCKUNITID as HSTOCKUNITID, a.FBASEUNITID as HBASEUNITID, a.FBFLOWID as HBFLOWID, isnull(f.FSETTLEORGID,0) as HSETTLEORGID, |
| | | isnull(f.FTAXCOMBINATION,0) as HTAXCOMBINATION, isnull(f.FPRICEUNITID,0) as HPRICEUNITID, isnull(f.FISFREE,0) as HISFREE, |
| | | isnull(f.FPRICECOEFFICIENT,0) as HPRICECOEFFICIENT, isnull(f.FSYSPRICE,0) as HSYSPRICE, isnull(f.FLIMITDOWNPRICE,0) as HLIMITDOWNPRICE, |
| | | isnull(e.FPARENTMATID,0) as HPARENTMATID, isnull(e.FROWTYPE,'') as HROWTYPE, isnull(e.FROWID,'') as HROWID, |
| | | isnull(e.FPARENTROWID,'') as HPARENTROWID, isnull(d.FDELIVERYCONTROL,0) as HDELIVERYCONTROL, isnull(fin.FLOCALCURRID,0) as HLOCALCURRID, |
| | | isnull(fin.FEXCHANGETYPEID,0) as HEXCHANGETYPEID, isnull(fin.FSETTLECURRID,0) as HSETTLECURRID, isnull(fin.FSETTLEMODEID,0) as HSETTLEMODEID, |
| | | isnull(fin.FRECCONDITIONID,0) as HRECCONDITIONID, isnull(fin.FISINCLUDEDTAX,0) as HISINCLUDEDTAX, isnull(fin.FISPRICEEXCLUDETAX,0) as HISPRICEEXCLUDETAX, |
| | | isnull(fin.FEXCHANGERATE,0) as HEXCHANGERATE, isnull(tax.FTAXRATEID,0) as HTAXRATEID, isnull(tax.FCOSTPERCENT,0) as HCOSTPERCENT, |
| | | isnull(tax.FVAT,0) as HVAT, isnull(tax.FSELLERWITHHOLDING,0) as HSELLERWITHHOLDING, |
| | | isnull(tax.FBUYERWITHHOLDING,0) as HBUYERWITHHOLDING, isnull(f.FPRICELISTENTRY,0) as HPRICELISTENTRY |
| | | from T_SAL_ORDERENTRY a with(nolock) |
| | | inner join T_SAL_ORDERENTRY_R R with(nolock) on a.FENTRYID=R.FENTRYID |
| | | left join T_SAL_ORDERENTRY_F f with(nolock) on a.FID=f.FID and a.FENTRYID=f.FENTRYID |
| | | left join T_SAL_ORDERENTRY_E e with(nolock) on a.FID=e.FID and a.FENTRYID=e.FENTRYID |
| | | left join T_SAL_ORDERENTRY_D d with(nolock) on a.FID=d.FID and a.FENTRYID=d.FENTRYID |
| | | left join T_SAL_ORDERENTRYTAX tax with(nolock) on a.FID=tax.FDETAILID and a.FENTRYID=tax.FENTRYID |
| | | left join T_SAL_ORDERFIN fin with(nolock) on a.FID=fin.FID |
| | | left join T_SAL_ORDERENTRY_LK LK with(nolock) on a.FENTRYID=LK.FENTRYID |
| | | Where a.FID={id} |
| | | select a.FID as HInterID, year(a.FDate) as HYear, month(a.FDate) as HPeriod, '1401' as HBillType, '1401' as HBillSubType, |
| | | a.FDate as HDate, a.FbillNo as HBillNo, case when isnull(a.FAPPROVERID,0)=0 then 1 else 2 end HBillStatus, |
| | | a.FRECEIVEADDRESS as HAddress, 0 as HSSID,a.FDATE as HSSDate, a.FCUSTID as HCusID, 0 as HCurID, 0 as HExRate, |
| | | a.FSALERID as HEmpID, 0 as HManagerID, isnull(a.FSALEDEPTID,0) as HDeptID, 'CLOUD导入' as HExplanation, a.FNOTE as HRemark, |
| | | ''as HInnerBillNo, a.FAPPROVERID as HChecker, a.FAPPROVEDATE as HCheckDate, a.FCREATORID as HMaker, a.FCREATEDATE as HMakeDate, |
| | | a.FCLOSERID as HCloseMan, a.FCLOSEDATE as HCloseDate, a.FID as HERPInterID, a.FBILLTYPEID as HERPBillType, a.FSALEORGID as HSALEORGID, |
| | | a.FSALEGROUPID as HSALEGROUPID, a.FRECEIVEID as HRECEIVEID, a.FSETTLEID as HSETTLEID, a.FCHARGEID as HCHARGEID, a.FHEADLOCID as HHEADLOCID, |
| | | a.FRECCONTACTID as HRECCONTACTID, isnull(a.FCORRESPONDORGID, 0) as HCORRESPONDORGID, a.FBUSINESSTYPE as HBUSINESSTYPE |
| | | from T_SAL_ORDER a with(nolock) |
| | | Where FID={id} |
| | | "; |
| | | DataSet ds = DBServiceHelper.ExecuteDataSet(Context, sql); |
| | | DataTable maindt = ds.Tables[1]; |
| | | DataTable subdt = ds.Tables[0]; |
| | | if (maindt.Rows.Count == 0 || subdt.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("HENTRY", 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://10.11.18.195:8080/simoerapi/"); |
| | | //新增 |
| | | var requestPost = new RestRequest("Xs_SeOrderBill/Xs_SeOrderBillSaveApi", 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_SeOrderBill/Xs_SeOrderBillSaveApi"); |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |