From c193724d73ee237baa16cf5fe5b95c0bf8e93760 Mon Sep 17 00:00:00 2001
From: llj <132905093+newwwwwwtree@users.noreply.github.com>
Date: 星期一, 20 十月 2025 09:08:38 +0800
Subject: [PATCH] 辅助属性,委外订单,委外用料清单

---
 zymes/OperationService/zymes_RealessWW_PPBomBill.cs     |  167 ++++++++++++++++++
 zymes/OperationService/zymes_RealessProperty.cs         |  146 ++++++++++++++++
 zymes/OperationService/zymes_RealessEntrustOrderBill.cs |  217 ++++++++++++++++++++++++
 zymes/zymes_Project.csproj                              |    3 
 4 files changed, 533 insertions(+), 0 deletions(-)

diff --git a/zymes/OperationService/zymes_RealessEntrustOrderBill.cs b/zymes/OperationService/zymes_RealessEntrustOrderBill.cs
new file mode 100644
index 0000000..cf82ec5
--- /dev/null
+++ b/zymes/OperationService/zymes_RealessEntrustOrderBill.cs
@@ -0,0 +1,217 @@
+锘縰sing 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);
+
+            //涓轰簡鍦˙eginOperationTransaction閲屾鏌ユ暟鎹姏鍑哄紓甯告椂
+            //鍙洖婊氬綋鍓嶅崟鎹殑浜嬪姟,杩欓噷璁剧疆涓轰笉鏀寔鎵归噺浜嬪姟,杩欐牱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;
+            }
+        }
+    }
+}
diff --git a/zymes/OperationService/zymes_RealessProperty.cs b/zymes/OperationService/zymes_RealessProperty.cs
new file mode 100644
index 0000000..2c97063
--- /dev/null
+++ b/zymes/OperationService/zymes_RealessProperty.cs
@@ -0,0 +1,146 @@
+锘縰sing 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);
+
+            //涓轰簡鍦˙eginOperationTransaction閲屾鏌ユ暟鎹姏鍑哄紓甯告椂
+            //鍙洖婊氬綋鍓嶅崟鎹殑浜嬪姟,杩欓噷璁剧疆涓轰笉鏀寔鎵归噺浜嬪姟,杩欐牱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鏉ヨ幏鍙朅PI鐨勮矾寰勫湴鍧�
+            //瀛愯〃鎻掑叆
+            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;
+            }
+        }
+    }
+}
diff --git a/zymes/OperationService/zymes_RealessWW_PPBomBill.cs b/zymes/OperationService/zymes_RealessWW_PPBomBill.cs
new file mode 100644
index 0000000..7d63b39
--- /dev/null
+++ b/zymes/OperationService/zymes_RealessWW_PPBomBill.cs
@@ -0,0 +1,167 @@
+锘縰sing 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);
+
+            //涓轰簡鍦˙eginOperationTransaction閲屾鏌ユ暟鎹姏鍑哄紓甯告椂
+            //鍙洖婊氬綋鍓嶅崟鎹殑浜嬪姟,杩欓噷璁剧疆涓轰笉鏀寔鎵归噺浜嬪姟,杩欐牱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;
+            }
+        }
+    }
+}
diff --git a/zymes/zymes_Project.csproj b/zymes/zymes_Project.csproj
index bba0347..0956075 100644
--- a/zymes/zymes_Project.csproj
+++ b/zymes/zymes_Project.csproj
@@ -128,7 +128,9 @@
     <Compile Include="LogService.cs" />
     <Compile Include="OperationService\zymes_MOCHANGE.cs" />
     <Compile Include="OperationService\zymes_RealessCurrency.cs" />
+    <Compile Include="OperationService\zymes_RealessWW_PPBomBill.cs" />
     <Compile Include="OperationService\zymes_RealessOperator.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" />
@@ -146,6 +148,7 @@
     <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" />

--
Gitblit v1.9.1