WebAPI/Controllers/Éú²ú¹ÜÀí/Éú²úÈÎÎñµ¥/Sc_ICMOBillController.cs
@@ -23,6 +23,9 @@
        SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
        DataSet ds;
        //获取系统参数
        Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
        #region ç”Ÿäº§ä»»åŠ¡å• ä¿å­˜/编辑功能
        [Route("Sc_ICMOBill/ICMOBillEdit")]
        [HttpPost]
@@ -1080,5 +1083,331 @@
        #endregion
        #region [同步单据]
        [Route("Sc_ICMOBill/Sc_ICMOBillViewApi")]
        [HttpGet]
        public json Sc_ICMOBillViewApi(string BillNo, string BillType)
        {
            string sql = string.Empty;
            string sReturn = "";
            if (oSystemParameter.ShowBill(ref sReturn) == true)
            {
                //系统参数是否为私有云模式,N为公有云模式,Y为私有云模式
                if (oSystemParameter.omodel.WMS_CloudMode == "Y")
                {
                    #region [私有云模式,直接调用数据库存储过程更新]
                    try
                    {
                        oCN.BeginTran();
                        SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                        DataSet DS = oCn.RunProcReturn("exec h_p_WMS_ERPSourceBillToLocal '" + BillNo + "','" + BillType + "'", "h_p_WMS_ERPSourceBillToLocal");
                        if (DS == null)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "单据同步失败";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        else
                        {
                            if (DBUtility.ClsPub.isStrNull(DS.Tables[0].Rows[0]["HBack"]) == "2")
                            {
                                objJsonResult.code = "0";
                                objJsonResult.count = 0;
                                objJsonResult.Message = "ERP中不存在该单据号";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
                            else
                            {
                                objJsonResult.code = "1";
                                objJsonResult.count = 1;
                                objJsonResult.Message = "单据同步成功";
                                objJsonResult.data = null;
                                return objJsonResult;
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "Exception!" + e.ToString();
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    #endregion
                }
                else
                {
                    #region [公有云模式,调用WEBAPI的方式进行更新]
                    var json = new
                    {
                        CreateOrgId = 0,
                        Number = BillNo,
                        Id = ""
                    };
                    #region [金蝶部分]
                    //登录金蝶
                    var loginRet = InvokeHelper.Login();
                    var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                    //判断是否登录成功
                    if (isSuccess < 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = loginRet;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    //查看 èŽ·å–æ•°æ®
                    var _result = InvokeHelper.View("PRD_MO", JsonConvert.SerializeObject(json));
                    var _saveObj = JObject.Parse(_result);
                    //判断数据是否获取成功
                    if (_saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "金蝶收料通知单同步失败jsonRoot:" + _result;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    #endregion
                    //获取主表数据
                    DataSet Ds;
                    Int64 InterID = 0;
                    Ds = oCN.RunProcReturn("select * from Sc_ICMOBillMain where HBillNo = '" + BillNo + "'", "Sc_ICMOBillMain");
                    if (Ds.Tables[0].Rows.Count != 0 && ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"].ToString()) != 0)
                    {
                        InterID = ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"].ToString());
                    }
                    #region [主表数据赋值]
                    var jsonData = new
                    {
                        HInterID = _saveObj["Result"]["Result"]["Id"],
                        HYear = DateTime.Now.Year,
                        HPeriod = DateTime.Now.Month,
                        HBillType = 3710,
                        HDate = _saveObj["Result"]["Result"]["Date"],
                        HBillNo = _saveObj["Result"]["Result"]["BillNo"],
                        HBillStatus = _saveObj["Result"]["Result"]["ApproverId_Id"].ToString() == Convert.ToString(0) ? 1 : 2,
                        HEMPID = 0,
                        HRoutingInterID = 0,
                        HPlanQty = 1,
                        HRelationQty = 0,
                        HPlanBeginDate = _saveObj["Result"]["Result"]["Date"],
                        HPlanEndDate = DateTime.Now.ToString(),
                        HBeginDate = _saveObj["Result"]["Result"]["Date"],
                        HEndDate = DateTime.Now.ToString(),
                        HMaterID = 0,
                        HUnitID = 0,
                        HBomID = 0,
                        HBatchNo = "",
                        HSourceInterID = 0,
                        HSourceEntryID = 0,
                        HSourceBillNo = "",
                        HSourceBillType = "",
                        HSeOrderInterID = 0,
                        HSeOrderEntryID = 0,
                        HSeOrderBillNo = "",
                        HPRDORGID = _saveObj["Result"]["Result"]["PrdOrgId_Id"],
                        HENTRUSTORGID = _saveObj["Result"]["Result"]["ENTrustOrgId_Id"],
                        HOWNERID = _saveObj["Result"]["Result"]["OwnerId_Id"],
                        HOWNERTYPEID = _saveObj["Result"]["Result"]["OwnerTypeId"],
                        HCusID = 0,
                        HDeptID = _saveObj["Result"]["Result"]["WorkShopID_Id"].ToString() == null ? 0 : _saveObj["Result"]["Result"]["WorkShopID_Id"],
                        HRemark = "CLOUD导入",
                        HMTONo = "",
                        HERPInterID = _saveObj["Result"]["Result"]["Id"],
                        HERPBillType = _saveObj["Result"]["Result"]["BillType_Id"],
                        HMaker = _saveObj["Result"]["Result"]["CreatorId"]["Name"],
                        HMakeDate = _saveObj["Result"]["Result"]["CreateDate"],
                        HChecker = _saveObj["Result"]["Result"]["ApproverId"]["Name"],
                        HCheckDate = _saveObj["Result"]["Result"]["ApproveDate"],
                        HBillSubType = _saveObj["Result"]["Result"]["IsRework"] = true ? 1 : 0,
                        HISENTRUST = _saveObj["Result"]["Result"]["IsEntrust"],
                        HISREWORK = _saveObj["Result"]["Result"]["IsRework"]
                    };
                    #endregion
                    // åˆ é™¤ä¸»è¡¨å¯¹åº”数据
                    sql = $"delete from Sc_ICMOBillMain where HInterID = " + InterID;
                    oCN.RunProc(sql);
                    //插入主表
                    sql = $@"
                insert into Sc_ICMOBillMain
                (HInterID,HYear,HPeriod,HBillType,HDate
               ,HBillNo,HBillStatus,HEMPID,HRoutingInterID
               ,HPlanQty,HRelationQty,HPlanBeginDate,HPlanEndDate,HBeginDate,HEndDate
               ,HMaterID,HUnitID,HBomID,HBatchNo
               ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo
               ,HPRDORGID,HENTRUSTORGID,HOWNERID,HOWNERTYPEID
               ,HCusID,HDeptID,HRemark,HMTONo,HERPInterID,HERPBillType
               ,HMaker,HMakeDate,HChecker,HCheckDate
               ,HBillSubType,HISENTRUST,HISREWORK
                 )
                values
                ({jsonData.HInterID},{jsonData.HYear},{jsonData.HPeriod},{jsonData.HBillType},'{jsonData.HDate}','{jsonData.HBillNo}',
                {jsonData.HBillStatus},{jsonData.HEMPID},{jsonData.HRoutingInterID},{jsonData.HPlanQty},{jsonData.HRelationQty},
                '{jsonData.HPlanBeginDate}', '{jsonData.HPlanEndDate}','{jsonData.HBeginDate}','{jsonData.HEndDate}',{jsonData.HMaterID},
                {jsonData.HUnitID},{jsonData.HBomID},'{jsonData.HBatchNo}',{jsonData.HSourceInterID},{jsonData.HSourceEntryID},
                '{jsonData.HSourceBillNo}','{jsonData.HSourceBillType}',{jsonData.HSeOrderInterID}, {jsonData.HSeOrderEntryID},'{jsonData.HSeOrderBillNo}',
                {jsonData.HPRDORGID},{jsonData.HENTRUSTORGID},{jsonData.HOWNERID},'{jsonData.HOWNERTYPEID}',{jsonData.HCusID},{jsonData.HDeptID},
                '{jsonData.HRemark}','{jsonData.HMTONo}',{jsonData.HERPInterID},'{jsonData.HERPBillType}','{jsonData.HMaker}','{jsonData.HMakeDate}',
                '{jsonData.HChecker}','{jsonData.HCheckDate}','{jsonData.HBillSubType}','{jsonData.HISENTRUST}','{jsonData.HISREWORK}')";
                    oCN.RunProc(sql);
                    #region [申请子表变量]
                    var dataArr = _saveObj["Result"]["Result"]["TreeEntity"];
                    DataSet Cs;
                    double RelationQty = 0;
                    #endregion
                    int i = 0;
                    // èŽ·å–å­è¡¨æ•°æ®
                    Cs = oCN.RunProcReturn("select * from Sc_ICMOBillSub where HInterID = " + InterID, "Sc_ICMOBillSub");
                    // åˆ é™¤å­è¡¨å¯¹åº”数据
                    sql = $"delete from Sc_ICMOBillSub where HInterID = " + InterID;
                    oCN.RunProc(sql);
                    foreach (var oSub in dataArr)
                    {
                        #region [子表数据赋值]
                        if (Cs.Tables[0].Rows.Count != 0 && ClsPub.isLong(Cs.Tables[0].Rows[0]["HInterID"].ToString()) != 0)
                        {
                            RelationQty = ClsPub.isDoule(Cs.Tables[0].Rows[i]["HRelationQty"].ToString());
                            i++;
                        }
                        var subData = new
                        {
                            HInterID = _saveObj["Result"]["Result"]["Id"],
                            HENTRYID = oSub["Id"],
                            HSEQ = oSub["Seq"],
                            HQty = oSub["Qty"],
                            HQTYMUST = oSub["Qty"],
                            HRelationQty = RelationQty,
                            HRelationMoney = 0,
                            HPlanBeginDate = oSub["IdPlanStartDate"],
                            HPlanEndDate = oSub["PlanFinishDate"],
                            HBeginDate = oSub["StartDate"],
                            HEndDate = oSub["FinishDate"],
                            HBomID = oSub["BomId_Id"],
                            HRemark = "CLOUD导入",
                            HMaterID = oSub["MaterialId_Id"],
                            HUnitID = oSub["UnitId_Id"],
                            HWHID = oSub["StockId_Id"],
                            HSPID = oSub["StockLocId_Id"],
                            HPROCID = oSub["ProcessId_Id"],
                            HDEPTID = oSub["WorkShopID_Id"],
                            HBatchNo = oSub["Lot_Text"],
                            HSourceInterID = oSub["SrcBillId"],
                            HSourceEntryID = oSub["SrcBillEntryId"],
                            HSourceBillNo = oSub["SrcBillNo"],
                            HSourceBillType = oSub["SrcBillType"],
                            HSeOrderInterID = oSub["SaleOrderId"],
                            HSeOrderEntryID = oSub["SaleOrderEntryId"],
                            HSeOrderBillNo = oSub["SaleOrderNo"],
                            HSTOCKINORGID = oSub["StockInOrgId_Id"],
                            HINSTOCKOWNERID = oSub["InStockOwnerId_Id"],
                            HINSTOCKOWNERTYPEID = oSub["InStockOwnerTypeId"],
                            HREQUESTORGID = oSub["RequestOrgId_Id"],
                            HPlanMode = 0,
                            HMTONo = oSub["MTONo"],
                            HERPInterID = _saveObj["Result"]["Result"]["Id"],
                            HERPEntryID = oSub["Id"],
                            HSTATUS = oSub["Status"],
                            HEntryCusID = 0,
                            HICMOReportRelationQty = oSub["RepQuaSelAuxQty"],
                            HAuxPropID = oSub["AuxPropId_Id"],
                            HProdMaterCode = "",
                            HCusShortName = "",
                            HCusNeedMaterial = "",
                            HPlanSendGoodsDate = "",
                            HProdMaterName = "",
                            HWorkRemark = "",
                            HImportNote = "",
                            HCusName = "",
                            HInstockQty_Max = 0,
                            HInstockQty_Min = 0,
                            HPickLabel = "",
                            HPickLabelNumber = oSub["StockInLimitH"],
                            HCusNumber = oSub["StockInLimitL"],
                            HINSTOCKTYPE = oSub["InStockType"],
                            HCHECKPRODUCT = oSub["CheckProduct"],
                            HQAIP = oSub["QAIP"],
                            HISBACKFLUSH = oSub["ISBACKFLUSH"],
                            HREQSRC = oSub["ReqSrc"],
                            HSTOCKINQUASELAUXQTY = oSub["StockInQuaSelAuxQty"],
                            HSeOrderEntrySEQ = oSub["SaleOrderEntrySeq"],
                            HPROJECTNO = oSub["ProjectNo"],
                            HPRODUCTTYPE = oSub["ProductType"],
                            HCOSTRATE = oSub["CostRate"],
                            HBASEUNITID = oSub["BaseUnitId_Id"],
                        };
                        #endregion
                        //插入子表
                        sql = $@"
                 insert into Sc_ICMOBillSub
                 (HInterID,HENTRYID,HSEQ,HQty,HQTYMUST,HRelationQty,HRelationMoney
               ,HPlanBeginDate,HPlanEndDate,HBeginDate,HEndDate,HBomID,HRemark
               ,HMaterID,HUnitID,HWHID,HSPID,HPROCID,HDEPTID,HBatchNo
               ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType
               ,HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo
               ,HSTOCKINORGID,HINSTOCKOWNERID,HINSTOCKOWNERTYPEID,HREQUESTORGID
               ,HPlanMode,HMTONo,HERPInterID,HERPEntryID,HSTATUS
               ,HEntryCusID,HICMOReportRelationQty,HAuxPropID,HProdMaterCode,HCusShortName
               ,HCusNeedMaterial,HPlanSendGoodsDate,HProdMaterName,HWorkRemark,HImportNote,HCusName
               ,HInstockQty_Max,HInstockQty_Min,HPickLabel,HPickLabelNumber,HCusNumber
               ,HINSTOCKTYPE,HCHECKPRODUCT,HQAIP,HISBACKFLUSH,HREQSRC,HSTOCKINQUASELAUXQTY
               ,HSeOrderEntrySEQ,HPROJECTNO,HPRODUCTTYPE,HCOSTRATE,HBASEUNITID
                 )
                 values
                 ({subData.HInterID},{subData.HENTRYID},{subData.HSEQ},{subData.HQty},{subData.HQTYMUST},{subData.HRelationQty},
                  {subData.HRelationMoney},'{subData.HPlanBeginDate}','{subData.HPlanEndDate}','{subData.HBeginDate}','{subData.HEndDate}',{subData.HBomID},
                  '{subData.HRemark}',{subData.HMaterID},{subData.HUnitID},{subData.HWHID},{subData.HSPID},{subData.HPROCID},{subData.HDEPTID},
                  '{subData.HBatchNo}',{subData.HSourceInterID},{subData.HSourceEntryID},'{subData.HSourceBillNo}','{subData.HSourceBillType}',
                  {subData.HSeOrderInterID},{subData.HSeOrderEntryID},'{subData.HSeOrderBillNo}',{subData.HSTOCKINORGID},{subData.HINSTOCKOWNERID},
                  '{subData.HINSTOCKOWNERTYPEID}',{subData.HREQUESTORGID},'{subData.HPlanMode}','{subData.HMTONo}',{subData.HERPInterID},
                  {subData.HERPEntryID},{subData.HSTATUS},{subData.HEntryCusID},{subData.HICMOReportRelationQty},{subData.HAuxPropID},
                  '{subData.HProdMaterCode}','{subData.HCusShortName}','{subData.HCusNeedMaterial}','{subData.HPlanSendGoodsDate}',
                  '{subData.HProdMaterName}','{subData.HWorkRemark}','{subData.HImportNote}','{subData.HCusName}',{subData.HInstockQty_Max},
                  {subData.HInstockQty_Min},'{subData.HPickLabel}',{subData.HPickLabelNumber},{subData.HCusNumber},'{subData.HINSTOCKTYPE}',
                  '{subData.HCHECKPRODUCT}','{subData.HQAIP}','{subData.HISBACKFLUSH}','{subData.HREQSRC}',{subData.HSTOCKINQUASELAUXQTY},
                  {subData.HSeOrderEntrySEQ},'{subData.HPROJECTNO}','{subData.HPRODUCTTYPE}',{subData.HCOSTRATE},{subData.HBASEUNITID})";
                        oCN.RunProc(sql);
                    }
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "单据同步成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                    #endregion
                }
            }
            else
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "单据读取失败!";
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
    }
}