|  |  |  | 
|---|
|  |  |  | 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;//退料数量 | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 0; | 
|---|
|  |  |  | objJsonResult.Message = "叫料数量大于计划发料数量!"; | 
|---|
|  |  |  | objJsonResult.Message = $"第{(i + 1)}行叫料数量大于计划发料数量!"; | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 0; | 
|---|
|  |  |  | objJsonResult.Message = "叫料总数量大于计划发料数量!"; | 
|---|
|  |  |  | objJsonResult.Message = $"第{(i + 1)}行叫料总数量大于计划发料数量!"; | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 0; | 
|---|
|  |  |  | objJsonResult.Message = "库存数量为0,无法叫料!"; | 
|---|
|  |  |  | objJsonResult.Message = $"第{(i + 1)}行库存数量为0,无法叫料!"; | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 0; | 
|---|
|  |  |  | objJsonResult.Message = "库存数量小于叫料数量,无法叫料!"; | 
|---|
|  |  |  | objJsonResult.Message = $"第{(i + 1)}行库存数量小于叫料数量,无法叫料!"; | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 0; | 
|---|
|  |  |  | objJsonResult.Message = "请选择调入仓库!"; | 
|---|
|  |  |  | objJsonResult.Message = $"第{(i + 1)}行请选择调入仓库!"; | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 0; | 
|---|
|  |  |  | objJsonResult.Message = "请选择调出仓库!"; | 
|---|
|  |  |  | objJsonResult.Message = $"第{(i + 1)}行请选择调出仓库!"; | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 0; | 
|---|
|  |  |  | objJsonResult.Message = "调出仓库和调入仓库不能一样!"; | 
|---|
|  |  |  | objJsonResult.Message = $"第{(i + 1)}行调出仓库和调入仓库不能一样!"; | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | objJsonResult.code = "0"; | 
|---|
|  |  |  | objJsonResult.count = 0; | 
|---|
|  |  |  | objJsonResult.Message = $"第{txt}行叫料失败,重新叫料,其他行数叫料成功"; | 
|---|
|  |  |  | objJsonResult.Message = $"第{txt}行叫料失败,重新叫料"; | 
|---|
|  |  |  | objJsonResult.data = null; | 
|---|
|  |  |  | return objJsonResult; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | catch (Exception e) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | sReturn = e.Message; | 
|---|
|  |  |  | oCN.RollBack(); | 
|---|
|  |  |  | throw (e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | //拣料配送 下查 | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | #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 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|