1
yusijie
2023-05-25 c14d65aa45f6fe0eedd558bc0de345a0ccd6e22a
WebAPI/Controllers/SCGL/Sc_ComplementGoodBillController.cs
@@ -99,12 +99,14 @@
            public long HSouceInterID = 0;//HSourceInterIDCol
            public long HSourceEntryID = 0;//HSourceEntryIDCol
            public int? 叫料数量 = 0;//HBHGQtyCol
            public int? 配套数量 = 0;
            public int? 已叫料数量 = 0;//HBHGQtyCol
            public int? 已配送数量 = 0;//HBHGQtyCol
            public double? 退料数量 = 0;//退料数量
            public long HSTOCKID = 0;//HSTOCKID
            public string 退料原因 { get; set; }//退料原因
            public int HMaterialID = 0; //HMaterialIDCol
            public string 物料代码 = "";
            public string HSourceBillNo { get; set; }//HSourceBillNoCol
            public int 调出仓库可用库存数量 = 0;//HKFQtyKYCol
            public int 调出仓库库存数量 = 0;//HKFQtySCol
@@ -188,29 +190,69 @@
                {
                    if (listCa[i].HMaterialID != 0 && listCa[i].叫料数量 > 0)
                    {
                        var Hqty = 0.0;
                        var TuiHqty = 0.0;
                        //当前单据已叫料 和 已退料数量
                        ds = oCN.RunProcReturn($@"
                                               select isnull(a.HQty,0) 已叫料数量,isnull(b.HQty,0) 已退料申请数量 from (
                                                select sum(b.HQty) HQty,c.HNumber ,b.HSourceBillNo
                                                from JIT_CallGoodsBillMain a
                                                join JIT_CallGoodsBillSub b on a.HInterID=b.HInterID
                                                left join Gy_Material c on b.HMaterID=c.HItemID
                                                where b.HSourceBillNo='{listCa[i].HSourceBillNo}'
                                                group by c.HNumber,b.HSourceBillNo
                                                ) a
                                                left join (
                                                select sum(b.HQty) HQty,c.HNumber,b.HSourceBillNo
                                                from JIT_CallGoodsBackRequestBillMain a
                                                inner join JIT_CallGoodsBackRequestBillSub b on a.HInterID=b.HInterID
                                                left join Gy_Material c on b.HMaterID=c.HItemID
                                                where b.HSourceBillNo='{listCa[i].HSourceBillNo}'
                                                group by c.HNumber,b.HSourceBillNo
                                                ) b  on a.HNumber=b.HNumber and a.HSourceBillNo=b.HSourceBillNo where a.HNumber='{listCa[i].物料代码}'", "JIT_CallGoodsBillMain");
                        if (ds.Tables[0].Rows.Count > 0)
                        {
                            Hqty = double.Parse(ds.Tables[0].Rows[0]["已叫料数量"].ToString());
                            TuiHqty = double.Parse(ds.Tables[0].Rows[0]["已退料申请数量"].ToString());
                        }
                        if (listCa[i].叫料数量 > listCa[i].计划发料数量)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "叫料数量大于计划发料数量!";
                            objJsonResult.Message = $"第{(i + 1)}行叫料数量大于计划发料数量!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        if (listCa[i].库存数量 == 0 && listCa[i].叫料数量 > 0)
                        if((listCa[i].叫料数量 + Hqty - TuiHqty)> listCa[i].计划发料数量)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "库存数量为0,无法叫料!";
                            objJsonResult.Message = $"第{(i + 1)}行叫料总数量大于计划发料数量!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        if (listCa[i].叫料数量 > listCa[i].库存数量)
                        ds = oCN.RunProcReturn("select * from h_v_JIT_WarehouseList where 仓库ID=" + listCa[i].调出仓库id + "  and  物料编码 = '" + listCa[i].物料代码 + "' and 库存组织=" + listCa[i].HOutOrgID, "h_v_JIT_WarehouseList");
                        var HSCWHIDCount= double.Parse(ds.Tables[0].Rows[0]["调出仓库可用库存数量"].ToString());
                        if (HSCWHIDCount == 0 && listCa[i].叫料数量 > 0)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "库存数量小于叫料数量,无法叫料!";
                            objJsonResult.Message = $"第{(i + 1)}行库存数量为0,无法叫料!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        if (listCa[i].叫料数量 > HSCWHIDCount)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = $"第{(i + 1)}行库存数量小于叫料数量,无法叫料!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -219,7 +261,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "请选择调入仓库!";
                            objJsonResult.Message = $"第{(i + 1)}行请选择调入仓库!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -228,7 +270,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "请选择调出仓库!";
                            objJsonResult.Message = $"第{(i + 1)}行请选择调出仓库!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -237,19 +279,10 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "调出仓库和调入仓库不能一样!";
                            objJsonResult.Message = $"第{(i + 1)}行调出仓库和调入仓库不能一样!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        //if (listCa[i].调出仓库可用库存数量 == 0)
                        //{
                        //    objJsonResult.code = "0";
                        //    objJsonResult.count = 0;
                        //    objJsonResult.Message = "调出仓库可用库存数量为0!";
                        //    objJsonResult.data = null;
                        //    return objJsonResult;
                        //}
                        j = 1;
@@ -304,7 +337,7 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = $"第{txt}行叫料失败,重新叫料,其他行数叫料成功";
                    objJsonResult.Message = $"第{txt}行叫料失败,重新叫料";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -386,6 +419,7 @@
            catch (Exception e)
            {
                sReturn = e.Message;
                oCN.RollBack();
                throw (e);
            }
        }
@@ -401,7 +435,7 @@
            string msg2 = sArray[0].ToString();
            DBUtility.ClsPub.CurUserName = sArray[1].ToString();
            string HOrgID = sArray[2].ToString();
            bool flag = false;
            json flag =new json();
            try
            {
@@ -425,47 +459,17 @@
                {
                    if (listCa[i].退料数量 > 0)
                    {
                        if (listCa[i].退料数量 > listCa[i].已配送数量&& listCa[i].已配送数量>0)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "退料数量大于已配送数量!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        ds = oCN.RunProcReturn("select isnull(sum(d.HQty),0) HQty from JIT_CallGoodsBackRequestBillSub c inner join JIT_CallGoodsBackBillSub d on c.HInterID = d.HSourceInterID and c.HEntryID = d.HSourceEntryID and c.HMaterID = d.HMaterID " +
                   $"where c.HSourceInterID={listCa[i].HSouceInterID} and c.HSourceEntryID ={listCa[i].HSourceEntryID} and c.HSourceBillNo = '{listCa[i].HSourceBillNo}' and c.HMaterID={listCa[i].HMaterialID}", "JIT_CallGoodsBackRequestBillSub");
                        if ((double.Parse(ds.Tables[0].Rows[0][0].ToString()==""?"0": ds.Tables[0].Rows[0][0].ToString()) +listCa[i].退料数量) > listCa[i].已叫料数量)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = $"已经退料数量:{double.Parse(ds.Tables[0].Rows[0][0].ToString())},可退料数量为:{(listCa[i].已叫料数量 - double.Parse(ds.Tables[0].Rows[0][0].ToString()))}!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        if (listCa[i].调入仓库id == 0)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "请选择调入仓库!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        if (listCa[i].调出仓库id == 0)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "请选择调出仓库!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        flag = AddICStockTuiBill(listCa[i], "666601", "不良品退料", HOrgID, ref DBUtility.ClsPub.sExeReturnInfo);
                        flag = (json)AddICStockTuiBill(listCa[i], "666601", "不良品退料", HOrgID);
                        j = 1;
                        if (flag.code == "0")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = objJsonResult.Message;
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                }
                if (j == 0)
@@ -477,22 +481,11 @@
                    return objJsonResult;
                }
                if (flag)
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "不良品退料成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "不良品退料失败!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "不良品退料成功!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
@@ -505,10 +498,62 @@
        }
        //新增
        public bool AddICStockTuiBill(CallGoodsBill listCa,string HBillType,string HBackType,string HOrgID, ref string sReturn)
        public object AddICStockTuiBill(CallGoodsBill listCa,string HBillType,string HBackType,string HOrgID)
        {
            try
            {
                if (listCa.退料数量 > listCa.已配送数量 && listCa.已配送数量 > 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "退料数量大于已配送数量!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (listCa.调入仓库id == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "请选择调入仓库!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                if (listCa.调出仓库id == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "请选择调出仓库!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                var THqty = 0.0;
                ds = oCN.RunProcReturn($@"
                                    select sum(b.HQty) HQty,c.HNumber,b.HSourceBillNo
                                    from JIT_CallGoodsBackRequestBillMain a
                                    inner join JIT_CallGoodsBackRequestBillSub b on a.HInterID=b.HInterID
                                    left join Gy_Material c on b.HMaterID=c.HItemID
                                    where c.HNumber='{listCa.物料代码}' and b.HSourceBillNo='{listCa.HSourceBillNo}'
                                    group by c.HNumber,b.HSourceBillNo
                                  ", "JIT_CallGoodsBackRequestBillMain");
                if (ds.Tables[0].Rows.Count > 0)
                {
                    THqty = double.Parse(ds.Tables[0].Rows[0]["HQty"].ToString());
                }
                if ((listCa.退料数量 + THqty) > listCa.已配送数量)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "累计退料数量大于已配送数量!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                Int64 lngBillKey = listCa.HSouceInterID == 0 ? 0 : listCa.HSouceInterID;
                Int64 lngBillKeyEntry = listCa.HSourceEntryID == 0 ? 0 : listCa.HSourceEntryID;
                double HQty = (double)(listCa.退料数量 == 0 ? 0 : listCa.退料数量);
@@ -534,13 +579,17 @@
                       $" '{HBillType}','{DateTime.Now}','{HBillNo}',{HOrgID},'{ DBUtility.ClsPub.CurUserName}','{DateTime.Now}','','',0,0,0,''," +
                       $" 0, 0, {listCa.HOutOrgID}, {HOrgID}, 0,'{HBackType}')");
                 
                sReturn = "新增单据成功!";
                oCN.Commit();
                return true;
                objJsonResult.code = "1";
                objJsonResult.Message = "新增单据成功!";
                return objJsonResult;
            }
            catch (Exception e)
            {
                sReturn = e.Message;
                objJsonResult.code = "0";
                objJsonResult.Message = e.Message; ;
                return objJsonResult;
                throw (e);
            }
        }
@@ -573,36 +622,23 @@
                List<CallGoodsBill> listCa = new List<CallGoodsBill>();
                //获取表格数据集合
                listCa = JsonConvert.DeserializeObject<List<CallGoodsBill>>(msg2.ToString());
                bool flag = false;
                json flag = new json();
                int j = 0;
                for (int i = 0; i < listCa.Count; i++)
                {
                    if (listCa[i].退料数量 > 0)
                    {
                        if (listCa[i].退料数量 > listCa[i].已配送数量 && listCa[i].已配送数量 > 0)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "退料数量大于已配送数量!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        ds = oCN.RunProcReturn("select sum(d.HQty) HQty from JIT_CallGoodsBackRequestBillSub c inner join JIT_CallGoodsBackBillSub d on c.HInterID = d.HSourceInterID and c.HEntryID = d.HSourceEntryID and c.HMaterID = d.HMaterID " +
                   $"where c.HSourceInterID={listCa[i].HSouceInterID} and c.HSourceEntryID ={listCa[i].HSourceEntryID} and c.HSourceBillNo = '{listCa[i].HSourceBillNo}' and c.HMaterID={listCa[i].HMaterialID}", "JIT_CallGoodsBackRequestBillSub");
                        if ((double.Parse(ds.Tables[0].Rows[0][0].ToString() == "" ? "0" : ds.Tables[0].Rows[0][0].ToString()) + listCa[i].退料数量) > listCa[i].已叫料数量)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = $"已经退料数量:{double.Parse(ds.Tables[0].Rows[0][0].ToString())},可退料数量为:{(listCa[i].已叫料数量 - double.Parse(ds.Tables[0].Rows[0][0].ToString()))}!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        flag = AddICStockTuiBill(listCa[i], "666602", " 余量退料", HOrgID, ref DBUtility.ClsPub.sExeReturnInfo);
                        flag =(json)AddICStockTuiBill(listCa[i], "666602", " 余量退料", HOrgID);
                        j = 1;
                        if (flag.code == "0")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = objJsonResult.Message;
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                }
                if (j == 0)
@@ -614,23 +650,11 @@
                    return objJsonResult;
                }
                if (flag)
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "余量退料成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "余量退料失败!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "余量退料成功!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
@@ -671,35 +695,22 @@
                //获取表格数据集合
                listCa = JsonConvert.DeserializeObject<List<CallGoodsBill>>(msg2.ToString());
                bool flag = false;
                json flag = new json();
                int j = 0;
                for (int i = 0; i < listCa.Count; i++)
                {
                    if (listCa[i].退料数量 > 0)
                    {
                        if (listCa[i].退料数量 > listCa[i].已配送数量 && listCa[i].已配送数量 > 0)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "退料数量大于已配送数量!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        ds = oCN.RunProcReturn("select sum(d.HQty) HQty from JIT_CallGoodsBackRequestBillSub c inner join JIT_CallGoodsBackBillSub d on c.HInterID = d.HSourceInterID and c.HEntryID = d.HSourceEntryID and c.HMaterID = d.HMaterID " +
                   $"where c.HSourceInterID={listCa[i].HSouceInterID} and c.HSourceEntryID ={listCa[i].HSourceEntryID} and c.HSourceBillNo = '{listCa[i].HSourceBillNo}' and c.HMaterID={listCa[i].HMaterialID}", "JIT_CallGoodsBackRequestBillSub");
                        if ((double.Parse(ds.Tables[0].Rows[0][0].ToString() == "" ? "0" : ds.Tables[0].Rows[0][0].ToString()) + listCa[i].退料数量) > listCa[i].已叫料数量)
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = $"已经退料数量:{double.Parse(ds.Tables[0].Rows[0][0].ToString())},可退料数量为:{(listCa[i].已叫料数量 - double.Parse(ds.Tables[0].Rows[0][0].ToString()))}!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                        flag = AddICStockTuiBill(listCa[i], "666603", "报废退料", HOrgID, ref DBUtility.ClsPub.sExeReturnInfo);
                        flag =(json) AddICStockTuiBill(listCa[i], "666603", "报废退料", HOrgID);
                        j = 1;
                        if (flag.code == "0")
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = objJsonResult.Message;
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
                    }
                }
                if (j == 0)
@@ -711,22 +722,11 @@
                    return objJsonResult;
                }
                if (flag)
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "报废退料成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "报废退料失败!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "报废退料成功!";
                objJsonResult.data = null;
                return objJsonResult;
            }
            catch (Exception e)
            {
@@ -773,6 +773,11 @@
                {
                    //拣料配送 下查
                    ds = oCN.RunProcReturn($"exec h_p_JIT_ComplementGoodsBillList_DownQuery '{com.HSouceInterID}',{com.HSourceEntryID}", "h_p_JIT_ComplementGoodsBillList_DownQuery");
                }
                else if (com.Type == 3772)
                {
                    //生产订单 下查 工序流转卡
                    ds = oCN.RunProcReturn($"select * from h_v_Sc_ProcessExchangeBillQuery where HICMOInterID='{com.HSouceInterID}' and HICMOEntryID={com.HSourceEntryID}", "h_v_Sc_ProcessExchangeBillQuery");
                }
                //添加列名
@@ -946,5 +951,317 @@
        }
        #endregion
        #region 生产叫料平台  仓库库存列表
        [Route("Sc_ComplementGoodBill/GetWarehouseList_JIT")]
        [HttpGet]
        public object GetWarehouseList_JIT(string sWhere)
        {
            try
            {
                ds = oCN.RunProcReturn("select * from h_v_JIT_WarehouseList where 1=1 "+ sWhere, "h_v_JIT_WarehouseList");
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 生产叫料平台  未生成拣料申请单  未生成退料单
        [Route("Sc_ComplementGoodBill/NotGeneratedMaterialList")]
        [HttpGet]
        public object NotGeneratedMaterialList(string sWhere, string user)
        {
            try
            {
                //查询叫料单 未生成 拣料单 的条数
                //查询退料申请单  未生成 退料单的 条数
                ds = oCN.RunProcReturn($@"select count(*) 未生成   from JIT_CallGoodsBackRequestBillMain as a
                                        inner join JIT_CallGoodsBackRequestBillSub as b on a.HInterID=b.HInterID
                                         where  a.HISCheck =0   and a.HOrgID={sWhere}
                                        and a.HMaker = '{user}'
                                           union all
                                        select count(*) 未生成  from JIT_CallGoodsBillMain a
                                        join JIT_CallGoodsBillSub b on a.HInterID=b.HInterID
                                         where b.HPSQty=0  and a.HOrgID={sWhere}
                                        and a.HMaker = '{user}'", "JIT_CallGoodsBackRequestBillMain");
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 生产叫料平台  配套叫料查询
        [Route("Sc_ComplementGoodBill/JIT_ComplementGoodPT")]
        [HttpGet]
        public object JIT_ComplementGoodPT(string sWhere,string user)
        {
            try
            {
                ds = oCN.RunProcReturn("exec h_p_JIT_ComplementGoodPT " + sWhere, "h_p_JIT_ComplementGoodPT");
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "Sucess!";
                objJsonResult.data = ds.Tables[0];
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "Exception!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region 生产叫料平台  配套叫料新增
        [Route("Sc_ComplementGoodBill/InsertCallGoodsBill_PTJL")]
        [HttpPost]
        public object InsertCallGoodsBill_PTJL([FromBody] JObject msg)
        {
            var _value = msg["msg"].ToString();
            string[] sArray = _value.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            string msg2 = sArray[0].ToString();
            string user = sArray[1].ToString();
            omodel.HPRDORGID = long.Parse(sArray[2].ToString());
            try
            {
                if (!DBUtility.ClsPub.Security_Log("Cj_CallGoodsBill_Edit", 1, false, user))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "无保存权限";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                msg2 = msg2.Replace("\\", "");
                msg2 = msg2.Replace("\n", "");
                List<CallGoodsBill> listCa = new List<CallGoodsBill>();
                //获取表格数据集合
                listCa = JsonConvert.DeserializeObject<List<CallGoodsBill>>(msg2.ToString());
                var flag = false;
                var txt = "";
                for (int i = 0; i < listCa.Count; i++)
                {
                    if (listCa[i].配套数量 <= 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = $"第{i + 1}行配套数量小于0,无法叫料!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    ds = oCN.RunProcReturn("select * from h_v_JIT_WarehouseList where 仓库ID=" + listCa[i].调出仓库id + "  and  物料编码 = '" + listCa[i].物料代码 + "' and 库存组织=" + listCa[i].HOutOrgID, "h_v_JIT_WarehouseList");
                    var HSCWHIDCount = double.Parse(ds.Tables[0].Rows[0]["调出仓库可用库存数量"].ToString());
                    if (HSCWHIDCount == 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = $"第{i + 1}行库存数量为0,无法叫料!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (listCa[i].配套数量 > HSCWHIDCount)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = $"第{i+1}行库存数量小于叫料数量,无法叫料!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (listCa[i].调入仓库id == 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = $"第{i + 1}行请选择调入仓库!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (listCa[i].调出仓库id == 0)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = $"第{i + 1}行请选择调出仓库!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if (listCa[i].调出仓库id == listCa[i].调入仓库id)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = $"第{i + 1}行调出仓库和调入仓库不能一样!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    var Hqty = 0.0;
                    var TuiHqty = 0.0;
                    //当前单据已叫料 和 已退料数量
                    ds = oCN.RunProcReturn($@"
                                               select isnull(a.HQty,0) 已叫料数量,isnull(b.HQty,0) 已退料申请数量 from (
                                                select sum(b.HQty) HQty,c.HNumber ,b.HSourceBillNo
                                                from JIT_CallGoodsBillMain a
                                                join JIT_CallGoodsBillSub b on a.HInterID=b.HInterID
                                                left join Gy_Material c on b.HMaterID=c.HItemID
                                                where b.HSourceBillNo='{listCa[i].HSourceBillNo}'
                                                group by c.HNumber,b.HSourceBillNo
                                                ) a
                                                left join (
                                                select sum(b.HQty) HQty,c.HNumber,b.HSourceBillNo
                                                from JIT_CallGoodsBackRequestBillMain a
                                                inner join JIT_CallGoodsBackRequestBillSub b on a.HInterID=b.HInterID
                                                left join Gy_Material c on b.HMaterID=c.HItemID
                                                where b.HSourceBillNo='{listCa[i].HSourceBillNo}'
                                                group by c.HNumber,b.HSourceBillNo
                                                ) b  on a.HNumber=b.HNumber and a.HSourceBillNo=b.HSourceBillNo where a.HNumber='{listCa[i].物料代码}'", "JIT_CallGoodsBillMain");
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        Hqty = double.Parse(ds.Tables[0].Rows[0]["已叫料数量"].ToString());
                        TuiHqty = double.Parse(ds.Tables[0].Rows[0]["已退料申请数量"].ToString());
                    }
                    if (listCa[i].配套数量 > listCa[i].计划发料数量)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = $"第{i + 1}行叫料数量大于计划发料数量!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    if ((listCa[i].配套数量 + Hqty - TuiHqty) > listCa[i].计划发料数量)
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = $"第{i + 1}行叫料总数量大于计划发料数量!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    var txtHBillNo = DBUtility.ClsPub.CreateBillCode_Prod(CallGoodsBill.ModName, ref DBUtility.ClsPub.sExeReturnInfo, true);//获得一个新的单据号
                        omodel.HInterID = DBUtility.ClsPub.CreateBillID_Prod(CallGoodsBill.ModName, ref DBUtility.ClsPub.sExeReturnInfo);
                        omodel.HYear = DateTime.Now.Year;
                        omodel.HPeriod = DateTime.Now.Month;
                        //固定赋值=================================
                        omodel.HBillNo = txtHBillNo.Trim();  //在赋值类前就处理好字符串和数字
                        omodel.HDate = DateTime.Now;
                        omodel.HMaker = user;
                        omodel.HMakeDate = DateTime.Today.ToString();
                        omodel.HUpDater = "";
                        omodel.HUpDateDate = "";
                        omodel.HCloseType = false;
                        //明细类赋值
                        //固定赋值========================================
                        oSub.HEntryID = i + 1;
                        oSub.HSourceInterID = listCa[i].HSouceInterID;
                        oSub.HSourceEntryID = listCa[i].HSourceEntryID;
                        oSub.HSourceBillType = "88";
                        oSub.HSourceBillNo = listCa[i].HSourceBillNo;
                        oSub.HQty = double.Parse(listCa[i].配套数量.ToString());
                        oSub.HMaterID = listCa[i].HMaterialID;
                        oSub.HMaterNumber = listCa[i].HMaterialNumberCol;
                        oSub.HModel = listCa[i].HMaterialModelCol;
                        oSub.HWHID = int.Parse(listCa[i].调入仓库id.ToString());
                        oSub.HSCWHID = int.Parse(listCa[i].调出仓库id.ToString());
                        oSub.HProcName = listCa[i].HProcNameCol;
                        oSub.HProcID = listCa[i].HProcID;
                        oSub.HOutOrgID = listCa[i].HOutOrgID;
                        oSub.HICMOBillNo = listCa[i].HICMOBillNo;
                        oSub.HICMOInterID = listCa[i].HICMOInterID;
                        oSub.HICMOEntryID = listCa[i].HICMOEntryID;
                        oSub.HDeptID = listCa[i].HDeptID;
                        oSub.HPlanQty = listCa[i].计划发料数量;
                        oSub.HSeOrderNo = listCa[i].销售订单号;
                        oSub.HBPlanDate = listCa[i].计划开工日期;
                    flag = AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
                        if (flag == false)
                        {
                            txt = txt + DBUtility.ClsPub.isStrNull(i + 1) + "、";
                        }
                }
                if (txt != "")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = $"第{txt}行叫料失败,重新叫料";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    if (flag == true)
                    {
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "叫料成功!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = null;
                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
    }
}