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_RealessSalSeOutStock : 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_RealessPurPoorder {billObj["Id"]} "; |
| | | var id = billObj["Id"].ToString(); |
| | | string sql = string.Empty; |
| | | sql = $@" |
| | | /*dialect*/ |
| | | select a.FID HInterID, a.FENTRYID HEntryID, a.FMATERIALID HMaterID, a.FUNITID HUnitID, |
| | | a.FQTY HQty, isnull(f.FPRICE,0) HPrice, isnull(f.FAMOUNT,0) HMoney, 0 HWHID, 0 HSPID, |
| | | a.FNOTE HRemark, 0 HSourceInterID, 0 HSourceEntryID, '' HSourceBillNo, '' HSourceBillType, |
| | | 0 HSeOrderInterID, 0 HSeOrderEntryID, '' HSeOrderBillNo, e.FOWNERID HOWNERID, e.FOWNERTYPEID HOWNERTYPEID, |
| | | fin.FSETTLEORGID HSETTLEORGID, a.FSUMOUTQTY HMoveStockQty, a.FJOINOUTQTY HRelationQty, a.FAUXPROPID HAuxPropID, |
| | | '' HBatchNO, a.FMTONO HMTONo, a.FID HERPInterID, a.FEntryID HERPEntryID, a.FCUSTMATID HCUSTMATID, |
| | | a.FBASEUNITID HBASEUNITID, a.FBFLOWID HBFLOWID, a.FOUTCONTROL HOUTCONTROL, 0 HSTOCKUNITID, |
| | | e.FROWID HROWTYPE, e.FROWID HROWID, e.FPARENTROWID HPARENTROWID, isnull(e.FPARENTMATID,0) HPARENTMATID, |
| | | isnull(f.FTAXCOMBINATION,0) HTAXCOMBINATION, isnull(f.FPRICECOEFFICIENT,0) HPRICECOEFFICIENT, isnull(f.FSYSPRICE,0) HSYSPRICE, |
| | | isnull(f.FLIMITDOWNPRICE,0) HLIMITDOWNPRICE, isnull(f.FPRICEUNITID,0) HPRICEUNITID, isnull(f.FTAXPRICE,0) HTAXPRICE, |
| | | isnull(f.FTAXRATE,0) HTAXRATE, isnull(f.FTAXNETPRICE,0) HTAXNETPRICE, isnull(f.FDISCOUNTRATE,0) HDISCOUNTRATE, |
| | | isnull(f.FISFREE,0) HISFREE, isnull(fin.FLOCALCURRID,0) HLOCALCURRID, isnull(fin.FSETTLECURRID,0) HSETTLECURRID, |
| | | isnull(fin.FEXCHANGETYPEID,0) HEXCHANGETYPEID, isnull(fin.FSETTLETYPEID,0) HSETTLETYPEID, isnull(fin.FRECEIPTCONDITIONID,0) HRECEIPTCONDITIONID, |
| | | isnull(fin.FEXCHANGERATE,0) HEXCHANGERATE, isnull(fin.FISINCLUDEDTAX,0) HISINCLUDEDTAX, isnull(fin.FISPRICEEXCLUDETAX,0) HISPRICEEXCLUDETAX, |
| | | isnull(tax.FTAXRATEID,0) HTAXRATEID, 0 HTaxRate_TAX, isnull(tax.FCOSTPERCENT,0) HCOSTPERCENT, isnull(tax.FVAT,0) HVAT, |
| | | isnull(tax.FSELLERWITHHOLDING,0) HSELLERWITHHOLDING, isnull(tax.FBUYERWITHHOLDING,0) HBUYERWITHHOLDING |
| | | from T_SAL_DELIVERYNOTICEENTRY a with(nolock) |
| | | left join T_SAL_DELIVERYNOTICEENTRY_F f with(nolock) on a.FENTRYID = f.FENTRYID |
| | | left join T_SAL_DELIVERYNOTICEENTRY_E e with(nolock) on a.FENTRYID = e.FENTRYID |
| | | left join T_SAL_DELIVERYNOTICEFIN fin with(nolock) on a.FENTRYID = fin.FENTRYID |
| | | left join T_SAL_DELIVERYNOTICEENTRYTAX tax with(nolock) on a.FENTRYID = tax.FENTRYID |
| | | Where a.FID={id} |
| | | select FID as HInterID, YEAR(FDATE) as HYear, MONTH(FDATE) as HPeriod, '1402' HBillType, '1402' HBillSubType, |
| | | FDATE as HDate, FBILLNO as HBillNo, case when FAPPROVERID=0 then 1 else 2 end HBillStatus, FCUSTOMERID as HCusID, |
| | | 0 HManagerID, FSALEDEPTID as HDeptID, 'CLOUD导入' as HRemark, FRECEIVEADDRESS as HAddress, 0 HSSID, 0 HCurID, |
| | | 0 HWHID, 0 HExRate, 0 HEmpID, 'CLOUD导入' as HExplanation, FBILLNO as HInnerBillNo, FSALEORGID as HSALEORGID, |
| | | FDELIVERYORGID as HDELIVERYORGID, FOWNERID as HOWNERID, FOWNERTYPEID as HOWNERTYPEID, FID as HERPInterID, |
| | | FBILLTYPEID as HERPBillType, FCREATORID as HMaker, FCREATEDATE as HMakeDate, FAPPROVERID as HChecker, |
| | | FAPPROVEDATE as HCheckDate, FCLOSERID as HCloseMan, FCLOSEDATE as HCloseDate, FSTOCKERGROUPID as HSTOCKERGROUPID, |
| | | FSALEGROUPID as HSALEGROUPID, FSALEDEPTID as HSALEDEPTID, FBUSINESSTYPE as HBUSINESSTYPE, FCARRIERID as HCARRIERID, |
| | | FRECEIVERID as HRECEIVERID, FSETTLEID as HSETTLEID, FPAYERID as HPAYERID,FHEADLOCID as HHEADLOCID, FRECCONTACTID as HRECCONTACTID, |
| | | FRECEIPTCONDITIONID as HRECEIPTCONDITIONID, FCORRESPONDORGID as HCORRESPONDORGID, FCARRIAGENO as HCARRIAGENO |
| | | from T_SAL_DELIVERYNOTICE 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(clientUrl); |
| | | //新增 |
| | | var requestPost = new RestRequest("Xs_SeOutStockBill/Xs_SeOutStockBillSaveApi", 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," + clientUrl + "Xs_SeOutStockBill/Xs_SeOutStockBillSaveApi"); |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |