using ICSSoft.Common;
using ICSSoft.Entity;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ICSSoft.DataProject
{
    public class ICSLibrary
    {
        private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        private static string connString = System.Configuration.ConfigurationManager.AppSettings["ConnStr"];
        private static string ERPDB = System.Configuration.ConfigurationManager.AppSettings["ERPDB"];
        DataTable table = null;
        SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
        string sql = string.Empty;
        VerificationMethod verification = new VerificationMethod();//验证公共方法

        public object LibraryGet(ICSLibraryModel JsonData)
        {
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            string jsonInfo;
            #region sql
            try
            {

                bool isBool=   verification.isStockZero(JsonData.LotNo, JsonData.WorkPoint);
                if (isBool==true)
                {
                    sql = @"select
                                f.ContainerCODE,
                                f.ContainerName,
                                d.InvCode,
                                d.InvName,
                                d.InvStd,
                                a.Quantity,
                                d.InvUnit,
                                d.AmountUnit,
                                i.WarehouseCode,
                                i.WarehouseName,
                                q.LocationCode,
                                q.LocationName,
                                c.ProjectCode,
                                c.BatchCode,
                                c.Version,
                                c.Brand,
                                y.TransCode,--来源单据
                                y.TransSequence,--来源行号
                                a.LotNo,
                                c.cFree1,
                                c.cFree2, 
                                c.cFree3,
                                c.cFree4,
                                c.cFree5,
                                c.cFree6,
                                c.cFree7,
                                c.cFree8,
                                c.cFree9,
                                c.cFree10
                                from ICSWareHouseLotInfo a
								left join ICSInventoryLot b on a.LotNo=b.LotNo
								left join ICSExtension c on b.ExtensionID=c.id
								left join ICSInventory d on b.InvCode=d.InvCode
								left join ICSContainerLot e on e.LotNo=a.LotNo
								left join ICSContainer f on f.ContainerID= e.ID
								left join ICSLocation q on q.LocationCode=a.LocationCode
								left join ICSWarehouse i on  i.ID=q.WHID
                                left join ICSInventoryLotDetail y on y.LotNo=a.LotNo
                                where a.LotNo='{0}' and a.WorkPoint='{1}'";
                    sql = string.Format(sql, JsonData.LotNo, JsonData.WorkPoint);
                    table = DBHelper.SQlReturnData(sql, cmd);
                    if (table.Rows.Count > 0)
                    {
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var Library = JsonConvert.DeserializeObject(jsonInfo);
                        return Library;
                    }
                    else
                    {
                        throw new Exception("暂无数据!");
                    }
                }
                return null;
            }
            catch (Exception ex)
            {
                cmd.Transaction.Rollback();
                log.Error(ex.Message);
                throw new Exception(ex.Message);
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
                conn.Dispose();
            }

            #endregion
        }


        public object LibraryUpdate(ICSLibraryModel JsonData)
        {
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            //string jsonInfo;
            string sqlLog = string.Empty;
            ///修改库存表的库位
            sql = @"update ICSWareHouseLotInfo set WarehouseCode='{0}' ,LocationCode ='{1}' where LotNo='{2}' and  WorkPoint='{3}'";
            sql = string.Format(sql,JsonData.WarehouseCode,JsonData.LocationCode,JsonData.LotNo,JsonData.WorkPoint);
            cmd.CommandText = sql;
           int PurchaseList= cmd.ExecuteNonQuery();//返回数量

            ///添加日志
            if (PurchaseList > 0)
            {
                sqlLog = @" INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
                                                   ([ID]
                                                   ,[TransCode]
                                                   ,[TransSequence]
                                                   ,[LotNo]
                                                   ,[InvCode]
                                                   ,[FromWarehouseCode]
                                                   ,[FromLocationCode]
                                                   ,[ToWarehouseCode]
                                                   ,[ToLocationCode]
                                                   ,[Quantity]
                                                   ,[Memo]
                                                   ,[Lock]
                                                   ,[TransType]
                                                   ,[BusinessCode]
                                                   ,[ERPID]
                                                   ,[ERPDetailID]
                                                   ,[ERPCode]
                                                   ,[ERPSequence]
                                                   ,[MUSER]
                                                   ,[MUSERName]
                                                   ,[MTIME]
                                                   ,[WorkPoint]
                                                   ,[EATTRIBUTE1])
                                             
                                                   (select newid(),'{0}','{1}','{2}',a.InvCode ,' ', ' ','{3}','{4}',a.Quantity,' ','0','7','14',' ',' ',' ',' ','{5}',e.F_RealName,'{6}','{7}',' '
                                                   from ICSWareHouseLotInfo a--主表
                                                   left join Sys_SRM_User e on e.F_Account='{5}' and e.F_Location='{7}'
                                                    where a.LotNo='{2}' and a. WorkPoint='{7}' )";
                sqlLog = string.Format(sqlLog, JsonData.TransCode, JsonData.TransSequence, JsonData.LotNo, JsonData.WarehouseCode,JsonData.LocationCode,  JsonData.User, DateTime.Now, JsonData.WorkPoint);
                cmd.CommandText = sqlLog;
                int Purchase = cmd.ExecuteNonQuery();//返回数量
                if (Purchase>0)
                {
                    cmd.Transaction.Commit();
                }
                else
                {
                    cmd.Transaction.Rollback();
                }
            }
                return null;
        }
    }
}