zgq
2021-02-23 5135080c72fb70c98af17d5e27dcf6e9bbfe54e2
WebAPI/Controllers/MoveStockBillController.cs
@@ -44,7 +44,7 @@
        public DataSet ds = new DataSet();
        public ClsGy_BarCodeBill_WMS_Model_View oView = new ClsGy_BarCodeBill_WMS_Model_View();
        public ClsKF_PonderationBillMain_Temp model = new ClsKF_PonderationBillMain_Temp();
        private JsonResult objJsonResult = new JsonResult();
        public JsonResult objJsonResult = new JsonResult();
        private json objjson = new json();
        /// <summary>
@@ -100,9 +100,184 @@
        /// <param name="SCWhID"></param>
        /// <param name="SCSPID"></param>
        /// <returns></returns>
        //[Route("MoveStockBill/get_InfoByBarCode_Source_Json")]
        //[HttpGet]
        //public object get_InfoByBarCode_Source_Json(string sCode, Int64 sInterID, string sBillNo, Double sQty, Int64 HWHID, Int64 HSPID, Int64 SCWhID, Int64 SCSPID)
        //{
        //    try
        //    {
        //        WebS.ClsKF_PonderationBillMain_Temp model = new WebS.ClsKF_PonderationBillMain_Temp();
        //        string sErrMsg = "";
        //        bool sBool = false;
        //        double sRelQty = 0;
        //        oView = webserver.get_InfoByBarCode_Source(sCode, sInterID, ref sBool, ref DBUtility.ClsPub.sErrInfo);
        //        if (oView == null)
        //        {
        //            objJsonResult.code = "0";
        //            objJsonResult.count = 0;
        //            objJsonResult.Message = "单据号:" + sBillNo + ",单据ID:" + sInterID + ";" + DBUtility.ClsPub.sErrInfo;
        //            objJsonResult.data = null;
        //            return objJsonResult;
        //        }
        //        if (oView.HBarCodeType == "唯一条码" && sQty > 0 && oView.HQty < sQty)
        //        {
        //            sRelQty = oView.HQty;
        //        }
        //        else if (sQty > 0)
        //        {
        //            sRelQty = sQty;
        //        }
        //        else
        //        {
        //            sRelQty = oView.HQty;
        //        }
        //        model.HInterID = DBUtility.ClsPub.isLong(sInterID);
        //        model.HBillNo = DBUtility.ClsPub.isStrNull(sBillNo);
        //        model.HBillType = this.HBillType;
        //        model.HMaker = DBUtility.ClsPub.CurUserName;
        //        //
        //        model.HMaterID = oView.HMaterID;
        //        model.HAuxPropID = oView.HAuxPropID;
        //        model.HErpClsID = oView.HErpClsID;
        //        model.HQty = oView.HQty;
        //        model.HQtyMust = oView.HinitQty;
        //        model.HBarCode = oView.HBarCode;
        //        model.HBatchNo = oView.HBatchNo;
        //        model.HMTONo = oView.HMTONo;
        //        model.HWhID = DBUtility.ClsPub.isLong(HWHID);
        //        model.HStockPlaceID = DBUtility.ClsPub.isLong(HSPID);
        //        model.HSCWHID = SCWhID;
        //        model.HOutStockPlaceID = SCSPID;
        //        //model.HVDAPack = txtHVDAPack2.Text.Trim();
        //        //model.HVDAMaterNum = txtHVDAMaterID.Text.Trim();
        //        //model.HVDAQty = DBUtility.ClsPub.ObjToDouble(txtHVDAQty.Text.Trim());
        //        //
        //        model.HSourceInterID = oView.HSourceInterID;
        //        model.HSourceEntryID = oView.HSourceEntryID;
        //        model.HSourceBillNo = oView.HSourceBillNo;
        //        model.HSourceBillType = oView.HSourceBillType;
        //        model.HRedBlueFlag = false;
        //        model.HPieceQty = 1;
        //        //model.HSTOCKORGID = DBUtility.ClsPub.HORGANIZATIONSID;
        //        //model.HOWNERID = DBUtility.ClsPub.HORGANIZATIONSID;
        //        WebS.WebService1 oWebs = new WebS.WebService1();
        //        //if (webserver.set_SavePonderationBillMain_Temp_Qty(model, sQty, ref DBUtility.ClsPub.sErrInfo))
        //        bool flag = oWebs.Get_CheckQtyByBarCode_GetWhAndSP(model.HInterID, model.HBillType, model.HBarCode, ref SCWhID, ref SCSPID, sRelQty, ref sRelQty);
        //        if (flag)
        //        {
        //            sQty = sRelQty;
        //        }
        //        else if(sRelQty == 0)
        //        {
        //            objJsonResult.code = "0";
        //            objJsonResult.count = 0;
        //            objJsonResult.Message = "无库存!";
        //            objJsonResult.data = null;
        //            return objJsonResult;
        //        }
        //        else
        //        {
        //            sQty = sRelQty;
        //        }
        //        if (oWebs.set_SavePonderationBillMain_Temp_Qty(model, sQty, ref DBUtility.ClsPub.sErrInfo))
        //        {
        //            objJsonResult.code = "0";
        //            objJsonResult.count = 1;
        //            objJsonResult.Message = "扫码成功!";
        //            objJsonResult.data = null;
        //            return objJsonResult;
        //        }
        //        else
        //        {
        //            objJsonResult.code = "0";
        //            objJsonResult.count = 0;
        //            objJsonResult.Message = "扫码失败!" + DBUtility.ClsPub.sErrInfo;
        //            objJsonResult.data = null;
        //            return objJsonResult;
        //        }
        //    }
        //    catch (Exception)
        //    {
        //        throw;
        //    }
        //}
        /// <summary>
        /// 调拨单/扫条码
        /// </summary>
        /// <param name="sCode"></param>
        /// <param name="sInterID"></param>
        /// <param name="sBillNo"></param>
        /// <param name="sQty"></param>
        /// <param name="HWHID"></param>
        /// <param name="HSPID"></param>
        /// <param name="SCWhID"></param>
        /// <param name="SCSPID"></param>
        /// <returns></returns>
        [Route("MoveStockBill/get_InfoByBarCode_Source_Json")]
        [HttpGet]
        public object get_InfoByBarCode_Source_Json(string sCode, Int64 sInterID, string sBillNo, Double sQty, Int64 HWHID, Int64 HSPID, Int64 SCWhID, Int64 SCSPID)
        {
            try
            {
                DAL.ClsGy_BarCodeBill_View dal = new DAL.ClsGy_BarCodeBill_View();
                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                dal.GetInfoByNumber_View(sCode);
                if (dal.omodel_View.HBarCodeType != "托盘条码")
                {
                    return get_InfoByBarCode_Source_Json_s(sCode, sInterID, sBillNo, sQty, HWHID, HSPID, SCWhID, SCSPID);
                }
                else
                {
                    //如果是雅琪诺则托盘条码分解并模拟扫码
                    //分解托条码得到明细条码信息写入出入库条码临时表
                    DataSet dsTBarCode;
                    string sBarCode_MX;
                    dsTBarCode = oCn.RunProcReturn("select b.HBarCode HBarCodeMX from Sc_PackUnionBillMain a  " +
                    " inner join Sc_PackUnionBillSub b on a.HInterID = b.HInterID " +
                    " Where a.HBarCode_Pack = '" + sCode + "'", "Sc_PackUnionBillMain");
                    if (dsTBarCode == null || dsTBarCode.Tables[0].Rows.Count == 0)
                    {
                        //sErrMsg = "没有找到托盘条码!";
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "扫码失败!没有找到托盘条码!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    else
                    {
                        for (int i = 0; i < dsTBarCode.Tables[0].Rows.Count; i++)
                        {
                            sBarCode_MX = DBUtility.ClsPub.isStrNull(dsTBarCode.Tables[0].Rows[i]["HBarCodeMX"]);
                            objJsonResult= (JsonResult)get_InfoByBarCode_Source_Json_s(sBarCode_MX, sInterID, sBillNo, sQty, HWHID, HSPID, SCWhID, SCSPID);
                            if(objJsonResult.code == "0")
                            {
                                return objJsonResult;
                            }
                        }
                        return objJsonResult;
                    }
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "扫码失败!" + DBUtility.ClsPub.isStrNull(e);
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        public object get_InfoByBarCode_Source_Json_s(string sCode, Int64 sInterID, string sBillNo, Double sQty, Int64 HWHID, Int64 HSPID, Int64 SCWhID, Int64 SCSPID)
        {
            try
            {
@@ -110,26 +285,28 @@
                string sErrMsg = "";
                bool sBool = false;
                double sRelQty = 0;
                double sRelQty2 = 0;
                oView = webserver.get_InfoByBarCode_Source(sCode, sInterID, ref sBool, ref DBUtility.ClsPub.sErrInfo);
                if (oView == null)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "单据号:" + sBillNo + ",单据ID:" + sInterID + ";" + DBUtility.ClsPub.sErrInfo;
                    objJsonResult.Message = "1-单据号:" + sBillNo + ",单据ID:" + sInterID + ";" + DBUtility.ClsPub.sErrInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (oView.HBarCodeType == "唯一条码" && sQty > 0 && oView.HQty < sQty)
                {
                    sRelQty = oView.HQty;
                    sRelQty2 = oView.HQty;
                }
                else if (sQty > 0)
                {
                    sRelQty = sQty;
                    sRelQty2 = sQty;
                }
                else
                {
                    sRelQty = oView.HQty;
                    sRelQty2 = oView.HQty;
                }
                model.HInterID = DBUtility.ClsPub.isLong(sInterID);
@@ -145,6 +322,9 @@
                model.HBarCode = oView.HBarCode;
                model.HBatchNo = oView.HBatchNo;
                model.HMTONo = oView.HMTONo;
                //model.HWhID = oView.HWHID;
                //model.HStockPlaceID = oView.HSPID;
                model.HWhID = DBUtility.ClsPub.isLong(HWHID);
                model.HStockPlaceID = DBUtility.ClsPub.isLong(HSPID);
@@ -165,29 +345,28 @@
                WebS.WebService1 oWebs = new WebS.WebService1();
                //if (webserver.set_SavePonderationBillMain_Temp_Qty(model, sQty, ref DBUtility.ClsPub.sErrInfo))
                bool flag = oWebs.Get_CheckQtyByBarCode_GetWhAndSP(model.HInterID, model.HBillType, model.HBarCode, ref SCWhID, ref SCSPID, sRelQty, ref sRelQty);
                if (flag)
                objJsonResult = CheckQtyByBarCode_Json(model.HInterID, model.HBillType, model.HBarCode, ref SCWhID, ref SCSPID, sRelQty2, ref sRelQty);
                if (objJsonResult.count == 1)
                {
                    sQty = sRelQty;
                    model.HSCWHID = SCWhID;
                    model.HOutStockPlaceID = SCSPID;
                }
                else if(sRelQty == 0)
                else if (objJsonResult.count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无库存!";
                    objJsonResult.Message = "2-无库存!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    sQty = sRelQty;
                }
                if (oWebs.set_SavePonderationBillMain_Temp_Qty(model, sQty, ref DBUtility.ClsPub.sErrInfo))
                {
                    objJsonResult.code = "0";
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "扫码成功!";
                    objJsonResult.Message = "3-扫码成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -195,18 +374,102 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "扫码失败!" + DBUtility.ClsPub.sErrInfo;
                    objJsonResult.data = null;
                    objJsonResult.Message = "4-扫码失败!" + DBUtility.ClsPub.sErrInfo;
                    objJsonResult.data = model.HBarCode;
                    return objJsonResult;
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        //根据条码 数量 判断条码库存 是否充足 并且带出 仓库仓位
        public JsonResult CheckQtyByBarCode_Json(long InterID, string sBillType, string sBarCode, ref long HWHID, ref long HSPID, double sQty, ref double sRelQty)
        {
            DataSet DS;
            DataSet DSErp;
            try
            {
                //单条码,一张单据一条条码(凯波)
                //DS = oCn.RunProcReturn("exec h_p_KF_ICInventory_WMS_GetWHAndSP_Single " + InterID.ToString() + ",'" + sBillType + "','" + sBarCode + "'," + HWHID.ToString() + "," + HSPID.ToString(), "h_p_KF_ICInventory_WMS_GetWHAndSP_Single", ref DBUtility.ClsPub.sExeReturnInfo);
                //判断条码库存
                DS = new SQLHelper.ClsCN().RunProcReturn("exec h_p_KF_ICInventory_WMS_GetWHAndSP " + InterID.ToString() + ",'" + sBillType + "','" + sBarCode + "'," + HWHID.ToString() + "," + HSPID.ToString(), "h_p_KF_ICInventory_WMS_GetWHAndSP", ref DBUtility.ClsPub.sExeReturnInfo);
                if (DS.Tables[0].Rows.Count == 0)
                {
                    sRelQty = 0;
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "4-扫码失败!";
                    objJsonResult.data = DS;
                    return objJsonResult;
                }
                else
                {
                    double sKFQty = 0;
                    double sKFQtyErp = 0;
                    sKFQty = DBUtility.ClsPub.isDoule(DS.Tables[0].Rows[0]["HKFQty"]);
                    HWHID = DBUtility.ClsPub.isLong(DS.Tables[0].Rows[0]["HWhID"]);
                    HSPID = DBUtility.ClsPub.isLong(DS.Tables[0].Rows[0]["HSPID"]);
                    //直接返回999
                    DSErp = new SQLHelper.ClsCN().RunProcReturn("exec h_p_IF_ICInventory_WMS_GetWHAndSP " + InterID.ToString() + ",'" + sBillType + "','" + sBarCode + "'," + HWHID.ToString() + "," + HSPID.ToString(), "h_p_IF_ICInventory_WMS_GetWHAndSP", ref DBUtility.ClsPub.sExeReturnInfo);
                    if (DSErp.Tables[0].Rows.Count == 0)
                    {
                        sRelQty = 0;//不会走
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "4-扫码失败!";
                        objJsonResult.data = DS;
                        return objJsonResult;
                    }
                    sKFQtyErp = DBUtility.ClsPub.isDoule(DSErp.Tables[0].Rows[0]["HKFQty"]);//9999
                    if (sQty > sKFQty && sQty > sKFQtyErp) //当库存小于标签数量时 取库存数量
                    {
                        sRelQty = sKFQtyErp;
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "4-扫码失败!";
                        objJsonResult.data = DS;
                        return objJsonResult;
                    }
                    else if (sQty > sKFQty && sQty < sKFQtyErp)  //当库存小于标签数量时 取库存数量
                    {
                        sRelQty = sKFQty;
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "4-扫码失败!";
                        objJsonResult.data = DS;
                        return objJsonResult;
                    }
                    else if (sQty < sKFQty && sQty > sKFQtyErp)//无效
                    {
                        sRelQty = sKFQtyErp;
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "4-扫码失败!";
                        objJsonResult.data = DS;
                        return objJsonResult;
                    }
                    else
                    {
                        sRelQty = sQty;
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "4-扫码失败!";
                        objJsonResult.data = DS;
                        return objJsonResult;
                    }
                }
            }
            catch (Exception e)
            {
                sRelQty = 0;
                throw (e);
            }
        }
        /// <summary>
        /// 生成调拨单
        /// </summary>