using DBUtility;
using Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SQLHelper;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Http;
using WebAPI;
using WebAPI.Code;
using WebAPI.Controllers.SCGL.日计划管理;
using WebAPI.Models;
using static WebAPI.Controllers.基础资料.基础资料.Gy_DutyBillController;
namespace WebAPI.Controllers
{
    public class MateOutController : ApiController
    {
        public Int64 HSupID;//供应商ID
        public Int64 HDeptID;//部门ID
        public Int64 HWhID;//仓库ID
        public Int64 HSPID;//仓位ID
        public string HSupName;
        public string HDeptName;
        public string HWhName;
        public string HSPName;
        public Int64 HInterID;//本单ID
        public string HBillNo;
        public string HSourceBillNo;
        public string HBillType = "1204";//单据类型
        public string HBillType1 = "1244";
        public string sBillCode = "ICStockBill";
        public string sTranType = "24";
        public bool sRedBlueFlag = false;
        public bool SourceFlag = false;
        //public string sSourceType = "3720";
        public WebServer webserver =new WebServer();
        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();
        public ClsKf_ICStockBill_WMS oBar = new Model.ClsKf_ICStockBill_WMS();
        public double sRelQty = 0;
        public WebS.WebService1 oWebs = new WebS.WebService1();
        public WebS.ClsKf_ICStockBill_WMS WebSoBar = new WebS.ClsKf_ICStockBill_WMS();
       // private DataBaseServices objDataBaseServices = new DataBaseServices();
        private json objJsonResult = new json();
        Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
        // private string msgModel = "{{\"count\":{0},\"code\":{0},\"message\":\"{1}\",\"result\":{2}}}";
        public static string GetSession(string sMsg)
        {
            try
            {
                string s = Common.GetSession();
                return s;
            }
            catch (Exception e)
            {
                return "";      
            }
        }
        
        /// 
        /// 写入临时表  扫源单的方法
        /// 
        /// 
        /// 
        [Route("MateOut/set_SavePonderationBillMain_Temp_Mate_Source_Fast_Json")]
        [HttpGet]
        public object set_SavePonderationBillMain_Temp_Mate_Source_Fast_Json(Int64 sInterID, string sBillNo, string HBillType, string HSourceBillNo, string HSourceBillType, string sMaker, Double sPPQty, Int64 sPlanMode,Int64 sFIFOWHID, Int64 HOWNERID)
        {
            //try
            //{
            //   // DataSet ds = new DataSet();
            //   // WebServer webserver = new WebServer();
            //    string sWhere = " Where 单据号 like '%" + HSourceBillNo.Trim() + "%'";
            //    ds = webserver.GetSc_PPBomBillList(sWhere);
            //    if (ds == null || ds.Tables[0].Rows.Count <= 0)
            //    {
            //        objJsonResult.code = "0";
            //        objJsonResult.count = 0;
            //        objJsonResult.Message = "没有返回任何记录!";
            //        objJsonResult.data = null;
            //        return objJsonResult;
            //        //DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning);
            //    }
            //    else
            //    {
            //        //HSupID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HSupID"]);
            //        //HSupName = Convert.ToString(ds.Tables[0].Rows[0]["HSupName"]);
            //        HDeptID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HDeptID"]);
            //        HDeptName = Convert.ToString(ds.Tables[0].Rows[0]["HDeptName"]);
            //        if (webserver.set_SavePonderationBillMain_Temp_Source_Fast(sInterID, sBillNo, HBillType, HSourceBillNo, HSourceBillType, "蓝字", 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 ex)
            //{
            //    objJsonResult.code = "0";
            //    objJsonResult.count = 0;
            //    objJsonResult.Message = "没有返回任何记录!"+ex.ToString();
            //    objJsonResult.data = null;
            //    return objJsonResult;
            //}
            try
            {
                //WebS.WebService1 oWebs1 = new WebS.WebService1();
                //WebSoBar = oWebs1.get_SourceBarCode_MateOut(sInterID, sBillNo, HBillType, HSourceBillNo, HSourceBillType, sMaker, sPPQty, sPlanMode, sFIFOWHID, HOWNERID, ref DBUtility.ClsPub.sErrInfo);
                //Model.ClsKf_ICStockBill_WMS WebSoBar = new Model.ClsKf_ICStockBill_WMS();
                WebS.ClsKf_ICStockBill_WMS WebSoBar = new WebS.ClsKf_ICStockBill_WMS();
                WebS.WebService1 oWebs = new WebS.WebService1();
                WebSoBar = oWebs.get_SourceBarCode_MateOut(sInterID, sBillNo, HBillType, HSourceBillNo, HSourceBillType, sMaker, sPPQty, sPlanMode, sFIFOWHID, HOWNERID, ref DBUtility.ClsPub.sErrInfo);
                
                //oBar = webserver.get_CheckTypeByBarCode_Out(sCode, sInterID, HBillType, sBillNo, sMaker, WhID, SPID, sQty, sRedBlue, SourceFlag, sSourceBillNo, sSourceType, HOWNERID, ref DBUtility.ClsPub.sErrInfo);
                if (WebSoBar == null)
                {
                    objJsonResult.code = "400";
                    objJsonResult.count = 0;
                    objJsonResult.Message = DBUtility.ClsPub.sErrInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "200";
                    objJsonResult.count = 1;
                    objJsonResult.Message = DBUtility.ClsPub.sErrInfo;
                    objJsonResult.data = oBar;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "500";
                objJsonResult.count = 0;
                objJsonResult.Message = e.Message.ToString();
                objJsonResult.data = DBUtility.ClsPub.sErrInfo;
                return objJsonResult;
            }
        }
        [Route("MateOut/set_SavePonderationBillMain_Temp_Mate_Source_Fast_Json_Back")]
        [HttpGet]
        public object set_SavePonderationBillMain_Temp_Mate_Source_Fast_Json_Back(Int64 sInterID, string sBillNo, string HBillType, string sSourceBillNo, string sSourceType, string sRedBlue)
        {
            try
            {
                // DataSet ds = new DataSet();
                // WebServer webserver = new WebServer();
                WebS.WebService1 oWebs = new WebS.WebService1();
                string sWhere = " Where 单据号 like '%" + sSourceBillNo.Trim() + "'";
                //根据源单类型来调用不同的WEBS方法 new 
                if (sSourceType == "3720" && HBillType =="1204")
                {
                    ds = oWebs.GetSc_PPBomBillList(sWhere + "  ");
                }
                if (sSourceType == "3720" && HBillType == "1244")
                {
                    ds = oWebs.GetSc_PPBomBackBillList(sWhere + "  ");
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录,源单类型有错误!";
                    objJsonResult.data = null;
                    return objJsonResult; ;
                }
                //
                if (ds == null || ds.Tables[0].Rows.Count <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!" + sSourceType;
                    objJsonResult.data = null;
                    return objJsonResult;
                    //DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning);
                }
                else
                {
                   
                    if (oWebs.set_SavePonderationBillMain_Temp_Source_Fast(sInterID, sBillNo, HBillType, sSourceBillNo, sSourceType, "红字", ref DBUtility.ClsPub.sErrInfo))
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "返回记录成功!";
                        objJsonResult.data = ds.Tables[0];
                        return objJsonResult;
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "写入临时表失败!" + DBUtility.ClsPub.sErrInfo;
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
            }
            catch (Exception ex)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + ex.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        public Model.ClsKf_ICStockBill_WMS get_SourceBarCode_MateOut(Int64 HInterID, string HBillNo, string HBillType, string HSourceBillNo, string HSourceBillType, string HMaker, Double HPTQty, Int64 HPlanMode, Int64 HFIFOWhID, Int64 HOWNERID, ref string sErrMsg)
        {
            //localhost/WEBS-WMS/get_SourceBarCode_MateOut?HInterID=131793&HBillNo=MATO00001643&HBillType=1204&HSourceBillNo=PPBOM202201164&HSourceBillType=3720&HMaker=Admin&HPTQty=0&HPlanMode=0&HFIFOWhID=0&HOWNERID=100439
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            Model.ClsKf_ICStockBill_WMS oBar = new Model.ClsKf_ICStockBill_WMS();
            Int64 sMulSourceFlag = 0;   //多源单标志(0为非多源单模式,1为多源单模式)
            //获取系统参数
            Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
            if (oSystemParameter.ShowBill(ref sErrMsg) == false)
            {
                sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";扫描源单时获取系统参数失败! " + sErrMsg;
                return null;
            }
            if (oSystemParameter.omodel.Kf_MateOutBill_MulSourceBill.ToUpper() == "Y") //系统参数  生产领料单-多源单模式
            {
                sMulSourceFlag = 1;
            }
            //将源单信息存入条码出入库临时表
            DataSet ds1 = oCn.RunProcReturn("exec h_p_WMS_AddSourceBarCode_MateOut " + HInterID.ToString() + ",'" + HBillNo + "','" + HBillType + "','" + HSourceBillNo + "','" + HSourceBillType + "'," + sMulSourceFlag.ToString() + ",'" + HMaker + "'," + HPTQty.ToString() + "," + HPlanMode.ToString() + "," + HFIFOWhID.ToString() + "," + HOWNERID.ToString(), "h_p_WMS_AddSourceBarCode_MateOut");
            if (ds1 == null || ds1.Tables[0].Rows.Count == 0)
            {
                sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";将源单信息存入条码出入库临时表失败!";
                return null;
            }
            else
            {
                if (DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0][0]) == 0)
                {
                    //先进先出控制
                    if (oSystemParameter.omodel.Kf_MateOutBill_FIFOCtl == "Y")  //系统参数  生产领料单-先进先出控制
                    {
                        DataSet FIFO = oCn.RunProcReturn("exec h_p_WMS_AddSourceFIFO_MateOut " + HInterID.ToString() + ",'" + HBillType + "','" + HSourceBillNo + "','" + HSourceBillType + "'," + HFIFOWhID.ToString(), "h_p_WMS_AddSourceFIFO_MateOut");
                        if (FIFO == null || FIFO.Tables[0].Rows.Count == 0)
                        {
                            sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";存入先进先出临时表失败!";
                            return null;
                        }
                        else
                        {
                            if (DBUtility.ClsPub.isLong(FIFO.Tables[0].Rows[0][0]) == 1)
                            {
                                sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";" + DBUtility.ClsPub.isStrNull(FIFO.Tables[0].Rows[0]["HRemark"]);
                                return null;
                            }
                        }
                    }
                    //oBar.HMulSourceFlag = sMulSourceFlag;
                    oBar.HSourceBillType = DBUtility.ClsPub.isStrNull(ds1.Tables[0].Rows[0]["HSourceBillType"]);
                    oBar.HSourceBillNo = DBUtility.ClsPub.isStrNull(ds1.Tables[0].Rows[0]["HSourceBillNo"]);
                    oBar.HDeptID = DBUtility.ClsPub.isLong(ds1.Tables[0].Rows[0]["HDeptID"]);
                    oBar.HDeptName = DBUtility.ClsPub.isStrNull(ds1.Tables[0].Rows[0]["HDeptName"]);
                    return oBar;
                }
                else
                {
                    sErrMsg = "单据号:" + HBillNo + ",单据ID:" + HInterID + ";" + DBUtility.ClsPub.isStrNull(ds1.Tables[0].Rows[0]["HRemark"]);
                    return null;
                }
            }
        }
        /// 
        /// 领料出库-扫源单的方法
        /// 
        /// 
        /// 
        [Route("MateOut/set_SavePonderationBillMain_Temp_SourceBill_MateOut")]
        [HttpGet]
        public object set_SavePonderationBillMain_Temp_SourceBill_MateOut(
            long sInterID,//单据/表头信息中的单据ID
            string sBillNo,//单据/表头信息的单据号
            string HBillType,//单据类型固定值"1204"
            string sSourceBillNo,//源单号
            string sSourceType,//固定值"3720"
            bool sRedBlue,//false蓝字,true红字
            string sMaker,//制单人
            double sPPQty,//配套数量
            long sPlanMode,//计划模式固定值0;   //14035	MTO	  14036	MTS    0 全部
            long sWhID,//仓库ID
            long sHOWNERID//0
            //ref long sHDeptID
            //ref string sHDeptName,
            //ref string sHSourceBillNo,
            //ref string sHSourceBillType,
            //ref string sErrMsg
            )
        {
            try
            {
                long sHDeptID = 0;
                string sHDeptName = "";
                string sHSourceBillNo = "";
                string sHSourceBillType = "";
                WebS.WebService1 oWebs = new WebS.WebService1();
                if (oWebs.set_SavePonderationBillMain_Temp_SourceBill_MateOut(
                    sInterID,
                    sBillNo,
                    HBillType,
                    sSourceBillNo,
                    sSourceType,
                    sRedBlue,
                    sMaker,
                    sPPQty,
                    sPlanMode,
                    sWhID,
                    sHOWNERID,
                    ref sHDeptID,
                    ref sHDeptName,
                    ref sHSourceBillNo,
                    ref sHSourceBillType,
                    ref DBUtility.ClsPub.sErrInfo))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "保存成功!" + HBillNo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = DBUtility.ClsPub.sErrInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception ex)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + ex.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// 
        /// 领料出库-测试方法
        /// 
        /// 
        [Route("MateOut/qwe")]
        [HttpGet]
        public object qwe(long sInterID)
        {
            try
            {
                return "调用成功";
            }
            catch (Exception ex)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + ex.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// 
        /// 返回出入库条码临时表     
        /// 
        /// 
        [Route("MateOut/DisBillEntryList_Mate_Webs_Json")]
        [HttpGet]
        public object DisBillEntryList_Mate_Webs_Json(long HBillID, string HBillType, string sWhere)
        {
            try
            {
                ds = webserver.GetKf_PonderationBillMain_Temp(HBillID, HBillType, sWhere);
                if (ds == null || ds.Tables[0].Rows.Count <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!";
                    objJsonResult.data = null;
                    return objJsonResult;
                    //DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning);
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "获取信息成功!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!"+e.ToString();
                    objJsonResult.data = null;
                    return objJsonResult;
            }
        }
        /// 
        /// 根据条码得到相应信息(条码档案) 扫条码的方法
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        [Route("MateOut/get_InfoByBarCode_Source_Mate_Json")]
        [HttpGet]
        public object get_InfoByBarCode_Source_Mate_Json(string sBarCode, Int64 sInterID, string sBillNo, Double sQty,int sWHID,int sSPID)
        {
            try
            {
                string sErrMsg = "";
                bool sBool = false;
                oView = webserver.get_InfoByBarCode_Source(sBarCode, sInterID, ref sBool, ref sErrMsg);
                model.HInterID = DBUtility.ClsPub.isLong(sInterID);
                model.HBillNo = DBUtility.ClsPub.isStrNull(sBillNo);
                model.HBillType = this.HBillType;
                model.HMaker = "";
                //
                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 = sWHID;
                model.HStockPlaceID = sSPID;
                //model.HWhID = oView.HWHID;
                //model.HStockPlaceID = oView.HSPID;
                model.HSourceInterID = oView.HSourceInterID;
                model.HSourceEntryID = oView.HSourceEntryID;
                model.HSourceBillNo = oView.HSourceBillNo;
                model.HSourceBillType = oView.HSourceBillType;
                model.HRedBlueFlag = false;
                model.HPieceQty = 1;
                model.HSTOCKORGID = 0;
                model.HOWNERID = 0;
                if (webserver.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 e)
            {
                
                 objJsonResult.code = "0";
                 objJsonResult.count = 0;
                 objJsonResult.Message = "扫码失败,此条码不存在!"+e.ToString();
                 objJsonResult.data = null;
                 return objJsonResult;
            }
        }
        /// 
        /// 生成生产领料单
        /// 
        /// 
        [Route("MateOut/set_SaveMateOutBill_Json")]
        [HttpPost]
        public object set_SaveMateOutBill_Json([FromBody]JObject oMain)
        {
            var _value = oMain["oMain"].ToString();
            string msg1 = _value.ToString();
            //List lsmain = new List();
            //ListModels oListModels = new ListModels();
            //lsmain = oListModels.getMateOutBillMainByJson(msg1);
            //lsmain[0].HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
            //lsmain[0].HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
            //string sSourceBillType = lsmain[0].HBillType;//源单类型
            //BLL.ClsKf_MateOutBill bll = new BLL.ClsKf_MateOutBill();
            //return bll.set_SaveMateOutBill_New(lsmain[0], sSourceBillType, ref DBUtility.ClsPub.sErrInfo);
            try
            {
                List lsmain = new List();
                ListModels oListModels = new ListModels();
                lsmain = oListModels.getMateOutBillMainByJson(msg1);
                //lsmain[0].HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                //lsmain[0].HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
                string sSourceBillType = lsmain[0].HBillType;//源单类型
                WebAPI.WebS.ClsKf_MateOutBillMain websLsmain = new WebS.ClsKf_MateOutBillMain();
                websLsmain.HInterID = lsmain[0].HInterID;
                websLsmain.HDate = lsmain[0].HDate;
                websLsmain.HBillNo = lsmain[0].HBillNo;
                websLsmain.HDeptID = lsmain[0].HDeptID;
                websLsmain.HEmpID = lsmain[0].HEmpID;
                websLsmain.HKeeperID = lsmain[0].HKeeperID;
                websLsmain.HSecManagerID = lsmain[0].HSecManagerID;
                websLsmain.HBillerID = lsmain[0].HBillerID;
                websLsmain.HRemark = lsmain[0].HRemark;
                websLsmain.HMaker = lsmain[0].HMaker;
                websLsmain.HBillType = "1204";//固定值
                if (webserver.set_SaveMateOutBill_New(websLsmain, sSourceBillType, ref DBUtility.ClsPub.sErrInfo))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = DBUtility.ClsPub.sErrInfo;  //成功!
                    //objJsonResult.Message = "生成领料单成功!单据号为:";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = DBUtility.ClsPub.sErrInfo;  //失败!
                    //objJsonResult.Message = "上传失败!" + DBUtility.ClsPub.sErrInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "上传失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// 
        /// 生成生产退料单
        /// 
        /// 
        [Route("MateOut/set_SaveMateOutBackBill_Json")]
        [HttpPost]
        public object set_SaveMateOutBackBill_Json([FromBody]JObject oMain)
        {
            var _value = oMain["oMain"].ToString();
            string msg1 = _value.ToString();
            //List lsmain = new List();
            //ListModels oListModels = new ListModels();
            //lsmain = oListModels.getICStockBillMainByJson(msg1);
            //lsmain[0].HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
            //lsmain[0].HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
            //string sSourceBillType = lsmain[0].HBillType;
            //BLL.ClsKf_MateOutBackBill bll = new BLL.ClsKf_MateOutBackBill();
            //return bll.set_SaveMateOutBackBill_New(lsmain[0], sSourceBillType, ref DBUtility.ClsPub.sErrInfo);
            try
            {
                List lsmain = new List();
                ListModels oListModels = new ListModels();
                lsmain = oListModels.getICStockBillMainByJson(msg1);
                lsmain[0].HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                lsmain[0].HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
                string sSourceBillType = lsmain[0].HBillType;
                WebAPI.WebS.ClsKf_ICStockBillMain websLsmain = new WebS.ClsKf_ICStockBillMain();
                websLsmain.HInterID = lsmain[0].HInterID;
                websLsmain.HDate = lsmain[0].HDate;
                websLsmain.HBillNo = lsmain[0].HBillNo;
                websLsmain.HDeptID = lsmain[0].HDeptID;
                websLsmain.HEmpID = lsmain[0].HEmpID;
                websLsmain.HRemark = lsmain[0].HRemark;
                websLsmain.HMaker = lsmain[0].HMaker;
                websLsmain.HBillType = "1244";//固定值
                if (webserver.set_SaveMateOutBackBill_New(websLsmain, sSourceBillType, ref DBUtility.ClsPub.sErrInfo))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = DBUtility.ClsPub.sErrInfo;  //成功!
                    //objJsonResult.Message = "生成退料单成功!单据号为:";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = DBUtility.ClsPub.sErrInfo;  //失败!
                    //objJsonResult.Message = "上传失败!" + DBUtility.ClsPub.sErrInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "上传失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// 
        /// 一键扫码   红字
        /// 
        /// 
        /// 
        /// 一键扫码
        /// 
        /// 
        [Route("MateOutBill/get_CheckTypeByBarCode_Json")]
        [HttpGet]
        public Object get_CheckTypeByBarCode_Json(string sCode, Int64 sInterID, string HBillType, string sBillNo, string sMaker, Int64 WhID, Int64 SPID, Double sQty, bool sRedBlue, bool SourceFlag, string sSourceBillNo, string sSourceType, Int64 HOWNERID)
        {
           
            try
            {
                string sErrMsg = "";
                string sJXCode = "";
                if (oSystemParameter.omodel.WMS_CampanyName == "安瑞") //系统参数  客户定制化名称     空白为通用
                {
                    sJXCode = POStockInBillController.JX_Json(sCode, sInterID, HBillType, HOWNERID, sBillNo, sMaker);
                    SourceFlag = true;
                }
                else
                {
                    sJXCode = sCode;
                }
                //var sJXCode = POStockInBillController.JX_Json(sCode, sInterID, HBillType, HOWNERID, sBillNo,sMaker);
                string sExpressNumber = "";
                WebSoBar = oWebs.get_CheckTypeByBarCode_All(sJXCode, sInterID, HBillType, sBillNo, sMaker, WhID, SPID, sQty, sRedBlue, SourceFlag, sSourceBillNo, sSourceType, HOWNERID, sExpressNumber, ref DBUtility.ClsPub.sErrInfo);
                //oBar = webserver.get_CheckTypeByBarCode_Out(sCode, sInterID, HBillType, sBillNo, sMaker, WhID, SPID, sQty, sRedBlue, SourceFlag, sSourceBillNo, sSourceType, HOWNERID, ref DBUtility.ClsPub.sErrInfo);
                if (WebSoBar == null)
                {
                    objJsonResult.code = "400";
                    objJsonResult.count = 0;
                    objJsonResult.Message = DBUtility.ClsPub.sErrInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "200";
                    objJsonResult.count = 1;
                    objJsonResult.Message = DBUtility.ClsPub.sErrInfo;
                    objJsonResult.data = oBar;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "500";
                objJsonResult.count = 0;
                objJsonResult.Message = DBUtility.ClsPub.sErrInfo;
                objJsonResult.data = e.Message.ToString();
                return objJsonResult;
            }
           
        }
        [Route("MateOutBackBill/get_CheckTypeByBarCode_All_Json")]
        [HttpGet]
        public Object get_CheckTypeByBarCode_All_Json(string sCode, Int64 sInterID, string HBillType, string sBillNo, string sMaker, Int64 WhID, Int64 SPID, Double sQty, bool sRedBlue, bool SourceFlag, string sSourceBillNo, string sSourceType, Int64 HOWNERID, string sExpressNumber)
        {
            oBar = webserver.get_CheckTypeByBarCode_All(sCode, sInterID, HBillType, sBillNo, sMaker, WhID, SPID, sQty, sRedBlue, SourceFlag, sSourceBillNo, sSourceType, HOWNERID,sExpressNumber, ref DBUtility.ClsPub.sErrInfo);
            if (oBar == null)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = DBUtility.ClsPub.sErrInfo;
                objJsonResult.data = null;
                return objJsonResult;
            }
            else
            {
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = DBUtility.ClsPub.sErrInfo;
                objJsonResult.data = oBar;
                return objJsonResult;
            }
        }
        //[Route("MateOut/get_CheckTypeByBarCode_All_Json")]
        //[HttpGet]
        //public Object get_CheckTypeByBarCode_All_Json(string sCode, Int64 sInterID,string HBillType, string sBillNo, string sMaker, Int64 WhID, Int64 SPID, Double sQty, bool sRedBlue, bool SourceFlag, string sSourceBillNo, string sSourceType, Int64 HOWNERID)
        //{
        //    oBar = webserver.get_CheckTypeByBarCode_All(sCode, sInterID, HBillType, sBillNo, sMaker, WhID, SPID, sQty, sRedBlue, SourceFlag, sSourceBillNo, sSourceType, HOWNERID, ref DBUtility.ClsPub.sErrInfo);
        //    if (oBar == null)
        //    {
        //        objJsonResult.code = "0";
        //        objJsonResult.count = 0;
        //        objJsonResult.Message = DBUtility.ClsPub.sErrInfo;
        //        objJsonResult.data = null;
        //        return objJsonResult;
        //    }
        //    else
        //    {
        //        objJsonResult.code = "0";
        //        objJsonResult.count = 1;
        //        objJsonResult.Message = DBUtility.ClsPub.sErrInfo;
        //        objJsonResult.data = oBar;
        //        return objJsonResult;
        //    }
        //}
        //刷新表体 红字
        [Route("MateOutBackBill/DisBillEntryListBack_Webs_Json")]
        [HttpGet]
        public object DisBillEntryListBack_Webs_Json(long HBillID, string HBillType, string sWhere)
        {
            try
            {
                ds = webserver.GetKf_PonderationBillMain_Temp(HBillID, HBillType, sWhere);
                if (ds == null || ds.Tables[0].Rows.Count <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!";
                    objJsonResult.data = null;
                    return objJsonResult;
                    //DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning);
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "获取信息成功!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //刷新表体 红字
        [Route("MateOutBill/DisBillEntryList_Webs_Json")]
        [HttpGet]
        public object DisBillEntryList_Webs_Json(long HBillID, string HBillType, string sWhere)
        {
            try
            {
                ds = webserver.GetKf_PonderationBillMain_Temp(HBillID, HBillType, sWhere);
                if (ds == null || ds.Tables[0].Rows.Count <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!";
                    objJsonResult.data = null;
                    return objJsonResult;
                    //DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning);
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "获取信息成功!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //刷新表体  返回出入库条码临时表(领料出库简洁版)
        [Route("MateOutBill/DisBillEntryList_Webs_New_Json")]
        [HttpGet]
        public object DisBillEntryList_Webs_New_Json(long HBillID, string HBillType, string sWhere)
        {
            try
            {
                ds = webserver.GetKf_PonderationBillMain_Temp_New(HBillID, HBillType, sWhere);
                if (ds == null || ds.Tables[0].Rows.Count <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!";
                    objJsonResult.data = null;
                    return objJsonResult;
                    //DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning);
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "获取信息成功!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //刷新表体  返回出入库条码临时表(领料出库简洁版)
        [Route("MateOutBill/DisBillEntryList_Webs_New_Json1")]
        [HttpGet]
        public object DisBillEntryList_Webs_New_Json1(long HBillID, string HBillNo, string HBillType, string sMouldManagerCtl, string sFIFOCtl)
        {
            try
            {
                ds = oWebs.GetBillEntry_TmpList(HBillID, HBillNo, HBillType,ref sMouldManagerCtl,ref sFIFOCtl, ref DBUtility.ClsPub.sErrInfo);
                if (ds == null || ds.Tables[0].Rows.Count <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!";
                    objJsonResult.data = null;
                    return objJsonResult;
                    //DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning);
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "获取信息成功!";
                    objJsonResult.data = new
                    {
                        list = ds.Tables[0]
                        ,
                        list2 = ds.Tables[5]
                    };
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //生产退料扫码刷新表体方法
        [Route("MateOutBackBill/DisBillEntryList")]
        [HttpGet]
        public object DisBillEntryList(long HBillID, string HBillType, string sWhere)
        {
            try
            {
                ds = oWebs.GetKf_PonderationBillMain_Temp(HBillID, HBillType, sWhere);
                if (ds == null || ds.Tables[0].Rows.Count <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!";
                    objJsonResult.data = null;
                    return objJsonResult;
                    //DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning);
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "获取信息成功!";
                    objJsonResult.data = new
                    {
                        list = ds.Tables[0]
                        //,
                        //list2 = ds.Tables[5]
                    };
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //选中表体  根据单据主ID返回收料通知单一些信息
        [Route("QCStockInCheckBill/DisBillEntryList_Webs_New_Json1")]
        [HttpGet]
        public object DisBillEntryList_Webs_New_Json1(long HInterID,long HEntryID)
        {
            try
            {
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                ds = oCN.RunProcReturn("select * from h_v_QCStockInCheckBillList where HInterID = " + HInterID + " and HEntryID = " + HEntryID + "", "h_v_QCStockInCheckBillList");
                if (ds == null || ds.Tables[0].Rows.Count <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!";
                    objJsonResult.data = null;
                    return objJsonResult;
                    //DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning);
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "获取信息成功!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //选中表体  根据单据主ID返回工序汇报单一些信息
        [Route("SCStockInCheckBill/DisBillEntryList_Webs_New_Json2")]
        [HttpGet]
        public object DisBillEntryList_Webs_New_Json2(long HInterID, long HEntryID)
        {
            try
            {
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                ds = oCN.RunProcReturn("select * from h_v_SCStockInCheckBillList where HInterID = " + HInterID + " and HEntryID = " + HEntryID + "", "h_v_SCStockInCheckBillList");
                if (ds == null || ds.Tables[0].Rows.Count <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!";
                    objJsonResult.data = null;
                    return objJsonResult;
                    //DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning);
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "获取信息成功!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //刷新表体  返回条码库存信息
        [Route("KF_ICInventoryByMaterID/GetBillEntry_TmpList_Pack")]
        [HttpGet]
        public object GetBillEntry_TmpList_Pack(string HBarCode, long sHWHID, long sHSPID, long HOWNERID, string sWhere)
        {
            try
            {
                WebS.WebService1 oWebs = new WebS.WebService1();
                ds = oWebs.Get_ICInventoryByMaterIDList(HBarCode, sHWHID, sHSPID, HOWNERID, sWhere);
                if (ds == null || ds.Tables[0].Rows.Count <= 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!";
                    objJsonResult.data = null;
                    return objJsonResult;
                    //DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning);
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "获取信息成功!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //刷新表体  返回条码库存信息网页PDA版
        [Route("KF_ICInventoryByMaterID/GetBillEntry_TmpList_Pack1")]
        [HttpGet]
        public object GetBillEntry_TmpList_Pack1(string HBarCode, long sHWHID, long sHSPID, long HOWNERID, string sWhere)
        {
            try
            {
                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
                List