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.Web;
using System.Web.Http;
using WebAPI;
using WebAPI.Code;
using WebAPI.Models;
namespace WebAPI.Controllers
{
    /**
     * 外购入库Controller
     */
    public class POStockInBillController : ApiController
    {
        public Int64 HSupID;//供应商ID
        public Int64 HDeptID;//部门ID
        public Int64 HWhID;//仓库ID
        public Int64 HSPID;//仓位ID
        public string HSupName = string.Empty;
        public string HDeptName = string.Empty;
        public string HWhName = string.Empty;
        public string HSPName = string.Empty;
        public Int64 HInterID;//本单ID
        public string HBillNo;
        public string HSourceBillNo = string.Empty;
        public string HBillType = "1201";//单据类型
        public string sBillCode = "ICStockBill";
        public string sTranType = "1";
        public bool sRedBlueFlag = false;
        public bool SourceFlag = false;
        //public string sSourceType = "1103";
        public string sSourceTypeName = "采购订单";
        public string sRedBlue2 = "蓝字";
        //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();
        public double sRelQty = 0;
        SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
        // private DataBaseServices objDataBaseServices = new DataBaseServices();
        private JsonResult objJsonResult = new JsonResult();
        // 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 "";
            }
        }
        /// 
        /// 外购入库/扫条码/直接调用webservice
        /// 
        /// 
        [Route("POStockInBill/get_CheckTypeByBarCode_Json")]
        [HttpGet]
        public Object get_CheckTypeByBarCode_Json(string sCode, Int64 sInterID, string sBillNo, string sBillType, string sMaker, Int64 WhID, Int64 SPID, Double sQty, bool sRedBlue, bool SourceFlag, string sSourceBillNo, string sSourceType, Int64 HOWNERID)
        {
            try
            {
                //if (sRedBlue == true)
                //{
                //    HBillType = "1239";
                //}
                //oBar = webserver.get_CheckTypeByBarCode(sCode, sInterID, sBillType, sBillNo, sMaker, WhID, SPID, sQty, sRedBlue, SourceFlag, sSourceBillNo, sSourceType, HOWNERID, ref DBUtility.ClsPub.sErrInfo);
                WebS.WebService1 oWebs = new WebS.WebService1();
                WebS.ClsKf_ICStockBill_WMS WebSoBar = new WebS.ClsKf_ICStockBill_WMS();
                string sExpressNumber = "";
                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 = WebSoBar;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = e.Message+";"+e.StackTrace;
                objJsonResult.data = null;
                return objJsonResult;
            }
           
        }
        /// 
        /// 生产汇报/扫条码/直接调用webservice
        /// 
        /// 
        [Route("ICMOReportBill/get_CheckTypeByBarCode_Json1")]
        [HttpGet]
        public Object get_CheckTypeByBarCode_Json1(string sCode, Int64 sInterID, string sBillType, string sBillNo, string sMaker, Int64 WhID, Int64 SPID, Double sQty, bool sRedBlue, bool SourceFlag, string sSourceBillNo, string sSourceType, Int64 HOWNERID)
        {
            try
            {
                //if (sRedBlue == true)
                //{
                //    HBillType = "1239";
                //}
                //oBar = webserver.get_CheckTypeByBarCode(sCode, sInterID, sBillType, sBillNo, sMaker, WhID, SPID, sQty, sRedBlue, SourceFlag, sSourceBillNo, sSourceType, HOWNERID, ref DBUtility.ClsPub.sErrInfo);
                WebS.WebService1 oWebs = new WebS.WebService1();
                WebS.ClsKf_ICStockBill_WMS WebSoBar = new WebS.ClsKf_ICStockBill_WMS();
                string sExpressNumber = "";
                WebSoBar = oWebs.get_CheckTypeByBarCode_All(sCode, sInterID, sBillType, 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 = WebSoBar;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 1;
                objJsonResult.Message = e.Message + ";" + e.StackTrace;
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// 
        /// 一键扫码红字
        /// 
        /// 
        [Route("POStockInBill/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)
        {
            if (sRedBlue == true)
            {
                HBillType = "1239";
            }
            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("POStockInBill/get_GetCg_POOrderBillList")]
        [HttpGet]
        public object get_GetCg_POOrderBillList(string HSourceBillType, string HSourceBillNo, Int64 sInterID, string sBillNo)
        {
            try
            {
                string sWhere = " Where 单据号 like '%" + HSourceBillNo.Trim() + "'";
                //根据源单类型来调用不同的WEBS方法 new 
                if (HSourceBillType == "1102")
                {
                    ds = webserver.GetCg_POOrderBillList(sWhere + "  ");
                }
                else if (HSourceBillType == "1103")
                {
                    ds = webserver.GetCg_PoInStockBillList(sWhere + "  and isnull(HBillSubType,0)=12510 ");
                }
                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 = "没有返回任何记录!" + HSourceBillType;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "返回记录成功!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
            }
            catch (Exception ex)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + ex.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// 
        /// 写入临时表  扫源单的方法
        /// 
        /// 
        /// 
        [Route("POStockInBill/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() + "'";
                //根据源单类型来调用不同的WEBS方法 new 
                if (HSourceBillType == "1102")
                {
                    ds = webserver.GetCg_POOrderBillList(sWhere + "  ");
                }
                else if (HSourceBillType == "1103")
                {
                    ds = webserver.GetCg_PoInStockBillList(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 = "没有返回任何记录!" + HSourceBillType;
                    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("ICMOReportBill/set_SavePonderationBillMain_Temp_Source_Fast_Json_New")]
        [HttpGet]
        public object set_SavePonderationBillMain_Temp_Source_Fast_Json_New(string HSourceBillType, string HSourceBillNo, Int64 sInterID, string sBillNo)
        {
            try
            {
                LogService.Write("执行成功!");
                // DataSet ds = new DataSet();
                // WebServer webserver = new WebServer();
                string sWhere = " Where 单据号 like '%" + HSourceBillNo.Trim() + "'";
                //根据源单类型来调用不同的WEBS方法 new 
                if (HSourceBillType == "3710")
                {
                    ds = webserver.GetSc_ICMOBillList(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 = "没有返回任何记录!" + HSourceBillType;
                    objJsonResult.data = null;
                    return objJsonResult;
                    //DBUtility.ClsPub.MessageBeep((int)DBUtility.ClsPub.BeepType.Warning);
                }
                else
                {
                    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, "3711", 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("POStockInBill/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("POStockInBill/Get_CheckWhAndSP_Josn")]
        [HttpGet]
        public object Get_CheckWhAndSP_Josn(Int64 sHInterID, string sHBillType, string sBarCode, Int64 sHWHID, Int64 sHSPID)
        {
            long WhID = sHWHID;
            long SPID = sHSPID;
            if (webserver.Get_CheckWhAndSP(sHInterID, sHBillType, sBarCode, sHWHID, SPID, ref WhID, ref SPID, 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;
            }
        }
        /// 
        /// //根据物料条码得到对应源单信息并将源单信息新增到条码出入库临时表,带出表头部门、供应商
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        [Route("POStockInBill/set_SavePonderationBillMain_Temp_Source_SourceBillType_Json")]
        [HttpGet]
        public object set_SavePonderationBillMain_Temp_Source_SourceBillType_Json(string sBarCode, Int64 sInterID, string sBillNo, Double sQty)
        {
            if (SourceFlag)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "获取失败+";
                objJsonResult.data = null;
                return objJsonResult;
            }
            else
            {
                if (webserver.set_SavePonderationBillMain_Temp_Source_SourceBillType(sInterID, sBillNo, HBillType, sBarCode, sRedBlue2, ref HSourceBillNo, ref sSourceTypeName, ref HSupID, ref HSupName, ref HDeptID, ref HDeptName, ref DBUtility.ClsPub.sErrInfo))
                {
                    //----------创建虚表------------------------
                    DataTable dt_Main = new DataTable("Json");
                    dt_Main.Columns.Add("HSourceBillNo", typeof(string));
                    dt_Main.Columns.Add("sSourceTypeName", typeof(string));
                    dt_Main.Columns.Add("HSupName", typeof(string));
                    dt_Main.Columns.Add("HSupID", typeof(int));
                    dt_Main.Columns.Add("HDeptName", typeof(string));
                    dt_Main.Columns.Add("HDeptID", typeof(int));
                    dt_Main.Columns.Add("SourceFlag", typeof(bool));
                    //---------创建新行------------------------
                    DataRow dr_main = dt_Main.NewRow();//创建新行 
                    dt_Main.Rows.Add(dr_main);//将新行加入到表中
                    dr_main["HSourceBillNo"] = DBUtility.ClsPub.isStrNull(HSourceBillNo);
                    dr_main["sSourceTypeName"] = DBUtility.ClsPub.isLong(sSourceTypeName);
                    dr_main["HSupName"] = DBUtility.ClsPub.isStrNull(HSupName);
                    dr_main["HSupID"] = DBUtility.ClsPub.isLong(HSupID);
                    dr_main["HDeptName"] = DBUtility.ClsPub.isStrNull(HDeptName);
                    dr_main["HDeptID"] = DBUtility.ClsPub.isLong(HDeptID);
                    dr_main["SourceFlag"] = DBUtility.ClsPub.isBool(true);
                    if (dt_Main == null || dt_Main.Rows.Count <= 0)
                    {
                        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 = "获取成功";
                        objJsonResult.data = dt_Main;
                        return objJsonResult;
                    }
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "获取失败" + DBUtility.ClsPub.sErrInfo;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
        }
        /// 
        /// 根据条码得到相应信息(条码档案) 扫条码的方法
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        [Route("POStockInBill/get_InfoByBarCode_Source_Json")]
        [HttpGet]
        public object get_InfoByBarCode_Source_Json(string sBarCode, Int64 sInterID, string sBillNo, Double sQty, Int64 HWHID, Int64 HSPID)
        {
            // string sRedBlue = "蓝字";
            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 = HWHID;
                model.HStockPlaceID = 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("POStockInBill/set_SavePOStockInBackBill_Json")]
        [HttpPost]
        public object set_SavePOStockInBackBill_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_SavePOStockInBackBill_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 = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "上传失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// 
        /// 外购入库/提交/直接调webservice
        /// 
        /// 
        [Route("POStockInBill/set_SavePOStockInBill_Json")]
        [HttpPost]
        public object set_SavePOStockInBill_Json([FromBody] JObject oMain)
        {
            var _value = oMain["oMain"].ToString();
            string msg1 = _value.ToString();
            try
            {
                List lsmain = new List();
                ListModels oListModels = new ListModels();
                lsmain = oListModels.getPOStockInBillMainByJson(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_POStockInBillMain websLsmain = new WebS.ClsKf_POStockInBillMain();
                websLsmain.HInterID = lsmain[0].HInterID;
                websLsmain.HBillNo = lsmain[0].HBillNo;
                websLsmain.HBillType = "1201";//固定值
                websLsmain.HDate = lsmain[0].HDate;
                websLsmain.HDeptID = lsmain[0].HDeptID;
                websLsmain.HWHID = lsmain[0].HWHID;
                websLsmain.HSCWHID = 0;
                websLsmain.HSupID = lsmain[0].HSupID;
                websLsmain.HKeeperID = lsmain[0].HKeeperID;
                websLsmain.HSecManagerID = lsmain[0].HSecManagerID;
                websLsmain.HEmpID = 0;
                websLsmain.HManagerID = 0;
                websLsmain.HBillerID = lsmain[0].HBillerID;
                websLsmain.HRemark = "";
                websLsmain.HInnerBillNo = "";
                websLsmain.HRedBlueFlag = false;//false蓝字 true红字
                websLsmain.HMainSourceBillType = lsmain[0].HBillType;
                websLsmain.HExplanation = lsmain[0].HExplanation;
                if (webserver.set_SavePOStockInBill_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 = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "上传失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        /// 
        /// 生产汇报单/提交/直接调webservice
        /// 
        /// 
        [Route("ICMOReportBill/set_SaveICMOReportBill_Json")]
        [HttpPost]
        public object set_SaveICMOReportBill_Json([FromBody] JObject oMain)
        {
            var _value = oMain["oMain"].ToString();
            string msg1 = _value.ToString();
            try
            {
                List lsmain = new List();
                ListModels oListModels = new ListModels();
                lsmain = oListModels.getICMOReportBillMainByJson(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.ClsSc_ICMOReportBillMain websLsmain = new WebS.ClsSc_ICMOReportBillMain();
                websLsmain.HInterID = lsmain[0].HInterID;
                websLsmain.HBillNo = lsmain[0].HBillNo;
                websLsmain.HBillType = "3711";//固定值
                websLsmain.HDate = lsmain[0].HDate;
                websLsmain.HDeptID = lsmain[0].HDeptID;
                websLsmain.HEmpID = 0;
                websLsmain.HBillerID = lsmain[0].HBillerID;
                websLsmain.HRemark = "";
                websLsmain.HMainSourceBillType = lsmain[0].HBillType;
                if (webserver.set_SaveICMOReportBill_Json(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 = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "上传失败!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        [Route("POStockInBill/GetSpName_Json")]
        [HttpGet]
        public object GetSpName_Json(long HSpID, long HWHID, long HStockOrgID, ref string sErrMsg)
        {
            try
            {
                ds = webserver.GetSPInfoByIDandHWHIDandOrg(HSpID, HWHID, HStockOrgID, ref sErrMsg);
                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("POStockInBill/Delete_Json")]
        [HttpGet]
        public object Delete_Json(long HInterID, long HMaterID, long HAuxPropID, string HMTONo, long HSourceInterID, long HSourceEntryID, string sHBillType)
        {
            string sErrMsg = string.Empty;
            try
            {
                if (webserver.set_DelPonderationBillMain_Temp_InterIDAndSource(HInterID, HMaterID, HAuxPropID, HMTONo, HSourceInterID, HSourceEntryID, sHBillType, ref sErrMsg))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "删除成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "删除失败!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "删除失败!";
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        [Route("POStockInBill/DisBillEntryList_Mate_Webs_Json")]
        [HttpGet]
        public object DisBillEntryList_Mate_Webs_Json(long HInterID, string sBillType, string sWhere)
        {
            try
            {
                ds = webserver.GetKf_PonderationBillMain_Temp(HInterID, sBillType, 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("POStockInBillList/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("POStockInBillList/Delete_Json")]
        [HttpGet]
        public object Delete_Json(long sHInterID)
        {
            string sErrMsg = string.Empty;
            try
            {
                if (webserver.DeleteBillList(sHInterID, ref sErrMsg))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "删除成功!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "删除失败!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "删除失败!";
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #region 到货点数
        [Route("POStockInBillList/get_InfoByBillNo")]
        [HttpGet]
        public object get_InfoByBillNo(string HBillno)
        {
            try
            {
                string sqlwhere = " where 1=1 ";
                if (!String.IsNullOrEmpty(HBillno))
                    sqlwhere += "and 单据号='" + HBillno + "'";
                string sql = $"select * from h_v_Cg_POInStockBillList {sqlwhere} ";
                ds = oCn.RunProcReturn(sql, "h_v_Cg_POInStockBillList");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;
                    objJsonResult.Message = "Sucess!";
                    objJsonResult.data = ds.Tables[0];
                    return objJsonResult;
                }
            }
            catch (Exception)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "失败 !";
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //[Route("POStockInBillList/confirm")]
        //public object confirm(string hmainid)
        //{
        //    try
        //    {
        //        JObject model = new JObject();
        //        model.Add("FBILLTYPEID", new JObject() { ["Fnumber"] = "SLD01_SYS" }); //单据类型
        //        model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //通知日期
        //        model.Add("FStockOrgId", new JObject() { ["Fnumber"] = (this.Model.GetValue("FHPURCHASEORGID") as DynamicObject)?["Number"].ToString() ?? "" }); // 收料组织 
        //        model.Add("FPurOrgId", new JObject() { ["Fnumber"] = (this.Model.GetValue("FHPURCHASEORGID") as DynamicObject)?["Number"].ToString() ?? "" }); //采购组织
        //        model.Add("FSupplierId", new JObject() { ["Fnumber"] = (this.Model.GetValue("FSupplierID") as DynamicObject)?["Number"].ToString() ?? "" }); //供应商
        //        model.Add("FOwnerTypeIdHead", "BD_OwnerOrg");//  货主类型
        //        model.Add("FOwnerIdHead", new JObject() { ["Fnumber"] = (this.Model.GetValue("FHPURCHASEORGID") as DynamicObject)?["Number"].ToString() ?? "" });//货主 
        //                                                                                                                                                     //子表 数据模型
        //        JArray Fentity = new JArray();
        //        foreach (var item in entityRows)
        //        {
        //            if (Convert.ToBoolean(item["FCloseStatus"]))
        //                continue;
        //            JObject FentityModel = new JObject();
        //            FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = (item["FHMaterID"] as DynamicObject)?["Number"].ToString() ?? "" }); // 物料编码   
        //            FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = (item["FUnitID"] as DynamicObject)?["Number"].ToString() ?? "" }); // 单位   
        //            FentityModel.Add("FPreDeliveryDate", this.Model.GetValue("FHDate").ToString()); //预计到货日期   
        //            FentityModel.Add("FPriceUnitId", new JObject() { ["Fnumber"] = (item["FUnitID"] as DynamicObject)?["Number"].ToString() ?? "" }); // 计价单位   
        //            FentityModel.Add("FStockUnitID", new JObject() { ["Fnumber"] = (item["FUnitID"] as DynamicObject)?["Number"].ToString() ?? "" }); //  库存单位   
        //            FentityModel.Add("FActReceiveQty", Convert.ToDecimal(item["FHQty"]) - Convert.ToDecimal(item["FReciveCount"])); // 供应商送货数量(提料计划数量 - 已生成送货单数量)
        //            FentityModel.Add("FOwnerTypeId", "BD_OwnerOrg");//货主类型
        //            FentityModel.Add("FOwnerID", new JObject() { ["Fnumber"] = (this.Model.GetValue("FHPURCHASEORGID") as DynamicObject)?["Number"].ToString() ?? "" });//货主 
        //            FentityModel.Add("FSrcId", item["FHPOOrderInterID"].ToString());//源单内码
        //            FentityModel.Add("FSRCFORMID", "PUR_PurchaseOrder");//源单类型
        //            FentityModel.Add("FSrcBillNo", item["FHPOOrderBillNo"].ToString());//源单单号
        //            FentityModel.Add("FSRCENTRYID", item["FHPOOrderEntryID"].ToString());//源单分录内码
        //            FentityModel.Add("FORDERBILLNO", item["FHPOOrderBillNo"].ToString());//源单单号
        //            FentityModel.Add("FPOORDERENTRYID", item["FHPOOrderEntryID"].ToString());//源单分录内码
        //            JArray Fentity2 = new JArray();
        //            JObject FentityModel2 = new JObject();
        //            FentityModel2.Add("FDetailEntity_Link_FRULEID", "a8c6b6e5-a8c0-4fc1-8592-6b76c2136cf9");
        //            FentityModel2.Add("FDetailEntity_Link_FSTableName", "t_PUR_POOrderEntry");
        //            FentityModel2.Add("FDetailEntity_Link_FSBillId", item["FHPOOrderInterID"].ToString());
        //            FentityModel2.Add("FDetailEntity_Link_FSId", item["FHPOOrderEntryID"].ToString());
        //            Fentity2.Add(FentityModel2);
        //            FentityModel.Add("FDetailEntity_Link", Fentity2);
        //            Fentity.Add(FentityModel);
        //        }
        //        model.Add("FDetailEntity", Fentity); //明细信息
        //        JObject _FentityModel = new JObject();
        //        _FentityModel.Add("FSettleOrgId", new JObject() { ["Fnumber"] = (this.Model.GetValue("FHPURCHASEORGID") as DynamicObject)?["Number"].ToString() ?? "" }); //  结算组织  
        //        _FentityModel.Add("FSettleCurrId", new JObject() { ["Fnumber"] = (this.Model.GetValue("FSettleCurrId") as DynamicObject)?["Number"].ToString() ?? "" }); //  结算币别
        //        _FentityModel.Add("FPricePoint", 0); //  定价时点
        //        model.Add("FinanceEntity ", _FentityModel);//财务信息
        //        JObject jsonRoot = new JObject()
        //        {
        //            ["Creator"] = "",
        //            ["NeedUpDateFields"] = new JArray(),
        //            ["NeedReturnFields"] = new JArray(),
        //            ["IsDeleteEntry"] = "false",
        //            ["SubSystemId"] = "",
        //            ["IsVerifyBaseDataField"] = "false",
        //            //["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能
        //            ["Model"] = model
        //        };
        //        var result = cloudClient.Save("PUR_ReceiveBill", jsonRoot.ToString());
        //        JObject saveObj = JObject.Parse(result);
        //        string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
        //    }
        //    catch (Exception)
        //    {
        //        objJsonResult.code = "0";
        //        objJsonResult.count = 0;
        //        objJsonResult.Message = "失败 !";
        //        objJsonResult.data = null;
        //        return objJsonResult;
        //    }
        //}
        #endregion
        #region [收料通知单审核]
        //收料通知单审核 扫条码
        [Route("POStockInBillList/Get_ReciveBillCheckDate")]
        [HttpGet]
        public object Get_ReciveBillCheckDate(string HBarCode)
        {
            try
            {
                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                DataSet Ds = oCn.RunProcReturn("exec h_p_KF_PonderationBillMain_Temp_Add_POInStockCheck2 '" + HBarCode + "'", "h_p_KF_PonderationBillMain_Temp_Add_POInStockCheck2");
                if (Ds == null || Ds.Tables[0].Rows.Count == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "没有返回任何记录!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    if (DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0][0]) == 0)
                    {
                        objJsonResult.code = "1";
                        objJsonResult.count = 1;
                        objJsonResult.Message = "Sucess!";
                        objJsonResult.data = Ds.Tables[0];
                        return objJsonResult;
                    }
                    else
                    {
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HRemark"]);
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        //收料通知单审核 审核提交
        [Route("POStockInBillList/Exec_ReciveBillCheck")]
        [HttpGet]
        public object Exec_ReciveBillCheck(string HBarCode)
        {
            try
            {
                //修改金蝶生产单的状态
                //访问金蝶
                var loginRet = InvokeHelper.Login();
                var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value();
                if (isSuccess == 0)
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "操作失败,金蝶账号登录异常。" + loginRet;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                var json = new
                {
                    //CreateOrgId = 0,
                    Numbers = HBarCode,
                    //Ids = (EntyID).Split('-')[0],
                    //PkEntryIds = (EntyID).Split('-')[1]
                };
                string result1 = string.Empty;
                string result2 = string.Empty;
                DataSet Ds = oCn.RunProcReturn("select FDOCUMENTSTATUS,FID from  AIS20210811135644..T_PUR_RECEIVE where FBILLNO='" + HBarCode+"'", "AIS20210811135644..T_PUR_RECEIVE");
                //判断当前收料通知单状态——已创建则先提交再审核、以提交则只审核
                if (Ds.Tables[0].Rows[0][0].ToString() == "A"|| Ds.Tables[0].Rows[0][0].ToString() == "D")
                {
                    result1 = InvokeHelper.Submit("PUR_ReceiveBill", JsonConvert.SerializeObject(json));
                    result2 = InvokeHelper.Audit("PUR_ReceiveBill", JsonConvert.SerializeObject(json));
                }
                if (Ds.Tables[0].Rows[0][0].ToString() == "B")
                {
                    result2 = InvokeHelper.Audit("PUR_ReceiveBill", JsonConvert.SerializeObject(json));
                }
                //判断审核是否成功
                if (JObject.Parse(result2)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "审核收料通知单失败!单据号:" + HBarCode;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "审核成功!";
                objJsonResult.data = 1;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
        #region PDA销售出库
        //PDA销售出库整托删除
        [Route("POStockInBillList/SellOutBillSDeleCode")]
        [HttpGet]
        public object SellOutBillSDeleCode(string HBarCode,string HInterID)
        {
            try
            {
                //根据条码在条码档案中找到对应的托条码,再在临时表中删除该托条码的全部记录
                string sql = string.Format(@"delete from KF_PonderationBillMain_Temp where HBillType=1205 and HInterID=" + HInterID + " and HBarCode" +
                    " in (select HBarCode from Gy_BarCodeBill where HBarCode_Pack = (select HBarCode_Pack from Gy_BarCodeBill where HBarCode = '"+ HBarCode + "'))");
                oCn.RunProc(sql);
                
                objJsonResult.code = "1";
                objJsonResult.count = 1;
                objJsonResult.Message = "整托删除成功!";
                objJsonResult.data = 1;
                return objJsonResult;
            }
            catch (Exception e)
            {
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "没有返回任何记录!" + e.ToString();
                objJsonResult.data = null;
                return objJsonResult;
            }
        }
        #endregion
    }
}