yusijie
2023-03-14 9d0ae4deafa3564e70a2b84251a98c78bb065491
销售订单
1个文件已添加
1个文件已修改
160 ■■■■■ 已修改文件
zymes/OperationService/zymes_RealessSalOrder.cs 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/zymes_Project.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zymes/OperationService/zymes_RealessSalOrder.cs
New file
@@ -0,0 +1,159 @@
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;
            }
        }
    }
}
zymes/zymes_Project.csproj
@@ -137,6 +137,7 @@
    <Compile Include="OperationService\zymes_RealessPrdPpbom.cs" />
    <Compile Include="OperationService\zymes_RealessBillType.cs" />
    <Compile Include="OperationService\zymes_RealessMatePriceSup.cs" />
    <Compile Include="OperationService\zymes_RealessSalOrder.cs" />
    <Compile Include="OperationService\zymes_RealessSalSeOutStock.cs" />
    <Compile Include="OperationService\zymes_RealessSettleStyle.cs" />
    <Compile Include="OperationService\zymes_RealessRecCondition.cs" />