using Model;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebAPI;
using WebAPI.Models;
namespace WebAPI.Controllers
{
    /**
     * 委外入库Controller
     */
    public class Kf_EntrustInBillController : ApiController
    {
        public Int64 HDeptID;//部门ID
        public Int64 HSupID;//供应商ID
        public Int64 HWhID;//仓库ID
        public Int64 HSPID;//仓位ID
        public string HSupName;
        public string HDeptName;
        public string HWhName;
        public Int64 HInterID;//本单ID
        public string HBillNo;
        public string HSourceBillNo;
        public string HBillType = "1210";//单据类型
        public string sBillCode = "ICStockBill";
        public string sTranType = "5";
        public bool sRedBlueFlag = false;
        public bool SourceFlag = false;
        //public string sSourceType = "1601";
       // public bool sRedBlue = false;
        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();
        private JsonResult objJsonResult = new JsonResult();
        public WebS.WebService1 oWebs = new WebS.WebService1();
        public WebS.ClsKf_ICStockBill_WMS WebSoBar = new WebS.ClsKf_ICStockBill_WMS();
        /// 
        /// 委外入库/扫条码/直接调webservice
        /// 
        /// 
        [Route("Kf_EntrustInBill/get_CheckTypeByBarCode_Json")]
        [HttpGet]
        public Object get_CheckTypeByBarCode_Json(string sCode, Int64 sInterID, string sBillNo, string sMaker, Int64 WhID, Int64 SPID, Double sQty, bool sRedBlue, bool SourceFlag, string sSourceBillNo, string sSourceType, Int64 HOWNERID)
        {
            //oBar = webserver.get_CheckTypeByBarCode(sCode, sInterID, HBillType, sBillNo, sMaker, WhID, SPID, sQty, sRedBlue, SourceFlag, sSourceBillNo, sSourceType, HOWNERID, ref DBUtility.ClsPub.sErrInfo);
            string sExpressNumber = "";
            //               get_CheckTypeByBarCode_All
            WebSoBar = oWebs.get_CheckTypeByBarCode_All(sCode, sInterID, HBillType, sBillNo, sMaker, WhID, SPID, sQty, sRedBlue, SourceFlag, sSourceBillNo, sSourceType, HOWNERID, sExpressNumber, ref DBUtility.ClsPub.sErrInfo);
            if (WebSoBar == 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("Kf_EntrustInBill/DisBillEntryList_Mate_Webs_Json")]
        [HttpGet]
        public object DisBillEntryList_Webs_Json(string HBillType, string sWhere)
        {
            try
            {
                ds = webserver.GetKf_PonderationBillMain_TempList(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("Kf_EntrustInBill/get_CheckTypeByBarCode_All_Json")]
        [HttpGet]
        public Object get_CheckTypeByBarCode_All_Json(string sCode, Int64 sInterID, 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;
            }
        }
        /// 
        /// 委外入库/返回出入库条码临时表/直接调用webservice
        /// 
        /// 
        [Route("Kf_EntrustInBill/DisBillEntryList_Webs_Json")]
        [HttpGet]
        public object DisBillEntryList_Webs_Json(long HBillID, string HBillType, string sWhere)
        {
            try
            {
                //ds = webserver.GetKf_PonderationBillMain_Temp(HBillID, HBillType, sWhere);
                WebS.WebService1 oWebs = new WebS.WebService1();
                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 = 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_EntrustInBill/set_SaveEntrustInBill_Json")]
        [HttpPost]
        public object set_SaveEntrustInBill_Json([FromBody]JObject oMain)
        {
            var _value = oMain["oMain"].ToString();
            string msg1 = _value.ToString();
            try
            {
                List lsmain = new List();
                ListModels oListModels = new ListModels();
                lsmain = oListModels.getEntrustInBillMainByJson(msg1);
                lsmain[0].HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                lsmain[0].HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
                lsmain[0].HBillType = "1210";
                WebAPI.WebS.ClsKf_EntrustInBillMain websLsmain = new WebS.ClsKf_EntrustInBillMain();
                websLsmain.HInterID = lsmain[0].HInterID;
                websLsmain.HInnerBillNo = "";
                websLsmain.HDate = lsmain[0].HDate;
                websLsmain.HBillNo = lsmain[0].HBillNo;
                websLsmain.HBillType = lsmain[0].HBillType;
                websLsmain.HBillerID = DBUtility.ClsPub.isLong(DBUtility.ClsPub.CurUserID);
                websLsmain.HDeptID = lsmain[0].HDeptID;
                websLsmain.HEmpID = lsmain[0].HEmpID;
                websLsmain.HRemark = "";
                websLsmain.HRedBlueFlag = lsmain[0].HRedBlueFlag;
                websLsmain.HMaker = lsmain[0].HMaker;
                websLsmain.HSupID = lsmain[0].HSupID;
                websLsmain.HSecManagerID = lsmain[0].HSecManagerID;
                websLsmain.HSCWHID = lsmain[0].HSCWHID;
                websLsmain.HKeeperID = lsmain[0].HKeeperID;
                websLsmain.HMainSourceBillType = "1103";
                websLsmain.HMangerID = lsmain[0].HMangerID;
                websLsmain.HWHID = lsmain[0].HWHID;
                websLsmain.HExplanation = "";
                string sSourceBillType = "1103";
                if (webserver.set_SaveEntrustInBill_New(websLsmain, sSourceBillType, ref DBUtility.ClsPub.sErrInfo))
                {
                    objJsonResult.code = "1";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "生成委外入库单成功!单据号为:";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "上传失败!" + DBUtility.ClsPub.sErrInfo;
                    objJsonResult.data = websLsmain;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "上传失败!异常" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// 
        /// 委外入库/提交/直接调用webservice
        /// 
        /// 
        [Route("Kf_EntrustInBill/set_SaveEntrustInBill_New_Json")]
        [HttpPost]
        public object set_SaveEntrustInBill_New_Json([FromBody]JObject oMain)
        {
            var _value = oMain["oMain"].ToString();
            string msg1 = _value.ToString();
            try
            {
                List lsmain = new List();
                ListModels oListModels = new ListModels();
                lsmain = oListModels.getEntrustInBillMainByJson(msg1);
                lsmain[0].HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year);
                lsmain[0].HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd"));
                lsmain[0].HBillType = "1210";
                WebAPI.WebS.ClsKf_EntrustInBillMain websLsmain = new WebS.ClsKf_EntrustInBillMain();
                websLsmain.HInterID = lsmain[0].HInterID;
                websLsmain.HInnerBillNo = "";
                websLsmain.HDate = lsmain[0].HDate;
                websLsmain.HBillNo = lsmain[0].HBillNo;
                websLsmain.HBillType = lsmain[0].HBillType;
                websLsmain.HBillerID = DBUtility.ClsPub.isLong(DBUtility.ClsPub.CurUserID);
                websLsmain.HDeptID = lsmain[0].HDeptID;
                websLsmain.HEmpID = lsmain[0].HEmpID;
                websLsmain.HRemark = "";
                websLsmain.HRedBlueFlag = lsmain[0].HRedBlueFlag;
                websLsmain.HMaker = lsmain[0].HMaker;
                websLsmain.HSupID = lsmain[0].HSupID;
                websLsmain.HSecManagerID = lsmain[0].HSecManagerID;
                websLsmain.HSCWHID = lsmain[0].HSCWHID;
                websLsmain.HKeeperID = lsmain[0].HKeeperID;
                websLsmain.HMainSourceBillType = "1103";
                websLsmain.HMangerID = lsmain[0].HMangerID;
                websLsmain.HWHID = lsmain[0].HWHID;
                websLsmain.HExplanation = lsmain[0].HExplanation;
                string sSourceBillType = "1103";
                if (webserver.set_SaveEntrustInBill_New(websLsmain, sSourceBillType, 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 = websLsmain;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "上传失败!异常" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// 
        /// 委外入库  扫描源单,将源单信息写入条码临时表
        /// 
        /// 
        /// 
        [Route("Kf_EntrustInBill/set_SavePonderationBillMain_Temp_Source_Fast_Json")]
        [HttpGet]
        public object set_SavePonderationBillMain_Temp_Source_Fast_Json(string HSourceBillType, string HSourceBillNo, Int64 sInterID, string sBillNo)
        {
            try
            {
                // DataSet ds = new DataSet();
                // WebServer webserver = new WebServer();
                string sWhere = " Where 单据号 like '%" + HSourceBillNo.Trim() + "%'";
                //if (HSourceBillType == "1601")
                //{
                if (HSourceBillType == "1103")
                {
                    //ds = webserver.GetWW_WWOrderBillList (sWhere + "  ");
                    ds = webserver.GetCg_PoInStockBillList(sWhere + "  and isnull(HBillSubType,0)=12511 ");
                }
                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 = "没有返回任何记录!";
                    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 = 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;
            }
        }
        /// 
        /// 生成委外入库单(红字)
        /// 
        /// 
        [Route("Kf_EntrustInBill/set_SaveEntrustInBackBill_Json")]
        [HttpPost]
        public object set_SaveEntrustInBackBill_Json([FromBody]JObject oMain)
        {
            var _value = oMain["oMain"].ToString();
            string msg1 = _value.ToString();
            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;
                if (webserver.set_SaveEntrustInBackBill_New(websLsmain, "-1", 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;
            }
        }
    }
}