using Newtonsoft.Json.Linq; 
 | 
using Pub_Class; 
 | 
using System; 
 | 
using System.Collections; 
 | 
using System.Collections.Generic; 
 | 
using System.Data; 
 | 
using System.Data.SqlClient; 
 | 
using System.Web.Http; 
 | 
using WebAPI.Models; 
 | 
using Newtonsoft.Json; 
 | 
using DBUtility; 
 | 
  
 | 
  
 | 
namespace WebAPI.Controllers.SCGL 
 | 
{ 
 | 
    public class Sc_ComplementGoodBill_ZXBZController : ApiController 
 | 
    { 
 | 
        private json objJsonResult = new json(); 
 | 
        public DataSet ds = new DataSet(); 
 | 
        public WebServer webserver = new WebServer(); 
 | 
        SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); 
 | 
        public ClsXt_BaseBillMain omodel = new ClsXt_BaseBillMain(); 
 | 
        public JIT_CallGoodsBillSub oSub = new JIT_CallGoodsBillSub(); 
 | 
  
 | 
        #region 最小包装叫料 查询 
 | 
        [Route("Sc_ComplementGoodBill_ZXBZ/JIT_ComplementGoodBill_ZXBZ_List")] 
 | 
        [HttpGet] 
 | 
        public object JIT_ComplementGoodBill_ZXBZ_List(string sWhere, string user) 
 | 
        { 
 | 
            try 
 | 
            { 
 | 
                ////查看权限 
 | 
                //if (!DBUtility.ClsPub.Security_Log("JIT_ComplementGoodBillMain_Query", 1, false, user)) 
 | 
                //{ 
 | 
                //    objJsonResult.code = "0"; 
 | 
                //    objJsonResult.count = 0; 
 | 
                //    objJsonResult.Message = "无查看权限!"; 
 | 
                //    objJsonResult.data = null; 
 | 
                //    return objJsonResult; 
 | 
                //} 
 | 
                if (sWhere == null || sWhere.Equals("")) 
 | 
                { 
 | 
                    objJsonResult.code = "1"; 
 | 
                    objJsonResult.count = 1; 
 | 
                    objJsonResult.Message = "Sucess!"; 
 | 
                    objJsonResult.data = new DataTable(); 
 | 
                    return objJsonResult; 
 | 
                } 
 | 
  
 | 
                ds = oCN.RunProcReturn($"exec h_p_JIT_GetPPBomInfo_FL "+sWhere, "h_p_JIT_GetPPBomInfo_FL"); 
 | 
  
 | 
                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 最小包装叫料  叫料新增 
 | 
  
 | 
        //临时表  叫料单据字段 
 | 
        public class CallGoodsBill 
 | 
        { 
 | 
            public static readonly string ModName = "4601"; 
 | 
            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 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 
 | 
            public double 计划发料数量 = 0;//HPlanQtyCol  
 | 
            public int HWHID = 0;//HWHIDCol 
 | 
            public int? 调出仓库ID = 0;//调出仓库id 
 | 
            public int? 调入仓库id = 0;//调入仓库id 
 | 
            public string HMaterialNumberCol { get; set; } 
 | 
            public string HMaterialModelCol { get; set; } 
 | 
            public string HProcID { get; set; }//HProcIDCol 
 | 
            public string HProcNameCol { get; set; }//工段 
 | 
            public int HOutOrgID = 0;//HOutOrgID 
 | 
            public string HICMOBillNo { get; set; }// HICMOBillNoCol 
 | 
            public long HICMOInterID = 0;// HICMOInterIDCol 
 | 
            public long HICMOEntryID = 0;// HICMOEntryIDCol 
 | 
            public long HDeptID = 0;//HDeptID 
 | 
            public long 库存数量 = 0; 
 | 
            public double HBHGQtyCol = 0; 
 | 
            public string 销售订单号 { get; set; }//HSeOrderNOCol 
 | 
            public DateTime? 计划开工日期 = null;//HBPlanDateCol 
 | 
        } 
 | 
  
 | 
        //临时表  叫料子表 
 | 
        public class JIT_CallGoodsBillSub : ClsXt_BaseBillSub 
 | 
        { 
 | 
            public double HQty; 
 | 
            public long HMaterID; 
 | 
            public string HMaterNumber; 
 | 
            public string HProcName; 
 | 
            public string HModel; 
 | 
            public string HProcID; 
 | 
            public string HICMOBillNo; 
 | 
            public string HSeOrderNOCol; 
 | 
            public string HSeOrderNo; 
 | 
            public string HSeOrderBillNo; 
 | 
            public int HWHID = 0; 
 | 
            public int HSCWHID = 0; 
 | 
            public long HOutOrgID = 0; 
 | 
            public long HICMOInterID = 0; 
 | 
            public long HICMOEntryID = 0; 
 | 
            public long HSeOrderInterID = 0; 
 | 
            public long HSeOrderEntryID = 0; 
 | 
            public long HDeptID = 0; 
 | 
            public double HPlanQty = 0; 
 | 
            public int HSPID = 0; 
 | 
            public DateTime? HBPlanDate = null; 
 | 
        } 
 | 
  
 | 
        [Route("Sc_ComplementGoodBill_ZXBZ/InsertCallGoodsBill")] 
 | 
        [HttpPost] 
 | 
        public object InsertCallGoodsBill([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()); 
 | 
  
 | 
                int j = 0; 
 | 
                var flag = false; 
 | 
                var txt = ""; 
 | 
  
 | 
                for (int i = 0; i < listCa.Count; i++) 
 | 
                { 
 | 
                    if (listCa[i].HMaterialID != 0 && listCa[i].叫料数量 > 0) 
 | 
                    { 
 | 
               
 | 
                        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 = $"第{(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].叫料数量 > 0 && listCa[i].调入仓库id == 0) 
 | 
                        { 
 | 
                            objJsonResult.code = "0"; 
 | 
                            objJsonResult.count = 0; 
 | 
                            objJsonResult.Message = $"第{(i + 1)}行请选择调入仓库!"; 
 | 
                            objJsonResult.data = null; 
 | 
                            return objJsonResult; 
 | 
                        } 
 | 
  
 | 
                        if (listCa[i].叫料数量 > 0 && 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; 
 | 
                        } 
 | 
  
 | 
                        j = 1; 
 | 
  
 | 
                        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; 
 | 
                    } 
 | 
                } 
 | 
                if (j == 0) 
 | 
                { 
 | 
                    objJsonResult.code = "0"; 
 | 
                    objJsonResult.count = 0; 
 | 
                    objJsonResult.Message = "无任何叫料数量或叫料数量小于0,无法叫料!"; 
 | 
                    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; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        //新增单据 
 | 
        public bool AddBill(ref string sReturn) 
 | 
        { 
 | 
            try 
 | 
            { 
 | 
                //插入子表 
 | 
                oCN.RunProc("Insert into JIT_CallGoodsBillSub " + 
 | 
                      " (HInterID,HEntryID,HRemark" + 
 | 
                      ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" + 
 | 
                      ",HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo,HICMOInterID,HICMOEntryID,HICMOBillNo" + 
 | 
                      ",HDeptID,HMaterID,HQty,HProcID,HWHID,HSCWHID,HSPID,HBillNo_bak,HOutOrgID,HStockOutOrgID,HStockInOrgID" + 
 | 
                      ") values(" 
 | 
                      + omodel.HInterID.ToString() + "," + oSub.HEntryID.ToString() + ",'" + oSub.HRemark + "'" + 
 | 
                      "," + oSub.HSourceInterID.ToString() + "," + oSub.HSourceEntryID.ToString() + ",'" + oSub.HSourceBillNo + "','" + oSub.HSourceBillType + "'," + oSub.HRelationQty.ToString() + "," + oSub.HRelationMoney.ToString() + 
 | 
                      "," + oSub.HSeOrderInterID.ToString() + "," + oSub.HSeOrderEntryID.ToString() + ",'" + oSub.HSeOrderBillNo + "'," + oSub.HICMOInterID.ToString() + "," + oSub.HICMOEntryID.ToString() + ",'" + oSub.HICMOBillNo + "'" + 
 | 
                      "," + oSub.HDeptID.ToString() + "," + oSub.HMaterID.ToString() + "," + oSub.HQty.ToString() + ",'" + oSub.HProcID + "'," + oSub.HWHID.ToString() + ", " + oSub.HSCWHID.ToString() + "," + oSub.HSPID.ToString() + ",''," + oSub.HOutOrgID + "," + oSub.HOutOrgID + "," + omodel.HPRDORGID + ") ", ref DBUtility.ClsPub.sExeReturnInfo); 
 | 
  
 | 
                //主表 
 | 
  
 | 
                oCN.RunProc("Insert Into JIT_CallGoodsBillMain   " + 
 | 
                "(HBillType,HBillSubType,HInterID,HBillNo,HDate" + 
 | 
                ",HYear,HPeriod,HRemark,HMaker,HMakeDate" + 
 | 
                ",HBillStatus,HCheckItemNowID,HCheckItemNextID,HCheckFlowID" + 
 | 
                ",HMainSourceBillType,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillNo" + 
 | 
                ",HBacker,HBackDate,HBackRemark,HChecker,HCheckDate,HUpDater,HUpDateDate " + 
 | 
                ",HCloseMan,HCloseDate,HCloseType,HDeleteMan,HDeleteDate " + 
 | 
                ",HPrintQty,HCallManID,HSendManID,HCallType,HWareManID,HOrgID) " + 
 | 
                " values('" + CallGoodsBill.ModName + "','" + CallGoodsBill.ModName + "'," + omodel.HInterID.ToString() + ",'" + omodel.HBillNo + "','" + omodel.HDate + "'" + 
 | 
                ", " + omodel.HYear.ToString() + "," + omodel.HPeriod.ToString() + ",'" + omodel.HRemark + "','" + omodel.HMaker + "',getdate()" + 
 | 
                ",'" + omodel.HBillStatus + "'," + omodel.HCheckItemNowID.ToString() + "," + omodel.HCheckItemNextID.ToString() + ", " + omodel.HCheckFlowID.ToString() + 
 | 
                ",'" + omodel.HMainSourceBillType + "'," + omodel.HMainSourceInterID.ToString() + "," + omodel.HMainSourceEntryID.ToString() + ", '" + omodel.HMainSourceBillNo + "'" + 
 | 
                ",'" + omodel.HBacker + "','" + omodel.HBackDate + "','" + omodel.HBackRemark + "', '" + omodel.HChecker + "','" + omodel.HCheckDate + "', '" + omodel.HUpDater + "',''" + 
 | 
                ",'" + omodel.HCloseMan + "','" + omodel.HCloseDate + "','" + omodel.HCloseType + "', '" + omodel.HDeleteMan + "','" + omodel.HDeleteDate + "'" + 
 | 
                ",0,0,0,'普通',0," + omodel.HPRDORGID + ") ", ref DBUtility.ClsPub.sExeReturnInfo); 
 | 
  
 | 
                sReturn = "新增单据成功!"; 
 | 
                //oCn.Commit(); 
 | 
                return true; 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                sReturn = e.Message; 
 | 
                oCN.RollBack(); 
 | 
                throw (e); 
 | 
            } 
 | 
        } 
 | 
        #endregion 
 | 
    } 
 | 
} 
 |