yxj
2024-07-12 9b2e97ed6a3ba9ba86b3cd2961e1766c711af907
WebAPI/Controllers/SCGL/Sc_ComplementGoodBillController.cs
@@ -99,6 +99,7 @@
            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;//退料数量
@@ -220,7 +221,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "叫料数量大于计划发料数量!";
                            objJsonResult.Message = $"第{(i + 1)}行叫料数量大于计划发料数量!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -229,7 +230,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "叫料总数量大于计划发料数量!";
                            objJsonResult.Message = $"第{(i + 1)}行叫料总数量大于计划发料数量!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -242,7 +243,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "库存数量为0,无法叫料!";
                            objJsonResult.Message = $"第{(i + 1)}行库存数量为0,无法叫料!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -251,7 +252,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "库存数量小于叫料数量,无法叫料!";
                            objJsonResult.Message = $"第{(i + 1)}行库存数量小于叫料数量,无法叫料!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -260,7 +261,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "请选择调入仓库!";
                            objJsonResult.Message = $"第{(i + 1)}行请选择调入仓库!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -269,7 +270,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "请选择调出仓库!";
                            objJsonResult.Message = $"第{(i + 1)}行请选择调出仓库!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -278,7 +279,7 @@
                        {
                            objJsonResult.code = "0";
                            objJsonResult.count = 0;
                            objJsonResult.Message = "调出仓库和调入仓库不能一样!";
                            objJsonResult.Message = $"第{(i + 1)}行调出仓库和调入仓库不能一样!";
                            objJsonResult.data = null;
                            return objJsonResult;
                        }
@@ -336,7 +337,7 @@
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = $"第{txt}行叫料失败,重新叫料,其他行数叫料成功";
                    objJsonResult.Message = $"第{txt}行叫料失败,重新叫料";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
@@ -418,6 +419,7 @@
            catch (Exception e)
            {
                sReturn = e.Message;
                oCN.RollBack();
                throw (e);
            }
        }
@@ -772,6 +774,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} and HBillSubType<>'SUB'", "h_v_Sc_ProcessExchangeBillQuery");
                }
                //添加列名
                foreach (DataColumn col in ds.Tables[0].Columns)
@@ -1007,5 +1014,254 @@
        }
        #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
    }
}