From 067a984563d8247ff138f6257f31e25c44250bfb Mon Sep 17 00:00:00 2001
From: yxj <yxj@hz-kingdee.com>
Date: 星期五, 17 十月 2025 13:47:20 +0800
Subject: [PATCH] 领料出库扫描源单调用方法修改,增加通过WEBAPI同步金蝶云生产用料清单至本地数据库功能

---
 CLOUDWEB/WebService1.asmx.cs |  243 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 243 insertions(+), 0 deletions(-)

diff --git a/CLOUDWEB/WebService1.asmx.cs b/CLOUDWEB/WebService1.asmx.cs
index 88dc8a7..5474a85 100644
--- a/CLOUDWEB/WebService1.asmx.cs
+++ b/CLOUDWEB/WebService1.asmx.cs
@@ -822,6 +822,219 @@
 
         #endregion
 
+        #region 鐢熶骇鐢ㄦ枡娓呭崟鍚屾     鏍规嵁鍗曟嵁鍙峰悓姝�
+
+        [WebMethod]
+        public bool GetWebAPIToLocal_PPBom(string HBillNo, string HBillType, string HMaker, ref string sErrMsg)
+        {
+            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
+
+            //浠庨厤缃枃浠惰幏鍙� CLOUD缃戝潃銆佽处濂椾俊鎭�佺櫥褰曠敤鎴枫�佺櫥褰曞瘑鐮�
+            if (!Pub_Class.ClsPub.GetCLOUDLoginInfo(ref Pub_Class.ClsPub.sExeReturnInfo))
+            {
+                sErrMsg = Pub_Class.ClsPub.sExeReturnInfo;
+                return false;
+            }
+
+            //鑾峰彇CLOUD璐﹀彿瀵嗙爜
+            string HReturn;
+            string sCLOUDUseName = Pub_Class.ClsPub.sCLOUDUseName;
+            string sCLOUDPsd = Pub_Class.ClsPub.sCLOUDPsd;
+            string dbId = Pub_Class.ClsPub.sCLOUDAcc;
+            ApiClient client = new ApiClient(Pub_Class.ClsPub.sCLOUDUrl);
+            bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052);
+
+            if (bLogin)
+            {
+                //鏌ョ湅鍗曟嵁
+                string sJson = "{\"CreateOrgId\":0,\"Number\":\"" + HBillNo + "\"}";
+                var result = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.View",
+                new object[] { "PRD_PPBOM", sJson });
+                var _saveObj = JObject.Parse(result);
+
+                //鍒ゆ柇鏁版嵁鏄惁鑾峰彇鎴愬姛
+                if (_saveObj.SelectToken("Result.ResponseStatus.IsSuccess")?.ToString().ToUpper() != "TRUE")
+                {
+                    HReturn = result.ToString();
+                    //鍙嶅簭鍒楀寲json鏁版嵁
+                    var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn);
+                    //鎺ユ敹閲戣澏鎶ラ敊淇℃伅
+                    var strErrorMsg = string.Empty;
+                    //閬嶅巻鑾峰彇鎶ラ敊淇℃伅
+                    foreach (var item in retModel.Result.ResponseStatus.Errors)
+                    {
+                        strErrorMsg += item.Message + "\r\n";
+                    };
+                    sErrMsg = "鍚屾鍗曟嵁澶辫触锛�" + strErrorMsg;
+                    return false;
+                }
+                else
+                {
+                    //涓昏〃鏁版嵁璧嬪��
+                    var MainData = new
+                    {
+                        HInterID = _saveObj.SelectToken("Result.Result.Id")?.ToString() ?? "0",
+                        HYear = DateTime.Now.Year,
+                        HPeriod = DateTime.Now.Month,
+                        HBillType = HBillType,
+                        HBillSubType = HBillType,
+                        HDate = _saveObj.SelectToken("Result.Result.CreateDate")?.ToString(),
+                        HBillNo = _saveObj.SelectToken("Result.Result.BillNo")?.ToString() ?? "",
+                        HBillStatus = _saveObj.SelectToken("Result.Result.ApproverId_Id")?.ToString() == "0" ? 1 : 2,
+                        HICMOInterID = _saveObj.SelectToken("Result.Result.MoId")?.ToString() ?? "0",
+                        HICMOEntryID = _saveObj.SelectToken("Result.Result.MOEntryID")?.ToString() ?? "0",
+                        HMaterID = _saveObj.SelectToken("Result.Result.MaterialID_Id")?.ToString() ?? "0",
+                        HUnitID = _saveObj.SelectToken("Result.Result.UnitID_Id")?.ToString() ?? "0",
+                        HQty = _saveObj.SelectToken("Result.Result.Qty")?.ToString() ?? "0",
+                        HDeptID = _saveObj.SelectToken("Result.Result.WorkshopID_Id")?.ToString() ?? "0",
+                        HRemark = "WebAPI瀵煎叆",
+                        HMaker = _saveObj.SelectToken("Result.Result.CreatorId.Name")?.ToString() ?? "",
+                        HMakeDate = _saveObj.SelectToken("Result.Result.CreateDate")?.ToString(),
+                        HChecker = _saveObj.SelectToken("Result.Result.ApproverId.Name")?.ToString() ?? "",
+                        HCheckDate = _saveObj.SelectToken("Result.Result.ApproveDate")?.ToString(),
+                        HUpDater = _saveObj.SelectToken("Result.Result.ModifierId.Name")?.ToString() ?? "",
+                        HUpDateDate = _saveObj.SelectToken("Result.Result.ModifyDate")?.ToString(),
+                        HSeOrderBillNo = _saveObj.SelectToken("Result.Result.SALEORDERNO")?.ToString() ?? "",
+                        HSeOrderInterID = _saveObj.SelectToken("Result.Result.SaleOrderId")?.ToString() ?? "0",
+                        HSeOrderEntryID = _saveObj.SelectToken("Result.Result.SaleOrderEntryId")?.ToString() ?? "0",
+                        HPRDORGID = _saveObj.SelectToken("Result.Result.PrdOrgId_Id")?.ToString() ?? "0",
+                        HENTRUSTORGID = _saveObj.SelectToken("Result.Result.EntrustOrgId_Id")?.ToString() ?? "0",
+                        HPARENTOWNERID = _saveObj.SelectToken("Result.Result.ParentOwnerId_Id")?.ToString() ?? "0",
+                        HPARENTOWNERTYPEID = _saveObj.SelectToken("Result.Result.ParentOwnerTypeId")?.ToString() ?? "",
+                        HREQSRC = _saveObj.SelectToken("Result.Result.ReqSrc")?.ToString() ?? "",
+                        HERPInterID = _saveObj.SelectToken("Result.Result.Id")?.ToString() ?? "0",
+                        HERPBillType = "PPBOM",
+                        HSeOrderEntrySEQ = _saveObj.SelectToken("Result.Result.SaleOrderEntrySeq")?.ToString() ?? "0",
+                        HICMOEntrySEQ = _saveObj.SelectToken("Result.Result.MOEntrySeq")?.ToString() ?? "0",
+                    };
+
+                    //鏍规嵁鍗曟嵁ID锛屽垹闄ゆ湰鍦版暟鎹�
+                    oCn.RunProc("Delete from Sc_PPBomBillMain where HInterID=" + MainData.HInterID.ToString(), ref DBUtility.ClsPub.sExeReturnInfo);
+                    oCn.RunProc("Delete from Sc_PPBomBillSub where HInterID=" + MainData.HInterID.ToString(), ref DBUtility.ClsPub.sExeReturnInfo);
+
+                    //鎻掑叆涓昏〃
+                    oCn.RunProc("Insert Into Sc_PPBomBillMain " +
+                    "(HInterID,HYear,HPeriod,HBillType,HBillSubType,HDate" +
+                    ",HBillNo,HBillStatus,HICMOInterID,HICMOEntryID" +
+                    ",HMaterID,HUnitID,HQty,HDeptID,HRemark" +
+                    ",HMaker,HMakeDate,HChecker,HCheckDate" +
+                    ",HUpDater,HUpDateDate" +
+                    ",HSeOrderBillNo,HSeOrderInterID,HSeOrderEntryID" +
+                    ",HPRDORGID,HENTRUSTORGID,HPARENTOWNERID,HPARENTOWNERTYPEID,HREQSRC" +
+                    ",HERPInterID,HERPBillType,HSeOrderEntrySEQ,HICMOEntrySEQ" +
+                    ") " +
+                    " values(" + MainData.HInterID.ToString() + "," + MainData.HYear.ToString() + "," + MainData.HPeriod.ToString() + ",'" + MainData.HBillType + "','" + MainData.HBillSubType + "','" + MainData.HDate + "'" +
+                    ",'" + MainData.HBillNo + "'," + MainData.HBillStatus.ToString() + "," + MainData.HICMOInterID.ToString() + "," + MainData.HICMOEntryID.ToString() +
+                    ", " + MainData.HMaterID.ToString() + "," + MainData.HUnitID.ToString() + "," + MainData.HQty.ToString() + "," + MainData.HDeptID.ToString() + ",'" + MainData.HRemark + "'" +
+                    ",'" + MainData.HMaker + "','" + MainData.HMakeDate + "','" + MainData.HChecker + "'," + (MainData.HCheckDate == "" ? "NULL" : "'" + MainData.HCheckDate + "'") +
+                    ",'" + MainData.HUpDater + "'," + (MainData.HUpDateDate == "" ? "NULL" : "'" + MainData.HUpDateDate + "'") +
+                    ",'" + MainData.HSeOrderBillNo + "'," + MainData.HSeOrderInterID.ToString() + "," + MainData.HSeOrderEntryID.ToString() +
+                    ", " + MainData.HPRDORGID.ToString() + "," + MainData.HENTRUSTORGID.ToString() + "," + MainData.HPARENTOWNERID.ToString() + ",'" + MainData.HPARENTOWNERTYPEID + "','" + MainData.HREQSRC + "'" +
+                    ", " + MainData.HERPInterID.ToString() + ",'" + MainData.HERPBillType + "'," + MainData.HSeOrderEntrySEQ.ToString() + "," + MainData.HICMOEntrySEQ.ToString() +
+                    ") ");
+
+                    //瀛愯〃鏁版嵁璧嬪��
+                    var dataArr = _saveObj.SelectToken("Result.Result.PPBomEntry") as JArray;
+
+                    if (dataArr != null)
+                    {
+                        foreach (var oSub in dataArr)
+                        {
+                            var SubData = new
+                            {
+                                HInterID = _saveObj.SelectToken("Result.Result.Id")?.ToString() ?? "0",
+                                HEntryID = oSub.SelectToken("Id")?.ToString() ?? "0",
+                                HMaterID = oSub.SelectToken("MaterialID_Id")?.ToString() ?? "0",
+                                HUnitID = oSub.SelectToken("UnitID_Id")?.ToString() ?? "0",
+                                HQty = oSub.SelectToken("NeedQty")?.ToString() ?? "0",
+                                HQtyMust = oSub.SelectToken("NeedQty")?.ToString() ?? "0",
+                                HWHID = oSub.SelectToken("StockID_Id")?.ToString() ?? "0",
+                                HSCWhID = oSub.SelectToken("SrcTransStockId_Id")?.ToString() ?? "0",
+                                HRemark = "",
+                                HSourceInterID = oSub.SelectToken("MoId")?.ToString() ?? "0",
+                                HSourceEntryID = oSub.SelectToken("MoEntryId")?.ToString() ?? "0",
+                                HSourceBillNo = oSub.SelectToken("MoBillNo")?.ToString() ?? "",
+                                HSourceBillType = "3710",
+                                HICMOInterID = oSub.SelectToken("MoId")?.ToString() ?? "0",
+                                HICMOEntryID = oSub.SelectToken("MoEntryId")?.ToString() ?? "0",
+                                HICMOBillNo = oSub.SelectToken("MoBillNo")?.ToString() ?? "",
+                                HCHILDSUPPLYORGID = oSub.SelectToken("ChildSupplyOrgId_Id")?.ToString() ?? "0",
+                                HSUPPLYORGID = oSub.SelectToken("SupplyOrg_Id")?.ToString() ?? "0",
+                                HENTRUSTPICKORGID = oSub.SelectToken("EntrustPickOrgId_Id")?.ToString() ?? "0",
+                                HSRCTRANSORGID = oSub.SelectToken("SrcTransOrgId_Id")?.ToString() ?? "0",
+                                HGROUPBYOWNERID = oSub.SelectToken("GroupByOwnerId_Id")?.ToString() ?? "0",
+                                HOWNERID = oSub.SelectToken("OwnerID_Id")?.ToString() ?? "0",
+                                HOWNERTYPEID = oSub.SelectToken("OwnerTypeId")?.ToString() ?? "",
+                                //HRelationQty = HRelationQty1-HRelationQty2
+                                HRelationQty1 = decimal.TryParse(oSub.SelectToken("SelPickedQty")?.ToString(), out var p) ? p : 0,
+                                HRelationQty2 = decimal.TryParse(oSub.SelectToken("SelPrcdReturnQty")?.ToString(), out var r) ? r : 0,
+                                HMoveStockQty = oSub.SelectToken("SelTranslateQty")?.ToString() ?? "0",
+                                HAuxPropID = oSub.SelectToken("AuxPropID_Id")?.ToString() ?? "0",
+                                HBatchNO = oSub.SelectToken("Lot_Text")?.ToString() ?? "",
+                                HMTONo = oSub.SelectToken("MTONO")?.ToString() ?? "",
+                                //HQtyScrap = HQtyScrap1/HQtyScrap2
+                                HQtyScrap1 = decimal.TryParse(oSub.SelectToken("BaseNumerator")?.ToString(), out var n) ? n : 0,
+                                HQtyScrap2 = decimal.TryParse(oSub.SelectToken("BaseDenominator")?.ToString(), out var d) ? d : 0,
+                                HERPInterID = _saveObj.SelectToken("Result.Result.Id")?.ToString() ?? "0",
+                                HERPEntryID = oSub.SelectToken("Id")?.ToString() ?? "0",
+                                HBackRelationQty = oSub.SelectToken("WipQty")?.ToString() ?? "0",
+                                HNumerator = oSub.SelectToken("Numerator")?.ToString() ?? "0",
+                                HDenominator = oSub.SelectToken("Denominator")?.ToString() ?? "0",
+                                HBASEUNITID = oSub.SelectToken("BaseUnitID_Id")?.ToString() ?? "0",
+                                HProcessID = oSub.SelectToken("ProcessID_Id")?.ToString() ?? "0",
+                                HPROCESSNumber = oSub.SelectToken("ProcessID.Number")?.ToString() ?? "",
+                                HICMOENTRYSEQ = oSub.SelectToken("MoEntrySeq")?.ToString() ?? "0",
+                                HPROJECTNO = oSub.SelectToken("ProjectNO")?.ToString() ?? "",
+                                HOPERID = oSub.SelectToken("OperID")?.ToString() ?? "0",
+                                HSEQ = oSub.SelectToken("Seq")?.ToString() ?? "0",
+                                HSTOCKSTATUSID = oSub.SelectToken("StockStatusId_Id")?.ToString() ?? "0",
+                                HSTOCKSTATUSNumber = oSub.SelectToken("StockStatusId.Number")?.ToString() ?? "",
+                                HLOT = oSub.SelectToken("Lot_Id")?.ToString() ?? "0",
+                                HOPTQUEUE = oSub.SelectToken("OptQueue")?.ToString() ?? "0",
+                                HRESERVETYPE = oSub.SelectToken("ReserveType")?.ToString().ToUpper() == "1" ? 1 : 0,
+                                HSelPickedQty = oSub.SelectToken("SelPickedQty")?.ToString() ?? "0",
+                                HSELPRCDRETURNQTY = oSub.SelectToken("SelPrcdReturnQty")?.ToString() ?? "0",
+                                HKeyMaterID_Line = oSub.SelectToken("IsKeyComponent")?.ToString().ToUpper() == "TRUE" ? 1 : 0,
+                                HBOMID = oSub.SelectToken("BOMID_Id")?.ToString() ?? "0",
+                                HBomNumber = oSub.SelectToken("BOMID.Number")?.ToString() ?? "",
+                            };
+
+                            //鎻掑叆瀛愯〃
+                            oCn.RunProc("Insert Into Sc_PPBomBillSub " +
+                            "(HInterID,HEntryID,HMaterID,HUnitID,HQty,HQtyMust" +
+                            ",HWHID,HSCWhID,HAuxPropID,HBatchNO,HMTONo,HRemark" +
+                            ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HICMOInterID,HICMOEntryID,HICMOBillNo" +
+                            ",HRelationQty,HMoveStockQty,HBackRelationQty,HQtyScrap" +
+                            ",HBOMID,HBomNumber,HNumerator,HDenominator,HERPInterID,HERPEntryID" +
+                            ",HCHILDSUPPLYORGID,HSUPPLYORGID,HENTRUSTPICKORGID,HSRCTRANSORGID,HGROUPBYOWNERID" +
+                            ",HOWNERID,HOWNERTYPEID,HBASEUNITID,HProcessID,HPROCESSNumber,HICMOENTRYSEQ" +
+                            ",HPROJECTNO,HOPERID,HSEQ,HSTOCKSTATUSID,HSTOCKSTATUSNumber,HLOT" +
+                            ",HOPTQUEUE,HRESERVETYPE,HSelPickedQty,HSELPRCDRETURNQTY,HKeyMaterID_Line" +
+                            ") " +
+                            " values(" + SubData.HInterID.ToString() + "," + SubData.HEntryID.ToString() + "," + SubData.HMaterID.ToString() + "," + SubData.HUnitID.ToString() + "," + SubData.HQty.ToString() + "," + SubData.HQtyMust.ToString() +
+                            ", " + SubData.HWHID.ToString() + "," + SubData.HSCWhID.ToString() + "," + SubData.HAuxPropID.ToString() + ",'" + SubData.HBatchNO + "','" + SubData.HMTONo + "','" + SubData.HRemark + "'" +
+                            ", " + SubData.HSourceInterID.ToString() + "," + SubData.HSourceEntryID.ToString() + ",'" + SubData.HSourceBillNo + "','" + SubData.HSourceBillType + "'," + SubData.HICMOInterID.ToString() + "," + SubData.HICMOEntryID.ToString() + ",'" + SubData.HICMOBillNo.ToString() + "'" +
+                            ", " + (SubData.HRelationQty1 - SubData.HRelationQty2).ToString() + "," + SubData.HMoveStockQty.ToString() + "," + SubData.HBackRelationQty.ToString() + "," + (SubData.HQtyScrap2 != 0 ? SubData.HQtyScrap1/SubData.HQtyScrap2 : 1).ToString() +
+                            ", " + SubData.HBOMID.ToString() + ",'" + SubData.HBomNumber + "'," + SubData.HNumerator.ToString() + "," + SubData.HDenominator.ToString() + "," + SubData.HERPInterID.ToString() + "," + SubData.HERPEntryID.ToString() +
+                            ", " + SubData.HCHILDSUPPLYORGID.ToString() + "," + SubData.HSUPPLYORGID.ToString() + "," + SubData.HENTRUSTPICKORGID.ToString() + "," + SubData.HSRCTRANSORGID.ToString() + "," + SubData.HGROUPBYOWNERID.ToString() +
+                            ", " + SubData.HOWNERID.ToString() + ",'" + SubData.HOWNERTYPEID + "'," + SubData.HBASEUNITID.ToString() + "," + SubData.HProcessID.ToString() + ",'" + SubData.HPROCESSNumber + "'," + SubData.HICMOENTRYSEQ.ToString() +
+                            ",'" + SubData.HPROJECTNO + "'," + SubData.HOPERID.ToString() + "," + SubData.HSEQ.ToString() + "," + SubData.HSTOCKSTATUSID.ToString() + ",'" + SubData.HSTOCKSTATUSNumber + "'," + SubData.HLOT.ToString() +
+                            ", " + SubData.HOPTQUEUE.ToString() + "," + DBUtility.ClsPub.BoolToString(SubData.HRESERVETYPE) + "," + SubData.HSelPickedQty.ToString() + "," + SubData.HSELPRCDRETURNQTY.ToString() + "," + DBUtility.ClsPub.BoolToString(SubData.HKeyMaterID_Line) +
+                            ") ");
+                        }
+                    }
+                    return true;
+                }
+            }
+            else
+            {
+                sErrMsg = "鍚屾鍗曟嵁澶辫触锛侀噾铦朵簯鐧诲綍澶辫触锛�";
+                return false;
+            }
+        }
+
+        #endregion
+
         #region 閲囪喘鍏ュ簱鍗曞悓姝�     鏍规嵁鍗曟嵁鍙峰悓姝�
 
         [WebMethod]
@@ -56378,6 +56591,7 @@
             SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
             Model.ClsKf_ICStockBill_WMS oBar = new Model.ClsKf_ICStockBill_WMS();
             Int64 sMulSourceFlag = 0;   //澶氭簮鍗曟爣蹇楋紙0涓洪潪澶氭簮鍗曟ā寮忥紝1涓哄婧愬崟妯″紡锛�
+            Int64 sHSourceFlag = 1;     //鏄惁閲嶆柊鍚屾婧愬崟淇℃伅锛�1涓哄悓姝ワ紝0涓轰笉鍚屾锛�
 
             //鑾峰彇绯荤粺鍙傛暟
             Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
@@ -56390,6 +56604,35 @@
             if (oSystemParameter.omodel.Kf_MateOutBill_MulSourceBill.ToUpper() == "Y") //绯荤粺鍙傛暟  鐢熶骇棰嗘枡鍗�-澶氭簮鍗曟ā寮�
             {
                 sMulSourceFlag = 1;
+
+                //鍒ゆ柇婧愬崟鏄惁宸插瓨鍦ㄧ紦瀛樺垪琛ㄤ腑
+                DataSet dsSource = oCn.RunProcReturn(" select 1 from KF_PonderationBillMain_Temp with(nolock) where HInterID= " + HInterID.ToString() + " and HBillType= '" + HBillType + "' and HSourceBillNo= '" + HSourceBillNo + "' and HQtyMust<>0 ", "KF_PonderationBillMain_Temp");
+                if (dsSource == null || dsSource.Tables[0].Rows.Count == 0)
+                {
+                    sHSourceFlag = 1;
+                }
+                else
+                {
+                    sHSourceFlag = 0;
+                }
+            }
+
+            //閲嶆柊鍚屾婧愬崟淇℃伅
+            if (sHSourceFlag == 1)
+            {
+                if (oSystemParameter.omodel.WMS_CloudMode.ToUpper() == "N") //绯荤粺鍙傛暟  鏄惁涓虹鏈変簯妯″紡(N涓哄叕鏈変簯妯″紡锛孻涓虹鏈変簯妯″紡)
+                {
+                    if (HSourceBillType == "3720")
+                    {
+                        //鐢熶骇鐢ㄦ枡娓呭崟
+                        GetWebAPIToLocal_PPBom(HSourceBillNo, HSourceBillType, HMaker, ref sErrMsg);
+                    }
+                }
+                else
+                {
+                    //绉佹湁浜戞ā寮�
+                    oCn.RunProc("exec h_p_WMS_ERPSourceBillToLocal '" + HSourceBillNo + "','" + HSourceBillType + "'");
+                }
             }
 
             //灏嗘簮鍗曚俊鎭瓨鍏ユ潯鐮佸嚭鍏ュ簱涓存椂琛�

--
Gitblit v1.9.1