using ICSSoft.Common;
using ICSSoft.Entity;
using ICSSoft.Entity;
using Newtonsoft.Json;
using NFine.Code;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using static ICSSoft.Entity.LOTCreateIModel;

namespace ICSSoft.DataProject
{
    /// <summary>
    /// WMS条码信息
    /// </summary>
    public class WMSBarCoreService
    {
        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;
        string sqlInfo = string.Empty;
        VerificationMethod verification = new VerificationMethod();

        #region 多语言
        /// <summary>
        /// 多语言查询
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public List<WMSBarCoreModel> Get(WMSBarCoreModel JsonData)
        {
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            try
            {
                sql = @"select cnValue AS Name,Code from Sys_Language where 1=1";
                if (!string.IsNullOrWhiteSpace(JsonData.Code))
                {
                    sql += " and Code='{0}'";
                }
                sql = string.Format(sql, JsonData.Code);
                table = DBHelper.SQlReturnData(sql, cmd);
                string json = JsonConvert.SerializeObject(table);
                List<WMSBarCoreModel> model = JsonConvert.DeserializeObject<List<WMSBarCoreModel>>(json);
                cmd.Transaction.Commit();
                return model;
            }
            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

        #region 源头单据信息
        /// <summary>
        /// 源头单据信息
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public object DocumentGet(WMSSourceDocumentModel JsonData)
        {

            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            string jsonInfo = null;
            int num = 0;
            try
            {


                sql = @"select  * from {0} ";
                switch (JsonData.TransType )
                {
                    case "送货单":
                        string sqlInfoList = @"select * from ICSASNDetail where   ASNCode='{0}' and WorkPoint='{1}'";
                        sqlInfoList = string.Format(sqlInfoList, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sqlInfoList, cmd);
                        if (table.Rows.Count <= 0)
                        {
                            throw new Exception("源头单据不存在!");
                        }
                        else
                        {
                            sqlInfo += @" SELECT a.[ID],
                                b.TransCode as TransCode ,
                                c.ID as DetailID,
                                b.TransSequence as TransSequence,
                                c.InvCode as InvCode,
                                d.InvName as InvName,
                                d.InvStd as InvStd,
                                a.[Quantity] as Quantity,
                                d.InvUnit as InvUnit,
                                a.Amount as Amount,
                                d.AmountUnit as AmountUnit,
                                c.ExtensionID as BatchCode,
                                d.InvVersion as InvVersion,
                                d.InvBrand as InvBrand,
                                c.VenCode as cFree1,
                                c.DepCode as cFree2,
                                c.POCode as cFree3,
                                c.UnitPrice as cFree4,
								c.Currency as cFree5,
								c.DepCode as cFree6,
								c.VenCode as cFree7,
                                a.LotNo,
                                 a.ASNCode
                                  FROM {0} a
                                  left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
                                  left join ICSPurchaseOrder c on b.TransCode = c.POCode and b.WorkPoint=c.WorkPoint and b.TransSequence=c.Sequence
                                  left join ICSInventory d on c.InvCode = d.InvCode and c.WorkPoint=d.WorkPoint where 1 = 1  and a.ASNCode='{1}' and a.WorkPoint='{2}'";
                            sqlInfo = string.Format(sqlInfo, TransTypeEnum.ICSASNDetail, JsonData.TransCode, JsonData.WorkPoint);
                            table = DBHelper.SQlReturnData(sqlInfo, cmd);
                            jsonInfo = JsonConvert.SerializeObject(table);
                            var modelInfo = JsonConvert.DeserializeObject(jsonInfo);
                            return modelInfo;
                        }

                    case "委外送货单":
                        sql = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        b.InvCode,
                        F.InvName,
                        F.InvStd,
                        a.Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        a.OASNCode as TransCode,--来源单据
                        a.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10,
                        o.VenCode,
						isnull((k.UnitPrice),0) as UnitPrice,
						isnull((k.Currency), ' ') as Currency,
                        isnull((k.DepCode), ' ') as DepCode,
                       isnull(( k.PersonCode), ' ') asPersonCode
						from ICSOASNDetail a
						left join  ICSInventoryLot b on A.LotNo =B.LotNo
						LEFT JOIN ICSInventoryLotDetail c ON A.LotNo =c.LotNo 
						LEFT JOIN ICSExtension E ON E.ID=b.ExtensionID
						LEFT JOIN ICSInventory F ON b.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID 
                        inner join ICSOASN  O on o.OASNCode=a.OASNCode
						LEFT JOIN ICSOutsourcingOrder k on k.OOCode=TransCode and c.TransSequence=k.Sequence
                        where 1 = 1 and a.OASNCode='{0}' and a.WorkPoint='{1}'";
                        sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var ReceiveTransq = JsonConvert.DeserializeObject(jsonInfo);
                        return ReceiveTransq;

                    case "一步式调拨单":
                        string sqlkk = @"select * from ICSTransfer where TransferNO='{0}' and WorkPoint='{1}'";
                        sqlkk = string.Format(sqlkk, JsonData.TransCode, JsonData.WorkPoint);
                        DataTable dataDt = DBHelper.SQlReturnData(sqlkk, cmd);
                        if (dataDt.Rows.Count <= 0)
                        {
                            throw new Exception("调拨单不存在");
                        }
                        else
                        {


                            sqlInfo = @"select 
                                a.ID as ID,
                                a.TransferNO as TransCode,
                                a.Sequence as TransSequence,
                                a.InvCode as InvCode,
                                c.InvName as InvName,
                                c.InvStd as InvStd,
                                a.Quantity as Quantity,
                                c.InvUnit as InvUnit,
                                a.Amount as Amount,
                                c.AmountUnit as AmountUnit,
                                a.ToWarehouseCode ,
                                a.FromWarehouseCode,
                                a.ToLocationCode as LocationCode,
                                --f.WarehouseName as WHName,
                                c.InvVersion as Version,
                                c.InvBrand as Brand,
                                a.TransferQuantity as IssueQuantity ,
                                a.MUSER as MUSER,
                                a.MTIME as MTime
                                from ICSTransfer a --主表
                                left join ICSExtension b on a.ExtensionID=b.id  and a.WorkPoint=b.WorkPoint--条码
                                left join ICSInventory c on c.InvCode=a.InvCode and c.WorkPoint=b.WorkPoint--y源头单据
                                left join ICSWarehouse e on e.WarehouseCode =a.FromWarehouseCode and   e.WorkPoint=a.WorkPoint
                                where a.TransferNO='{0}'   and a.WorkPoint='{1}'";
                            sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
                            table = DBHelper.SQlReturnData(sqlInfo, cmd);
                            jsonInfo = JsonConvert.SerializeObject(table);
                            var ReceiveTrans = JsonConvert.DeserializeObject(jsonInfo);
                            return ReceiveTrans;
                        }

                    case "委外订单备料表":
                        sqlInfo = @"select 
                                a.ID as ID,
                                a.OODetailID as TransCode,
                               	b.Sequence+'-'+a.Sequence as TransSequence,
                                a.InvCode as InvCode,
                                c.InvName as InvName,
                                c.InvStd as InvStd,
                                a.Quantity as Quantity,
                                c.InvUnit as InvUnit,
                                a.Amount as Amount,
                                c.AmountUnit as AmountUnit,
                                a.WHCode as WHCode,
                                d.WarehouseName as WHName,
                                c.InvVersion as Version,
                                c.InvBrand as Brand,
                                a.IssueQuantity ,
                                a.MUSER as MUSER,
                                a.MTIME as MTime
                                from ICSOOPick a --主表
								left join ICSOutsourcingOrder b on  a.OODetailID=b.OODetailID AND a.WorkPoint=b.WorkPoint
								left join ICSInventory c on a.InvCode=c.InvCode AND a.WorkPoint=c.WorkPoint
                                left join ICSWarehouse d on d.WarehouseCode =a.WHCode AND d.WorkPoint=a.WorkPoint
                                where b.OOCode='{0}'  and b.WorkPoint='{1}'";
                        sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sqlInfo, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var modelInfoList = JsonConvert.DeserializeObject(jsonInfo);
                        return modelInfoList;
                    case "委外领料申请单":

                        sqlInfo = @"select 
                                a.ID as ID,
                                c.TransCode as TransCode,
                                c.TransSequence as TransSequence,
                                a.InvCode as InvCode,
                                e.InvName as InvName,
                                e.InvStd as InvStd,
                                a.Quantity as Quantity,
                                e.InvUnit as InvUnit,
                                a.Amount as Amount,
                                e.AmountUnit as AmountUnit,
                                a.WHCode as WHCode,
                                f.WarehouseName as WHName,
                                e.InvVersion as Version,
                                e.InvBrand as Brand,
                                a.IssueQuantity ,
                                a.MUSER as MUSER,
                                a.MTIME as MTime
                                from {0} a --主表
                                left join ICSInventoryLot b on a.ExtensionID=b.ExtensionID  and a.WorkPoint=b.WorkPoint--条码
                                left join ICSInventoryLotDetail c on c.LotNo=b.LotNo and c.WorkPoint=b.WorkPoint--y源头单据
                                left join ICSInventory e on e.InvCode=a.InvCode  and e.WorkPoint=a.WorkPoint--料品
                                left join ICSWarehouse f on f.WarehouseCode =a.WHCode and  f.WorkPoint=a.WorkPoint--仓库
                                 where 1=1 and a.Status='2'";
                        sqlInfo += " and a.ApplyCode='{1}'  and a.WorkPoint='{2}'";
                        sqlInfo = string.Format(sqlInfo, TransTypeEnum.ICSMOApply, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sqlInfo, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var Info = JsonConvert.DeserializeObject(jsonInfo);
                        return Info;
                    case "材料出库":
                        sql = @"select 
                                a.ID as ID,
                                c.TransCode as TransCode,
                                c.TransSequence as TransSequence,
                                a.InvCode as InvCode,
                                e.InvName as InvName,
                                e.InvStd as InvStd,
                                a.Quantity as Quantity,
                                e.InvUnit as InvUnit,
                                a.Amount as Amount,
                                e.AmountUnit as AmountUnit,
                                a.WHCode as WHCode,
                                f.WarehouseName as WHName,
                                e.InvVersion as Version,
                                e.InvBrand as Brand,
                               a.IssueQuantity as IssueQuantity ,
                                a.MUSER as MUSER,
                                a.MTIME as MTime,
								a.Status
                                from ICSMOIssue a --主表
                                left join ICSInventoryLot b on a.ExtensionID=b.ExtensionID  and a.WorkPoint=b.WorkPoint--条码
                                left join ICSInventoryLotDetail c on c.LotNo=b.LotNo and c.WorkPoint=b.WorkPoint--y源头单据
                                left join ICSInventory e on e.InvCode=a.InvCode  and e.WorkPoint=a.WorkPoint--料品
                                left join ICSWarehouse f on f.WarehouseCode =a.WHCode and   f.WorkPoint=a.WorkPoint
                                where a.Status='2' and a.SDNCode='{1}'  and a.WorkPoint='{2}'";
                        sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var Issue = JsonConvert.DeserializeObject(jsonInfo);
                        return Issue;
                    case "销售发货":
                        sql = @"select 
                                a.ID as ID,
                                a.SDNCode as TransCode,
                                b.ID as DetailID ,
                                a.Sequence as TransSequence,
                                b.InvCode as InvCode,
                                b.InvName as InvName,
                                b.InvStd as InvStd,
                                a.Quantity as Quantity,
                                b.InvUnit as InvUnit,
                                a.Amount as Amount,
                                a.SDNQuantity as IssueQuantity,
                                b.AmountUnit,
                                d.WarehouseCode as WHCode,
                                d.WarehouseName as WHName,
                                c.ProjectCode,
                                c.BatchCode,
                                c.Version,
                                c.Brand,
                                c.cFree1,
                                c.cFree2,
                                c.cFree3,
                                c.cFree4,
                                c.cFree5,
                                c.cFree6,
                                c.cFree7,
                                c.cFree8,
                                c.cFree9,
                                c.cFree10,
                                a.Type,
                                a.MUSER,
                                a.MTIME as MTime
                                from ICSSDN a
                                left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
                                left join ICSExtension c on c.ID=a.ExtensionID and c.WorkPoint=a.WorkPoint
                                left join ICSWarehouse d on d.WarehouseCode=a.WHCode and d.WorkPoint=a.WorkPoint
                                WHERE type ='1'  ";
                        sql += " and a.SDNCode='{0}' and a.WorkPoint='{1}'";
                        sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var ICSSDN = JsonConvert.DeserializeObject(jsonInfo);
                        return ICSSDN;
                    case "生产订单备料表":
                        sql = @"select 
                                a.ID as ID,
                                d.MOCode as TransCode,
                                d.MODetailID as IDDetailID,
                                d.Sequence+'-'+a.Sequence as TransSequence,
                                a.InvCode as InvCode,
                                e.InvName as InvName,
                                e.InvStd as InvStd,
                                a.Quantity as Quantity,
                                e.InvUnit as InvUnit,
                                isnull((a.Amount),0)as Amount,
                                e.AmountUnit as AmountUnit,
                                a.WHCode as WHCode,
                                f.WarehouseName as WHName,
                                e.InvVersion as Version,
                                e.InvBrand as Brand,
                               isnull((a.IssueQuantity),0)as IssueQuantity,
                                a.MUSER as MUSER,
                                a.MTIME as MTime,
                                a.WorkPoint,
                                a.Sequence
                                from {0} a --主表
                                INNER JOIN ICSMO d on d.id=a.MODetailID and d.WorkPoint=a.WorkPoint-- 表体标识
                                INNER JOIN ICSInventory e on e.InvCode=d.InvCode   and e.WorkPoint=a.WorkPoint--料品
                                LEFT JOIN ICSWarehouse f on f.WarehouseCode =a.WHCode  and f.WorkPoint=a.WorkPoint--仓库
                                where 1=1 ";
                        sql += " and d.MOCode='{1}' and a.WorkPoint='{2}'";
                        sql = string.Format(sql, TransTypeEnum.ICSMOPick, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var MOPic = JsonConvert.DeserializeObject(jsonInfo);
                        return MOPic;

                    case "委外材料出库":
                        sqlInfo = @"select 
                                a.ID as ID,
                                c.TransCode as TransCode,
                                c.TransSequence as TransSequence,
                                a.InvCode as InvCode,
                                e.InvName as InvName,
                                e.InvStd as InvStd,
                                a.Quantity as Quantity,
                                e.InvUnit as InvUnit,
                                a.Amount as Amount,
                                e.AmountUnit as AmountUnit,
                                a.WHCode as WHCode,
                                f.WarehouseName as WHName,
                                e.InvVersion as Version,
                                e.InvBrand as Brand,
                                a.IssueQuantity ,
                                a.MUSER as MUSER,
                                a.MTIME as MTime
                                from {0} a --主表
                                left join ICSInventoryLot b on a.ExtensionID=b.ExtensionID  and a.WorkPoint=b.WorkPoint--条码
                                left join ICSInventoryLotDetail c on c.LotNo=b.LotNo  and c.WorkPoint=b.WorkPoint--y源头单据
                                left join ICSInventory e on e.InvCode=a.InvCode  and e.WorkPoint=a.WorkPoint--料品
                                left join ICSWarehouse f on f.WarehouseCode =a.WHCode  and f.WorkPoint=a.WorkPoint--仓库
                                 where 1=1 and a.Status='2'";
                        sqlInfo += " and a.IssueCode='{1}' and a.WorkPoint='{2}'";
                        sqlInfo = string.Format(sqlInfo, TransTypeEnum.ICSOIssue, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sqlInfo, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        //sqlInfo = string.Format(sqlInfo, Type.ICSMOApply, JsonData.TransCode);
                        var ICSOIssue = JsonConvert.DeserializeObject(jsonInfo);
                        return ICSOIssue;
                    case "杂发单":
                        sql = @"select 
                                a.ID as ID,
                                c.TransCode as TransCode,
                                c.TransSequence as TransSequence,
                                a.InvCode as InvCode,
                                e.InvName as InvName,
                                e.InvStd as InvStd,
                                a.Quantity as Quantity,
                                e.InvUnit as InvUnit,
                                a.Amount as Amount,
                                e.AmountUnit as AmountUnit,
                                a.WHCode as WHCode,
                                f.WarehouseName as WHName,
                                e.InvVersion as Version,
                                e.InvBrand as Brand,
                               a.OutQuantity as IssueQuantity ,
                                a.MUSER as MUSER,
                                a.MTIME as MTime
                                from ICSOtherOut a --主表
                                left join ICSInventoryLot b on a.ExtensionID=b.ExtensionID  and a.WorkPoint=b.WorkPoint--条码
                                left join ICSInventoryLotDetail c on c.LotNo=b.LotNo and c.WorkPoint=b.WorkPoint--y源头单据
                                left join ICSInventory e on e.InvCode=a.InvCode  and e.WorkPoint=a.WorkPoint--料品
                                left join ICSWarehouse f on f.WarehouseCode =a.WHCode and   f.WorkPoint=a.WorkPoint
                                where a.Status='2' and a.OutCode='{0}'  and a.WorkPoint='{1}'";
                        sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        //sqlInfo = string.Format(sqlInfo, Type.ICSMOApply, JsonData.TransCode);
                        var ItherOut = JsonConvert.DeserializeObject(jsonInfo);
                        return ItherOut;
                    case "采购退货单":
                        sqlInfo += @"select   a.ID,
                                a.InvCode,
                                C.InvName,
                                C.InvStd,
                                a.Quantity ,
                                C.InvUnit,
                                a.Amount AS AmountUnit,
                                --l.WarehouseCode,
                                --l.WarehouseName,
                                --j.LocationCode,
                                --j.LocationName,
                                a.RCVQuantity as IssueQuantity,
                                a.Sequence as TransSequence,
                                b.ProjectCode,
                                b.BatchCode,
                                b.Version,
                                b.Brand,
                                b.cFree1,
                                b.cFree2, 
                                b.cFree3,                               
                                b.cFree4,
                                b.cFree5,
                                b.cFree6,
                                b.cFree7,
                                b.cFree8,
                                b.cFree9,
                                b.cFree10
							   
								from ICSDeliveryNotice a
								left join ICSExtension b on a.ExtensionID=b.ID
							   LEFT JOIN ICSInventory  C  ON A.InvCode =C.InvCode where 1 = 1 ";
                        sqlInfo += " and  A.DNType='2' AND  a.dncode='{0}' and A.WorkPoint='{1}'";
                        sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sqlInfo, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var Receive = JsonConvert.DeserializeObject(jsonInfo);
                        return Receive;
                    case "委外红字入库单":
                        sql += " and a.RCVCode='{1}' and Type=2";
                        sql = string.Format(sql, TransTypeEnum.ICSOutsourcingReceive, JsonData.TransCode);
                        break;
                    case "销售退货":
                        sqlInfo = @"select 
                                a.ID as ID,
                                a.SDNCode as TransCode,
                                b.ID as DetailID ,
                                a.Sequence as TransSequence,
                                b.InvCode as InvCode,
                                b.InvName as InvName,
                                b.InvStd as InvStd,
                                a.Quantity as Quantity,
                                b.InvUnit as InvUnit,
                                a.Amount as Amount,
                                a.SDNQuantity as IssueQuantity,
                                b.AmountUnit,
                                d.WarehouseCode as WHCode,
                                d.WarehouseName as WHName,
                                c.ProjectCode,
                                c.BatchCode,
                                c.Version,
                                c.Brand,
                                c.cFree1,
                                c.cFree2,
                                c.cFree3,
                                c.cFree4,
                                c.cFree5,
                                c.cFree6,
                                c.cFree7,
                                c.cFree8,
                                c.cFree9,
                                c.cFree10,
                                a.Type,
                                a.MUSER,
                                a.MTIME as MTime
                                from {0} a
                                left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
                                left join ICSExtension c on c.ID=a.ExtensionID and c.WorkPoint=a.WorkPoint
                                left join ICSWarehouse d on d.WarehouseCode=a.WHCode and d.WorkPoint=a.WorkPoint
                                WHERE type ='2'  ";
                        sqlInfo += " and a.SDNCode='{1}'  and a.WorkPoint='{2}'";
                        sqlInfo = string.Format(sqlInfo, TransTypeEnum.ICSSDN, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sqlInfo, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var ICSSDNInfo = JsonConvert.DeserializeObject(jsonInfo);
                        return ICSSDNInfo;

                    case "两步式调拨单":
                        sql = @"select 
                                a.ID as ID,
                                c.TransCode as TransCode,
                                c.TransSequence as TransSequence,
                                a.InvCode as InvCode,
                                e.InvName as InvName,
                                e.InvStd as InvStd,
                                a.Quantity as Quantity,
                                e.InvUnit as InvUnit,
                                a.Amount as Amount,
                                e.AmountUnit as AmountUnit,
                                a.FromWarehouseCode as WHCode,
                                f.WarehouseName as WHName,
                                e.InvVersion as Version,
                                e.InvBrand as Brand,
                                a.TransferQuantity as IssueQuantity ,
                                a.MUSER as MUSER,
                                a.MTIME as MTime
                                from ICSTransfer a --主表
                                left join ICSInventoryLot b on a.ExtensionID=b.ExtensionID  and a.WorkPoint=b.WorkPoint--条码
                                left join ICSInventoryLotDetail c on c.LotNo=b.LotNo and c.WorkPoint=b.WorkPoint--y源头单据
                                left join ICSInventory e on e.InvCode=a.InvCode  and e.WorkPoint=a.WorkPoint--料品
                                left join ICSWarehouse f on f.WarehouseCode =a.FromWarehouseCode and   f.WorkPoint=a.WorkPoint";
                        sql += " and a.TransferNO='{0}' and Type=2  and a.WorkPoint='{1}'";
                        sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint);
                        break;
                    case "采购红字入库单":

                        sql = @"SELECT   
                                a.[ID],
                                b.TransCode as TransCode ,
                                c.ID as DetailID,
                                b.TransSequence as TransSequence,
                                c.InvCode as InvCode,
                                d.InvName as InvName,
                                d.InvStd as InvStd,
                                a.[Quantity] as Quantity,
                                d.InvUnit as InvUnit,
                                a.Amount as Amount,
                                d.AmountUnit as AmountUnit,
                                c.ExtensionID as BatchCode,
                                d.InvVersion as InvVersion,
                                d.InvBrand as InvBrand,
                                c.VenCode as cFree1,
                                c.DepCode as cFree2,
                                c.POCode as cFree3,
                                c.UnitPrice as cFree4,
								c.Currency as cFree5,
								c.DepCode as cFree6,
								c.VenCode as cFree7,
                                b.LotNo,a.RCVQuantity as IssueQuantity
                                  FROM {0} a
                                  left join ICSInventoryLotDetail b on a.SourceCode = b.TransCode and a.WorkPoint=b.WorkPoint
                                  left join ICSPurchaseOrder c on b.TransCode = c.POCode and b.WorkPoint=c.WorkPoint
                                  left join ICSInventory d on c.InvCode = d.InvCode and c.WorkPoint=d.WorkPoint  where 1 = 1 and a.Status = '2' and a.type = '红字入库单'";
                        sql += " and a.RCVCode='{1}'  and a.WorkPoint='{2}'";
                        sql = string.Format(sql, TransTypeEnum.ICSPurchaseReceive, JsonData.TransCode);
                        break;

                    case "委外退货单":
                        sqlInfo = @" SELECT   
                                a.[ID],--表头唯一标识
                                a.ODNCode as TransCode ,--源头单据号
                                --c.ID as DetailID,--表体唯一标识
                                a.Sequence as TransSequence,--源头单据行号
                                a.InvCode as InvCode ,--料品编码
                                b.InvName as InvName,
                                b.InvStd as InvStd,
                                a.[Quantity] as Quantity,
                                b.InvUnit as InvUnit,
                                a.Amount as Amount,
                                b.AmountUnit as AmountUnit,
                                c.ProjectCode as ProjectCode,
                                c.BatchCode as BatchCode,
                                c.Version as Version,
                                c.Brand as Brand,
                                a.RCVQuantity as IssueQuantity,
                                c.cFree1,
                                c.cFree2,
                                c.cFree3,
                                c.cFree4,
                                c.cFree5,
                                c.cFree6,
                                c.cFree7,
                                c.cFree8,
                                c.cFree9,
                                c.cFree10
                                FROM ICSODeliveryNotice a --退货
                                LEFT JOIN ICSInventory B ON A.InvCode=B.InvCode  and a.WorkPoint=b.WorkPoint--料品表
                                LEFT JOIN ICSExtension C ON A.ExtensionID=C.ID   and a.WorkPoint=c.WorkPoint--源头单据
                                where a.ODNType='2'  and a.ODNCode='{0}'  and a.WorkPoint='{1}'";
                        sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sqlInfo, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var Notice = JsonConvert.DeserializeObject(jsonInfo);
                        return Notice;

                    case "盘点":
                        bool ischeck = verification.isCheck(JsonData.TransCode, JsonData.WorkPoint);
                        if (ischeck == true)
                        {
                            sqlInfo = @"SELECT   
                                    a.[ID],--表头唯一标识
                                    f.CheckCode as TransCode ,--源头单据号
                                    --c.ID as DetailID,--表体唯一标识
                                    e.TransCode as TransSequence,--源头单据行号
                                    f.InvCode as InvCode ,--料品编码
                                    b.InvName as InvName,
                                    b.InvStd as InvStd,
                                    a.[Quantity] as Quantity,
                                    b.InvUnit as InvUnit,
                                    f.Amount as Amount,
                                    b.AmountUnit as AmountUnit,
                                    d.ProjectCode as ProjectCode,
                                    d.BatchCode as BatchCode,
                                    d.Version as Version,
                                    d.Brand as Brand,
                                    f.ActualQuantity as IssueQuantity,
                                    d.cFree2,
                                    d.cFree3,
                                    d.cFree4,
                                    d.cFree5,
                                    d.cFree6,
                                    d.cFree7,
                                    d.cFree8,
                                    d.cFree9,
                                    d.cFree10
                                    FROM ICSWareHouseLotInfo a 
                                    left join ICSCheck f on f.WHCode=a.WarehouseCode   and a.InvCode=f.InvCode
                                    LEFT JOIN ICSInventory B ON f.InvCode=B.InvCode  and a.WorkPoint=b.WorkPoint--料品表
                                    left join ICSInventoryLot c on c.lotno=a.lotno and a.WorkPoint=c.WorkPoint
                                    LEFT JOIN ICSExtension d ON c.ExtensionID=d.ID   and a.WorkPoint=c.WorkPoint--源头单据
                                    left join ICSInventoryLotDetail e on c.LotNo=e.LotNo and c.WorkPoint=e.WorkPoint
                               
                                where  f.CheckCode='{0}'  and  a.WorkPoint='{1}' ";
                            sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
                            table = DBHelper.SQlReturnData(sqlInfo, cmd);
                            jsonInfo = JsonConvert.SerializeObject(table);
                            var Noticec = JsonConvert.DeserializeObject(jsonInfo);
                            return Noticec;
                        }
                        return false;

                    case "其它出库":
                        bool ischecks = verification.IsOtherOut(JsonData.TransCode, JsonData.WorkPoint);
                        if (ischecks == true)
                        {
                            sqlInfo = @"SELECT   
                                    a.[ID],--表头唯一标识
                                    f.OutCode as TransCode ,--源头单据号
                                    --c.ID as DetailID,--表体唯一标识
                                    f.Sequence as TransSequence,--源头单据行号
                                    f.InvCode as InvCode ,--料品编码
                                    b.InvName as InvName,
                                    b.InvStd as InvStd,
                                    a.[Quantity] as Quantity,
                                    b.InvUnit as InvUnit,
                                    f.Amount as Amount,
                                    b.AmountUnit as AmountUnit,
                                    d.ProjectCode as ProjectCode,
                                    d.BatchCode as BatchCode,
                                    d.Version as Version,
                                    d.Brand as Brand,
                                    f.OutQuantity as IssueQuantity,
                                    d.cFree2,
                                    d.cFree3,
                                    d.cFree4,
                                    d.cFree5,
                                    d.cFree6,
                                    d.cFree7,
                                    d.cFree8,
                                    d.cFree9,
                                    d.cFree10
                                    FROM ICSWareHouseLotInfo a 
                                    left  join ICSOtherOut f on f.WHCode=a.WarehouseCode   and a.InvCode=f.InvCode
                                    LEFT JOIN ICSInventory B ON f.InvCode=B.InvCode  and a.WorkPoint=b.WorkPoint--料品表
                                    left join ICSInventoryLot c on c.lotno=a.lotno and a.WorkPoint=c.WorkPoint
                                    LEFT JOIN ICSExtension d ON c.ExtensionID=d.ID   and a.WorkPoint=c.WorkPoint--源头单据
                                where  f.OutCode='{0}'  and  a.WorkPoint='{1}' ";
                            sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
                            table = DBHelper.SQlReturnData(sqlInfo, cmd);
                            jsonInfo = JsonConvert.SerializeObject(table);
                            var OtherOut = JsonConvert.DeserializeObject(jsonInfo);
                            return OtherOut;
                        }

                        return false;
                    case "拆卸单":
                        bool isDisassemblyDoc = verification.isBoolDisassemblyDoc(JsonData.TransCode, JsonData.WorkPoint);
                        if (isDisassemblyDoc == true)
                        {
                            sqlInfo = @"SELECT   
                                    a.[ID],--表头唯一标识
                                    a.DABDOCCode as TransCode ,--源头单据号
                                    a.Sequence as TransSequence,--源头单据行号
                                    a.Quantity as Quantity,
                                    a.Amount as Amount,
                                    a.InvCode as InvCode ,
                                    a.DABDOCQuantity as IssueQuantity,
                                    b.InvName as InvName,--料品编码
                                    b.InvStd as InvStd,
                                    b.InvUnit as InvUnit,                                   
                                    b.AmountUnit as AmountUnit,
                                    c.ProjectCode as ProjectCode,--自由项
                                    c.BatchCode as BatchCode,
                                    c.Version as Version,
                                    c.Brand as Brand,
                                    c.cFree2,
                                    c.cFree3,
                                    c.cFree4,
                                    c.cFree5,
                                    c.cFree6,
                                    c.cFree7,
                                    c.cFree8,
                                    c.cFree9,
                                    c.cFree10
                                    FROM ICSDisassemblyDoc a 
                                    left join ICSInventory b on b.InvCode=a.InvCode
                                    LEFT JOIN ICSExtension c ON a.ExtensionID=c.id  and a.WorkPoint=c.WorkPoint--自由项                                    
                                    where  a.DABDOCCode='{0}'  and  a.WorkPoint='{1}' ";
                            sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
                            table = DBHelper.SQlReturnData(sqlInfo, cmd);
                            jsonInfo = JsonConvert.SerializeObject(table);
                            var Doc = JsonConvert.DeserializeObject(jsonInfo);
                            return Doc;
                        }
                        return null;
                    case "两步调入":
                        sqlInfo = @"SELECT   
                                    a.[ID],--表头唯一标识
                                    f.InCode as TransCode ,--源头单据号
                                    --c.ID as DetailID,--表体唯一标识
                                    f.Sequence as TransSequence,--源头单据行号
                                    f.InvCode as InvCode ,--料品编码
                                    b.InvName as InvName,
                                    b.InvStd as InvStd,
                                    a.[Quantity] as Quantity,
                                    b.InvUnit as InvUnit,
                                    f.Amount as Amount,
                                    b.AmountUnit as AmountUnit,
                                    d.ProjectCode as ProjectCode,
                                    d.BatchCode as BatchCode,
                                    d.Version as Version,
                                    d.Brand as Brand,
                                    f.InQuantity as IssueQuantity,
                                    d.cFree2,
                                    d.cFree3,
                                    d.cFree4,
                                    d.cFree5,
                                    d.cFree6,
                                    d.cFree7,
                                    d.cFree8,
                                    d.cFree9,
                                    d.cFree10,
                                    F.WHCode
									from ICSWareHouseLotInfo a
									left  join ICSOtherIn f on f.WHCode=a.WarehouseCode   and a.InvCode=f.InvCode
                                    LEFT JOIN ICSInventory B ON f.InvCode=B.InvCode  and a.WorkPoint=b.WorkPoint--料品表
                                    left join ICSInventoryLot c on c.lotno=a.lotno and a.WorkPoint=c.WorkPoint
                                    LEFT JOIN ICSExtension d ON c.ExtensionID=d.ID   and a.WorkPoint=c.WorkPoint
                                    where f.InCode='{0}' and  f.WorkPoint='{1}'";
                        sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sqlInfo, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var OtherEnter = JsonConvert.DeserializeObject(jsonInfo);
                        return OtherEnter;

                    case "两步调出":
                        sqlInfo = @"SELECT   
                                    a.[ID],--表头唯一标识
                                    f.OutCode as TransCode ,--源头单据号
                                    --c.ID as DetailID,--表体唯一标识
                                    f.Sequence as TransSequence,--源头单据行号
                                    f.InvCode as InvCode ,--料品编码
                                    b.InvName as InvName,
                                    b.InvStd as InvStd,
                                    a.[Quantity] as Quantity,
                                    b.InvUnit as InvUnit,
                                    f.Amount as Amount,
                                    b.AmountUnit as AmountUnit,
                                    d.ProjectCode as ProjectCode,
                                    d.BatchCode as BatchCode,
                                    d.Version as Version,
                                    d.Brand as Brand,
                                    f.OutQuantity as IssueQuantity,
                                    d.cFree2,
                                    d.cFree3,
                                    d.cFree4,
                                    d.cFree5,
                                    d.cFree6,
                                    d.cFree7,
                                    d.cFree8,
                                    d.cFree9,
                                    d.cFree10
									from ICSWareHouseLotInfo a
									left  join ICSOtherOut f on f.WHCode=a.WarehouseCode   and a.InvCode=f.InvCode
                                    LEFT JOIN ICSInventory B ON f.InvCode=B.InvCode  and a.WorkPoint=b.WorkPoint--料品表
                                    left join ICSInventoryLot c on c.lotno=a.lotno and a.WorkPoint=c.WorkPoint
                                    LEFT JOIN ICSExtension d ON c.ExtensionID=d.ID   and a.WorkPoint=c.WorkPoint
                                    where f.OutCode='{0}' and  f.WorkPoint='{1}'";
                        sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sqlInfo, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var Otheroutr = JsonConvert.DeserializeObject(jsonInfo);
                        return Otheroutr;

                }
                table = DBHelper.SQlReturnData(sql, cmd);
                string json = JsonConvert.SerializeObject(table);
                var model = JsonConvert.DeserializeObject(json);//<List<WMSSourceDocumentModel>>
                cmd.Transaction.Commit();
                return model;
            }
            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

        #region 获取条码信息
        /// <summary>
        /// 获取条码信息
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public object BarCodeGet(BarCodeModel JsonData)
        {
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            try
            {

                switch (JsonData.TransType)
                {
                    #region 委外退料单


                    case "委外退料单":
                        verification.LotoOut(JsonData.Code, JsonData.WorkPoint);
                        double numLotoInfo = verification.LotoTest(JsonData.Code, JsonData.WorkPoint);
                        verification.HouseLotoOut(JsonData.Code, JsonData.WorkPoint);
                        if (numLotoInfo == 0.0)
                        {
                            sql = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                       a.Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        l.OApplyNegCode as TransCode,--来源单据
                        l.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10
						FROM ICSInventoryLot A
						LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
						LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
				       inner join ICSOApplyNegDetail l on  l.OApplyNegCode=b.TransCode and l.Sequence=b.TransSequence";
                        }
                        else
                        {
                            sql = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                        '{2}' as a.Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        l.OApplyNegCode as TransCode,--来源单据
                        l.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10
						FROM ICSInventoryLot A
						LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
						LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
				       inner join ICSOApplyNegDetail l on  l.OApplyNegCode=b.TransCode and l.Sequence=b.TransSequence";
                        }

                        sql += " and  a.LotNo='{0}' and a.WorkPoint='{1}' ";
                        sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint, numLotoInfo);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        string jsonICSMOs = JsonConvert.SerializeObject(table);
                        var ICSMOa = JsonConvert.DeserializeObject(jsonICSMOs);
                        return ICSMOa;
                    #endregion
                    #region 委外订单
                    case "委外订单":
                        verification.LotoOut(JsonData.Code, JsonData.WorkPoint);
                        double numLoto = verification.LotoTest(JsonData.Code, JsonData.WorkPoint);
                        if (numLoto == 0.0)
                        {
                            sql = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                       a.Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        l.OOCode as TransCode,--来源单据
                        l.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10
						FROM ICSInventoryLot A
						LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
						LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
				         left join ICSOutsourcingOrder l on  l.OOCode=b.TransCode and l.Sequence=b.TransSequence  where 1=1";
                        }
                        else
                        {
                            sql = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                       '{2}' as a.Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        l.OOCode as TransCode,--来源单据
                        l.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10
						FROM ICSInventoryLot A
						LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
						LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
				         left join ICSOutsourcingOrder l on  l.OOCode=b.TransCode and l.Sequence=b.TransSequence  where 1=1";
                        }
                        sql += " and  a.LotNo='{0}' and a.WorkPoint='{1}' ";
                        sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint, numLoto);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        string jsonNegReceive = JsonConvert.SerializeObject(table);
                        var ApplyNegjsonNegReceive = JsonConvert.DeserializeObject(jsonNegReceive);//<List<WMSSourceDocumentModel>>
                        return ApplyNegjsonNegReceive;
                    #endregion
                    #region 委外送货单
                    case "委外送货单 ":
                        sql += " and c.LotNo='{1}' and a.WorkPoint='{2}' ";
                        sql = string.Format(sql, TransTypeEnum.ICSODeliveryNotice, JsonData.Code, JsonData.WorkPoint);
                        break;
                    #endregion
                    #region 退料单
                    case "退料单":
                        sql = @"
						select  a.ID, 
                        a.InvCode,
                        a.Quantity,
                        d.ProjectCode,
                        d.BatchCode,
                        d.Version,
                        d.Brand,
                        c.ApplyNegCode as TransCode,--来源单据
                        c.Sequence as TransSequence,--来源行号
                        a.LotNo,
                        d.cFree1,
                        d.cFree2, 
                        d.cFree3,
                        d.cFree4,
                        d.cFree5,
                        d.cFree6,
                        d.cFree7,
                        d.cFree8,
                        d.cFree9,
                        d.cFree10
						 from ICSInventoryLot a
						 left join ICSInventoryLotDetail b  on a.LotNo=b.LotNo
						 left join ICSMOApplyNegDetail c on c.ApplyNegCode=b.TransCode and c.Sequence=b.TransSequence
						 left join ICSExtension d on d.ID=a.ExtensionID
                           where 1=1 and a.LotNo='{1}' and a.WorkPoint='{2}'";
                        sql = string.Format(sql, TransTypeEnum.ICSMOApplyNegDetail, JsonData.Code, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        string jsonNeg = JsonConvert.SerializeObject(table);
                        var ApplyNeg = JsonConvert.DeserializeObject(jsonNeg);//<List<WMSSourceDocumentModel>>
                        cmd.Transaction.Commit();
                        return ApplyNeg;
                    #endregion
                    #region 生产订单
                    case "生产订单":
                        //verification.HouseLotInvCode();
                        sql = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                        a.Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        c.MOCode as TransCode,--来源单据
                        c.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10
						FROM ICSInventoryLot A
						LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
						LEFT JOIN ICSMO C ON B.TransCode=C.MOCode AND C.Sequence=B.TransSequence
						LEFT JOIN ICSMOPick D ON C.MODetailID=D.ID
						LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID WHERE 1=1 ";
                        sql += " and A.LotNo='{1}' and a.WorkPoint='{2}' ";
                        sql = string.Format(sql, TransTypeEnum.ICSMO, JsonData.Code, JsonData.WorkPoint);

                        table = DBHelper.SQlReturnData(sql, cmd);
                        string jsonICSMO = JsonConvert.SerializeObject(table);
                        var ICSMO = JsonConvert.DeserializeObject(jsonICSMO);//<List<WMSSourceDocumentModel>>
                        cmd.Transaction.Commit();
                        return ICSMO;
                    #endregion

                    case "销售退货":
                        string type = "退货";
                        bool veri = verification.HouseLotInfo(JsonData.Code, JsonData.WorkPoint, type);
                        if (veri == true)
                        {
                            sql = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                        a.Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        c.SDNCode as TransCode,--来源单据
                        c.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10
						FROM ICSInventoryLot A
						LEFT JOIN ICSSDN C ON a.InvCode=C.InvCode AND C.WorkPoint=a.WorkPoint
						LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID           
                         where C.type='2' and A.LotNo='{0}' and A.WorkPoint='{1}'";
                            sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
                        }

                        break;
                    case "盘点":
                        sqlInfo = @"select
                        a.ID, 
                        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,
                        t.TransCode,--来源单据
                       t.TransSequence,--来源行号
                        c.cFree1,
                        c.cFree2, 
                        c.cFree3,
                        c.cFree4,
                        c.cFree5,
                        c.cFree6,
                        c.cFree7,
                        c.cFree8,
                        c.cFree9,
                       c.cFree10,
						b.LotNo
                        from ICSWareHouseLotInfo a
						left join ICSInventoryLot b on b.LotNo=a.LotNo and a.WorkPoint=b.WorkPoint
						left join ICSExtension c on c.ID=B.ExtensionID and c.WorkPoint=b.WorkPoint
						left join ICSInventory d on  a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
						left join ICSContainerLot e on e.LotNo=a.LotNo  and e.WorkPoint=a.WorkPoint
						left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint
						left join ICSWareHouseLotInfo h on h.LotNo=a.LotNo and h.WorkPoint=a.WorkPoint
						left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
						left join ICSWarehouse i on  i.ID=q.WHID  and i.WorkPoint=q.WorkPoint
						left join ICSInventoryLotDetail t on t.LotNo=a.LotNo and t.WorkPoint=a.WorkPoint where  a.LotNo='{0}' and a.WorkPoint='{1}' ";
                        sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sqlInfo, cmd);
                        string jsonInfo = JsonConvert.SerializeObject(table);
                        var modelInfo = JsonConvert.DeserializeObject(jsonInfo);//<List<WMSSourceDocumentModel>>
                        cmd.Transaction.Commit();
                        return modelInfo;
                    case "盘点单":
                        sqlInfo = @" SELECT   
                                a.[ID],--表头唯一标识
                                a.CheckCode as TransCode ,--源头单据号
                                --c.ID as DetailID,--表体唯一标识
                                e.TransCode as TransSequence,--源头单据行号
                                f.InvCode as InvCode ,--料品编码
                                b.InvName as InvName,
                                b.InvStd as InvStd,
                                a.[Quantity] as Quantity,
                                b.InvUnit as InvUnit,
                                f.Amount as Amount,
                                b.AmountUnit as AmountUnit,
                                d.ProjectCode as ProjectCode,
                                d.BatchCode as BatchCode,
                                d.Version as Version,
                                d.Brand as Brand,
                                f.ActualQuantity as IssueQuantity,
                                d.cFree2,
                                d.cFree3,
                                d.cFree4,
                                d.cFree5,
                                d.cFree6,
                                d.cFree7,
                                d.cFree8,
                                d.cFree9,
                                d.cFree10,
                                c.LotNo
                                FROM ICSCheckDetail a --退货
								left join ICSCheck f on f.CheckCode=a.CheckCode and a.WorkPoint=f.WorkPoint
                                LEFT JOIN ICSInventory B ON f.InvCode=B.InvCode  and a.WorkPoint=b.WorkPoint--料品表
								left join ICSInventoryLot c on c.lotno=a.lotno and a.WorkPoint=c.WorkPoint
                                LEFT JOIN ICSExtension d ON c.ExtensionID=d.ID   and a.WorkPoint=c.WorkPoint--源头单据
								left join ICSInventoryLotDetail e on c.LotNo=e.LotNo and c.WorkPoint=e.WorkPoint
                                where f.Status='2'  and c.lotno='{0}'  and a.WorkPoint='{1}' ";
                        sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sqlInfo, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var Noticec = JsonConvert.DeserializeObject(jsonInfo);
                        return Noticec;
                    case "采购到货单":

                        sql = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                        a.Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        c.POCode as TransCode,--来源单据
                        c.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10
						FROM ICSInventoryLot A
						LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
						LEFT JOIN ICSPurchaseOrder C ON b.TransCode=C.POCode AND C.Sequence=B.TransSequence
						LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID 
						 where  a.lotno='{0}'  and a.WorkPoint='{1}'";
                        sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var NoticecList = JsonConvert.DeserializeObject(jsonInfo);
                        return NoticecList;

                    case "采购订单":
                        bool SDN = verification.SNDetail(JsonData.Code, JsonData.WorkPoint);
                        bool oorder = verification.PurchaseOrder(JsonData.Code, JsonData.WorkPoint);

                        if (SDN == true && oorder == true)
                        {
                            double unm = verification.LotoTest(JsonData.Code, JsonData.WorkPoint);

                            if (unm == 0.0)
                            {
                                ///条码数量
                                sqlInfo = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                        j.DNQuantity  as Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        c.POCode as TransCode,--来源单据
                        c.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10
						FROM ICSInventoryLot A
						LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
						LEFT JOIN ICSPurchaseOrder C ON B.TransCode=C.POCode AND C.Sequence=B.TransSequence
						LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
                        left join ICSASNDetail j on j.lotno=a.lotno
						where c.Status='2' and   a.lotno='{0}' and a.WorkPoint='{1}'";
                                sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint);
                                table = DBHelper.SQlReturnData(sqlInfo, cmd);
                                jsonInfo = JsonConvert.SerializeObject(table);
                                var Purchase = JsonConvert.DeserializeObject(jsonInfo);
                                return Purchase;
                            }
                            else
                            {
                                //检验数量
                                sqlInfo = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                        '{2}' as Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        c.POCode as TransCode,--来源单据
                        c.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10
						FROM ICSInventoryLot A
						LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
						LEFT JOIN ICSPurchaseOrder C ON B.TransCode=C.POCode AND C.Sequence=B.TransSequence
						LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
						where c.Status='2' and   a.lotno='{0}' and a.WorkPoint='{1}'";
                                sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint, unm);
                                table = DBHelper.SQlReturnData(sqlInfo, cmd);
                                jsonInfo = JsonConvert.SerializeObject(table);
                                var Purchase = JsonConvert.DeserializeObject(jsonInfo);
                                return Purchase;
                            }
                        }
                        break;

                    case "一步式调拨单":
                        bool iSLocationCode = verification.iSLocationCode(JsonData.Code, JsonData.WorkPoint);
                        if (iSLocationCode == true)
                        {
                            sql = @"select
                        a.ID, 
                        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,
                        t.TransCode,--来源单据
                       t.TransSequence,--来源行号
                        c.cFree1,
                        c.cFree2, 
                        c.cFree3,
                        c.cFree4,
                        c.cFree5,
                        c.cFree6,
                        c.cFree7,
                        c.cFree8,
                        c.cFree9,
                        c.cFree10,
						b.LotNo
                        from ICSWareHouseLotInfo a
						left join ICSInventoryLot b on b.LotNo=a.LotNo and a.WorkPoint=b.WorkPoint
						left join ICSExtension c on c.ID=B.ExtensionID and c.WorkPoint=b.WorkPoint
						left join ICSInventory d on  a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
						left join ICSContainerLot e on e.LotNo=a.LotNo  and e.WorkPoint=a.WorkPoint
						left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint
						left join ICSWareHouseLotInfo h on h.LotNo=a.LotNo and h.WorkPoint=a.WorkPoint
						left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
						left join ICSWarehouse i on  i.ID=q.WHID  and i.WorkPoint=q.WorkPoint
						left join ICSInventoryLotDetail t on t.LotNo=a.LotNo and t.WorkPoint=a.WorkPoint
                        left  join ICSTransfer l on l.TransferNO=t.TransCode and t.TransSequence=l.Sequence
                        where a.lotno='{0}' and a.WorkPoint='{1}'";
                            sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
                            table = DBHelper.SQlReturnData(sql, cmd);
                            jsonInfo = JsonConvert.SerializeObject(table);
                            var Transfer = JsonConvert.DeserializeObject(jsonInfo);
                            return Transfer;
                        }
                        return null;
                    case "二部调拨":
                        sql = @"select
                        a.ID, 
                        f.ContainerCODE,
                        f.ContainerName,
                        d.InvCode,
                        d.InvName,
                        d.InvStd,
                        a.Quantity,
                        d.InvUnit,
                        d.AmountUnit,
                        i.WarehouseCode,
                        i.WarehouseName,
                       q.LocationCode,
                        q.LocationName,
                        b.ProjectCode,
                        b.BatchCode,
                        b.Version,
                        b.Brand,
                        t.TransCode,--来源单据
                       t.TransSequence,--来源行号
					   a.TransferQuantity as hasQuantity, 
					   a.FromWarehouseCode as fromWHCode,
					   a.ToWarehouseCode as toWHCode,
					   b.ProjectCode ,
					   a.ToLocationCode as binCode,
                        c.LotNo,
                        b.cFree1,
                        b.cFree2, 
                        b.cFree3,
                        b.cFree4,
                        b.cFree5,
                        b.cFree6,
                        b.cFree7,
                        b.cFree8,
                        b.cFree9,
                        b.cFree10,
						c.LotNo
                        from ICSTransfer a
						  left join ICSExtension b on a.ExtensionID=b.ID and  a.WorkPoint=b.WorkPoint
					      left join ICSContainerLot c on c.ID=b.ID  and c.WorkPoint=b.WorkPoint--条码
						 left join ICSInventory d on a.InvCode=d.InvCode  and a.WorkPoint=d.WorkPoint--料品表
						 left join ICSContainerLot e on e.LotNo=c.LotNo  and e.WorkPoint=c.WorkPoint--包装关联表
						 left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
						 left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
						 left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
						 left join ICSWarehouse i on  i.ID=q.WHID  and i.WorkPoint=q.WorkPoint--仓库 
						 left join ICSInventoryLotDetail t on t.LotNo=e.LotNo  and t.WorkPoint=e.WorkPoint
                           where a.Type='2' and c.lotno='{0}' and a.WorkPoint'{1}'";
                        sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var TOTransfer = JsonConvert.DeserializeObject(jsonInfo);
                        return TOTransfer;


                    case "其它入库":
                        bool BoolOtherIn = verification.HouseLotInfo(JsonData.Code, JsonData.WorkPoint, JsonData.TransType);
                        if (BoolOtherIn == true)
                        {
                            double num = verification.LotoTest(JsonData.Code, JsonData.WorkPoint);
                            if (num == 0.0)
                            {
                                ///条码数量
                                sql = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                        a.Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        c.InCode as TransCode,--来源单据
                        c.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10
						FROM ICSInventoryLot A
						LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
						LEFT JOIN ICSOtherIn C ON b.TransCode=C.InCode AND C.Sequence=B.TransSequence
						LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID 
                           where a.lotno='{0}' and a.WorkPoint='{1}'";
                                sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
                                table = DBHelper.SQlReturnData(sql, cmd);
                            }
                            else
                            {
                                ///检验的数量
                                sql = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                       '{2}' as Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        c.InCode as TransCode,--来源单据
                        c.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10
						FROM ICSInventoryLot A
						LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
						LEFT JOIN ICSOtherIn C ON b.TransCode=C.InCode AND C.Sequence=B.TransSequence
						LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID 
                           where a.lotno='{0}' and a.WorkPoint='{1}'";
                                sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint, num);
                                table = DBHelper.SQlReturnData(sql, cmd);
                            }
                        }

                        jsonInfo = JsonConvert.SerializeObject(table);
                        var OtherIn = JsonConvert.DeserializeObject(jsonInfo);
                        return OtherIn;

                    case "拆分":
                        sql = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                        a.Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        c.ProjectCode,
                        c.BatchCode,
                        c.Version,
                        c.Brand,
                        d.TransCode as TransCode,--来源单据
                        d.TransSequence as 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 c.ID=b.ExtensionID
						left join ICSInventoryLotDetail d on b.LotNo=d.LotNo
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
				     where a.lotno='{0}' and a.WorkPoint='{1}'";
                        sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        jsonInfo = JsonConvert.SerializeObject(table);
                        var lotinfo = JsonConvert.DeserializeObject(jsonInfo);
                        return lotinfo;

                    case "两部调入":
                        sqlInfo = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                        a.Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        c.InCode as TransCode,--来源单据
                        c.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10
						FROM ICSInventoryLot A
						LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
						LEFT JOIN ICSOtherIn C ON b.TransCode=C.InCode AND C.Sequence=B.TransSequence
						left join ICSTransfer d on d.TransferNO =c.InCode and d.Sequence=c.Sequence 
						LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID 
                        where a.lotno ='{0}' and a.WorkPoint='{1}' and d.Type='2' ";
                        sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sqlInfo, cmd);
                        if (table.Rows.Count > 0)
                        {
                            jsonInfo = JsonConvert.SerializeObject(table);
                            var loyout = JsonConvert.DeserializeObject(jsonInfo);
                            return loyout;
                        }
                        else
                        {
                            throw new Exception("调拨单不存在!");
                        }



                }
                table = DBHelper.SQlReturnData(sql, cmd);
                string json = JsonConvert.SerializeObject(table);
                var model = JsonConvert.DeserializeObject(json);//<List<WMSSourceDocumentModel>>
                cmd.Transaction.Commit();
                return model;

            }
            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();
            }
        }

        /// <summary>
        /// 获取条码信息()
        /// </summary>入库
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public object BarcodeWarehousing(BarCodeModel JsonData)
        {
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            string type;
            try
            {

                sql = @"select
                        a.ID, 
                        f.ContainerCODE,
                        f.ContainerName,
                        d.InvCode,
                        d.InvName,
                        d.InvStd,
                        h.Quantity,
                        d.InvUnit,
                        d.AmountUnit,
                        i.WarehouseCode,
                        i.WarehouseName,
                       q.LocationCode,
                        q.LocationName,
                        b.ProjectCode,
                        b.BatchCode,
                        b.Version,
                        b.Brand,
                        t.TransCode,--来源单据
                       t.TransSequence,--来源行号
                        c.LotNo,
                        b.cFree1,
                        b.cFree2, 
                        b.cFree3,
                        b.cFree4,
                        b.cFree5,
                        b.cFree6,
                        b.cFree7,
                        b.cFree8,
                        b.cFree9,
                        b.cFree10,
						c.LotNo
                        from {0} a --委外出库
						left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
					    left join ICSInventoryLot c on c.ID=b.ID  and c.WorkPoint=b.WorkPoint--条码
						 left join ICSInventory d on a.InvCode=d.InvCode  and a.WorkPoint=d.WorkPoint--料品表
						 left join ICSContainerLot e on e.LotNo=c.LotNo  and e.WorkPoint=c.WorkPoint--包装关联表
						 left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
						 left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
						 left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
						 left join ICSWarehouse i on  i.WarehouseCode=q.WHID  and i.WorkPoint=q.WorkPoint--仓库
						 left join ICSInventoryLotDetail t on t.LotNo=e.LotNo  and t.WorkPoint=e.WorkPoint--关联表
                        where 1=1 ";
                switch (JsonData.TransType)
                {
                    case "送货单":
                        verification.HouseLotInfo(JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);//库存条码验证

                        sql = @"select
                        a.ID, 
                        f.ContainerCODE,
                        f.ContainerName,
                        d.InvCode,
                        d.InvName,
                        d.InvStd,
                        h.Quantity,
                        d.InvUnit,
                        d.AmountUnit,
                        i.WarehouseCode,
                        i.WarehouseName,
                       q.LocationCode,
                        q.LocationName,
                        c.ProjectCode,
                        c.BatchCode,
                        c.Version,
                        c.Brand,
                        t.TransCode,--来源单据
                        t.TransSequence,--来源行号
                        a.LotNo,
                        c.cFree1,
                        c.cFree2, 
                        c.cFree3,
                        c.cFree4,
                        c.cFree5,
                        c.cFree6,
                        c.cFree7,
                        c.cFree8,
                        c.cFree9,
                        c.cFree10
                        from {0} a --送货单
					    left join ICSInventoryLot b on a.LotNo=b.LotNo and b.WorkPoint=a.WorkPoint--条码
						left join ICSExtension c on b.ExtensionID=b.ID and b.WorkPoint=c.WorkPoint
					    left join ICSInventory d on b.InvCode=d.InvCode  and a.WorkPoint=d.WorkPoint--料品表
						 left join ICSContainerLot e on e.LotNo=a.LotNo  and e.WorkPoint=c.WorkPoint--包装关联表
						 left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
						 left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
						 left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
						 left join ICSWarehouse i on  i.WarehouseCode=q.WHID  and i.WorkPoint=q.WorkPoint--仓库
						 left join ICSInventoryLotDetail t on t.LotNo=e.LotNo  and t.WorkPoint=e.WorkPoint--关联表
                        where 1=1 and  a.LotNo='{1}' and a.WorkPoint='{2}' and a.ASNCode='{3}'";
                        sql = string.Format(sql, TransTypeEnum.ICSASNDetail, JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);
                        break;
                    case "委外送货单子表":
                        sql = @"select
                        a.ID, 
                        f.ContainerCODE,
                        f.ContainerName,
                        d.InvCode,
                        d.InvName,
                        d.InvStd,
                        h.Quantity,
                        d.InvUnit,
                        d.AmountUnit,
                        i.WarehouseCode,
                        i.WarehouseName,
                       q.LocationCode,
                        q.LocationName,
                        c.ProjectCode,
                        c.BatchCode,
                        c.Version,
                        c.Brand,
                        t.TransCode,--来源单据
                        t.TransSequence,--来源行号
                        a.LotNo,
                        c.cFree1,
                        c.cFree2, 
                        c.cFree3,
                        c.cFree4,
                        c.cFree5,
                        c.cFree6,
                        c.cFree7,
                        c.cFree8,
                        c.cFree9,
                        c.cFree10
                        from {0} a --送货单
					    left join ICSInventoryLot b on a.LotNo=b.LotNo and b.WorkPoint=a.WorkPoint--条码
						left join ICSExtension c on b.ExtensionID=b.ID and b.WorkPoint=c.WorkPoint
					    left join ICSInventory d on b.InvCode=d.InvCode  and a.WorkPoint=d.WorkPoint--料品表
						 left join ICSContainerLot e on e.LotNo=a.LotNo  and e.WorkPoint=c.WorkPoint--包装关联表
						 left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
						 left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
						 left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
						 left join ICSWarehouse i on  i.WarehouseCode=q.WHID  and i.WorkPoint=q.WorkPoint--仓库
						 left join ICSInventoryLotDetail t on t.LotNo=e.LotNo  and t.WorkPoint=e.WorkPoint--关联表
                          where 1=1 and  a.LotNo='{1}' and a.WorkPoint='{2}'and a.OASNCode='{3}'";
                        sql = string.Format(sql, TransTypeEnum.ICSOASNDetail, JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);
                        break;
                    case "一步式调拨单":
                        sql = @"select
                        a.ID, 
                        f.ContainerCODE,
                        f.ContainerName,
                        d.InvCode,
                        d.InvName,
                        d.InvStd,
                        h.Quantity,
                        d.InvUnit,
                        d.AmountUnit,
                        i.WarehouseCode,
                        i.WarehouseName,
                       q.LocationCode,
                        q.LocationName,
                        b.ProjectCode,
                        b.BatchCode,
                        b.Version,
                        b.Brand,
                        t.TransCode,--来源单据
                       t.TransSequence,--来源行号
                        c.LotNo,
                        b.cFree1,
                        b.cFree2, 
                        b.cFree3,
                        b.cFree4,
                        b.cFree5,
                        b.cFree6,
                        b.cFree7,
                        b.cFree8,
                        b.cFree9,
                        b.cFree10,
						c.LotNo
                        from {0} a --委外出库
						left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
					    left join ICSInventoryLot c on c.ID=b.ID  and c.WorkPoint=b.WorkPoint--条码
						 left join ICSInventory d on a.InvCode=d.InvCode  and a.WorkPoint=d.WorkPoint--料品表
						 left join ICSContainerLot e on e.LotNo=c.LotNo  and e.WorkPoint=c.WorkPoint--包装关联表
						 left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
						 left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
						 left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
						 left join ICSWarehouse i on  i.WarehouseCode=q.WHID  and i.WorkPoint=q.WorkPoint--仓库
						 left join ICSInventoryLotDetail t on t.LotNo=e.LotNo  and t.WorkPoint=e.WorkPoint--关联表
                        where 1=1 and type='1' and c.lotno='{1}' and a.TransferNO='{2}'";
                        sql = string.Format(sql, TransTypeEnum.ICSTransfer, JsonData.Code, JsonData.TransCode);
                        break;
                    case "二步式调拨单":
                        sql = @"select
                        a.ID, 
                        f.ContainerCODE,
                        f.ContainerName,
                        d.InvCode,
                        d.InvName,
                        d.InvStd,
                        h.Quantity,
                        d.InvUnit,
                        d.AmountUnit,
                        i.WarehouseCode,
                        i.WarehouseName,
                       q.LocationCode,
                        q.LocationName,
                        b.ProjectCode,
                        b.BatchCode,
                        b.Version,
                        b.Brand,
                        t.TransCode,--来源单据
                       t.TransSequence,--来源行号
                        c.LotNo,
                        b.cFree1,
                        b.cFree2, 
                        b.cFree3,
                        b.cFree4,
                        b.cFree5,
                        b.cFree6,
                        b.cFree7,
                        b.cFree8,
                        b.cFree9,
                        b.cFree10,
						c.LotNo
                        from {0} a --委外出库
						left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
					    left join ICSInventoryLot c on c.ID=b.ID  and c.WorkPoint=b.WorkPoint--条码
						 left join ICSInventory d on a.InvCode=d.InvCode  and a.WorkPoint=d.WorkPoint--料品表
						 left join ICSContainerLot e on e.LotNo=c.LotNo  and e.WorkPoint=c.WorkPoint--包装关联表
						 left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
						 left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
						 left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
						 left join ICSWarehouse i on  i.WarehouseCode=q.WHID  and i.WorkPoint=q.WorkPoint--仓库
						 left join ICSInventoryLotDetail t on t.LotNo=e.LotNo  and t.WorkPoint=e.WorkPoint--关联表
                        where 1=1 and type='2' and c.lotno='{1}' and a.TransferNO='{2}' and a.WorkPoint='{3}'";
                        sql = string.Format(sql, TransTypeEnum.ICSTransfer, JsonData.Code, JsonData.TransCode, JsonData.WorkPoint);
                        break;
                    case "委外订单备料表":
                        type = "委外发料";
                        bool lotInfo = verification.HouseLotInfo(JsonData.Code, JsonData.WorkPoint, type);
                        if (lotInfo == true)
                        {
                            verification.Outsourcing(JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);
                            sqlInfo = @"select   a.ID,
                                    b.InvCode,
                                    o.InvName,
                                    o.InvStd,
                                    a.Quantity ,
                                    o.InvUnit,
                                    o.AmountUnit,
                                    l.WarehouseCode,
                                    l.WarehouseName,
                                    j.LocationCode,
                                    j.LocationName,
                                    e.ProjectCode,
                                    e.BatchCode,
                                    e.Version,
                                    e.Brand,
                                    c.TransCode,--来源单据
                                    c.TransSequence,--来源行号
                                    a.LotNo,
                                    e.cFree1,
                                    e.cFree2, 
                                    e.cFree3,
                                    e.cFree4,
                                    e.cFree5,
                                    e.cFree6,
                                    e.cFree7,
                                    e.cFree8,
                                    e.cFree9,
                                    e.cFree10 ,
								    b.Type
								    from ICSWareHouseLotInfo a
								    left join ICSInventoryLot b on a.LotNo=b.LotNo and a.InvCode=b.InvCode 
								    left join ICSInventoryLotDetail c on c .LotNo=b.LotNo 
								    left join ICSExtension e on e.id=b.ExtensionID
								    left join ICSContainerLot f on f.LotNo=b.LotNo
								    left join ICSContainer g on g.ContainerID=f.id
								    left join ICSLocation j on j.LocationCode=a.LocationCode
								    left join ICSWarehouse L ON L.ID=J.WHID
								    left join ICSInventory o on o.InvCode=b.InvCode 
                                    where  a.LotNo='{0}' and a.WorkPoint='{1}' ";
                            sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint);
                            table = DBHelper.SQlReturnData(sqlInfo, cmd);
                        }

                        string jsonInfoT = JsonConvert.SerializeObject(table);
                        var PickT = JsonConvert.DeserializeObject(jsonInfoT); //<List<WMSSourceDocumentModel>>
                        cmd.Transaction.Commit();
                        return PickT;
                    case "委外领料申请单":
                        sql = @"select
                        a.ID, 
                        f.ContainerCODE,
                        f.ContainerName,
                        d.InvCode,
                        d.InvName,
                        d.InvStd,
                        h.Quantity,
                        d.InvUnit,
                        d.AmountUnit,
                        i.WarehouseCode,
                        i.WarehouseName,
                       q.LocationCode,
                        q.LocationName,
                        b.ProjectCode,
                        b.BatchCode,
                        b.Version,
                        b.Brand,
                        t.TransCode,--来源单据
                       t.TransSequence,--来源行号
                        c.LotNo,
                        b.cFree1,
                        b.cFree2, 
                        b.cFree3,
                        b.cFree4,
                        b.cFree5,
                        b.cFree6,
                        b.cFree7,
                        b.cFree8,
                        b.cFree9,
                        b.cFree10,
						c.LotNo
                        from {0} a --委外出库
						left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
					    left join ICSInventoryLot c on c.ID=b.ID  and c.WorkPoint=b.WorkPoint--条码
						 left join ICSInventory d on a.InvCode=d.InvCode  and a.WorkPoint=d.WorkPoint--料品表
						 left join ICSContainerLot e on e.LotNo=c.LotNo  and e.WorkPoint=c.WorkPoint--包装关联表
						 left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
						 left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
						 left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
						 left join ICSWarehouse i on  i.WarehouseCode=q.WHID  and i.WorkPoint=q.WorkPoint--仓库
						 left join ICSInventoryLotDetail t on t.LotNo=e.LotNo  and t.WorkPoint=e.WorkPoint--关联表
                        where c.LotNo='{1}'  and a.WorkPoint='{2}' and a.OODetailID='{3}'";
                        sql = string.Format(sql, TransTypeEnum.ICSMOApply, JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);
                        break;
                    case "销售发货":
                        type = "发货";
                        bool LotInfo = verification.HouseLotInfo(JsonData.Code, JsonData.WorkPoint, type);
                        if (LotInfo == true)
                        {
                            sql = @"select
                                f.ContainerCODE,
                                f.ContainerName,
                                d.InvCode,
                                d.InvName,
                                d.InvStd,
                                h.Quantity,
                                d.InvUnit,
                                d.AmountUnit,
                                i.WarehouseCode,
                                i.WarehouseName,
                                q.LocationCode,
                                q.LocationName,
                                b.ProjectCode,
                                b.BatchCode,
                                b.Version,
                                b.Brand,
                                t.TransCode,--来源单据
                                t.TransSequence,--来源行号
                                a.LotNo,
                                b.cFree1,
                                b.cFree2, 
                                b.cFree3,
                                b.cFree4,
                                b.cFree5,
                                b.cFree6,
                                b.cFree7,
                                b.cFree8,
                                b.cFree9,
                                b.cFree10
                                from ICSInventoryLot a
                                left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint    
                                left join ICSInventory d on a.InvCode=d.InvCode  and a.WorkPoint=d.WorkPoint--料品表
                                left join ICSContainerLot e on e.LotNo=a.LotNo  and e.WorkPoint=a.WorkPoint--包装关联表
                                left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
                                left join ICSWareHouseLotInfo h on h.LotNo=a.LotNo and h.WorkPoint=a.WorkPoint
                                left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
                                left join ICSWarehouse i on  i.ID=q.WHID  and i.WorkPoint=q.WorkPoint--仓库
                                left join ICSInventoryLotDetail t on t.LotNo=a.LotNo  and t.WorkPoint=a.WorkPoint--关联表
                                where 1=1";
                            sql += " and  a.LotNo='{0}' and a.WorkPoint='{1}'";
                            sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
                            table = DBHelper.SQlReturnData(sql, cmd);
                            if (table.Rows.Count <= 0)
                            {
                                throw new Exception("条码不存在!");
                            }

                            string jsonInfoInve = JsonConvert.SerializeObject(table);
                            var Inve = JsonConvert.DeserializeObject(jsonInfoInve); //<List<WMSSourceDocumentModel>>
                            cmd.Transaction.Commit();
                            return Inve;
                        }
                        break;
                    case "生产订单备料表":
                        type = "生产订单备料表";
                        bool nu = verification.HouseLotInfo(JsonData.Code, JsonData.WorkPoint, type);//库存条码验证
                        verification.HouseLotInvCode(JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);
                        sqlInfo = @"select   a.ID,
                                b.InvCode,
                                o.InvName,
                                o.InvStd,
                                a.Quantity ,
                                o.InvUnit,
                                o.AmountUnit,
                                l.WarehouseCode,
                                l.WarehouseName,
                                j.LocationCode,
                                j.LocationName,
                                e.ProjectCode,
                                e.BatchCode,
                                e.Version,
                                e.Brand,
                                c.TransCode,--来源单据
                                c.TransSequence,--来源行号
                                a.LotNo,
                                e.cFree1,
                                e.cFree2, 
                                e.cFree3,
                                e.cFree4,
                                e.cFree5,
                                e.cFree6,
                                e.cFree7,
                                e.cFree8,
                                e.cFree9,
                                e.cFree10 
								from ICSWareHouseLotInfo a
								left join ICSInventoryLot b on a.LotNo=b.LotNo and a.InvCode=b.InvCode
								left join ICSInventoryLotDetail c on c .LotNo=b.LotNo 
								left join ICSExtension e on e.id=b.ExtensionID
								left join ICSContainerLot f on f.LotNo=b.LotNo
								left join ICSContainer g on g.ContainerID=f.id
								left join ICSLocation j on j.LocationCode=a.LocationCode
								left join ICSWarehouse L ON L.ID=J.WHID
								left join ICSInventory o on o.InvCode=b.InvCode where a.LotNo='{0}'  and a.WorkPoint='{1}' ";
                        sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);
                        table = DBHelper.SQlReturnData(sqlInfo, cmd);
                        string jsonInfo = JsonConvert.SerializeObject(table);
                        var Pick = JsonConvert.DeserializeObject(jsonInfo); //<List<WMSSourceDocumentModel>>
                        cmd.Transaction.Commit();
                        return Pick;
                    case "委外材料出库":
                        sql = @"select
                        a.ID, 
                        f.ContainerCODE,
                        f.ContainerName,
                        d.InvCode,
                        d.InvName,
                        d.InvStd,
                        h.Quantity,
                        d.InvUnit,
                        d.AmountUnit,
                        i.WarehouseCode,
                        i.WarehouseName,
                       q.LocationCode,
                        q.LocationName,
                        b.ProjectCode,
                        b.BatchCode,
                        b.Version,
                        b.Brand,
                        t.TransCode,--来源单据
                       t.TransSequence,--来源行号
                        c.LotNo,
                        b.cFree1,
                        b.cFree2, 
                        b.cFree3,
                        b.cFree4,
                        b.cFree5,
                        b.cFree6,
                        b.cFree7,
                        b.cFree8,
                        b.cFree9,
                        b.cFree10,
						c.LotNo
                        from {0} a --委外出库
						left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
					    left join ICSInventoryLot c on c.ID=b.ID  and c.WorkPoint=b.WorkPoint--条码
						 left join ICSInventory d on a.InvCode=d.InvCode  and a.WorkPoint=d.WorkPoint--料品表
						 left join ICSContainerLot e on e.LotNo=c.LotNo  and e.WorkPoint=c.WorkPoint--包装关联表
						 left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
						 left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
						 left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
						 left join ICSWarehouse i on  i.WarehouseCode=q.WHID  and i.WorkPoint=q.WorkPoint--仓库
						 left join ICSInventoryLotDetail t on t.LotNo=e.LotNo  and t.WorkPoint=e.WorkPoint--关联表
                        where 1=1 and  c.LotNo='{1}'  and a.Status='2' and a.IssueCode='{2}'and a.WorkPoint='{3}'";
                        sql = string.Format(sql, TransTypeEnum.ICSOIssue, JsonData.Code, JsonData.TransCode, JsonData.WorkPoint);
                        break;
                    case "杂发单":
                        sql = @"select
                        a.ID, 
                        f.ContainerCODE,
                        f.ContainerName,
                        d.InvCode,
                        d.InvName,
                        d.InvStd,
                        h.Quantity,
                        d.InvUnit,
                        d.AmountUnit,
                        i.WarehouseCode,
                        i.WarehouseName,
                       q.LocationCode,
                        q.LocationName,
                        b.ProjectCode,
                        b.BatchCode,
                        b.Version,
                        b.Brand,
                        t.TransCode,--来源单据
                       t.TransSequence,--来源行号
                        c.LotNo,
                        b.cFree1,
                        b.cFree2, 
                        b.cFree3,
                        b.cFree4,
                        b.cFree5,
                        b.cFree6,
                        b.cFree7,
                        b.cFree8,
                        b.cFree9,
                        b.cFree10,
						c.LotNo
                        from {0} a --委外出库
						left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
					    left join ICSInventoryLot c on c.ID=b.ID  and c.WorkPoint=b.WorkPoint--条码
						 left join ICSInventory d on a.InvCode=d.InvCode  and a.WorkPoint=d.WorkPoint--料品表
						 left join ICSContainerLot e on e.LotNo=c.LotNo  and e.WorkPoint=c.WorkPoint--包装关联表
						 left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
						 left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
						 left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
						 left join ICSWarehouse i on  i.WarehouseCode=q.WHID  and i.WorkPoint=q.WorkPoint--仓库
						 left join ICSInventoryLotDetail t on t.LotNo=e.LotNo  and t.WorkPoint=e.WorkPoint--关联表
                        where 1=1 and  c.LotNo='{1}' and a.Status='2'  and a.OutCode='{2}' and a.WorkPoint='{3}'";
                        sql = string.Format(sql, TransTypeEnum.ICSOtherOut, JsonData.Code, JsonData.TransCode, JsonData.WorkPoint);
                        break;
                    case "采购退货单":
                        sql = @"select   a.ID,
                                b.InvCode,
                                o.InvName,
                                o.InvStd,
                                a.Quantity ,
                                o.InvUnit,
                                o.AmountUnit,
                                l.WarehouseCode,
                                l.WarehouseName,
                                j.LocationCode,
                                j.LocationName,
                                e.ProjectCode,
                                e.BatchCode,
                                e.Version,
                                e.Brand,
                                c.TransCode,--来源单据
                                c.TransSequence,--来源行号
                                a.LotNo,
                                e.cFree1,
                                e.cFree2, 
                                e.cFree3,
                                e.cFree4,
                                e.cFree5,
                                e.cFree6,
                                e.cFree7,
                                e.cFree8,
                                e.cFree9,
                                e.cFree10 
								from ICSWareHouseLotInfo a
								left join ICSInventoryLot b on a.LotNo=b.LotNo and a.InvCode=b.InvCode
								left join ICSInventoryLotDetail c on c .LotNo=b.LotNo 
								left join ICSExtension e on e.id=b.ExtensionID
								left join ICSContainerLot f on f.LotNo=b.LotNo
								left join ICSContainer g on g.ContainerID=f.id
								left join ICSLocation j on j.LocationCode=a.LocationCode
								left join ICSWarehouse L ON L.ID=J.WHID
								left join ICSInventory o on o.InvCode=b.InvCode where a.LotNo='{0}'  and a.WorkPoint='{1}'";
                        sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        string jsonNotice = JsonConvert.SerializeObject(table);
                        var PickNotice = JsonConvert.DeserializeObject(jsonNotice); //<List<WMSSourceDocumentModel>>
                        cmd.Transaction.Commit();
                        return PickNotice;
                    case "两部调出":
                        sql = @"select 
                        a.ID, 
                        H.ContainerCODE,
                        H.ContainerName,
                        A.InvCode,
                        F.InvName,
                        F.InvStd,
                        a.Quantity,
                        F.InvUnit,
                        F.AmountUnit,
                        E.ProjectCode,
                        E.BatchCode,
                        E.Version,
                        E.Brand,
                        c.OutCode as TransCode,--来源单据
                        c.Sequence as TransSequence,--来源行号
                        A.LotNo,
                        E.cFree1,
                        E.cFree2, 
                        E.cFree3,
                        E.cFree4,
                        E.cFree5,
                        E.cFree6,
                        E.cFree7,
                        E.cFree8,
                        E.cFree9,
                        E.cFree10
						FROM ICSInventoryLot A
						LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
						LEFT JOIN ICSOtherOut C ON b.TransCode=C.OutCode AND C.Sequence=B.TransSequence
						left join ICSTransfer d on d.TransferNO =c.OutCode and d.Sequence=c.Sequence 
						LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
						LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
						LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
						LEFT JOIN ICSContainer H ON H.ContainerID=G.ID 
                        where a.lotno ='{0}' and a.WorkPoint='{1}' and d.Type='2'";
                        sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        if (table.Rows.Count > 0)
                        {
                            string jsonCode = JsonConvert.SerializeObject(table);
                            var modelCode = JsonConvert.DeserializeObject(jsonCode);
                            return modelCode;
                        }
                        else
                        {
                            throw new Exception("调拨单不存在!");
                        }
                    case "委外退货单":
                        sql = @"select   a.ID,
                                b.InvCode,
                                o.InvName,
                                o.InvStd,
                                a.Quantity ,
                                o.InvUnit,
                                o.AmountUnit,
                                l.WarehouseCode,
                                l.WarehouseName,
                                j.LocationCode,
                                j.LocationName,
                                e.ProjectCode,
                                e.BatchCode,
                                e.Version,
                                e.Brand,
                                c.TransCode,--来源单据
                                c.TransSequence,--来源行号
                                a.LotNo,
                                e.cFree1,
                                e.cFree2, 
                                e.cFree3,
                                e.cFree4,
                                e.cFree5,
                                e.cFree6,
                                e.cFree7,
                                e.cFree8,
                                e.cFree9,
                                e.cFree10 
								from ICSWareHouseLotInfo a
								left join ICSInventoryLot b on a.LotNo=b.LotNo and a.InvCode=b.InvCode
								left join ICSInventoryLotDetail c on c .LotNo=b.LotNo 
								left join ICSExtension e on e.id=b.ExtensionID
								left join ICSContainerLot f on f.LotNo=b.LotNo
								left join ICSContainer g on g.ContainerID=f.id
								left join ICSLocation j on j.LocationCode=a.LocationCode
								left join ICSWarehouse L ON L.ID=J.WHID
								left join ICSInventory o on o.InvCode=b.InvCode where a.LotNo='{0}'  and a.WorkPoint='{1}'";
                        sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        string jsonOrder = JsonConvert.SerializeObject(table);
                        var PickOrder = JsonConvert.DeserializeObject(jsonOrder); //<List<WMSSourceDocumentModel>>
                        cmd.Transaction.Commit();
                        return PickOrder;

                    case "其它出库":

                        bool Zero = verification.isStockZero(JsonData.Code, JsonData.WorkPoint);
                        if (Zero == true)
                        {
                            bool ZeroCode = verification.iSNullLocationCode(JsonData.Code, JsonData.WorkPoint);
                            if (ZeroCode == 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,
                                b.ProjectCode,
                                b.BatchCode,
                                b.Version,
                                b.Brand,
                                t.TransCode,--来源单据
                                t.TransSequence,--来源行号
                                a.LotNo,
                                b.cFree1,
                                b.cFree2, 
                                b.cFree3,
                                b.cFree4,
                                b.cFree5,
                                b.cFree6,
                                b.cFree7,
                                b.cFree8,
                                b.cFree9,
                                b.cFree10
                                from ICSWareHouseLotInfo a
								left join ICSInventoryLot h on a.LotNo=h.LotNo
                                left join ICSExtension b on h.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint    
                                left join ICSInventory d on a.InvCode=d.InvCode  and a.WorkPoint=d.WorkPoint--料品表
                                left join ICSContainerLot e on e.LotNo=a.LotNo  and e.WorkPoint=a.WorkPoint--包装关联表
                                left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
                                left join ICSLocation q on q.LocationCode=a.LocationCode and q.WorkPoint=a.WorkPoint
                                left join ICSWarehouse i on  i.ID=q.WHID  and i.WorkPoint=q.WorkPoint--仓库
                                left join ICSInventoryLotDetail t on t.LotNo=a.LotNo  and t.WorkPoint=a.WorkPoint--关联表
                                where a.lotno='{0}' and a.WorkPoint='{1}'";
                                sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
                                table = DBHelper.SQlReturnData(sql, cmd);
                                string jsonCode = JsonConvert.SerializeObject(table);
                                var modelCode = JsonConvert.DeserializeObject(jsonCode);
                                return modelCode;
                            }

                        }

                        break;


                }
                sql = string.Format(sql, JsonData.Code);
                table = DBHelper.SQlReturnData(sql, cmd);
                string json = JsonConvert.SerializeObject(table);
                var model = JsonConvert.DeserializeObject(json); //<List<WMSSourceDocumentModel>>
                cmd.Transaction.Commit();
                return model;

            }
            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

        #region 上架
        /// <summary>
        /// 上架查询
        /// </summary>
        /// <returns></returns>
        public object LOTStockUpGet(WMSTBarCodeModel JsonData)
        {
            //WMSTBarCodeModelInfo model = new WMSTBarCodeModelInfo();
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            try
            {
                sql = @"SELECT
                        b.ID,
                        b.InvCode,
                        b.Quantity,
                        b.AmountRate,
                        a.TransCode,
                        a.TransSequence,
                        a.LotNo,
                        d.WarehouseCode,
                        d.WarehouseName,
                        e.LocationCode,
                        e.LocationName,
                        b.Type,
                        a.MUSER,
                        a.MTIME
                        from ICSInventoryLotDetail a
                        left join ICSInventoryLot b on a.LotNo=b.LotNo
                        left join ICSWareHouseLotInfo c on a.LotNo=c.LotNo
                        left join ICSWarehouse d on d.WarehouseCode=c.WarehouseCode
                        left join ICSLocation e on e.LocationCode=c.LocationCode where 1=1";
                if (!string.IsNullOrEmpty(JsonData.TransCode))
                {
                    sql += " and a.TransCode='{0}'";
                    sql = string.Format(sql, JsonData.TransCode);
                }
                if (!string.IsNullOrEmpty(JsonData.User))
                {
                    sql += " and MUSER='{1}'";
                    sql = string.Format(sql, JsonData.User);
                }
                if (JsonData.MTime.ToString() != "0001/1/1 0:00:00")
                {
                    sql += " and MTIME='{2}'";
                    sql = string.Format(sql, JsonData.MTime);
                }
                table = DBHelper.SQlReturnData(sql, cmd);
                string json = JsonConvert.SerializeObject(table);
                var model = JsonConvert.DeserializeObject(json);
                //model = JsonConvert.DeserializeObject<WMSTBarCodeModelInfo>(json);//<List<WMSSourceDocumentModel>>
                cmd.Transaction.Commit();
                return model;
            }
            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();
            }
        }

        /// <summary>
        /// 上架增加
        /// </summary>BusinessCode,TransType 两个类型
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public List<LOTStockUpCreateIModel> LOTStockCreate(List<LOTStockUpCreateIModel> JsonData)
        {
            List<LOTStockUpCreateIModel> model = new List<LOTStockUpCreateIModel>();
            List<PurchaseReceiveDoc> mddelInfo = new List<PurchaseReceiveDoc>();
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int num = 0;
            int numInfo = 0;
            DataTable tableInfo = null;


            string sqlERP = string.Empty;//ERP的表头
            string sqlERPDetil = string.Empty;//ERP的表体
            string jsonERP = string.Empty;///erpjson
            string IstrErp = string.Empty;
            string iresult = string.Empty;//接口调用
            try
            {
                foreach (var item in JsonData)
                {
                    foreach (var itemInfo in item.detail)
                    {
                        int i = 1;
                        switch (item.TransType)
                        {
                            case "委外退料单":
                                // string neg = verification.HouseLotoOut(itemInfo.LotNo, item.WorkPoint);
                                //if (neg == null)
                                //{
                                string numNegDetaill = @"select * from ICSOApplyNegDetail  where OApplyNegCode='{0}'and Sequence='{1}' and WorkPoint='{2}' ";
                                numNegDetaill = string.Format(numNegDetaill, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint);
                                DataTable numNegDetailwl = DBHelper.SQlReturnData(numNegDetaill, cmd);
                                foreach (DataRow itemDetail in numNegDetailwl.Rows)
                                {
                                    double Quantity = Convert.ToDouble(itemInfo.Quantity);///输入数量
                                    double IssueNegQuantity = Convert.ToDouble(itemDetail["IssueNegQuantity"]);//已退数量
                                    double NegQuantity = Quantity + IssueNegQuantity;//总数量(输入数量+已退数量)
                                    double QuantityPla = Convert.ToDouble(itemDetail["Quantity"]);//计划数量
                                    if (QuantityPla >= NegQuantity)
                                    {
                                        string NegDetailSql = @"update ICSOApplyNegDetail set IssueNegQuantity=ISNULL(IssueNegQuantity,0)+'{3}'
                                                                , MUSER='{4}'  ,MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{4}' and F_Location='{2}'),  MTIME=GETDATE()  
                                                                where OApplyNegCode='{0}' and  Sequence='{1}' and WorkPoint='{2}' ";
                                        NegDetailSql = string.Format(NegDetailSql, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint, itemInfo.Quantity, item.User);

                                        if (!DBHelper.ExecuteNonQuery(NegDetailSql, cmd))
                                        {
                                            throw new Exception("委外退料单更新失败!");
                                        }
                                        ///添加库存
                                        string HouseLotSql = @" insert into ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
                                               (select newid(),'{0}' ,a.WHCode,isnull((f.LocationCode),0) ,b.InvCode ,'{1}','{2}','0','{3}' ,g.F_RealName ,'{4}' ,'{5}' ,' '
                                                from ICSOApplyNeg a --委外退料申请单
                                                inner join  ICSOApplyNegDetail b on a.OApplyNegCode=b.OApplyNegCode and a.WorkPoint=b.WorkPoint --委外退料申请单详情
	                                            left join ICSInventoryLotDetail c on b.OApplyNegCode=c.TransCode and c.TransSequence=b.Sequence  AND b.WorkPoint=c.WorkPoint--条码关联
	                                            left join ICSInventoryLot d on c.LOTNO=d.LotNO and d.WorkPoint=c.WorkPoint --条码
								                left join ICSWarehouse e on e.WarehouseCode=a.WHCode and e.WorkPoint=a.WorkPoint--仓库
								                left join ICSLocation f on f.WHID=e.ID and f.WorkPoint=e.WorkPoint--库位
								                left join Sys_SRM_User g on g.F_Account='{3}' and F_Location='{5}' --用户
                                                where a.OApplyNegCode='{6}' and a. WorkPoint='{5}')";
                                        HouseLotSql = string.Format(HouseLotSql, itemInfo.LotNo, itemInfo.Quantity, DateTime.Now, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode);

                                        if (!DBHelper.ExecuteNonQuery(HouseLotSql, cmd))
                                        {
                                            throw new Exception("委外退料单库存更新失败!");
                                        }
                                        ///添加日志
                                        string sqlLogInfo = @"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}',b.InvCode ,' ', ' ',a.WHCode,d.LocationCode,'{3}',' ','0','2','8',' ',' ',' ',' ','{4}',e.F_RealName,'{5}','{6}',' '
                                                   from ICSOApplyNeg a--主表
                                                   inner join ICSOApplyNegDetail b on a.OApplyNegCode=b.OApplyNegCode --明细
                                                    left join ICSWarehouse c on c.WarehouseCode=a.WHCode and c.WorkPoint=a.WorkPoint--仓库
								                   left join ICSLocation d on d.WHID=c.ID and d.WorkPoint=c.WorkPoint--库位
                                                   left join Sys_SRM_User e on e.F_Account='{4}' and e.F_Location='{6}'
                                                    where a.OApplyNegCode='{0}' and a. WorkPoint='{6}')";
                                        sqlLogInfo = string.Format(sqlLogInfo, itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.User, DateTime.Now, item.WorkPoint);
                                        cmd.CommandText = sqlLogInfo;
                                        int numInfoLot = cmd.ExecuteNonQuery();

                                        if (numInfoLot > 0)
                                        {
                                            cmd.Transaction.Commit();
                                        }
                                        else
                                        {
                                            cmd.Transaction.Rollback();
                                        }
                                    }
                                    else
                                    {
                                        throw new Exception("已退数量不能大于计划数量!");
                                    }
                                }
                                #region ERP                                    
                                string sqlERPOOPick = @"	select DepCode,FromWarehouseCode,OOCode,a.MUSER , (getdate())as Mtime from ICSWareHouseLotInfoLog a
                                        left join ICSOutsourcingOrder b on b.OOCode=a.TransCode and a.TransSequence=b.Sequence
                                        left join ICSOOPick c on b.OODetailID=c.OODetailID
                                        where OOCode='{0}' and  b.WorkPoint='{1}'
                                        group by DepCode,FromWarehouseCode,OOCode,a.MUSER  ";
                                sqlERPOOPick = string.Format(sqlERPOOPick, itemInfo.TransCode, item.WorkPoint);
                                table = DBHelper.SQlReturnData(sqlERPOOPick, cmd);

                                string sqlERPPickList = @"select a.TransCode, a.TransSequence,a.InvCode,sum(a.Quantity) as Quantity , isnull((b.Amount),0)as Amount,c.PickID  from ICSWareHouseLotInfoLog a
                                                          left JOIN ICSOutsourcingOrder B on b.OOCode=a.TransCode and a.TransSequence=b.Sequence
                                                          left join ICSOOPick C on C.OODetailID=B.OODetailID  and  c.Sequence=a.TransSequence 
                                                          where lotno='{0}'   and a.Memo<>'1'
                                                          group by a.TransCode,  a.TransSequence,a.InvCode,b.Amount ,c.PickID ";
                                sqlERPPickList = string.Format(sqlERPPickList, itemInfo.LotNo);

                                DataTable ERPOOPick = DBHelper.SQlReturnData(sqlERPPickList, cmd);
                                string jsonPickList = null;
                                List<IssueDoc> docPickmodel = new List<IssueDoc>();
                                foreach (DataRow dts in table.Rows)
                                {
                                    IssueDoc doc = new IssueDoc();
                                    doc.DepCode = dts["DepCode"].ToString();
                                    doc.WHCode = dts["FromWarehouseCode"].ToString();
                                    doc.SourceType = "委外退料";
                                    doc.SourceCode = dts["OOCode"].ToString();
                                    doc.User = dts["MUSER"].ToString();
                                    doc.User = dts["Mtime"].ToString();
                                    // doc.MTime = DateTime.Now;
                                    List<IssueDocList> list = new List<IssueDocList>();
                                    foreach (DataRow dtList in ERPOOPick.Rows)
                                    {
                                        IssueDocList docc = new IssueDocList();
                                        docc.Sequence = dtList["TransSequence"].ToString();
                                        docc.InvCode = dtList["InvCode"].ToString();
                                        docc.Quantity = dtList["Quantity"].ToString();
                                        docc.Amount = dtList["Amount"].ToString();
                                        docc.SourceDetailID = dtList["PickID"].ToString();
                                        list.Add(docc);
                                    }

                                    doc.details = list;
                                    docPickmodel.Add(doc);
                                    //jsonList = JsonConvert.SerializeObject(doc);
                                }
                                string IstrPick = JsonConvert.SerializeObject(docPickmodel);
                                string iresultPick = HttpPost("委外退料", ERPUrl.OutsourcingIssueDoNegativeURL, IstrPick);
                                Result OtherOutResultpick = new Result();
                                OtherOutResultpick = JsonConvert.DeserializeObject<Result>(iresultPick);
                                ERPJsonRetun m = new ERPJsonRetun();
                                if (OtherOutResultpick.Success == true)
                                {

                                    string nn = OtherOutResultpick.Data.ToString();//LOTStockModel
                                    m = JsonConvert.DeserializeObject<ERPJsonRetun>(nn);
                                    string ERPupdate = @"update ICSWareHouseLotInfoLog set ERPID='{0}',ERPDetailID='{1}',ERPCode='{2}',ERPSequence='{3}',Memo='1'
                                        where TransCode='{4}' and  TransSequence ='{5}'";
                                    ERPupdate = string.Format(ERPupdate, m.ID, m.DetailID, m.RCVNEGCode, m.Sequence, itemInfo.TransCode, itemInfo.TransSequence);
                                    cmd.CommandText = ERPupdate;
                                    num = cmd.ExecuteNonQuery();
                                    if (num > 0)
                                    {
                                        cmd.Transaction.Commit();
                                    }
                                    else
                                    {
                                        cmd.Transaction.Rollback();
                                    }
                                }
                                else
                                {
                                    cmd.Transaction.Rollback();
                                    throw new Exception(OtherOutResultpick.Message);
                                }
                                #endregion

                                //}
                                return null;







                            case "采购入库":
                                //添加采购入库
                                sql = @"update ICSPurchaseOrder set RCVQuantity= RCVQuantity+(select Quantity from ICSInventoryLot where lontno='{0}' ,MTIME='{1}'  where RCVCod='{2}' and InvCode=(select InvCode from ICSInventoryLot where lontno='{0}' ),and WorkPoint='{3}')";
                                sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, itemInfo.TransCode, item.WorkPoint);
                                cmd.CommandText = sql;
                                int Purchase = cmd.ExecuteNonQuery();
                                cmd.Transaction.Commit();
                                //记录日志
                                if (Purchase > 0)
                                {
                                    string 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])
                                             VALUES
                                                   (newid()
                                                   ,'{4}'
                                                   ,''
                                                   ,'{0}'
                                                   ,(SELECT InvCode FROM ICSMO WHERE  MOCode='{5}')
                                                   ,(SELECT WarehouseCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
                                                   ,(SELECT LocationCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
                                                   ,''
                                                   ,''
                                                   ,(SELECT Quantity FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
                                                   ,''
                                                   ,''
                                                   ,'1'
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,'{1}'
                                                   ,'{1}'
                                                   ,'{2}'
                                                   ,'{3}'
                                                   ,'')";
                                    sqlLog = string.Format(sqlLog, itemInfo.LotNo, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode);
                                    DBHelper.CmdExecuteNonQuery(sqlLog, cmd, "成功");
                                    cmd.Transaction.Commit();
                                }
                                //生产erp订单


                                return null;
                            case "销售退货":
                                string Date = DateTime.Now.ToString("yy");
                                string Pre = "CHK" + i + Date;//库存盘点单号
                                #region 添加到库存表/日志表

                                ///验证条码是否存在或者是否上架
                                sqlInfo = @"select * from ICSInventoryLot where LotNo='{0}'";
                                sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
                                cmd.CommandText = sqlInfo;
                                table = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
                                if (table.Rows.Count <= 0)
                                {
                                    throw new Exception("条码不存在!");
                                }
                                string sqlll = @"select * from ICSWareHouseLotInfo where LotNo='{0}'";
                                sqlll = string.Format(sqlInfo, itemInfo.LotNo);
                                cmd.CommandText = sqlll;
                                DataTable dataTex = DBHelper.SQlReturnData(sqlll, cmd);//返回条数
                                if (dataTex.Rows.Count <= 0)
                                {
                                    throw new Exception("条码已上架!");
                                }

                                sqlInfo = @"select * from ICSSDN where  SDNCode='{0}'  and Status='3' and Type='2'";
                                sqlInfo = string.Format(sqlInfo, itemInfo.TransCode);
                                cmd.CommandText = sqlInfo;
                                tableInfo = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
                                if (tableInfo.Rows.Count > 0)
                                {
                                    throw new Exception("销售订单已经关闭!或退货不存在");
                                }
                                else
                                {
                                    sql = @"update ICSSDN set SDNQuantity= SDNQuantity +  Quantity  ,MTIME='{1}' where SDNCode ='{2}' and  InvCode=(select InvCode from ICSInventoryLot where lotno='{0}' ) and WorkPoint='{3}'";
                                    sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, itemInfo.TransCode, item.WorkPoint, itemInfo.Quantity);
                                    cmd.CommandText = sql;
                                    int ApplyNeg = cmd.ExecuteNonQuery();
                                    // cmd.Transaction.Commit();
                                    string sqlLotInfo = @" INSERT INTO[ICSWareHouseLotInfo]
                                       ([ID]
                                       ,[LotNo]
                                       ,[WarehouseCode]
                                       ,[LocationCode]
                                       ,[InvCode]
                                       ,[Quantity]
                                       ,[InDate]
                                       ,[LockQuantity]
                                       ,[MUSER]
                                       ,[MUSERName]
                                       ,[MTIME]
                                       ,[WorkPoint]
                                       ,[EATTRIBUTE1])
                                 VALUES
                                       (newid()
                                       , '{0}'
                                       , (select WarehouseCode from ICSWarehouse a left join ICSLocation b on a.ID = b.WHID WHERE LocationCode = '{1}')
                                       ,'{1}'
                                       ,(SELECT InvCode FROM  ICSInventoryLot WHERE LotNo = '{0}')
                                       ,'{6}'
                                       ,'{5}'
                                       ,0
                                       ,'{2}'
                                       ,'{2}'
                                       ,'{3}'
                                       ,'{4}'
                                       ,'')";
                                    sqlLotInfo = string.Format(sqlLotInfo, itemInfo.LotNo, itemInfo.LocationCode, item.User, DateTime.Now, item.WorkPoint, item.MTime, itemInfo.Quantity);
                                    DBHelper.CmdExecuteNonQuery(sqlLotInfo, cmd, "成功");
                                    //cmd.Transaction.Commit();

                                    string 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])
                                             VALUES
                                                   (newid()
                                                   ,'{4}'
                                                   ,' '
                                                   ,'{0}'
                                                   ,(SELECT InvCode FROM ICSInventoryLot WHERE LotNo='{0}')
                                                   ,(SELECT WarehouseCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
                                                   ,(SELECT LocationCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
                                                   ,''
                                                   ,''
                                                   ,(SELECT Quantity FROM ICSInventoryLot WHERE LotNo='{0}')
                                                   ,''
                                                   ,''
                                                   ,'21'
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,'{1}'
                                                   ,'{1}'
                                                   ,'{2}'
                                                   ,'{3}'
                                                   ,'')";
                                    sqlLog = string.Format(sqlLog, itemInfo.LotNo, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode);
                                    DBHelper.CmdExecuteNonQuery(sqlLog, cmd, "成功");
                                    cmd.Transaction.Commit();

                                    #region ERP接口
                                    string ERPSnd = @"select A.CusCode,A.SOCode ,B.MUSER,MAX(B.MTIME) AS MTIME,b.TransSequence,b.TransCode,B.InvCode,b.FromWarehouseCode FROM ICSSDN a
                                                        inner join ICSWareHouseLotInfoLog b on a.SDNCode=b.TransCode and b.TransSequence=a.Sequence
                                                        where a.Type='2' and b.TransCode='{0}'  and b.WorkPoint='{1}'
                                                        group by A.CusCode,A.SOCode ,B.MUSER,b.TransSequence,b.TransCode,B.InvCode,b.FromWarehouseCode";
                                    ERPSnd = string.Format(ERPSnd, itemInfo.TransCode, item.WorkPoint);
                                    table = DBHelper.SQlReturnData(ERPSnd, cmd);
                                    string ERPSndList = @"select a.TransSequence,b.InvCode,sum(a.Quantity) as Quantity , isnull((b.Amount),0)as Amount ,b.SDNDetailID from ICSWareHouseLotInfoLog a
                                                                inner JOIN ICSSDN B ON  b.SDNCode=a.TransCode and a.TransSequence=b.Sequence
                                                                where a.LotNo='{0}' and a.Memo<>'1' and b.WorkPoint='{1}' and  b.Type='2' 
                                                                group by  a.TransSequence,b.InvCode,   Amount ,b.SDNDetailID";
                                    ERPSndList = string.Format(ERPSndList, itemInfo.LotNo, item.WorkPoint);
                                    DataTable SDNNEG = DBHelper.SQlReturnData(ERPSndList, cmd);
                                    List<ERPICSSDN> ERPSDNNEG = new List<ERPICSSDN>();
                                    foreach (DataRow itemNotice in table.Rows)
                                    {
                                        ERPICSSDN noticeModel = new ERPICSSDN();
                                        noticeModel.CusCode = itemNotice["CusCode"].ToString();
                                        noticeModel.WHCode = itemNotice["FromWarehouseCode"].ToString();
                                        noticeModel.SDNRTCode = itemNotice["SOCode"].ToString();

                                        noticeModel.User = itemNotice["MUSER"].ToString();
                                        noticeModel.MTime = itemNotice["MTIME"].ToString();
                                        List<ERPICSSDNList> noticeModelList = new List<ERPICSSDNList>();
                                        foreach (DataRow ERPNoticeList in SDNNEG.Rows)
                                        {
                                            ERPICSSDNList listInfo = new ERPICSSDNList();
                                            listInfo.Sequence = ERPNoticeList["TransSequence"].ToString();
                                            listInfo.InvCode = ERPNoticeList["InvCode"].ToString();
                                            listInfo.Quantity = ERPNoticeList["Quantity"].ToString();
                                            listInfo.Amount = ERPNoticeList["Amount"].ToString();
                                            listInfo.SDNDetailID = ERPNoticeList["SDNDetailID"].ToString();


                                            noticeModelList.Add(listInfo);
                                        }

                                        noticeModel.details = noticeModelList;
                                        ERPSDNNEG.Add(noticeModel);
                                        string ERPICSSDN = JsonConvert.SerializeObject(ERPSDNNEG);
                                        string Emoiresultsdn = HttpPost("红字销售出库单", ERPUrl.SalesDeliveryNoticeURL, ERPICSSDN);
                                        Result OtherOutI = new Result();
                                        OtherOutI = JsonConvert.DeserializeObject<Result>(Emoiresultsdn);

                                        if (OtherOutI.Message != "200")
                                        {
                                            throw new Exception(OtherOutI.Message);
                                        }
                                        else
                                        {
                                            //OtherOutResult.Data;
                                        }
                                    }
                                    #endregion
                                }

                                #endregion
                                return null;
                            case "生产退库":
                                #region 添加到库存表/日志表
                                sqlInfo = @"select * from ICSLocation where LocationCode='{0}'";
                                sqlInfo = string.Format(sqlInfo, itemInfo.LocationCode);
                                cmd.CommandText = sqlInfo;
                                table = DBHelper.SQlReturnData(sqlInfo, cmd);
                                if (table.Rows.Count <= 0)
                                {
                                    throw new Exception("库位不存在!");
                                }
                                ///验证条码是否存在或者是否上架
                                sqlInfo = @"select * from ICSInventoryLot where LotNo='{0}'";
                                sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
                                cmd.CommandText = sqlInfo;
                                table = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
                                if (table.Rows.Count <= 0)
                                {
                                    throw new Exception("条码不存在!");
                                }
                                sqlInfo = @"select * from ICSWareHouseLotInfo where LotNo='{0}'";
                                sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
                                cmd.CommandText = sqlInfo;
                                tableInfo = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
                                if (tableInfo.Rows.Count > 0)
                                {
                                    throw new Exception("条码已经上架!");
                                }
                                else
                                {
                                    sql = @"update ICSMOApplyNegDetail set IssueNegQuantity= IssueNegQuantity + (select Quantity from ICSInventoryLot where lotno='{0}' ) ,MTIME='{1}' where ApplyNegCode ='{2}' and  InvCode=(select InvCode from ICSInventoryLot where lotno='{0}' ) and WorkPoint='{3}'";
                                    sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, itemInfo.TransCode, item.WorkPoint);
                                    cmd.CommandText = sql;
                                    int ApplyNeg = cmd.ExecuteNonQuery();
                                    sql = @" INSERT INTO [ICSWareHouseLotInfo]
                                       ([ID]
                                       ,[LotNo]
                                       ,[WarehouseCode]
                                       ,[LocationCode]
                                       ,[InvCode]
                                       ,[Quantity]
                                       ,[InDate]
                                       ,[LockQuantity]
                                       ,[MUSER]
                                       ,[MUSERName]
                                       ,[MTIME]
                                       ,[WorkPoint]
                                       ,[EATTRIBUTE1])
                                 VALUES
                                       (newid()
                                       ,'{0}'
                                       ,(select WarehouseCode from ICSWarehouse a left join ICSLocation b on a.ID =b.WHID WHERE LocationCode='{1}')
                                       ,'{1}'
                                       ,(SELECT InvCode FROM  ICSInventoryLot WHERE LotNo='{0}')
                                       ,(SELECT Quantity FROM  ICSInventoryLot WHERE LotNo='{0}')
                                       ,'{5}'
                                       ,0
                                       ,'{2}'
                                       ,'{2}'
                                       ,'{3}'
                                       ,'{4}'
                                       ,'')";
                                    sql = string.Format(sql, itemInfo.LotNo, itemInfo.LocationCode, item.User, item.MTime, item.WorkPoint, DateTime.Now);
                                    cmd.CommandText = sql;
                                    numInfo = cmd.ExecuteNonQuery();
                                    //cmd.Transaction.Commit();
                                    if (numInfo > 0)
                                    {
                                        string 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])
                                             VALUES
                                                   (newid()
                                                   ,'{4}'
                                                   ,' '
                                                   ,'{0}'
                                                   ,(SELECT InvCode FROM ICSInventoryLot WHERE LotNo='{0}')
                                                   ,(SELECT WarehouseCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
                                                   ,(SELECT LocationCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
                                                   ,''
                                                   ,''
                                                   ,(SELECT Quantity FROM ICSInventoryLot WHERE LotNo='{0}')
                                                   ,''
                                                   ,''
                                                   ,'21'
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,'{1}'
                                                   ,'{1}'
                                                   ,'{2}'
                                                   ,'{3}'
                                                   ,'')";
                                        sqlLog = string.Format(sqlLog, itemInfo.LotNo, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode);
                                        DBHelper.CmdExecuteNonQuery(sqlLog, cmd, "成功");
                                        cmd.Transaction.Commit();
                                    }
                                }

                                #endregion
                                return null;
                            case "采购订单":
                                ///验证订单是否关闭
                                string sqlTYPE = @"SELECT * FROM ICSPurchaseOrder  WHERE POCode='{0}' AND WorkPoint='{1}' AND Status='3'";
                                sqlTYPE = string.Format(sqlTYPE, itemInfo.TransCode, item.WorkPoint);
                                DataTable dtType = DBHelper.SQlReturnData(sqlTYPE, cmd);
                                if (dtType.Rows.Count <= 0)
                                {

                                    #region 添加到库存表/日志表
                                    sqlInfo = @"select * from ICSLocation where LocationCode='{0}'";
                                    sqlInfo = string.Format(sqlInfo, itemInfo.LocationCode);
                                    cmd.CommandText = sqlInfo;
                                    table = DBHelper.SQlReturnData(sqlInfo, cmd);
                                    if (table.Rows.Count <= 0)
                                    {
                                        throw new Exception("库位不存在!");
                                    }
                                    ///验证条码是否存在或者是否上架
                                    sqlInfo = @"select * from ICSInventoryLot where LotNo='{0}'";
                                    sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
                                    cmd.CommandText = sqlInfo;
                                    table = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
                                    if (table.Rows.Count <= 0)
                                    {
                                        throw new Exception("条码不存在!");
                                    }
                                    sqlInfo = @"select * from ICSWareHouseLotInfo where LotNo='{0}'";
                                    sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
                                    cmd.CommandText = sqlInfo;
                                    tableInfo = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
                                    if (tableInfo.Rows.Count > 0)
                                    {
                                        throw new Exception("条码已经上架!");
                                    }
                                    else
                                    {

                                        sql = @"update ICSPurchaseOrder set InQuantity= InQuantity + (select Quantity from ICSInventoryLot where lotno='{0}' ) ,MTIME='{1}' where POCode ='{2}' and  InvCode=(select InvCode from ICSInventoryLot where lotno='{0}' ) and WorkPoint='{3}'";
                                        sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, itemInfo.TransCode, item.WorkPoint);
                                        cmd.CommandText = sql;
                                        int PurchaseList = cmd.ExecuteNonQuery();
                                        if (PurchaseList > 0)
                                        {
                                            sql = @" INSERT INTO [ICSWareHouseLotInfo]
                                                       ([ID]
                                                       ,[LotNo]
                                                       ,[WarehouseCode]
                                                       ,[LocationCode]
                                                       ,[InvCode]
                                                       ,[Quantity]
                                                       ,[InDate]
                                                       ,[LockQuantity]
                                                       ,[MUSER]
                                                       ,[MUSERName]
                                                       ,[MTIME]
                                                       ,[WorkPoint]
                                                       ,[EATTRIBUTE1])
                                                  (select newid(),'{0}' ,e.WarehouseCode,isnull((f.LocationCode),0) ,a.InvCode ,'{1}','{2}','0','{3}' ,g.F_RealName ,'{4}' ,'{5}' ,' '
                                                from ICSPurchaseOrder a 
								                left join ICSLocation f on LocationCode='{8}'
								                left join ICSWarehouse e on e.id=(select WHID from ICSLocation where LocationCode='{8}')
								                left join Sys_SRM_User g on g.F_Account='{3}' and F_Location='{5}' --用户
                                                where a.POCode='{6}' and a. WorkPoint='{5}' and a.Sequence='{7}')";
                                            sql = string.Format(sql, itemInfo.LotNo, itemInfo.Quantity, DateTime.Now, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LocationCode);
                                            cmd.CommandText = sql;
                                            numInfo = cmd.ExecuteNonQuery();
                                            if (numInfo > 0)
                                            {
                                                string 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 ,' ', ' ',c.WarehouseCode,'{7}','{3}',' ','0','2','8',' ',' ',' ',' ','{4}',e.F_RealName,'{5}','{6}',' '
                                                   from ICSPurchaseOrder a--主表
								                left join ICSWarehouse c on c.id=(select WHID from ICSLocation where LocationCode='{7}')
                                                   left join Sys_SRM_User e on e.F_Account='{4}' and e.F_Location='{6}'
                                                    where a.POCode='{0}' and a. WorkPoint='{6}')";
                                                sqlLog = string.Format(sqlLog, itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.User, DateTime.Now, item.WorkPoint, itemInfo.LocationCode);
                                                cmd.CommandText = sqlLog;
                                                numInfo = cmd.ExecuteNonQuery();

                                            }


                                        }
                                        else
                                        {
                                            throw new Exception("数量不足!");
                                        }
                                    }

                                    #endregion

                                    #region ERP                                    
                                    sqlERP = @"	select VenCode,POCode, ToWarehouseCode,a.MUSER,b.Sequence ,(getdate())as Mtime from ICSWareHouseLotInfoLog   a
						                        left join ICSPurchaseOrder b on a.TransCode=b.POCode and b.Sequence =a.transSequence
                                                 where b.POCode='{0}' and  b.WorkPoint='{1}' and  a.Memo <> '1'
						                        group by VenCode,POCode, ToWarehouseCode,a.MUSER,b.Sequence ";
                                    sqlERP = string.Format(sqlERP, itemInfo.TransCode, item.WorkPoint);
                                    table = DBHelper.SQlReturnData(sqlERP, cmd);

                                    sqlERPDetil = @"select b.Sequence,a.InvCode,sum (a.Quantity) as Quantity,isnull((b.Amount),0) as Amount,b.UnitPrice,b.Currency,b.PODetailID from ICSWareHouseLotInfoLog   a
									  inner join ICSPurchaseOrder b on a.TransCode=b.POCode and b.Sequence =a.transSequence
                                    where b.POCode='{0}' and  b.WorkPoint='{1}' and  a.Memo <> '1'
									group by b.Sequence,a.InvCode,b.Amount,b.UnitPrice,b.Currency,b.PODetailID";
                                    sqlERPDetil = string.Format(sqlERPDetil, itemInfo.TransCode, item.WorkPoint);
                                    DataTable ERPtable = DBHelper.SQlReturnData(sqlERPDetil, cmd);

                                    List<ERPPurchaseOrder> docmodel = new List<ERPPurchaseOrder>();
                                    foreach (DataRow dtIn in table.Rows)
                                    {
                                        ERPPurchaseOrder doc = new ERPPurchaseOrder();
                                        doc.VenCode = dtIn["VenCode"].ToString();
                                        doc.POCode = dtIn["POCode"].ToString();
                                        doc.User = dtIn["MUSER"].ToString();
                                        doc.MTime = dtIn["Mtime"].ToString();

                                        doc.WHCode = dtIn["ToWarehouseCode"].ToString();
                                        doc.DNCode = "";
                                        List<ERPPurchaseOrderList> list = new List<ERPPurchaseOrderList>();
                                        foreach (DataRow dtList in ERPtable.Rows)
                                        {
                                            ERPPurchaseOrderList docc = new ERPPurchaseOrderList();
                                            docc.Sequence = dtList["Sequence"].ToString();
                                            docc.InvCode = dtList["InvCode"].ToString();
                                            docc.Quantity = dtList["Quantity"].ToString();
                                            docc.Amount = dtList["Amount"].ToString();
                                            docc.Currency = dtList["Currency"].ToString();
                                            docc.UnitPrice = dtList["UnitPrice"].ToString();
                                            docc.PODetailID = dtList["PODetailID"].ToString();
                                            docc.DNDetailID = "";
                                            list.Add(docc);
                                        }

                                        doc.details = list;
                                        docmodel.Add(doc);
                                    }
                                    IstrErp = JsonConvert.SerializeObject(docmodel);
                                    iresult = HttpPost("采购订单", ERPUrl.PurchaseOrderURL, IstrErp);
                                    Result OtherOutResult = new Result();
                                    OtherOutResult = JsonConvert.DeserializeObject<Result>(iresult);
                                    List<ERPJsonRetun> mm = new List<ERPJsonRetun>();//json返回
                                    if (OtherOutResult.Success == true)
                                    {
                                        string nn = OtherOutResult.Data.ToString();//LOTStockModel
                                        mm = JsonConvert.DeserializeObject<List<ERPJsonRetun>>(nn);
                                        foreach (var items in mm)
                                        {
                                            string ERPupdate = @"update ICSWareHouseLotInfoLog set ERPID='{0}',ERPDetailID='{1}',ERPCode='{2}',ERPSequence='{3}',memo='1'
                                         where TransCode='{4}' and  TransSequence ='{5}'";
                                            ERPupdate = string.Format(ERPupdate, items.ID, items.DetailID, items.RCVTCode, items.Sequence, itemInfo.TransCode, itemInfo.TransSequence);
                                            cmd.CommandText = ERPupdate;
                                            numInfo = cmd.ExecuteNonQuery();
                                        }

                                        if (numInfo > 0)
                                        {
                                            cmd.Transaction.Commit();
                                        }
                                        else
                                        {
                                            cmd.Transaction.Rollback();
                                        }
                                    }
                                    else
                                    {
                                        cmd.Transaction.Rollback();
                                        throw new Exception(OtherOutResult.Message);
                                    }

                                    #endregion
                                }
                                else
                                {
                                    throw new Exception("采购订单已经关闭!");
                                }
                                return null;
                            case "成品入库":
                                #region 添加到库存表/日志表
                                sqlInfo = @"select * from ICSLocation where LocationCode='{0}'";
                                sqlInfo = string.Format(sqlInfo, itemInfo.LocationCode);
                                cmd.CommandText = sqlInfo;
                                table = DBHelper.SQlReturnData(sqlInfo, cmd);
                                if (table.Rows.Count <= 0)
                                {
                                    throw new Exception("库位不存在!");
                                }
                                ///验证条码是否存在或者是否上架
                                sqlInfo = @"select * from ICSInventoryLot where LotNo='{0}'";
                                sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
                                cmd.CommandText = sqlInfo;
                                table = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
                                if (table.Rows.Count <= 0)
                                {
                                    throw new Exception("条码不存在!");
                                }
                                sqlInfo = @"select * from ICSWareHouseLotInfo where LotNo='{0}'";
                                sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
                                cmd.CommandText = sqlInfo;
                                tableInfo = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
                                if (tableInfo.Rows.Count > 0)
                                {
                                    throw new Exception("条码已经上架!");
                                }
                                else
                                {
                                    sql = @"update ICSMO set RCVQuantity= RCVQuantity + (select Quantity from ICSInventoryLot where lotno='{0}' ) ,MTIME='{1}' where MOCode ='{2}' and  InvCode=(select InvCode from ICSInventoryLot where lotno='{0}' ) and WorkPoint='{3}'";
                                    sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, itemInfo.TransCode, item.WorkPoint);
                                    cmd.CommandText = sql;
                                    int ApplyNeg = cmd.ExecuteNonQuery();
                                    sql = @" INSERT INTO [ICSWareHouseLotInfo]
                                       ([ID]
                                       ,[LotNo]
                                       ,[WarehouseCode]
                                       ,[LocationCode]
                                       ,[InvCode]
                                       ,[Quantity]
                                       ,[InDate]
                                       ,[LockQuantity]
                                       ,[MUSER]
                                       ,[MUSERName]
                                       ,[MTIME]
                                       ,[WorkPoint]
                                       ,[EATTRIBUTE1])
                                 VALUES
                                       (newid()
                                       ,'{0}'
                                       ,(select WarehouseCode from ICSWarehouse a left join ICSLocation b on a.ID =b.WHID WHERE LocationCode='{1}')
                                       ,'{1}'
                                       ,(SELECT InvCode FROM  ICSInventoryLot WHERE LotNo='{0}')
                                       ,(SELECT Quantity FROM  ICSInventoryLot WHERE LotNo='{0}')
                                       ,'{5}'
                                       ,0
                                       ,'{2}'
                                       ,'{2}'
                                       ,'{3}'
                                       ,'{4}'
                                       ,'')";
                                    sql = string.Format(sql, itemInfo.LotNo, itemInfo.LocationCode, item.User, item.MTime, item.WorkPoint, DateTime.Now);
                                    cmd.CommandText = sql;
                                    numInfo = cmd.ExecuteNonQuery();
                                    //cmd.Transaction.Commit();
                                    if (numInfo > 0)
                                    {
                                        string 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])
                                             VALUES
                                                   (newid()
                                                   ,'{4}'
                                                   ,' '
                                                   ,'{0}'
                                                   ,(SELECT InvCode FROM ICSInventoryLot WHERE LotNo='{0}')
                                                   ,(SELECT WarehouseCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
                                                   ,(SELECT LocationCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
                                                   ,''
                                                   ,''
                                                   ,(SELECT Quantity FROM ICSInventoryLot WHERE LotNo='{0}')
                                                   ,''
                                                   ,''
                                                   ,'21'
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,'{1}'
                                                   ,'{1}'
                                                   ,'{2}'
                                                   ,'{3}'
                                                   ,'')";
                                        sqlLog = string.Format(sqlLog, itemInfo.LotNo, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode);
                                        DBHelper.CmdExecuteNonQuery(sqlLog, cmd, "成功");
                                        cmd.Transaction.Commit();
                                    }
                                }

                                #endregion
                                return null;

                            case "委外订单"://(委外入库)
                                verification.HouseLotoOut(itemInfo.LotNo, item.WorkPoint);
                                string numNegDetail = @"select isnull((InQuantity),0) as InQuantity , Quantity from ICSOutsourcingOrder  where OOCode='{0}'and Sequence='{1}' and WorkPoint='{2}' and Status <> '3' ";
                                numNegDetail = string.Format(numNegDetail, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint);
                                DataTable dataDetail = DBHelper.SQlReturnData(numNegDetail, cmd);
                                if (dataDetail.Rows.Count < 0)
                                {
                                    throw new Exception("订单已关闭!");
                                }
                                else
                                {
                                    foreach (DataRow itemDetail in dataDetail.Rows)
                                    {
                                        double Quantity = Convert.ToDouble(itemInfo.Quantity);///输入数量
                                        double IssueNegQuantity = Convert.ToDouble(itemDetail["InQuantity"]);//已退数量
                                        double NegQuantity = Quantity + IssueNegQuantity;//总数量(输入数量+已退数量)
                                        double QuantityPla = Convert.ToDouble(itemDetail["Quantity"]);//计划数量
                                        if (QuantityPla >= NegQuantity)
                                        {
                                            string NegDetailSql = @"update ICSOutsourcingOrder set Quantity=(select sum(Quantity) from ICSOutsourcingOrder where OOCode='{0}' and  Sequence='{1}' and WorkPoint='{2}') +'{3}'
                                                         , MUSER='{4}'  ,MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{4}' and F_Location='{2}'),  MTIME='{5}'    
                                                        where OOCode='{0}' and  Sequence='{1}' and WorkPoint='{2}' ";
                                            NegDetailSql = string.Format(NegDetailSql, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint, itemInfo.Quantity, item.User, DateTime.Now);
                                            cmd.CommandText = NegDetailSql;
                                            numInfo = cmd.ExecuteNonQuery();
                                            ///添加库存
                                            string HouseLotSql = @"
                               insert into ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
                               (select newid(),'{0}' ,e.WarehouseCode,isnull((d.LocationCode),0) as LocationCode ,a.InvCode ,'{1}','{2}','0','{3}' ,g.F_RealName ,'{2}' ,'{4}' ,' '
                                from ICSOutsourcingOrder a --委外退料申请单
								left join ICSLocation d on d.LocationCode='{6}'
								left join ICSWarehouse e on e.id=(select WHID from ICSLocation where LocationCode='{6}')
								left join Sys_SRM_User g on g.F_Account='{3}' and F_Location='{4}' --用户
                                where a.OOCode='{5}' and a. WorkPoint='{4}')";
                                            HouseLotSql = string.Format(HouseLotSql, itemInfo.LotNo, itemInfo.Quantity, DateTime.Now, item.User, item.WorkPoint, itemInfo.TransCode, itemInfo.LocationCode);
                                            cmd.CommandText = HouseLotSql;
                                            num = cmd.ExecuteNonQuery();
                                            ///添加日志
                                            string sqlLogInfo = @"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 ,' ', ' ',b.WarehouseCode,'{7}','{3}',' ','0','2','8',' ',' ',' ',' ','{4}',e.F_RealName,'{5}','{6}',' '
                                                   from ICSOutsourcingOrder a--主表
								                  left join ICSWarehouse b on b.id=(select WHID from ICSLocation where LocationCode='{7}')
                                                   left join Sys_SRM_User e on e.F_Account='{4}' and e.F_Location='{6}'
                                                    where a.OOCode='{0}' and a. WorkPoint='{6}')";
                                            sqlLogInfo = string.Format(sqlLogInfo, itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.User, DateTime.Now, item.WorkPoint, itemInfo.LocationCode);
                                            cmd.CommandText = sqlLogInfo;
                                            int numInfoLot = cmd.ExecuteNonQuery();


                                            #region ERP                                    
                                            sqlERP = @"	select VenCode,OOCode, ToWarehouseCode,a.MUSER,b.Sequence ,(getdate())as Mtime  from ICSWareHouseLotInfoLog   a
						                        left join ICSOutsourcingOrder b on a.TransCode=b.OOCode and b.Sequence =a.transSequence
                                                 where b.OOCode='{0}' and  b.WorkPoint='{1}' and  a.Memo <> '1'
						                        group by VenCode,OOCode, ToWarehouseCode,a.MUSER,b.Sequence ";
                                            sqlERP = string.Format(sqlERP, itemInfo.TransCode, item.WorkPoint);
                                            table = DBHelper.SQlReturnData(sqlERP, cmd);

                                            sqlERPDetil = @"select b.Sequence,a.InvCode,sum (a.Quantity) as Quantity,isnull((b.Amount),0) as Amount,isnull((b.UnitPrice),0) as UnitPrice,b.Currency,b.OODetailID from ICSWareHouseLotInfoLog   a
									                         inner join ICSOutsourcingOrder b on a.TransCode=b.OOCode and b.Sequence =a.transSequence
                                                             where b.OOCode='{0}' and  b.WorkPoint='{1}' and  a.Memo <> '1'
									                         group by b.Sequence,a.InvCode,b.Amount,b.UnitPrice,b.Currency,b.OODetailID";
                                            sqlERPDetil = string.Format(sqlERPDetil, itemInfo.TransCode, item.WorkPoint);
                                            DataTable ERPtable = DBHelper.SQlReturnData(sqlERPDetil, cmd);

                                            List<ERPPurchaseOrder> docmodel = new List<ERPPurchaseOrder>();
                                            foreach (DataRow dtIn in table.Rows)
                                            {
                                                ERPPurchaseOrder doc = new ERPPurchaseOrder();
                                                doc.VenCode = dtIn["VenCode"].ToString();
                                                //doc.OOCode = dtIn["OOCode"].ToString();
                                                doc.User = dtIn["MUSER"].ToString();
                                                doc.MTime = dtIn["Mtime"].ToString();
                                                //doc.MTime = DateTime.Now;
                                                doc.WHCode = dtIn["ToWarehouseCode"].ToString();
                                                doc.ODNCode = "";
                                                List<ERPPurchaseOrderList> list = new List<ERPPurchaseOrderList>();
                                                foreach (DataRow dtList in ERPtable.Rows)
                                                {
                                                    ERPPurchaseOrderList docc = new ERPPurchaseOrderList();
                                                    docc.Sequence = dtList["Sequence"].ToString();
                                                    docc.InvCode = dtList["InvCode"].ToString();
                                                    docc.Quantity = dtList["Quantity"].ToString();
                                                    docc.Amount = dtList["Amount"].ToString();
                                                    docc.Currency = dtList["Currency"].ToString();
                                                    docc.UnitPrice = dtList["UnitPrice"].ToString();
                                                    //docc.OODetailID = dtList["OODetailID"].ToString();
                                                    docc.DNDetailID = "";
                                                    list.Add(docc);
                                                }

                                                doc.details = list;
                                                docmodel.Add(doc);
                                            }
                                            IstrErp = JsonConvert.SerializeObject(docmodel);
                                            log.Info("委外入库ERPJSON" + IstrErp);
                                            iresult = HttpPost("委外入库", ERPUrl.OutsourcingReceiveDocURL, IstrErp);
                                            Result OtherOutResult = new Result();
                                            OtherOutResult = JsonConvert.DeserializeObject<Result>(iresult);
                                            List<ERPJsonRetun> mm = new List<ERPJsonRetun>();//json返回
                                            if (OtherOutResult.Success == true)
                                            {
                                                string nn = OtherOutResult.Data.ToString();//LOTStockModel
                                                mm = JsonConvert.DeserializeObject<List<ERPJsonRetun>>(nn);
                                                foreach (var items in mm)
                                                {
                                                    string ERPupdate = @"update ICSWareHouseLotInfoLog set ERPID='{0}',ERPDetailID='{1}',ERPCode='{2}',ERPSequence='{3}',memo='1'
                                                       where TransCode='{4}' and  TransSequence ='{5}'";
                                                    ERPupdate = string.Format(ERPupdate, items.ID, items.DetailID, items.RCVTCode, items.Sequence, itemInfo.TransCode, itemInfo.TransSequence);
                                                    cmd.CommandText = ERPupdate;
                                                    numInfo = cmd.ExecuteNonQuery();
                                                }

                                                if (numInfo > 0)
                                                {
                                                    cmd.Transaction.Commit();
                                                }
                                                else
                                                {
                                                    cmd.Transaction.Rollback();
                                                }
                                            }
                                            else
                                            {
                                                cmd.Transaction.Rollback();
                                                throw new Exception(OtherOutResult.Message);
                                            }

                                            #endregion


                                            if (numInfoLot > 0)
                                            {
                                                cmd.Transaction.Commit();
                                            }
                                            else
                                            {
                                                cmd.Transaction.Rollback();
                                            }

                                        }
                                    }
                                }
                                return null;
                            case "其它入库":

                                string SOtherInDetail = @"select * from ICSOtherIn  where InCode='{0}'and Sequence='{1}' and WorkPoint='{2}' ";
                                SOtherInDetail = string.Format(SOtherInDetail, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint);
                                DataTable dataDetailIn = DBHelper.SQlReturnData(SOtherInDetail, cmd);
                                if (dataDetailIn.Rows.Count > 0)
                                {
                                    string sqlnn = @"select * from ICSOtherIn  where InCode='{0}'and Sequence='{1}' and WorkPoint='{2}' and Status='3' ";
                                    sqlnn = string.Format(sqlnn, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint);
                                    DataTable dataDetailll = DBHelper.SQlReturnData(sqlnn, cmd);
                                    if (dataDetailll.Rows.Count > 0)
                                    {
                                        throw new Exception("订单已关闭!");
                                    }
                                    else
                                    {
                                        foreach (DataRow itemDetail in dataDetailIn.Rows)
                                        {
                                            double Quantity = Convert.ToDouble(itemInfo.Quantity);///输入数量
                                            double IssueNegQuantity = Convert.ToDouble(itemDetail["InQuantity"]);//已退数量
                                            double NegQuantity = Quantity + IssueNegQuantity;//总数量(输入数量+已退数量)
                                            double QuantityPla = Convert.ToDouble(itemDetail["Quantity"]);//计划数量
                                            if (QuantityPla >= NegQuantity)
                                            {
                                                string NegDetailSql = @"update ICSOtherIn set InQuantity=(select sum(InQuantity) from ICSOtherIn where InCode='{0}' and  Sequence='{1}' and WorkPoint='{2}') +'{3}'
                                                         , MUSER='{4}'  ,MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{4}' and F_Location='{2}'),  MTIME='{5}'    
                                                        where InCode='{0}' and  Sequence='{1}' and WorkPoint='{2}' ";
                                                NegDetailSql = string.Format(NegDetailSql, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint, itemInfo.Quantity, item.User, DateTime.Now);
                                                cmd.CommandText = NegDetailSql;
                                                numInfo = cmd.ExecuteNonQuery();
                                                ///添加库存
                                                string HouseLotSql = @" 
                                                                   insert into ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
                                                                   (select newid(),'{0}' ,a.WHCode,isnull((f.LocationCode),0) ,a.InvCode ,'{1}','{2}','0','{3}' ,g.F_RealName ,'{4}' ,'{5}' ,' '
                                                                    from ICSOtherIn a --委外退料申请单
	                                                                left join ICSInventoryLotDetail c on a.InCode=c.TransCode and c.TransSequence=a.Sequence --条码关联
	                                                                left join ICSInventoryLot d on c.LOTNO=d.LotNO and d.WorkPoint=c.WorkPoint --条码
								                                    left join ICSLocation f on f.WHID=(select id from ICSWarehouse where WarehouseCode='{6}')
								                                    left join Sys_SRM_User g on g.F_Account='{3}' and F_Location='{5}' --用户
                                                                    where a.InCode='{6}' and a. WorkPoint='{5}')";
                                                HouseLotSql = string.Format(HouseLotSql, itemInfo.LotNo, itemInfo.Quantity, DateTime.Now, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode, itemInfo.LocationCode);
                                                cmd.CommandText = HouseLotSql;
                                                num = cmd.ExecuteNonQuery();
                                                ///添加日志
                                                string sqlLogInfo = @"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 ,' ', ' ',a.WHCode,d.LocationCode,'{3}',' ','0','2','12',' ',' ',' ',' ','{4}',e.F_RealName,'{5}','{6}',' '
                                                   from ICSOtherIn a--主表
                                                    left join ICSWarehouse c on c.WarehouseCode=a.WHCode and c.WorkPoint=a.WorkPoint--仓库
								                   left join ICSLocation d on d.WHID=(select id from ICSWarehouse where WarehouseCode='{7}')--库位
                                                   left join Sys_SRM_User e on e.F_Account='{4}' and e.F_Location='{6}'
                                                    where a.InCode='{0}' and a. WorkPoint='{6}' AND A.Sequence='{1}' )";
                                                sqlLogInfo = string.Format(sqlLogInfo, itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.User, DateTime.Now, item.WorkPoint, itemInfo.LocationCode);
                                                cmd.CommandText = sqlLogInfo;
                                                int numInfoLot = cmd.ExecuteNonQuery();
                                                if (numInfoLot > 0)
                                                {
                                                    cmd.Transaction.Commit();
                                                }
                                                else
                                                {
                                                    cmd.Transaction.Rollback();
                                                }

                                                #region ERP

                                                #endregion
                                            }
                                            else
                                            {
                                                throw new Exception("已入数量超过计划数量!");
                                            }
                                        }
                                    }

                                }
                                else
                                {
                                    throw new Exception("查无数据!");
                                }
                                return null;

                        }

                    }

                }
                return model;
            }
            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();
            }
        }

        /// <summary>
        /// 上架删除
        /// </summary>BusinessCode,TransType 两个类型
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public List<LOTStockUpDeleteIModel> LOTStockDelete(LOTStockUpDeleteIModel JsonData)
        {
            List<LOTStockUpDeleteIModel> model = new List<LOTStockUpDeleteIModel>();
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            try
            {
                sql = @"";

                table = DBHelper.SQlReturnData(sql, cmd);
                string json = JsonConvert.SerializeObject(table);
                model = JsonConvert.DeserializeObject<List<LOTStockUpDeleteIModel>>(json);//<List<WMSSourceDocumentModel>>
                cmd.Transaction.Commit();
                return model;
            }
            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

        #region 下架
        /// <summary>
        /// 下架增加
        /// </summary>BusinessCode,TransType 两个类型
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public int LOTStockDownCreate(List<LOTStockModel> JsonData)
        {
            List<LOTStockUpCreateIModel> model = new List<LOTStockUpCreateIModel>();
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int num;

            string sqlERP = string.Empty;//ERP的表头
            string sqlERPDetil = string.Empty;//ERP的表体
            string jsonERP = string.Empty;///erpjson
            string IstrErp = string.Empty;
            string iresult = string.Empty;//接口调用

            try
            {
                foreach (var item in JsonData)
                {
                    foreach (var itemInfo in item.detail)
                    {
                        switch (item.TransType)
                        {
                            case "委外退货":
                                string sqlNotices = @"select * from ICSODeliveryNotice where ODNCode='{0}' and Sequence='{1}'  and ODNType='2'  and WorkPoint='{2}'";
                                sqlNotices = string.Format(sqlNotices, item.TransCode, itemInfo.TransSequence, item.WorkPoint);

                                DataTable Notices = DBHelper.SQlReturnData(sqlNotices, cmd);
                                if (Notices.Rows.Count < 0)
                                {
                                    throw new Exception("单据已经关闭!");
                                }
                                foreach (DataRow itemdata in Notices.Rows)
                                {
                                    int IssueQuantity = Convert.ToInt32(itemdata["RCVQuantity"]);//入库数量
                                    int Quantity = Convert.ToInt32(itemdata["Quantity"]);//数量
                                    int CurrentQuantity = Convert.ToInt32(Convert.ToDouble(itemInfo.CurrentQuantity));
                                    int numQuantity = IssueQuantity + CurrentQuantity;//总数量
                                    if (numQuantity > Quantity)
                                    {
                                        throw new Exception("应退数量大于实际数量");
                                    }
                                }
                                //修改退货表
                                sql = " update   ICSODeliveryNotice  set RCVQuantity =  RCVQuantity + '{0}' where ODNCode= '{1}' and WorkPoint='{2}' and Sequence='{3}' ";
                                sql = string.Format(sql, itemInfo.CurrentQuantity, item.TransCode, item.WorkPoint, itemInfo.TransSequence);
                                cmd.CommandText = sql;
                                num = cmd.ExecuteNonQuery();
                                //修改库存
                                sqlInfo = @"update ICSWareHouseLotInfo set Quantity= Quantity -'{0}' where lotno='{1}' and WorkPoint='{2}' ";
                                sqlInfo = string.Format(sqlInfo, itemInfo.CurrentQuantity, itemInfo.LotNo, item.WorkPoint);
                                cmd.CommandText = sqlInfo;
                                num = cmd.ExecuteNonQuery();
                                ///添加日志表
                                #region 添加日志
                                string sqlLogw = @"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(),A.ODNCode,A.Sequence,'{0}',a.InvCode ,' ', ' ',b.WarehouseCode,b.LocationCode,'{1}',' ','0','2','20',' ',' ',' ',' ','{2}',e.F_RealName,'{3}','{4}',' '
                                                   from ICSODeliveryNotice a--主表
                                                    left join ICSWareHouseLotInfo b on b.LotNo='{0}'
                                                    left join Sys_SRM_User e on e.F_Account='{2}' and e.F_Location='{4}'
                                                    where a.ODNCode='{5}' and a.WorkPoint='{4}' and Sequence='{6}')";
                                sqlLogw = string.Format(sqlLogw, itemInfo.LotNo, item.Quantity, item.User, DateTime.Now, item.WorkPoint, item.TransCode, itemInfo.TransSequence, itemInfo.Sequence);
                                cmd.CommandText = sqlLogw;
                                int numlogs = cmd.ExecuteNonQuery();

                                #endregion

                                #region ERP                                    
                                sqlERP = @"		select a.VenCode ,a.POID,b.ToWarehouseCode,b.TransCode,b.MUSER,b.TransSequence,b.InvCode,a.ODNCode ,(getdate())as Mtime from ICSODeliveryNotice a
                                 inner join ICSWareHouseLotInfoLog b on a.ODNCode=b.TransCode and b.TransSequence=a.Sequence
                                 where a.ODNType='2' and a.odncode='{0}'  and b.WorkPoint='{1}' and b.Memo <> '1' 
								 group by a.VenCode ,a.POID,b.ToWarehouseCode,b.TransCode,b.MUSER,b.TransSequence,b.InvCode,a.ODNCode";
                                sqlERP = string.Format(sqlERP, item.TransCode, item.WorkPoint);
                                table = DBHelper.SQlReturnData(sqlERP, cmd);

                                sqlERPDetil = @"select a.TransSequence,b.InvCode,sum(a.Quantity) as Quantity, isnull((b.Amount), 0) as Amount ,Currency,ISNULL((UnitPrice),0) AS UnitPrice,b.ODNDetailID from ICSWareHouseLotInfoLog a
                                                    inner JOIN ICSODeliveryNotice B ON b.ODNCode = a.TransCode and a.TransSequence = b.Sequence
                                                     where b.ODNCode='{0}' and a.Memo <> '1'  and a.WorkPoint='{1}'
                                                      group by a.TransSequence,b.InvCode,a.Quantity,  Amount ,Currency,UnitPrice,b.ODNDetailID";
                                sqlERPDetil = string.Format(sqlERPDetil, item.TransCode, item.WorkPoint);
                                DataTable ERPtable = DBHelper.SQlReturnData(sqlERPDetil, cmd);

                                List<ERPODNRT> docmodel = new List<ERPODNRT>();
                                foreach (DataRow dtIn in table.Rows)
                                {
                                    ERPODNRT doc = new ERPODNRT();
                                    doc.VenCode = dtIn["VenCode"].ToString();
                                    //doc.POCode = dtIn["POID"].ToString();
                                    doc.User = dtIn["MUSER"].ToString();
                                    doc.MTime = dtIn["Mtime"].ToString();
                                    doc.WHCode = dtIn["ToWarehouseCode"].ToString();
                                    doc.ODNRTCode = dtIn["Odncode"].ToString();
                                    List<ERPODNRTList> list = new List<ERPODNRTList>();
                                    foreach (DataRow dtList in ERPtable.Rows)
                                    {
                                        ERPODNRTList docc = new ERPODNRTList();
                                        docc.Sequence = dtList["TransSequence"].ToString();
                                        docc.InvCode = dtList["InvCode"].ToString();
                                        docc.Quantity = dtList["Quantity"].ToString();
                                        docc.Amount = dtList["Amount"].ToString();
                                        docc.Currency = dtList["Currency"].ToString();
                                        docc.UnitPrice = dtList["UnitPrice"].ToString();
                                        docc.ODNRTDetailID = dtList["ODNDetailID"].ToString();
                                        list.Add(docc);
                                    }

                                    doc.details = list;
                                    docmodel.Add(doc);
                                }
                                IstrErp = JsonConvert.SerializeObject(docmodel);
                                log.Info("委外退货ERPJSON" + IstrErp);
                                iresult = HttpPost("委外退货", ERPUrl.OutsourcingReturnBackURL, IstrErp);
                                Result OtherOutResult = new Result();
                                OtherOutResult = JsonConvert.DeserializeObject<Result>(iresult);
                                int numInfo = 0;
                                if (OtherOutResult.Success == false)
                                {
                                    throw new Exception(OtherOutResult.Message);
                                }
                                else
                                {
                                    List<ERPJsonRetun> list = new List<ERPJsonRetun>();
                                    //string nn = OtherOutResult.Data.ToString();//LOTStockModel
                                    list = JsonConvert.DeserializeObject<List<ERPJsonRetun>>(OtherOutResult.Data.ToString());
                                    foreach (var items in list)
                                    {
                                        string ERPupdate = @"update ICSWareHouseLotInfoLog set ERPID='{0}',ERPDetailID='{1}',ERPCode='{2}',ERPSequence='{3}',Memo='1'
                                        where TransCode='{4}' and  TransSequence ='{5}'";
                                        ERPupdate = string.Format(ERPupdate, items.ID, items.DetailID, items.RCVNEGCode, items.Sequence, item.TransCode, itemInfo.TransSequence);
                                        cmd.CommandText = ERPupdate;
                                        numInfo = cmd.ExecuteNonQuery();

                                    }
                                    if (numInfo > 0)
                                    {
                                        cmd.Transaction.Commit();
                                    }
                                    else
                                    {
                                        cmd.Transaction.Rollback();
                                    }


                                }

                                #endregion
                                if (numlogs <= 0)
                                {
                                    cmd.Transaction.Rollback();
                                }
                                else
                                {
                                    cmd.Transaction.Commit();
                                }
                                return 0;
                            case "材料出库":
                                string sqlMOPick = @"SELECT IssueQuantity,Quantity,* from ICSMOPick  
													 where MODetailID= (SELECT ID FROM ICSMO WHERE MOCode='{0}') and InvCode=(select InvCode from ICSInventoryLot where LotNo='{1}' AND WorkPoint='{2}')";
                                sqlMOPick = string.Format(sqlMOPick, item.TransCode, itemInfo.LotNo, item.WorkPoint);
                                //cmd.CommandText = sqlMOPick;
                                DataTable data = DBHelper.SQlReturnData(sqlMOPick, cmd);
                                foreach (DataRow itemdata in data.Rows)
                                {
                                    int IssueQuantity = Convert.ToInt32(itemdata["IssueQuantity"]);
                                    int Quantity = Convert.ToInt32(itemdata["Quantity"]);
                                    int CurrentQuantity = Convert.ToInt32(Convert.ToDouble(itemInfo.CurrentQuantity));
                                    int numQuantity = IssueQuantity + CurrentQuantity;
                                    if (numQuantity > Quantity)
                                    {
                                        throw new Exception("应退数量大于实际数量");
                                    }
                                }
                                sql = " update   ICSMOPick  set IssueQuantity=  IssueQuantity + '{0}' where MODetailID= (SELECT ID FROM ICSMO WHERE MOCode='{1}') and WorkPoint='{2}' and InvCode=(select InvCode from ICSInventoryLot where LotNo='{3}' )";
                                sql = string.Format(sql, itemInfo.CurrentQuantity, item.TransCode, item.WorkPoint, itemInfo.LotNo);
                                cmd.CommandText = sql;
                                num = cmd.ExecuteNonQuery();
                                if (num <= 0)
                                {
                                    throw new Exception("条码不存在!");
                                }
                                else
                                {
                                    string sqlVerification = @"select * from ICSWareHouseLotInfo where  lotno='{0}' and '{2}'<= Quantity and WorkPoint='{1}'";
                                    sqlVerification = string.Format(sqlVerification, itemInfo.LotNo, item.WorkPoint, itemInfo.CurrentQuantity);
                                    DataTable dataTableNum = DBHelper.SQlReturnData(sqlVerification, cmd);
                                    if (dataTableNum.Rows.Count <= 0)
                                    {
                                        throw new Exception("输入数量大于库存数量");
                                    }
                                    else
                                    {
                                        sqlInfo = @"update ICSWareHouseLotInfo set Quantity= Quantity -'{0}' where lotno='{1}' ";
                                        sqlInfo = string.Format(sqlInfo, itemInfo.CurrentQuantity, itemInfo.LotNo, item.WorkPoint);
                                        cmd.CommandText = sqlInfo;
                                        num = cmd.ExecuteNonQuery();
                                        //DBHelper.CmdExecuteNonQuery(sqlInfo, cmd, "成功");
                                        //cmd.Transaction.Commit();
                                        log.Info("材料出库" + sql);
                                    }
                                    ///添加日志表
                                    #region 添加日志
                                    string sqlLogs = @"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(),'{5}','{6}','{0}',b.InvCode ,' ', ' ',b.WarehouseCode,b.LocationCode,'{1}',' ','0','2','21',' ',' ',' ',' ','{2}',e.F_RealName,'{3}','{4}',' '
                                                   from 
                                                    ICSWareHouseLotInfo b 
                                                    left join Sys_SRM_User e on e.F_Account='{2}' and e.F_Location='{4}'
                                                    where b.LotNo='{0}' and b.WorkPoint='{4}' )";
                                    sqlLogs = string.Format(sqlLogs, itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, DateTime.Now, item.WorkPoint, item.TransCode, itemInfo.TransSequence, itemInfo.Sequence);
                                    cmd.CommandText = sqlLogs;
                                    num = cmd.ExecuteNonQuery();
                                    if (num <= 0)
                                    {
                                        cmd.Transaction.Rollback();
                                    }
                                    else
                                    {
                                        cmd.Transaction.Commit();
                                    }
                                    #endregion
                                    #region ERP                                    
                                    sqlERP = @"select DepCode,FromWarehouseCode,MOCode,Sequence,a.MUSER ,(getdate())as Mtime,b.TransType from ICSMO a 
                                                      left join ICSWareHouseLotInfoLog b on a.MOCode=b.TransCode and a.WorkPoint=b.WorkPoint and a.InvCode=b.InvCode 
                                                        where MOCode='{0}' and  a.WorkPoint='{1}' ";
                                    sqlERP = string.Format(sqlERP, item.TransCode, item.WorkPoint);
                                    table = DBHelper.SQlReturnData(sqlERP, cmd);

                                    sqlERPDetil = @"select a.TransSequence,b.InvCode,a.Quantity, isnull((b.Amount),0)as Amount ,PickID from ICSWareHouseLotInfoLog a
                                                            LEFT JOIN ICSMO B ON B.MOCode=A.TransCode
                                                           left join ICSMOPick C on C.MODetailID=B.ID where LotNo='{0}'  and  c.Sequence=a.TransSequence and a.EATTRIBUTE1=b.Sequence  and a.Memo<>'1'";
                                    sqlERPDetil = string.Format(sqlERPDetil, itemInfo.LotNo);

                                    DataTable ERPtabless = DBHelper.SQlReturnData(sqlERPDetil, cmd);

                                    List<IssueDoc> docmodelss = new List<IssueDoc>();
                                    foreach (DataRow dt in table.Rows)
                                    {
                                        IssueDoc doc = new IssueDoc();
                                        doc.DepCode = dt["DepCode"].ToString();
                                        doc.WHCode = dt["FromWarehouseCode"].ToString();
                                        doc.SourceType = dt["MOCode"].ToString();
                                        doc.SourceCode = "生产订单";
                                        doc.User = dt["MUSER"].ToString();
                                        doc.MTime = dt["Mtime"].ToString();
                                        List<IssueDocList> list = new List<IssueDocList>();
                                        foreach (DataRow dtList in ERPtabless.Rows)
                                        {
                                            IssueDocList docc = new IssueDocList();
                                            docc.Sequence = dtList["TransSequence"].ToString();
                                            docc.InvCode = dtList["InvCode"].ToString();
                                            docc.Quantity = dtList["Quantity"].ToString();
                                            docc.Amount = dtList["Amount"].ToString();
                                            docc.SourceDetailID = dtList["PickID"].ToString();
                                            list.Add(docc);
                                        }

                                        doc.details = list;
                                        docmodelss.Add(doc);
                                    }
                                    IstrErp = JsonConvert.SerializeObject(docmodelss);
                                    iresult = HttpPost("材料出库", ERPUrl.MOIssueDocURL, IstrErp);
                                    Result OtherOutResultss = new Result();
                                    OtherOutResultss = JsonConvert.DeserializeObject<Result>(iresult);

                                    if (OtherOutResultss.Success == false)
                                    {
                                        throw new Exception(OtherOutResultss.Message);
                                    }
                                    else
                                    {
                                        //OtherOutResult.Data;
                                    }
                                    #endregion
                                }
                                return 0;
                            case "生产退料":
                                sql = @"update ICSMOApplyNegDetail set Quantity='{0}',Amount='{1}',IssueNegQuantity =((select sum(IssueNegQuantity) from  ICSODelICSMOApplyNegDetailiveryNotice where ApplyNegCode='{2}') - '{0}'), MUSER='{3}',MTIME='{4}' where ApplyNegCode='{2}' and WorkPoint='{5}'";
                                sql = string.Format(sql, item.Quantity, item.Amount, item.TransCode, item.User, item.MTime, item.WorkPoint);
                                cmd.CommandText = sql;
                                num = cmd.ExecuteNonQuery();

                                return num;
                            case "产品入库":
                                sql = @"update ICSODeliveryNotice set Quantity='{0}',Amount='{1}'RCVQuantity =((select sum(RCVQuantity) from  ICSODeliveryNotice where ODNCode='{2}') - '{0}') ,MUSER='{3}',MTIME='{4}' where ODNCode='{2}' and WorkPoint='{5}'";
                                sql = string.Format(sql, itemInfo.CurrentQuantity, itemInfo.CurrentAmount, item.TransCode, item.User, item.MTime, item.WorkPoint);
                                cmd.CommandText = sql;
                                num = cmd.ExecuteNonQuery();
                                if (num > 0)
                                {
                                    //添加到日志表
                                }
                                return num;
                            case "销售发货":
                                #region 添加到库存表/日志表

                                ///验证条码是否存在或者是否上架
                                sqlInfo = @"select * from ICSInventoryLot where LotNo='{0}'";
                                sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
                                cmd.CommandText = sqlInfo;
                                table = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
                                if (table.Rows.Count <= 0)
                                {
                                    throw new Exception("条码不存在!");
                                }
                                ///查询销售订单是否已经关闭
                                sqlInfo = @"select * from ICSSDN where SDNCode='{0}' and Sequence='{1}' and Status='3' and Type='1' and  WorkPoint='{2}'";
                                sqlInfo = string.Format(sqlInfo, item.TransCode, itemInfo.TransSequence, item.WorkPoint);
                                cmd.CommandText = sqlInfo;
                                DataTable tableInfo = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
                                if (tableInfo.Rows.Count > 0)
                                {
                                    throw new Exception("销售订单已经关闭!");
                                }
                                else
                                {
                                    string sqlVerification = @"select * from ICSWareHouseLotInfo where  lotno='{0}' and '{2}'<= Quantity and WorkPoint='{1}'";
                                    sqlVerification = string.Format(sqlVerification, itemInfo.LotNo, item.WorkPoint, itemInfo.CurrentQuantity);
                                    DataTable dataTablel = DBHelper.SQlReturnData(sqlVerification, cmd);
                                    if (dataTablel.Rows.Count <= 0)
                                    {
                                        throw new Exception("输入数量大于库存数量");
                                    }
                                    else
                                    {
                                        ///修改销售订单表已发数量
                                        sql = @"update ICSSDN set SDNQuantity= SDNQuantity + '{4}' ,MTIME='{1}' where SDNCode ='{2}' and  InvCode=(select InvCode from ICSInventoryLot where lotno='{0}' ) and WorkPoint='{3}'";
                                        sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, item.TransCode, item.WorkPoint, itemInfo.CurrentQuantity);
                                        cmd.CommandText = sql;
                                        num = cmd.ExecuteNonQuery();
                                        //修改库存表的数量
                                        sql = @" update ICSWareHouseLotInfo set Quantity=Quantity -'{4}',MTIME='{1}' where lotno ='{0}' and  InvCode in (select InvCode from ICSInventoryLot where lotno='{0}'  and WorkPoint ='{3}') and WorkPoint='{3}' ";
                                        sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, item.TransCode, item.WorkPoint, itemInfo.CurrentQuantity);
                                        cmd.CommandText = sql;
                                        num = cmd.ExecuteNonQuery();
                                        // cmd.Transaction.Commit();
                                        #region 添加日志
                                        if (num > 0)
                                        {
                                            string sqlLogInfoInf = @"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])
                                             VALUES
                                                   (newid()
                                                   ,'{4}'
                                                   ,' '
                                                   ,'{0}'
                                                   ,(SELECT InvCode FROM ICSInventoryLot WHERE LotNo='{0}')
                                                   ,(SELECT WarehouseCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
                                                   ,(SELECT LocationCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
                                                   ,''
                                                   ,''
                                                   ,'{5}'
                                                   ,''
                                                   ,''
                                                   ,'21'
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,'{1}'
                                                   ,'{1}'
                                                   ,'{2}'
                                                   ,'{3}'
                                                   ,'')";
                                            sqlLogInfoInf = string.Format(sqlLogInfoInf, itemInfo.LotNo, item.User, DateTime.Now, item.WorkPoint, item.TransCode, itemInfo.CurrentQuantity);
                                            cmd.CommandText = sqlLogInfoInf;
                                            num = cmd.ExecuteNonQuery();
                                            //cmd.Transaction.Commit();
                                        }
                                        #endregion

                                        #region ERP接口
                                        string ERPSnd = @"select A.CusCode,A.SDNCode ,B.MUSER,MAX(B.MTIME) AS MTIME,b.TransSequence,b.TransCode,B.InvCode,b.FromWarehouseCode FROM ICSSDN a
                                                        inner join ICSWareHouseLotInfoLog b on a.SDNCode=b.TransCode and b.TransSequence=a.Sequence
                                                        where a.Type='1' and b.TransCode='{0}' and b.TransSequence='{1}' and b.WorkPoint='{2}'
                                                        group by A.CusCode,A.SDNCode ,B.MUSER,b.TransSequence,b.TransCode,B.InvCode,b.FromWarehouseCode";
                                        ERPSnd = string.Format(ERPSnd, item.TransCode, itemInfo.TransSequence, item.WorkPoint);
                                        table = DBHelper.SQlReturnData(ERPSnd, cmd);
                                        string ERPSndList = @"select a.TransSequence,b.InvCode,sum(a.Quantity) as Quantity , isnull((b.Amount),0)as Amount ,b.SDNDetailID from ICSWareHouseLotInfoLog a
                                                                inner JOIN ICSSDN B ON  b.SDNCode=a.TransCode and a.TransSequence=b.Sequence
                                                                where a.LotNo='{0}' and a.Memo<>'1' and b.WorkPoint='{1}' and b.Type='1' 
                                                                group by  a.TransSequence,b.InvCode,   Amount ,b.SDNDetailID";
                                        ERPSndList = string.Format(ERPSndList, itemInfo.LotNo, item.WorkPoint);
                                        DataTable ERPtbSndList = DBHelper.SQlReturnData(ERPSndList, cmd);
                                        List<ERPICSSDN> ERPemo = new List<ERPICSSDN>();
                                        foreach (DataRow itemNotice in table.Rows)
                                        {
                                            ERPICSSDN noticeModel = new ERPICSSDN();
                                            noticeModel.CusCode = itemNotice["CusCode"].ToString();
                                            noticeModel.WHCode = itemNotice["FromWarehouseCode"].ToString();
                                            noticeModel.SDNRTCode = itemNotice["SDNCode"].ToString();

                                            noticeModel.User = itemNotice["MUSER"].ToString();
                                            noticeModel.MTime = itemNotice["MTIME"].ToString();
                                            List<ERPICSSDNList> noticeModelList = new List<ERPICSSDNList>();
                                            foreach (DataRow ERPNoticeList in ERPtbSndList.Rows)
                                            {
                                                ERPICSSDNList listInfo = new ERPICSSDNList();
                                                listInfo.Sequence = ERPNoticeList["TransSequence"].ToString();
                                                listInfo.InvCode = ERPNoticeList["InvCode"].ToString();
                                                listInfo.Quantity = ERPNoticeList["Quantity"].ToString();
                                                listInfo.Amount = ERPNoticeList["Amount"].ToString();
                                                listInfo.SDNRTDetailID = ERPNoticeList["SDNDetailID"].ToString();
                                                noticeModelList.Add(listInfo);
                                            }

                                            noticeModel.details = noticeModelList;
                                            ERPemo.Add(noticeModel);
                                            string ERPICSSDN = JsonConvert.SerializeObject(ERPemo);
                                            string Emoiresultsdn = HttpPost("销售出库单", ERPUrl.SalesDeliveryNoticeURL, ERPICSSDN);
                                            Result OtherOutI = new Result();
                                            OtherOutI = JsonConvert.DeserializeObject<Result>(Emoiresultsdn);

                                            if (OtherOutI.Message != "200")
                                            {
                                                throw new Exception(OtherOutI.Message);
                                            }
                                            else
                                            {
                                                //OtherOutResult.Data;
                                            }
                                        }
                                        #endregion
                                    }


                                }
                                return 0;
                            #endregion

                            case "采购退货":

                                string sqlNotice = @"select * from ICSDeliveryNotice where DNCode='{0}' and Sequence='{1}'  and DNType='2' and Status='3' and WorkPoint='{2}'";
                                sqlNotice = string.Format(sqlNotice, item.TransCode, itemInfo.TransSequence, item.WorkPoint);

                                DataTable Notice = DBHelper.SQlReturnData(sqlNotice, cmd);
                                if (Notice.Rows.Count > 0)
                                {
                                    throw new Exception("单据已经关闭!");
                                }
                                foreach (DataRow itemdata in Notice.Rows)
                                {
                                    int IssueQuantity = Convert.ToInt32(itemdata["RCVQuantity"]);//入库数量
                                    int Quantity = Convert.ToInt32(itemdata["Quantity"]);//数量
                                    int CurrentQuantity = Convert.ToInt32(Convert.ToDouble(itemInfo.CurrentQuantity));
                                    int numQuantity = IssueQuantity + CurrentQuantity;//总数量
                                    if (numQuantity > IssueQuantity)
                                    {
                                        throw new Exception("应退数量大于实际数量");
                                    }
                                }
                                //修改退货表
                                sql = " update   ICSDeliveryNotice  set RCVQuantity =  RCVQuantity + '{0}' where DNCode= '{1}' and WorkPoint='{2}' and Sequence='{3}' ";
                                sql = string.Format(sql, itemInfo.CurrentQuantity, item.TransCode, item.WorkPoint, itemInfo.TransSequence);
                                cmd.CommandText = sql;
                                num = cmd.ExecuteNonQuery();
                                //修改库存
                                sqlInfo = @"update ICSWareHouseLotInfo set Quantity= Quantity -'{0}' where lotno='{1}' and WorkPoint='{2}' ";
                                sqlInfo = string.Format(sqlInfo, itemInfo.CurrentQuantity, itemInfo.LotNo, item.WorkPoint);
                                cmd.CommandText = sqlInfo;
                                num = cmd.ExecuteNonQuery();
                                ///添加日志表
                                #region 添加日志
                                string 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(),'{5}' ,'{6}'  ,'{0}',b.InvCode,b.WarehouseCode,b.LocationCode,'','','{1}' ,'','','2' ,'' ,'' ,'' ,'','' ,'{2}'  ,c.F_RealName,'{3}' ,'{4}' ,'{7}'
                                                    from ICSWareHouseLotInfo b
                                                     left join Sys_SRM_User c on c.F_Account='{2}' and c.F_Location='{4}'
                                                        where b.LotNo='{0}' and b.WorkPoint='{4}')";
                                sqlLog = string.Format(sqlLog, itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, DateTime.Now, item.WorkPoint, item.TransCode, itemInfo.TransSequence, itemInfo.Sequence);
                                cmd.CommandText = sqlLog;
                                int numlog = cmd.ExecuteNonQuery();

                                #endregion

                                #region ERP                                    
                                sqlERP = @"	select a.VenCode ,a.POID,b.FromWarehouseCode,b.TransCode,b.MUSER,b.TransSequence,b.InvCode,a.dncode,(getdate())as Mtime from ICSDeliveryNotice a
                                 inner join ICSWareHouseLotInfoLog b on a.DNCode=b.TransCode and b.TransSequence=a.Sequence
                                 where a.DNType='2' and b.TransCode='{0}'  and b.WorkPoint='{1}' and a.Memo <> '1' 
								 group by a.VenCode ,a.POID,b.FromWarehouseCode,b.TransCode,b.MUSER,b.TransSequence,b.InvCode,a.dncode";
                                sqlERP = string.Format(sqlERP, item.TransCode, item.WorkPoint);
                                table = DBHelper.SQlReturnData(sqlERP, cmd);

                                sqlERPDetil = @"select a.TransSequence,b.InvCode,sum(a.Quantity) as Quantity, isnull((b.Amount), 0) as Amount ,Currency,UnitPrice,b.DNDetailID from ICSWareHouseLotInfoLog a
                                                    inner JOIN ICSDeliveryNotice B ON b.DNCode = a.TransCode and a.TransSequence = b.Sequence
                                                     where LotNo = '{0}' and a.Memo <> '1'  and a.WorkPoint='{1}'
                                                      group by a.TransSequence,b.InvCode,a.Quantity,  Amount ,Currency,UnitPrice,b.DNDetailID";
                                sqlERPDetil = string.Format(sqlERPDetil, itemInfo.LotNo, item.WorkPoint);
                                DataTable ERPtables = DBHelper.SQlReturnData(sqlERPDetil, cmd);

                                List<ERPPurchaseOrder> docmodels = new List<ERPPurchaseOrder>();
                                foreach (DataRow dtIn in table.Rows)
                                {
                                    ERPPurchaseOrder doc = new ERPPurchaseOrder();
                                    doc.VenCode = dtIn["VenCode"].ToString();
                                    doc.POCode = dtIn["POID"].ToString();
                                    doc.User = dtIn["MUSER"].ToString();
                                    doc.MTime = dtIn["Mtime"].ToString();
                                    doc.WHCode = dtIn["FromWarehouseCode"].ToString();
                                    doc.DNCode = dtIn["dncode"].ToString();
                                    List<ERPPurchaseOrderList> list = new List<ERPPurchaseOrderList>();
                                    foreach (DataRow dtList in ERPtables.Rows)
                                    {
                                        ERPPurchaseOrderList docc = new ERPPurchaseOrderList();
                                        docc.Sequence = dtList["TransSequence"].ToString();
                                        docc.InvCode = dtList["InvCode"].ToString();
                                        docc.Quantity = dtList["Quantity"].ToString();
                                        docc.Amount = dtList["Amount"].ToString();
                                        docc.Currency = dtList["Currency"].ToString();
                                        docc.UnitPrice = dtList["UnitPrice"].ToString();
                                        docc.DNDetailID = dtList["DNDetailID"].ToString();
                                        list.Add(docc);
                                    }

                                    doc.details = list;
                                    docmodels.Add(doc);
                                }
                                IstrErp = JsonConvert.SerializeObject(docmodels);
                                iresult = HttpPost("采购退货", ERPUrl.PurchaseReturnBackURL, IstrErp);
                                Result OtherOutResults = new Result();
                                OtherOutResult = JsonConvert.DeserializeObject<Result>(iresult);
                                int numInfos = 0;
                                if (OtherOutResult.Success == false)
                                {
                                    throw new Exception(OtherOutResult.Message);
                                }
                                else
                                {
                                    List<ERPJsonRetun> list = new List<ERPJsonRetun>();
                                    //string nn = OtherOutResult.Data.ToString();//LOTStockModel
                                    list = JsonConvert.DeserializeObject<List<ERPJsonRetun>>(OtherOutResult.Data.ToString());
                                    foreach (var items in list)
                                    {
                                        string ERPupdate = @"update ICSWareHouseLotInfoLog set ERPID='{0}',ERPDetailID='{1}',ERPCode='{2}',ERPSequence='{3}',Memo='1'
                                        where TransCode='{4}' and  TransSequence ='{5}'";
                                        ERPupdate = string.Format(ERPupdate, items.ID, items.DetailID, items.RCVNEGCode, items.Sequence, item.TransCode, itemInfo.TransSequence);
                                        cmd.CommandText = ERPupdate;
                                        numInfos = cmd.ExecuteNonQuery();

                                    }
                                    if (numInfos > 0)
                                    {
                                        cmd.Transaction.Commit();
                                    }
                                    else
                                    {
                                        cmd.Transaction.Rollback();
                                    }

                                    //string sqlupdate = @"update ICSDeliveryNotice set DNCode='{0}',Sequence='{1}',DNID='{2}',DNDetailID='{3}'
                                    //                        where DNCode='{4}'";
                                    //sqlupdate = string.Format(sqlupdate);

                                }

                                #endregion
                                return 0;

                            case "委外发料":
                                string str = itemInfo.TransSequence;
                                string[] arrStr = str.Split(',');
                                string BSequence = arrStr[0].ToString();
                                string ASequence = arrStr[1].ToString();

                                string sqlverification = @"select * from ICSOOPick where OODetailID = (select OODetailID from ICSOutsourcingOrder where OOCode='{0}' and  Sequence='{2}' and WorkPoint='{1}') and WorkPoint='{1}' AND Sequence='{3}'";
                                sqlverification = string.Format(sqlverification, item.TransCode, item.WorkPoint, BSequence, ASequence);
                                DataTable tabletion = DBHelper.SQlReturnData(sqlverification, cmd);
                                if (tabletion.Rows.Count <= 0)
                                {
                                    throw new Exception("发料单不存在!");
                                }
                                sql = @"update ICSOOPick set IssueQuantity= (select  IssueQuantity from ICSOOPick where  OODetailID = (select OODetailID from ICSOutsourcingOrder where OOCode='{1}' and  Sequence='{3}' and WorkPoint='{2}') and WorkPoint='{2}' AND Sequence='{4}' ) + '{0}'  where OODetailID = (select OODetailID from ICSOutsourcingOrder where OOCode='{1}' and  Sequence='{3}' and WorkPoint='{2}') and WorkPoint='{2}' AND Sequence='{4}' ";
                                sql = string.Format(sql, itemInfo.CurrentQuantity, item.TransCode, item.WorkPoint, BSequence, ASequence);
                                cmd.CommandText = sql;
                                num = cmd.ExecuteNonQuery();

                                sqlInfo = @"update ICSWareHouseLotInfo set Quantity= (select Quantity from ICSWareHouseLotInfo where lotno='{1}' and WorkPoint='{2}' ) -'{0}' where lotno='{1}' and WorkPoint='{2}' ";
                                sqlInfo = string.Format(sqlInfo, itemInfo.CurrentQuantity, itemInfo.LotNo, item.WorkPoint);
                                cmd.CommandText = sqlInfo;
                                num = cmd.ExecuteNonQuery();
                                #region 添加日志
                                string sqlPickLog = @"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(),'{5}' ,'{6}'  ,'{0}',b.InvCode,b.WarehouseCode,b.LocationCode,'','','{1}' ,'','','7' ,'' ,'' ,'' ,'','' ,'{2}'  ,c.F_RealName,'{3}' ,'{4}' ,'{7}'
                                                    from ICSWareHouseLotInfo b
                                                     left join Sys_SRM_User c on c.F_Account='{2}' and c.F_Location='{4}'
                                                        where b.LotNo='{0}' and b.WorkPoint='{4}')";

                                sqlPickLog = string.Format(sqlPickLog, itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, DateTime.Now, item.WorkPoint, item.TransCode, BSequence, itemInfo.TransSequence);
                                cmd.CommandText = sqlPickLog;
                                num = cmd.ExecuteNonQuery();
                                //if (numPicklog <= 0)
                                //{
                                //    cmd.Transaction.Rollback();
                                //}
                                //else
                                //{
                                //    cmd.Transaction.Commit();
                                //}
                                #endregion
                                #region ERP                                    
                                string sqlERPOOPick = @"		select b.DepCode,FromWarehouseCode,b.OOCode,a.MUSER ,(getdate())as Mtime from ICSWareHouseLotInfoLog a
		                                                        left join ICSOutsourcingOrder b ON A.TransCode=B.OOCode and  b.Sequence=a.TransSequence 
                                                                left join ICSOOPick   C on b.OODetailID=c.OODetailID and a.WorkPoint=b.WorkPoint and a.InvCode=b.InvCode 
                                                                where b.OOCode='{0}' and  a.WorkPoint='{1}' and  a.memo<>'1'";
                                sqlERPOOPick = string.Format(sqlERPOOPick, item.TransCode, item.WorkPoint);
                                table = DBHelper.SQlReturnData(sqlERPOOPick, cmd);

                                string sqlERPPickList = @"select a.TransCode, a.TransSequence,a.InvCode,sum(a.Quantity) as Quantity , isnull((b.Amount),0)as Amount,c.PickID   from ICSWareHouseLotInfoLog a
                                                        left JOIN ICSOutsourcingOrder B ON B.OOCode=A.TransCode and a.TransSequence=b.Sequence
                                                        left join ICSOOPick C on C.OODetailID=B.OODetailID  and  c.Sequence=a.TransSequence 
                                                        where LotNo='{0}'    and a.Memo<>'1'
                                                        group by a.TransCode,  a.TransSequence,a.InvCode,b.Amount ,c.PickID ";
                                sqlERPPickList = string.Format(sqlERPPickList, itemInfo.LotNo);

                                DataTable ERPOOPick = DBHelper.SQlReturnData(sqlERPPickList, cmd);
                                string jsonPickList = null;
                                List<IssueDoc> docPickmodel = new List<IssueDoc>();
                                foreach (DataRow dt in table.Rows)
                                {
                                    IssueDoc doc = new IssueDoc();
                                    doc.DepCode = dt["DepCode"].ToString();
                                    doc.WHCode = dt["FromWarehouseCode"].ToString();
                                    doc.SourceType = dt["OOCode"].ToString();
                                    doc.SourceCode = "委外发料";
                                    doc.User = dt["MUSER"].ToString();
                                    doc.MTime = dt["Mtime"].ToString();
                                    List<IssueDocList> list = new List<IssueDocList>();
                                    foreach (DataRow dtList in ERPOOPick.Rows)
                                    {
                                        IssueDocList docc = new IssueDocList();
                                        docc.Sequence = dtList["TransSequence"].ToString();
                                        docc.InvCode = dtList["InvCode"].ToString();
                                        docc.Quantity = dtList["Quantity"].ToString();
                                        docc.Amount = dtList["Amount"].ToString();
                                        docc.SourceDetailID = dtList["PickID"].ToString();
                                        list.Add(docc);
                                    }

                                    doc.details = list;
                                    docPickmodel.Add(doc);
                                    //jsonList = JsonConvert.SerializeObject(doc);
                                }
                                string IstrPick = JsonConvert.SerializeObject(docPickmodel);
                                log.Info("委外发料ERP传入的json" + IstrPick);
                                string iresultPick = HttpPost("委外发料", ERPUrl.OutsourcingIssueDocURL, IstrPick);
                                Result OtherOutResultpick = new Result();
                                OtherOutResultpick = JsonConvert.DeserializeObject<Result>(iresultPick);
                                List<ERPJsonRetun> m = new List<ERPJsonRetun>();
                                if (OtherOutResultpick.Success == true)
                                {

                                    string nn = OtherOutResultpick.Data.ToString();//LOTStockModel
                                    m = JsonConvert.DeserializeObject<List<ERPJsonRetun>>(nn);
                                    foreach (var items in m)
                                    {
                                        string ERPupdate = @"update ICSWareHouseLotInfoLog set ERPID='{0}',ERPDetailID='{1}',ERPCode='{2}',ERPSequence='{3}',Memo='1'
                                        where TransCode='{4}' and  TransSequence ='{5}'";
                                        ERPupdate = string.Format(ERPupdate, items.ID, items.DetailID, items.IssueCode, items.Sequence, item.TransCode, BSequence);
                                        cmd.CommandText = ERPupdate;
                                        num = cmd.ExecuteNonQuery();
                                    }

                                    if (num > 0)
                                    {
                                        cmd.Transaction.Commit();
                                    }
                                    else
                                    {
                                        cmd.Transaction.Rollback();
                                    }
                                }
                                else
                                {
                                    cmd.Transaction.Rollback();
                                    throw new Exception(OtherOutResultpick.Message);
                                }
                                #endregion
                                return 0;
                            case "其它出库":

                                string sqlOtherOut = @"select * from ICSOtherOut where OutCode = '{0}' and WorkPoint='{1}' AND Sequence='{2}'";
                                sqlOtherOut = string.Format(sqlOtherOut, item.TransCode, item.WorkPoint, itemInfo.TransSequence);
                                DataTable tabletionIn = DBHelper.SQlReturnData(sqlOtherOut, cmd);
                                if (tabletionIn.Rows.Count <= 0)
                                {
                                    throw new Exception("杂发单不存在!");
                                }

                                string sqlVerificationNum = @"select * from ICSWareHouseLotInfo where  lotno='{0}' and '{2}'<= Quantity and WorkPoint='{1}'";
                                sqlVerificationNum = string.Format(sqlVerificationNum, itemInfo.LotNo, item.WorkPoint, itemInfo.CurrentQuantity);
                                DataTable dataTable = DBHelper.SQlReturnData(sqlVerificationNum, cmd);
                                if (dataTable.Rows.Count <= 0)
                                {
                                    throw new Exception("输入数量大于库存数量");
                                }
                                //修改出库表
                                sql = @"update ICSOtherOut set OutQuantity= (select  sum(OutQuantity) from ICSOtherOut where  OutCode = '{1}')+'{0}'  where OutCode = '{1}' and WorkPoint='{2}' AND Sequence='{3}' ";
                                sql = string.Format(sql, itemInfo.CurrentQuantity, item.TransCode, item.WorkPoint, itemInfo.TransSequence);
                                cmd.CommandText = sql;
                                num = cmd.ExecuteNonQuery();
                                //修改库存
                                sqlInfo = @"update ICSWareHouseLotInfo set Quantity= (select sum(Quantity) from ICSWareHouseLotInfo where lotno='{1}' and WorkPoint='{2}' ) -'{0}' where lotno='{1}' and WorkPoint='{2}' ";
                                sqlInfo = string.Format(sqlInfo, itemInfo.CurrentQuantity, itemInfo.LotNo, item.WorkPoint);
                                cmd.CommandText = sqlInfo;
                                num = cmd.ExecuteNonQuery();
                                ///添加日志
                                string sqlLogInfo = @"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 ,' ', ' ',b.WarehouseCode,b.LocationCode,'{3}',' ','0','2','8',' ',' ',' ',' ','{4}',e.F_RealName,'{5}','{6}',' '
                                                   from ICSOtherOut a--主表
                                                    left join ICSWareHouseLotInfo b on b.LotNo='{2}'
                                                    left join Sys_SRM_User e on e.F_Account='{4}' and e.F_Location='{6}'
                                                    where a.mocode='{0}' and a.WorkPoint='{6}' and Sequence='{1}')";
                                sqlLogInfo = string.Format(sqlLogInfo, item.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, DateTime.Now, item.WorkPoint);
                                //left join ICSWarehouse c on c.WarehouseCode = a.WHCode and c.WorkPoint = a.WorkPoint--仓库
                                //                       left join ICSLocation d on d.WHID = c.ID and d.WorkPoint = c.WorkPoint--库位
                                cmd.CommandText = sqlLogInfo;
                                int numInfoLot = cmd.ExecuteNonQuery();
                                if (numInfoLot > 0)
                                {
                                    cmd.Transaction.Commit();
                                }
                                else
                                {
                                    cmd.Transaction.Rollback();
                                }

                                return 0;
                        }
                    }


                }
                return 0;
            }
            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

        #region 合并
        /// <summary>
        /// 合并 查询
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public List<WMSTBarCodeModelInfo> LOTMergeGet(WMSTBarCodeModel JsonData)
        {
            List<WMSTBarCodeModelInfo> model = new List<WMSTBarCodeModelInfo>();
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            try
            {
                sql = @"SELECT 
                              a.[ID] --唯一标识
                              ,[TransCode] --源头单据号
                              ,[TransSequence]--源头单据行号
                              ,a.[LotNo] --条码
                              ,a.[InvCode] --料品编码
	                          ,a.[Quantity] --数量
	                          ,c.WarehouseCode as WHCode --仓库编码
	                          ,c.WarehouseName  as WHName --仓库名称
	                          ,d.LocationCode as LocationCode  --库位代码
	                          ,d.LocationName as LocationName --库位名称
	                          ,e.name  as BusinessCode 
	                          ,a.MUSER --操作人
	                          ,a.[MTIME] --操作时间
                          FROM [ICSWMS_Base].[dbo].[ICSWareHouseLotInfoLog] a  --主表出入库
                          left join ICSWareHouseLotInfo  b on a.LotNo=b.LotNo and b.InvCode=a.InvCode and a.WorkPoint=b.WorkPoint --库存
                          left join ICSWarehouse c on c.WarehouseCode=b.WarehouseCode  and c.WorkPoint=b.WorkPoint-- 仓库
                          left join ICSLocation d on b.LocationCode=d.LocationCode  and b.WorkPoint=d.WorkPoint--库位
                          left join ICSType e on  a.BusinessCode=e.ColumnCode and e.Code=a.BusinessCode and e.WorkPoint=a.WorkPoint --类型
                            where 1=1 ";
                if (!string.IsNullOrEmpty(JsonData.TransCode))
                {
                    sql += " and TransCode='{0}'";
                    sql = string.Format(sql, JsonData.TransCode);
                }
                if (!string.IsNullOrEmpty(JsonData.User))
                {
                    sql += " and MUSER='{1}'";
                    sql = string.Format(sql, JsonData.User);
                }
                if (JsonData.MTime.ToString() != "0001/1/1 0:00:00")
                {
                    sql += " and MTIME='{2}'";
                    sql = string.Format(sql, JsonData.MTime);
                }
                table = DBHelper.SQlReturnData(sql, cmd);
                string json = JsonConvert.SerializeObject(table);
                model = JsonConvert.DeserializeObject<List<WMSTBarCodeModelInfo>>(json);//<List<WMSSourceDocumentModel>>
                cmd.Transaction.Commit();
                return model;
            }
            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();
            }
        }

        /// <summary>
        /// 合并Create
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>,
        public List<WMSTBarCodeModelInfo> LOTMergeCreate(List<LOTCreateIModel> JsonData)
        {
            List<WMSTBarCodeModelInfo> model = new List<WMSTBarCodeModelInfo>();
            var lotNo = string.Empty;
            var CoreNo = string.Empty;//合并的条码
            decimal num = 0;//合并的数量
            var cnum = string.Empty;
            string str = string.Empty;
            string WorkPoint = null;
            string UserName = string.Empty;
            string TransNos = "";
            int numInfo = 0;
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            try
            {
                List<string> list = new List<string>();
                ///第一个条码的数量
                foreach (var item in JsonData)
                {
                    lotNo = item.LotNo;//条码
                    UserName = item.User;
                    foreach (var itemInfo in item.detail)
                    {
                        CoreNo = itemInfo.CurrentLotNo;//合并的条码
                        num += Convert.ToDecimal(itemInfo.CurrentQuantity);//合并的数量
                        WorkPoint = itemInfo.WorkPoint;
                        list.Add(CoreNo);

                    }

                }
                //str = string.Join(",", list.ToArray());
                ///主表条码


                //int UpdatenumInfo = 0;
                foreach (var item in list.ToArray())
                {
                    str = item.ToString();
                    string sql = @"update  ICSWareHouseLotInfo set Quantity='0'  where LotNo = '{0}' and WorkPoint='{1}'";
                    sql = string.Format(sql, str, WorkPoint);
                    cmd.CommandText = sql;
                    numInfo = cmd.ExecuteNonQuery();
                }
                string updateSql = @"update  ICSWareHouseLotInfo set Quantity=(select Quantity from ICSWareHouseLotInfo where LotNo='{1}' and WorkPoint='{2}')+'{0}' where LotNo='{1}' and WorkPoint='{2}'";
                updateSql = string.Format(updateSql, num, lotNo, WorkPoint);
                cmd.CommandText = updateSql;
                numInfo = cmd.ExecuteNonQuery();
                string 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(),b.TransCode,b.TransSequence,'{0}',a.InvCode ,a.WarehouseCode,a.LocationCode ,'','',a.Quantity,' ','0','5','18',' ',' ',' ',' ','{1}',e.F_RealName,'{2}','{3}',' '
                                    from ICSWareHouseLotInfo a--主表
                                    left join ICSInventoryLotDetail b on b.LotNo=a.LotNo

                                    left join Sys_SRM_User e on e.F_Account='{1}' and e.F_Location='{3}'
                                    where a.LotNo='{0}' and a.WorkPoint='{3}' )";
                sqlLog = string.Format(sqlLog, lotNo, UserName, DateTime.Now, WorkPoint);
                cmd.CommandText = sqlLog;
                int numLog = cmd.ExecuteNonQuery();
                if (numLog > 0)
                {
                    cmd.Transaction.Commit();
                }
                else
                {
                    cmd.Transaction.Rollback();
                }
                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();
            }
        }


        /// <summary>
        /// 拆分
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public List<WMSTBarCodeModelInfo> LOTSplitCreates(List<LOTCreateIModel> JsonData)
        {
            //List<WMSTBarCodeModelInfo> model = new List<WMSTBarCodeModelInfo>();
            var lotNo = string.Empty;
            var CoreNo = string.Empty;//拆分的条码
            int num = 0;//拆分的数量
            var cnum = string.Empty;//拆分总数量
            string str = string.Empty;
            string WorkPoint = string.Empty;//站点
            string UserName = string.Empty;
            int numInfo = 0;

            Decimal numm = 0;
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            try
            {
                List<LOTCreateIModelInfo> list = new List<LOTCreateIModelInfo>();
                ///第一个条码的数量
                foreach (var item in JsonData)
                {

                    lotNo = item.LotNo;//条码
                    UserName = item.User;
                    WorkPoint = item.WorkPoint;
                    foreach (var itemInfo in item.detail)
                    {
                        LOTCreateIModelInfo modelInfo = new LOTCreateIModelInfo();
                        modelInfo.CurrentLotNo = itemInfo.CurrentLotNo;//拆分的条码
                        modelInfo.CurrentQuantity = itemInfo.CurrentQuantity;//拆分的数量
                        modelInfo.WorkPoint = itemInfo.WorkPoint;
                        numm += Convert.ToDecimal(itemInfo.CurrentQuantity);
                        list.Add(modelInfo);
                    }
                }
                //拆分之前记录日志
                //string sqlFront = @"select * from ICSWareHouseLotInfo where LotNo='{0}' and WorkPoint='{1}'";
                //sqlFront = string.Format(sqlFront,lotNo, WorkPoint);
                string primaryLog = @"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(),b.TransCode,b.TransSequence,'{0}',a.InvCode ,a.WarehouseCode,a.LocationCode ,'','',a.Quantity,' ','0','4','16',' ',' ',' ',' ','{1}',e.F_RealName,'{2}','{3}',' '
                                    from ICSWareHouseLotInfo a--主表
                                    left join ICSInventoryLotDetail b on b.LotNo=a.LotNo
                                    left join Sys_SRM_User e on e.F_Account='{1}' and e.F_Location='{3}'
                                    where a.LotNo='{0}' and a.WorkPoint='{3}')";
                primaryLog = string.Format(primaryLog, lotNo, UserName, DateTime.Now, WorkPoint);
                cmd.CommandText = primaryLog;
                int primarynumLog = cmd.ExecuteNonQuery();

                ///拆分后的条码数量
                foreach (var item in list.ToArray())
                {

                    CoreNo = item.CurrentLotNo;//条码
                    num = Convert.ToInt32(item.CurrentQuantity);//数量
                    WorkPoint = item.WorkPoint;//站点

                    //拆分条码
                    string sql = @"INSERT INTO [dbo].[ICSWareHouseLotInfo]
                                   ([ID]
                                   ,[LotNo]
                                   ,[WarehouseCode]
                                   ,[LocationCode]
                                   ,[InvCode]
                                   ,[Quantity]
                                   ,[InDate]
                                   ,[LockQuantity]
                                   ,[MUSER]
                                   ,[MUSERName]
                                   ,[MTIME]
                                   ,[WorkPoint]
                                   ,[EATTRIBUTE1])
                             select newid()
                                   ,'{0}'
                                   ,WarehouseCode
                                   ,LocationCode
                                   ,InvCode
                                   ,'{1}'
                                   ,InDate
                                   ,LockQuantity
                                   ,'{2}'
                                   ,b.F_RealName
                                   ,'{3}'
                                   ,'{4}'
                                   ,EATTRIBUTE1
		                           from ICSWareHouseLotInfo
		                           left join Sys_SRM_User b on b.F_Account='{2}' and b.F_Location='{4}' ";
                    sql = string.Format(sql, CoreNo, num, UserName, DateTime.Now, WorkPoint);
                    cmd.CommandText = sql;
                    numInfo = cmd.ExecuteNonQuery();
                    if (numInfo == 0)
                    {

                        throw new Exception("已经拆分过,请无重复拆分," + "拆分的条码:" + CoreNo);

                    }
                }
                ///拆分日志
                foreach (var item in list.ToArray())
                {
                    CoreNo = item.CurrentLotNo;//条码
                    num = Convert.ToInt32(item.CurrentQuantity);//数量
                    WorkPoint = item.WorkPoint;//站点
                    //拆分 日志
                    string sqlLogs = @"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(),b.TransCode,b.TransSequence,'{0}',a.InvCode ,a.WarehouseCode,a.LocationCode ,'','','{4}',' ','0','4','15',' ',' ',' ',' ','{1}',e.F_RealName,'{2}','{3}',' '
                                    from ICSWareHouseLotInfo a--主表
                                    left join ICSInventoryLotDetail b on b.LotNo=a.LotNo
                                    left join Sys_SRM_User e on e.F_Account='{1}' and e.F_Location='{3}'
                                    where a.LotNo='{0}' and a.WorkPoint='{3}' )";
                    sqlLogs = string.Format(sqlLogs, CoreNo, UserName, DateTime.Now, WorkPoint, num);
                    cmd.CommandText = sqlLogs;
                    numInfo = cmd.ExecuteNonQuery();
                }
                //修改拆分总数量
                string updateSql = @"update  ICSWareHouseLotInfo set Quantity=(select Quantity from ICSWareHouseLotInfo where LotNo='{1}' and WorkPoint='{2}')-'{0}' where LotNo='{1}' and WorkPoint='{2}'";
                updateSql = string.Format(updateSql, numm, lotNo, WorkPoint);
                cmd.CommandText = updateSql;
                numInfo = cmd.ExecuteNonQuery();

                string 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(),b.TransCode,b.TransSequence,'{0}',a.InvCode ,a.WarehouseCode,a.LocationCode ,'','',a.Quantity,' ','0','4','15',' ',' ',' ',' ','{1}',e.F_RealName,'{2}','{3}',' '
                                    from ICSWareHouseLotInfo a--主表
                                    left join ICSInventoryLotDetail b on b.LotNo=a.LotNo
                                    left join Sys_SRM_User e on e.F_Account='{1}' and e.F_Location='{3}'
                                    where a.LotNo='{0}' and a.WorkPoint='{3}' )";
                sqlLog = string.Format(sqlLog, lotNo, UserName, DateTime.Now, WorkPoint);
                cmd.CommandText = sqlLog;
                int numLog = cmd.ExecuteNonQuery();
                if (numLog > 0)
                {
                    cmd.Transaction.Commit();
                }
                else
                {
                    cmd.Transaction.Rollback();
                }
                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();
            }
        }
        /// <summary>
        /// 更新
        /// </summary>
        public string LOTReviseUpdate(LOTReviseUpdateIModel JsonData)
        {

            List<LOTReviseUpdateIModel> model = new List<LOTReviseUpdateIModel>();
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            int result = 0;
            string resultInfo = "数量为0";
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            try
            {
                #region 更新ICSWareHouseInfo表
                sql = @"update  ICSWareHouseLotInfo
                                set Quantity=Quantity - {0},MTIME='{1}'
                                where INVCode='{2}' and WorkPoint='{3}'
                                update ICSWareHouseLotInfoLog 
                                set Quantity=Quantity + {0},MTIME='{1}'
                                where INVCode='{2}' and WorkPoint='{4}'";
                sql = string.Format(sql, JsonData.Quantityl, DateTime.Now, JsonData.LotNo, JsonData.WorkPoint);
                cmd.CommandText = sql;
                result = cmd.ExecuteNonQuery();//返回条数
                #endregion
                if (result > 0)
                {
                    return result.ToString();
                }
                return resultInfo;
            }
            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

        #region 盘点
        /// <summary>
        /// 盘点
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public List<ICSCheck> LOTCheckGet(List<ICSCheck> JsonData)
        {
            List<ICSCheck> model = new List<ICSCheck>();
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            int result = 0;
            string resultInfo = null;
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            try
            {
                foreach (var item in JsonData)
                {
                    if (item.CheckCode == null)
                    {
                        resultInfo = "盘点单号不能为空!";
                    }
                    #region 查询该盘点号是否有数据
                    sql = @"select count(CheckCode) from ICSCheck
                            where CheckCode={0}";
                    sql = string.Format(sql, item.CheckCode);
                    cmd.CommandText = sql;
                    result = cmd.ExecuteNonQuery();//返回条数
                    if (result > 0)
                    {
                        sql = @"select  
                                 a.ID,
                                 a.CheckCode,
                                 a.WHCode,
                                 B.WarehouseName,
                                 a.InvCode,
                                 a.Quantity,
                                 a.ActualQuantity,
                                 a.MUSER,
                                 a.MTIME,
                                 c.id,
                                 c.LotNo,
                                 c.ActualQuantity,
                                 c.Quantity
                                from ICSCheck a
                                left join ICSWarehouse b on a.WHCode=B.WarehouseCode and a.WorkPoint=b.WorkPoint
                                left join ICSCheckDetail c on c.CheckCode=a.CheckCode and c.WorkPoint=a.WorkPoint
                                where 1=1 and  a.CheckCode='{0}'";
                        sql = string.Format(sql, item.CheckCode, item.MTime, item.User);
                        table = DBHelper.SQlReturnData(sql, cmd);
                        string json = JsonConvert.SerializeObject(table);
                        model = JsonConvert.DeserializeObject<List<ICSCheck>>(json);//<List<WMSSourceDocumentModel>>
                        cmd.Transaction.Commit();
                        return model;
                    }
                    else
                    {
                        resultInfo = "没有数据!";
                    }

                }
                #endregion
                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();
            }
        }

        /// <summary>
        /// 盘点添加
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public string LOTCheckCreate(List<ICSCheck> infoModel)
        {
            List<ICSCheck> model = new List<ICSCheck>();
            DataTable dt = null;
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            string result = null;
            int resultInfo = 0;
            int Status = 1;
            try
            {
                //根据条码查询库存数量
                foreach (var item in infoModel)
                {
                    foreach (var itemInfo in item.detail)
                    {
                        sql = @"select * from ICSWareHouseLotInfo where LotNo='{0}' ";
                        sql = string.Format(sql, itemInfo.LotNo);
                        dt = DBHelper.SQlReturnData(sql, cmd);
                        if (dt.Rows.Count > 0)
                        {
                            sql = @"INSERT INTO [dbo].[ICSCheck]
                                   ([ID]
                                   ,[CheckCode]
                                   ,[WHCode]
                                   ,[InvCode]
                                   ,[Status]
                                   ,[Quantity]
                                   ,[MUSER]
                                   ,[MTIME]
                                   ,MUSERName
                                   ,[WorkPoint])
                                 VALUES
                                 ( NEWID(),
                                   '{0}', 
								  (select WarehouseCode  from ICSWareHouseLotInfo where LotNo='{4}' ),
								   (select InvCode  from ICSWareHouseLotInfo where LotNo='{4}'),
                                   '1',
								  (select Quantity  from ICSWareHouseLotInfo where LotNo='{4}'),
								  '{1}',
                                  '{2}',
                                  '{1}',
                                  '{3}' )";
                            sql = string.Format(sql, item.CheckCode, item.User, item.MTime, item.WorkPoint, itemInfo.LotNo);
                            cmd.CommandText = sql;
                            DBHelper.CmdExecuteNonQuery(sql, cmd, "成功");
                            resultInfo = cmd.ExecuteNonQuery();//返回条数
                            sqlInfo = @" INSERT INTO [dbo].[ICSCheckDetail]
                                       ([ID]
                                       ,[CheckCode]
                                       ,[LotNo]
                                       ,[Quantity]
                                       ,[ActualQuantity]
                                       ,[MUSER]
                                       ,[MUSERName]
                                       ,[MTIME]
                                       ,[WorkPoint])
                                    VALUES(
		                              newid(),'{0}','{1}',
                                    (select Quantity  from ICSWareHouseLotInfo where LotNo='{1}'),
                                     '{4}',
                            '{2}','{2}','{3}')";
                            sqlInfo = string.Format(sqlInfo, item.CheckCode, itemInfo.LotNo, item.User, item.MTime, itemInfo.ActualQuantity);
                            cmd.CommandText = sqlInfo;
                            DBHelper.CmdExecuteNonQuery(sqlInfo, cmd, "成功");
                            resultInfo = cmd.ExecuteNonQuery();//返回条数
                        }
                        else
                        {
                            throw new Exception("条码没有查询到数据");
                        }
                    }
                }
            }
            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();
            }
            return resultInfo.ToString();
        }

        /// <summary>
        /// 删除盘点数据
        /// </summary>
        /// <param name="infoModel"></param>
        /// <returns></returns>
        public string LOTCheckDelete(List<ICSCheck> infoModel)
        {
            List<ICSCheck> model = new List<ICSCheck>();
            DataTable dt = null;
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int resultInfo = 0;
            try
            {
                foreach (var item in infoModel)
                {
                    foreach (var itemInfo in item.detail)
                    {
                        ///先删除主表在删除子表
                        sql = @"DELETE FROM ICSCheck where CheckCode=(select CheckCode from ICSCheckDetail where LotNo='{0}')
                                DELETE FROM ICSCheckDetail where LotNo='{0}' and WorkPoint='{1}'";
                        sql = string.Format(sql, itemInfo.LotNo, item.WorkPoint);
                        cmd.CommandText = sql;
                        resultInfo = cmd.ExecuteNonQuery();//返回条数
                    }
                }
            }
            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();
            }
            return resultInfo.ToString();
        }
        #endregion

        #region 审核
        /// <summary>
        /// 审核
        /// </summary>
        /// <param name="infoModel"></param>
        /// <returns></returns>
        public string MOIssueDocNegativeApplyApprove(List<ICSMOApplyNeg> infoModel)
        {
            List<ICSMOApplyNeg> model = new List<ICSMOApplyNeg>();
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int resultInfo = 0;
            string num = "审核成功!";
            try
            {
                foreach (var item in infoModel)
                {
                    foreach (var itemInfo in item.detail)
                    {
                        //先查询是否已经审核过
                        sql = @"select * from ICSMOApplyNeg where status='2' and id='{0}' and WorkPoint='{1}'";
                        sql = string.Format(sql, item.ID, itemInfo.WorkPoint);
                        DataTable dataTable = DBHelper.SQlReturnData(sql, cmd);
                        if (dataTable.Rows.Count > 0)
                        {
                            throw new Exception("已经审核过,请重复审核");
                        }
                        else
                        {
                            string sqlInfo = @"update ICSMOApplyNeg set status ='1' where id='{0}' and WorkPoint='{1}'";
                            sqlInfo = string.Format(sqlInfo, item.ID, itemInfo.WorkPoint);
                            DataTable data = DBHelper.SQlReturnData(sqlInfo, cmd);
                            if (data.Rows.Count > 0)
                            {
                                return num;
                            }
                        }
                    }

                }
            }
            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();
            }
            return num;
        }
        #endregion

        #region 生产退料

        /// <summary>
        /// 查询
        /// </summary>
        /// <param name="infoModel"></param>
        /// <returns></returns>
        public List<ICSMOApplyNeg> MOIssueDocNegativeApplyGet(ICSMOApplyNeg infoModel)
        {
            List<ICSMOApplyNeg> model = new List<ICSMOApplyNeg>();
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int resultInfo = 0;
            try
            {

                sql = @"select 
                                a.id,
                                a.ApplyNegCode,
                                c.WarehouseCode,
                                c.WarehouseName,
                                a.MUSER,
                                a.MUSERName,
                                a.MTIME,
                                a.WorkPoint,
                                a.Sequence,
                                a.InvCode,
                                a.Quantity,
                                a.Amount,
                                a.SourceDetailID,
                                b.ID
                                from ICSMOApplyNegDetail a
                                left join ICSMOApplyNeg b on b.ApplyNegCode = a.ApplyNegCode and a.WorkPoint=b.WorkPoint
                                left join ICSWarehouse c on b.WHCode = c.WarehouseCode  and  b.WorkPoint=c.WorkPoint
                                where a.ApplyNegCode='{0}' and a.MUSER='{1}' and a.MTIME='{2}'";

                sql = string.Format(sql, infoModel.MOApplyNegCode, infoModel.User, infoModel.MTime);
                table = DBHelper.SQlReturnData(sql, cmd);
                string json = JsonConvert.SerializeObject(table);
                model = JsonConvert.DeserializeObject<List<ICSMOApplyNeg>>(json);//<List<WMSSourceDocumentModel>>
                cmd.Transaction.Commit();

            }
            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();
            }
            return model;
        }

        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="infoModel"></param>
        /// <returns></returns>
        public string MOIssueDocNegativeApplyCreate(List<ICSMOApplyNeg> infoModel)
        {
            List<ICSMOApplyNeg> model = new List<ICSMOApplyNeg>();
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int resultInfo = 0;
            int resultInfowater = 0;
            string Pre;
            string water = "001";
            try
            {
                Random Rdm = new Random();
                foreach (var item in infoModel)
                {


                    foreach (var itemInfo in item.detail)
                    {
                        string Date = DateTime.Now.ToString("yy");
                        Pre = "MOISSUENEGAPPLY" + item.WHCode + Rdm.Next(0, 100) + Date;
                        Pre += 1;
                        sql = @"INSERT INTO ICSMOApplyNeg  ([ID],[ApplyNegCode],[WHCode],[Status],[MUSER],[MTIME],[WorkPoint],type,CreatePerson,MUSERName,CreateDateTime)
                                         VALUES (newid(),'{0}','{1}','新建','{2}','{3}','{4}','生产','{2}','{2}','{3}')";
                        sql = string.Format(sql, Pre, item.WHCode, item.User, item.MTime, itemInfo.WorkPoint);
                        cmd.CommandText = sql;

                        resultInfo = cmd.ExecuteNonQuery();//返回条数
                        //cmd.Transaction.Commit();
                        if (resultInfo <= 0)
                        {
                            throw new Exception("添加主表失败");
                        }


                        sqlInfo = @" INSERT INTO ICSMOApplyNegDetail   ([ID],[ApplyNegCode],[Sequence],[SourceDetailID],[InvCode],[Quantity],[Amount],[ExtensionID],[MUSER],MUSERName,[MTIME],[WorkPoint],[EATTRIBUTE])
                                 VALUES( newid(),'{0}','{1}','{2}','{3}',{4},{5},'0','{6}','{6}','{7}','{8}','0') ";

                        if (itemInfo.Amount == "")
                        {
                            itemInfo.Amount = "0";
                        }
                        sqlInfo = string.Format(sqlInfo, Pre, itemInfo.Sequence, itemInfo.SourceDetailID, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, item.User, item.MTime, itemInfo.WorkPoint);
                        cmd.CommandText = sqlInfo;
                        resultInfo = cmd.ExecuteNonQuery();//返回条数
                        cmd.Transaction.Commit();
                    }
                }
            }
            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();
            }
            return resultInfo.ToString();
        }

        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="infoModel"></param>
        /// <returns></returns>
        public int MOIssueDocNegativeApplyUpdate(List<ICSMOApplyNeg> infoModel)
        {
            List<ICSMOApplyNeg> model = new List<ICSMOApplyNeg>();
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int resultInfo = 0;
            int ApplyNeg = 0;
            string Pre;
            try
            {


                foreach (var item in infoModel)
                {
                    foreach (var itemInfo in item.detail)
                    {
                        //当id不为空的时候执行修改,当id为空的时候执行添加
                        sql = @"select * from ICSMOApplyNeg where id='{0}' and WorkPoint='{1}'";
                        sql = string.Format(sql, item.ID, itemInfo.WorkPoint);
                        cmd.CommandText = sql;
                        cmd.Transaction.Commit();
                        resultInfo = cmd.ExecuteNonQuery();
                        if (resultInfo > 0)
                        {
                            sql = @"update ICSMOApplyNeg  set WHCode='{0}',MUSER='{1}' ,MUSERName='{2}' where id='{3}' and WorkPoint='{4}'";
                            sql = string.Format(sql, item.WHCode, item.User, item.MTime, item.ID, itemInfo.WorkPoint);
                            cmd.CommandText = sql;
                            ApplyNeg = cmd.ExecuteNonQuery();
                            cmd.Transaction.Commit();
                            if (ApplyNeg > 0)
                            {
                                //修改子表

                                sqlInfo = @"update ICSMOApplyNegDetail set InvCode='{0}' Quantity={1} Amount={2} where id='{3}' and WorkPoint='{4}'";
                                if (itemInfo.Amount == "")
                                {
                                    itemInfo.Amount = "0";
                                }
                                sql = string.Format(sql, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.DetailID, itemInfo.WorkPoint);
                                cmd.CommandText = sql;
                                ApplyNeg = cmd.ExecuteNonQuery();
                                cmd.Transaction.Commit();

                            }
                        }
                        else
                        {
                            MOIssueDocNegativeApplyCreate(infoModel);
                        }
                    }
                }
                return ApplyNeg + resultInfo;
            }
            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();
            }

        }

        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="infoModel"></param>
        /// <returns></returns>
        public int MOIssueDocNegativeApplyDelete(List<ICSMOApplyNeg> infoModel)
        {
            List<ICSMOApplyNeg> model = new List<ICSMOApplyNeg>();
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int resultInfo = 0;
            try
            {
                foreach (var item in infoModel)
                {
                    foreach (var itemInfo in item.detail)
                    {
                        //删除子表
                        sql = @"delete ICSMOApplyNegDetail where ID='{0}' and WorkPoint='{1}'";
                        sql = string.Format(sql, itemInfo.DetailID, itemInfo.WorkPoint);

                        cmd.CommandText = sql;
                        cmd.Transaction.Commit();
                        resultInfo = cmd.ExecuteNonQuery();//返回条数
                        if (resultInfo <= 0)
                        {
                            throw new Exception("删除失败");
                        }
                        sqlInfo = @"delete  ICSMOApplyNeg where ID='{0}'and WorkPoint='{1}'";

                        sqlInfo = string.Format(sqlInfo, item.ID, itemInfo.WorkPoint);
                        cmd.CommandText = sqlInfo;
                        resultInfo = cmd.ExecuteNonQuery();//返回条数
                    }
                }

            }
            catch (Exception ex)
            {

                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
                conn.Dispose();
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
                conn.Dispose();
            }
            return resultInfo;
        }
        #endregion

        #region 采购到货单/拒收

        /// <summary>
        /// 到货单添加
        /// </summary>
        /// <param name="infoModel"></param>
        /// <returns></returns>
        public string DeliveryNoticeCreate(List<ICSDeliveryNotice> infoModel, string DNType)
        {

            DataTable dt = null;
            DataTable dtInfo = null;
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int num = 0;
            int numInfo = 0;
            string sqlDetail;
            string json;
            double numtable = 0;
            double numASN = 0;
            ///ERP
            string sqlERP = string.Empty;//ERP的表头
            string sqlERPDetil = string.Empty;//ERP的表体
            string jsonERP = string.Empty;///erpjson
            string IstrErp = string.Empty;
            string iresult = string.Empty;//接口调用

            string ASNCode = string.Empty;
            string WorkPoint = string.Empty;
            string Sequences = string.Empty;
            try
            {
                if (infoModel.Count <= 0)
                {
                    throw new Exception("传送数据为空!");
                }
                List<ICSDeliveryNotice> model = new List<ICSDeliveryNotice>();
                foreach (var item in infoModel)
                {
                    ASNCode = item.ASNCode;
                    WorkPoint = item.WorkPoint;
                    string Pre;
                    int i = 0;
                    Random Rdm = new Random();
                    int iRdm = Rdm.Next(0, 100);
                    if (DNType == "到货")
                    {
                        string Date = DateTime.Now.ToString("yy");
                        Pre = "DN" + item.VenCode + iRdm + Date;
                        if (!string.IsNullOrEmpty(item.ASNCode))
                        {
                            sql = @"select *  from ICSASN a inner join ICSASNDetail b on a.ASNCode=b.ASNCode where a.ASNCode='{0}' and a.Status='2' and a.WorkPoint='{1}'";
                            sql = string.Format(sql, item.ASNCode, item.WorkPoint);
                            table = DBHelper.SQlReturnData(sql, cmd);
                        }
                        else
                        {
                            throw new Exception("送货单号为空!");
                        }
                        #region 验证送货单数据是否存在

                        //是否送货单是否存在是否已经审核
                        if (table.Rows.Count <= 0)
                        {
                            throw new Exception("该送货单单没有审核或没有该单据请核对!");
                        }
                        #endregion
                        #region 验证送货单数据是否存在
                        //是否送货单是否存在是否已经审核
                        else
                        {
                            #region 修改子表的信息                      
                            foreach (var itemInfo in item.detail)
                            {

                                //WorkPoint = itemInfo.WorkPoint;
                                Sequences = itemInfo.Sequence;
                                ///修改送货单子表信息
                                sqlDetail = @" update ICSASNDetail set DNQuantity='{2}' where ASNCode='{0}' and WorkPoint='{1}' and LotNo='{3}'";
                                sqlDetail = string.Format(sqlDetail, item.ASNCode, item.WorkPoint, itemInfo.Quantity, itemInfo.LotNo);
                                //DBHelper.CmdExecuteNonQuery(sqlDetail, cmd, "成功");
                                cmd.CommandText = sqlDetail;
                                int numInfoL = cmd.ExecuteNonQuery();
                                #endregion
                                #region Add到货单
                                string sqlnum = @"select * from ICSDeliveryNotice where  WorkPoint='{0}' and ASNCode='{1}' and DNType='1' ";
                                sqlnum = string.Format(sqlnum, item.WorkPoint, item.ASNCode);
                                DataTable data = DBHelper.SQlReturnData(sqlnum, cmd);
                                if (data.Rows.Count > 0)
                                {
                                    throw new Exception("已到货,不能重复到货!");
                                }
                                else
                                {
                                    string sqlasn = @"select isnull(Quantity,0) as Quantity  from ICSASN a inner join ICSASNDetail b on a.ASNCode=b.ASNCode where b.LotNo='{0}' and a.Status='2' and a.WorkPoint='{1}'";
                                    sqlasn = string.Format(sqlasn, itemInfo.LotNo, item.WorkPoint);
                                    DataTable dasn = DBHelper.SQlReturnData(sqlasn, cmd);
                                    numASN = Convert.ToDouble(dasn.Rows[0][0]);
                                    if (Convert.ToDouble(itemInfo.Quantity) > numASN)
                                    {
                                        throw new Exception("到货数量大于送货数量,请查看数量!");
                                    }
                                }
                            }
                            //添加到到货单新数据
                            sqlInfo = @"INSERT INTO [ICSDeliveryNotice]
                                                       ([ID]
                                                       ,[DNCode]
                                                       ,[Sequence]
                                                       ,[VenCode]
                                                       ,[DepCode]
                                                       ,[DNType]
                                                       ,[InvCode]
                                                       ,[Quantity]
                                                       ,[Amount]
                                                       ,[RCVQuantity]
                                                       ,[UnitPrice]
                                                       ,[Currency]
                                                       ,[Status]
                                                       ,[CreatePerson]
                                                       ,[CreateDateTime]
                                                       ,[POID]
                                                       ,[PODetailID]
                                                       ,[DNID]
                                                       ,[DNDetailID]
                                                       ,[ExtensionID]
                                                       ,[MUSER]
                                                       ,[MUSERName]
                                                       ,[MTIME]
                                                       ,[WorkPoint]
                                                       ,[EATTRIBUTE1]
                                                       ,[ASNCode])
                                                (SELECT NEWID(),'{0}',row_number() OVER (ORDER BY b.InvCode),d.VenCode,d.DepCode,'1',b.InvCode,SUM(a.DNQuantity),'0','0',d.UnitPrice,d.Currency,'2'
                                                ,'{1}',GETDATE(),d.POID,d.PODetailID,'0','0',b.ExtensionID,'{1}',e.F_RealName,GETDATE(),'{2}','',a.ASNCode
                                                FROM ICSASNDetail a
                                                INNER JOIN ICSInventoryLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                                INNER JOIN ICSInventoryLotDetail c ON b.LotNo=c.LotNo AND b.WorkPoint=c.WorkPoint
                                                INNER JOIN ICSPurchaseOrder d ON c.TransCode=d.POCode AND c.TransSequence=d.Sequence AND c.WorkPoint=d.WorkPoint
                                                INNER JOIN Sys_SRM_User e ON e.F_Account='{1}' AND e.F_Location='{2}'
                                                WHERE a.ASNCode='{3}' AND a.WorkPoint='{2}'
                                                GROUP BY d.POID,d.PODetailID,d.VenCode,d.UnitPrice,d.Currency,d.DepCode,b.ExtensionID,b.InvCode,a.ASNCode,e.F_RealName)";

                            sqlInfo = string.Format(sqlInfo, Pre, item.User, item.WorkPoint, item.ASNCode);
                            cmd.CommandText = sqlInfo;
                            num = cmd.ExecuteNonQuery();
                            #endregion
                        }

                        #endregion


                    }
                    else
                    {
                        ///拒收
                        Random RdmInfo = new Random();
                        int iRdmInfo = Rdm.Next(0, 100);
                        string Date = DateTime.Now.ToString("yy");
                        Pre = "RJT" + item.VenCode + iRdmInfo + Date;
                        if (!string.IsNullOrEmpty(item.DNCode))
                        {
                            sql = @"select count(DNCode)  from ICSDeliveryNotice where DNCode='{0}' and Status='2' and DNType='1' and WorkPoint='{1}'";
                            sql = string.Format(sql, item.DNCode, item.WorkPoint);
                            table = DBHelper.SQlReturnData(sql, cmd);
                        }
                        else
                        {
                            throw new Exception("送货单号为空!");
                        }
                        #region 验证送货单数据是否存在

                        //是否送货单是否存在是否已经审核
                        if (table.Rows.Count > 0)
                        {
                            #region Add拒收单
                            foreach (var itemInfo in item.detail)
                            {


                                int Sequence = i++;
                                //添加拒收新数据
                                sqlInfo = @" IF EXISTS(
                             select EATTRIBUTE1 from ICSDeliveryNotice
                              where EATTRIBUTE1 = '{14}' and DNType = '3' and WorkPoint = '{13}')
                                             RAISERROR('条码:{14},该条码已拒收!', 16, 1)
                                            INSERT INTO [ICSDeliveryNotice]
                                           ([ID]
                                           ,[DNCode]
                                           ,[Sequence]
                                           ,[VenCode]
                                           ,[DepCode]
                                           ,[DNType]
                                           ,[InvCode]
                                           ,[Quantity]
                                           ,[Amount]
                                           ,[RCVQuantity]
                                           ,[UnitPrice]
                                           ,[Currency]
                                           ,[Status]
                                           ,[CreatePerson]
                                           ,[CreateDateTime]
                                           ,[POID]
                                           ,[PODetailID]
                                           ,[DNID]
                                           ,[DNDetailID]
                                           ,[ExtensionID]
                                           ,[MUSER]
                                           ,[MUSERName]
                                           ,[MTIME]
                                           ,[WorkPoint]
                                           ,[EATTRIBUTE1]
                                           ,[ASNCode])
						                   select newid(),'{0}', '{1}', '{2}',  '{3}', '3',  '{4}',  '{5}', '{6}', 0, '{7}', '{8}' ,  '2', '{9}',  '{10}', '{11}',  '{12}',  '0','0', b.ExtensionID, '{9}',a.F_RealName, '{10}', '{13}',  '{14} ',' '
						                   from  Sys_SRM_User a
                                            left join ICSDeliveryNotice b on b.DNCode='{15}'and b.DNType=1
                                            where F_Account='{9}' and F_Location='{13}'  ";
                                if (itemInfo.Amount == "")
                                {
                                    int numInfoList = 0;
                                    sqlInfo = string.Format(sqlInfo, Pre, Sequence, item.VenCode, item.DepCode, itemInfo.InvCode, itemInfo.Quantity, numInfoList, itemInfo.UnitPrice, itemInfo.Currency, item.User, DateTime.Now, item.ID, itemInfo.DNDetailID, itemInfo.WorkPoint, itemInfo.LotNo, item.DNCode);
                                    cmd.CommandText = sqlInfo;
                                }

                                // DBHelper.CmdExecuteNonQuery(sqlInfo, cmd, "成功");

                                num = cmd.ExecuteNonQuery();

                            }
                            #endregion
                        }
                        else
                        {
                            throw new Exception("该送货单单没有审核或没有该单据请核对!");
                        }
                        #endregion
                    }
                }
                if (num > 0)
                {
                    string numm = "成功";
                    #region ERP                                    
                    sqlERP = @"select VenCode,DepCode,POID,MUSER,(getdate())as Mtime from ICSDeliveryNotice  
                                                        where ASNCode='{0}' and  WorkPoint='{1}' ";
                    sqlERP = string.Format(sqlERP, ASNCode, WorkPoint);
                    table = DBHelper.SQlReturnData(sqlERP, cmd);

                    sqlERPDetil = @"select Sequence,InvCode,Quantity,Amount,UnitPrice,Currency,PODetailID, cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from ICSDeliveryNotice A 
                            LEFT JOIN ICSExtension B ON A.ASNCode=B.ID  where A.ASNCode='{0}' and  A.WorkPoint='{1}' ";
                    sqlERPDetil = string.Format(sqlERPDetil, ASNCode, WorkPoint);
                    DataTable ERPtable = DBHelper.SQlReturnData(sqlERPDetil, cmd);

                    List<ERPDeliveryNotice> docmodel = new List<ERPDeliveryNotice>();
                    foreach (DataRow dtIn in table.Rows)
                    {
                        ERPDeliveryNotice doc = new ERPDeliveryNotice();
                        doc.VenCode = dtIn["VenCode"].ToString();
                        doc.DepCode = dtIn["DepCode"].ToString();
                        doc.POCode = dtIn["POID"].ToString();
                        doc.User = dtIn["MUSER"].ToString();
                        doc.MTime = dtIn["Mtime"].ToString();
                        List<ERPDeliveryNoticeList> list = new List<ERPDeliveryNoticeList>();
                        foreach (DataRow dtList in ERPtable.Rows)
                        {
                            ERPDeliveryNoticeList docc = new ERPDeliveryNoticeList();
                            docc.Sequence = dtList["Sequence"].ToString();
                            docc.InvCode = dtList["InvCode"].ToString();
                            docc.Quantity = dtList["Quantity"].ToString();
                            docc.Amount = dtList["Amount"].ToString();
                            docc.Currency = dtList["Currency"].ToString();
                            docc.UnitPrice = dtList["UnitPrice"].ToString();
                            docc.PODetailID = dtList["PODetailID"].ToString();

                            docc.cFree1 = dtList["cFree1"].ToString();
                            docc.cFree2 = dtList["cFree2"].ToString();
                            docc.cFree3 = dtList["cFree3"].ToString();
                            docc.cFree4 = dtList["cFree4"].ToString();
                            docc.cFree5 = dtList["cFree5"].ToString();
                            docc.cFree6 = dtList["cFree6"].ToString();
                            docc.cFree7 = dtList["cFree7"].ToString();
                            docc.cFree8 = dtList["cFree8"].ToString();
                            docc.cFree9 = dtList["cFree9"].ToString();
                            docc.cFree10 = dtList["cFree10"].ToString();
                            list.Add(docc);
                        }

                        doc.details = list;
                        docmodel.Add(doc);
                    }
                    IstrErp = JsonConvert.SerializeObject(docmodel);
                    iresult = HttpPost("采购到货", ERPUrl.CreatePOArrivURL, IstrErp);
                    Result OtherOutResult = new Result();
                    OtherOutResult = JsonConvert.DeserializeObject<Result>(iresult);

                    if (OtherOutResult.Success == false)
                    {
                        throw new Exception(OtherOutResult.Message);
                    }
                    else
                    {
                        List<ERPJsonRetun> list = new List<ERPJsonRetun>();
                        //string nn = OtherOutResult.Data.ToString();//LOTStockModel
                        list = JsonConvert.DeserializeObject<List<ERPJsonRetun>>(OtherOutResult.Data.ToString());
                        foreach (var items in list)
                        {
                            string ERPupdate = @"update ICSDeliveryNotice set DNCode='{0}',Sequence='{1}',DNID='{2}',DNDetailID='{3}',DNType='1'
                                        where ASNCode='{4}' and  Sequence ='{5}'";
                            ERPupdate = string.Format(ERPupdate, items.DNCode, items.Sequence, items.ID, items.DetailID, ASNCode, Sequences);
                            cmd.CommandText = ERPupdate;
                            num = cmd.ExecuteNonQuery();
                        }


                    }
                    #endregion
                    cmd.Transaction.Commit();
                    //提交成功之后传ERP

                    return numm;
                }
                else
                {
                    cmd.Transaction.Rollback();
                }
                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();
            }

        }

        /// <summary>
        /// 到货单查询
        /// </summary>
        /// <param name="infoModel"></param>
        /// <returns></returns>
        public string DeliveryNoticeGet(List<ICSDeliveryNotice> infoModel, string DNType)
        {

            DataTable dt = null;
            DataTable dtInfo = null;
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int num = 0;
            int numInfo = 0;
            string sqlDetail;
            string json;

            try
            {
                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

        #region 委外到货/拒收
        public string DeliveryNoticeODNCreate(List<ICSDeliveryNotice> infoModel, string DNType)
        {
            Random Rdm = new Random();
            int iRdm = Rdm.Next(0, 100);
            DataTable dt = null;
            DataTable dtInfo = null;
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int num = 0;
            int numInfo = 0;
            string sqlDetail;
            string json;
            string TYPE;

            try
            {
                if (infoModel.Count <= 0)
                {
                    throw new Exception("传送数据为空!");
                }
                List<ICSDeliveryNotice> model = new List<ICSDeliveryNotice>();
                int i = 1;
                foreach (var item in infoModel)
                {
                    string Pre;
                    if (DNType == "到货")
                    {
                        string Date = DateTime.Now.ToString("yy");
                        Pre = "ODN" + item.VenCode + iRdm + Date;
                        TYPE = "1";



                        #region 验证送货单数据是否存在
                        if (!string.IsNullOrEmpty(item.ASNCode))
                        {
                            sql = @"select *  from ICSOASN where OASNCode='{0}' and Status='2' and WorkPoint='{1}'";
                            sql = string.Format(sql, item.ASNCode, item.WorkPoint);
                            table = DBHelper.SQlReturnData(sql, cmd);
                        }
                        else
                        {
                            return json = "委外送货单号为空!";
                        }
                        // 是否送货单是否存在是否已经审核
                        if (table.Rows.Count <= 0)
                        {
                            return json = "该送货单单没有审核或没有该单据请核对!";
                        }
                        #endregion
                        #region Add到货单
                        foreach (var itemInfo in item.detail)
                        {
                            //添加到到货单新数据
                            sqlInfo = @"INSERT INTO [ICSODeliveryNotice]
                          ([ID]
                           ,[ODNCode]
                           ,[Sequence]
                           ,[VenCode]
                           ,[DepCode]
                           ,[ODNType]
                           ,[InvCode]
                           ,[Quantity]
                           ,[Amount]
                           ,[RCVQuantity]
                           ,[UnitPrice]
                           ,[Currency]
                           ,[Status]
                           ,[CreatePerson]
                           ,[CreateDateTime]
                           ,[POID]
                           ,[PODetailID]
                           ,[ODNID]
                           ,[ODNDetailID]
                           ,[ExtensionID]
                           ,[MUSER]
                           ,[MUSERName]
                           ,[MTIME]
                           ,[WorkPoint]
                           ,[EATTRIBUTE1]
                           )
                    (SELECT NEWID(),'{0}',row_number() OVER (ORDER BY b.InvCode),d.VenCode,d.DepCode,'1',b.InvCode,SUM(a.ODNQuantity),'0','0',d.UnitPrice,d.Currency,'2'
                                                ,'{1}',GETDATE(),d.POID,d.PODetailID,newid(),newid(),b.ExtensionID,'{1}',e.F_RealName,GETDATE(),'{2}','',a.OASNCode
                                                FROM ICSOASNDetail a
                                                INNER JOIN ICSInventoryLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                                INNER JOIN ICSInventoryLotDetail c ON b.LotNo=c.LotNo AND b.WorkPoint=c.WorkPoint
                                                INNER JOIN ICSPurchaseOrder d ON c.TransCode=d.POCode AND c.TransSequence=d.Sequence AND c.WorkPoint=d.WorkPoint
                                                INNER JOIN Sys_SRM_User e ON e.F_Account='{1}' AND e.F_Location='{2}'
                                                WHERE a.OASNCode='{3}' AND a.WorkPoint='{2}'
                                                GROUP BY d.POID,d.PODetailID,d.VenCode,d.UnitPrice,d.Currency,d.DepCode,b.ExtensionID,b.InvCode,a.OASNCode,e.F_RealName)";
                            if (itemInfo.RCVQuantity == null)
                            {
                                int VQuantity = 0;
                                int Price = 0;
                                sqlInfo = string.Format(sqlInfo, Pre, item.User, item.WorkPoint, item.OASNCode);
                                //sqlInfo = string.Format(sqlInfo, Pre, itemInfo.Sequence, item.VenCode, item.DepCode, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, VQuantity, Price, itemInfo.Currency, item.User, item.MTime, itemInfo.PODetailID, itemInfo.LotNo, item.WorkPoint, TYPE);
                                cmd.CommandText = sqlInfo;
                            }
                            else
                            {
                                sqlInfo = string.Format(sqlInfo, Pre, itemInfo.Sequence, item.VenCode, item.DepCode, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.RCVQuantity, itemInfo.UnitPrice, itemInfo.Currency, item.User, item.MTime, itemInfo.PODetailID, itemInfo.LotNo, item.WorkPoint, TYPE);
                                cmd.CommandText = sqlInfo;
                            }

                        }
                        num = cmd.ExecuteNonQuery();//返回条数
                        #endregion
                        if (num <= 0)
                        {
                            return json = "添加失败";
                        }
                        else
                        {
                            #region 修改子表的信息                      
                            foreach (var itemInfo in item.detail)
                            {
                                ///修改送货单子表信息
                                sqlDetail = @"
update ICSASNDetail set DNQuantity=((select SUM(DNQuantity) from ICSASNDetail where LotNo='{0}' and WorkPoint='{1}') +(select SUM(Quantity) from ICSDeliveryNotice where DNCode='{2}' and  DNType='2' and WorkPoint='{1}' ))
 where LotNo='{0}' and WorkPoint='{1}'";
                                sqlDetail = string.Format(sqlDetail, itemInfo.LotNo, item.WorkPoint, Pre);
                                cmd.CommandText = sqlDetail;
                                numInfo = cmd.ExecuteNonQuery();//返回条数
                            }
                            if (numInfo <= 0)
                            {
                                return json = "修改送货单失败";
                            }
                            #endregion

                        }
                    }
                    else
                    {
                        ///拒收
                        Random RdmInfo = new Random();
                        int iRdmInfo = Rdm.Next(0, 100);
                        string Date = DateTime.Now.ToString("yy");
                        Pre = "ORJT" + item.VenCode + iRdm + Date;

                        if (!string.IsNullOrEmpty(item.ODNCode))
                        {
                            sql = @"select count(ODNCode)  from ICSODeliveryNotice where ODNCode='{0}' and Status='2' and ODNType='1' and WorkPoint='{1}'";
                            sql = string.Format(sql, item.ODNCode, item.WorkPoint);
                            table = DBHelper.SQlReturnData(sql, cmd);
                        }
                        else
                        {
                            throw new Exception("到货单不存在!");
                        }
                        #region 验证送货单数据是否存在

                        //是否送货单是否存在是否已经审核
                        if (table.Rows.Count > 0)
                        {
                            #region Add拒收单
                            foreach (var itemInfo in item.detail)
                            {

                                int Sequence = i++;
                                //添加拒收新数据
                                sqlInfo = @"IF EXISTS(
                             select EATTRIBUTE1 from ICSODeliveryNotice
                              where EATTRIBUTE1 = '{14}' and ODNType = '3' and WorkPoint = '{13}')
                                             RAISERROR('条码:{14},该条码已拒收!', 16, 1)
                                           INSERT INTO [ICSODeliveryNotice]
                                           ([ID]
                                           ,[ODNCode]
                                           ,[Sequence]
                                           ,[VenCode]
                                           ,[DepCode]
                                           ,[ODNType]
                                           ,[InvCode]
                                           ,[Quantity]
                                           ,[Amount]
                                           ,[RCVQuantity]
                                           ,[UnitPrice]
                                           ,[Currency]
                                           ,[Status]
                                           ,[CreatePerson]
                                           ,[CreateDateTime]
                                           ,[POID]
                                           ,[PODetailID]
                                           ,[ODNID]
                                           ,[ODNDetailID]
                                           ,[ExtensionID]
                                           ,[MUSER]
                                           ,[MUSERName]
                                           ,[MTIME]
                                           ,[WorkPoint]
                                           ,[EATTRIBUTE1]
                                           ,[OASNCode])
						                   select newid(),'{0}', '{1}', '{2}',  '{3}', '3',  '{4}',  '{5}', '{6}', 0, '{7}', '{8}' ,  '2', '{9}',  '{10}', '{11}',  '{12}',  '0', '0', a.ExtensionID, '{9}',c.F_RealName, '{10}', '{13}',  '{14} ',' '
						                    from  ICSODeliveryNotice a
                                            left join ICSOASNDetail b on a.OASNCode=b.OASNCode
                                            LEFT JOIN Sys_SRM_User c ON  c.F_Account='{9}' and c.F_Location='{13}'
                                            where a.odncode='{15}' and B.LOTNO='{14}' ";
                                if (itemInfo.Amount == "")
                                {
                                    int numInfoList = 0;
                                    sqlInfo = string.Format(sqlInfo, Pre, Sequence, item.VenCode, item.DepCode, itemInfo.InvCode, itemInfo.Quantity, numInfoList, itemInfo.UnitPrice, itemInfo.Currency, item.User, DateTime.Now, item.ID, itemInfo.ODNDetailID, itemInfo.WorkPoint, itemInfo.LotNo, item.ODNCode);
                                    cmd.CommandText = sqlInfo;
                                }

                                // DBHelper.CmdExecuteNonQuery(sqlInfo, cmd, "成功");

                                num = cmd.ExecuteNonQuery();

                            }
                            #endregion
                        }
                        else
                        {
                            throw new Exception("该送货单单没有审核或没有该单据请核对!");
                        }
                        #endregion
                    }
                }

                if (num > 0)
                {
                    cmd.Transaction.Commit();

                }
                else
                {
                    cmd.Transaction.Rollback();
                }
                return num.ToString();
            }
            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

        #region 仓库/库位
        /// <summary>
        /// 仓库/库位
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public List<ICSLocation> LocationGet(ICSLocation JsonData)
        {
            List<ICSLocation> model = new List<ICSLocation>();
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            try
            {

                sqlInfo = @"SELECT 
                        LocationCode,
                        LocationName ,
                        WarehouseCode,
                        WarehouseName
                        FROM ICSLocation a
                         left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint where LocationCode='{0}' and b.Enable='0'";
                sqlInfo = string.Format(sqlInfo, JsonData.LocationCode);
                table = DBHelper.SQlReturnData(sqlInfo, cmd);
                if (table.Rows.Count > 0)
                {
                    throw new Exception("仓库不存在!");
                }
                else
                {
                    sql = @"SELECT 
                        LocationCode,
                        LocationName ,
                        WarehouseCode,
                        WarehouseName
                        FROM ICSLocation a
                         left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint where LocationCode='{0}' and b.Enable='1'";
                    sql = string.Format(sql, JsonData.LocationCode);
                    table = DBHelper.SQlReturnData(sql, cmd);
                    if (table.Rows.Count <= 0)
                    {
                        throw new Exception("仓库未启用,请先启用仓库!");
                    }
                    string json = JsonConvert.SerializeObject(table);
                    model = JsonConvert.DeserializeObject<List<ICSLocation>>(json);//<List<WMSSourceDocumentModel>>
                    cmd.Transaction.Commit();
                    return model;
                }
            }
            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

        #region 委外退料 /OutsourcingIssueDoNegativeApply
        public ICSOApplyNegModel OutsourcingIssueDoNegativeApplyGet(ICSOApplyNeg JsonData)
        {
            List<ICSOApplyNegModel> deliveryNotrModel = new List<ICSOApplyNegModel>();
            ICSOApplyNegModel model = new ICSOApplyNegModel();
            DataTable dt = null;
            DataTable dtInfo = null;

            SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            try
            {
                string sql = string.Empty;
                string sqlInfo = string.Empty;

                //foreach (var item in deliveryNotrModel)
                //{
                sql = @"select
                        a.ID as ID,
                        a.OApplyNegCode as OApplyNegCode,
                        a.WHCode as WHCode,
                        c.WarehouseName as WHName,
                        a.MUSER as MUSER,
                        a.MTIME as MTime
                        from ICSOApplyNeg a
                        left join ICSWarehouse c on  c.WarehouseCode=a.WHCode and a.WorkPoint=b.WorkPoint
                        where 1=1";
                if (!string.IsNullOrWhiteSpace(JsonData.OApplyNegCode))
                {
                    sql += " and a.OApplyNegCode='{0}'";
                }
                if (!string.IsNullOrWhiteSpace(JsonData.User))
                {
                    sql += " and a.MUSER='{1}'";
                }
                if (!string.IsNullOrWhiteSpace(JsonData.MTime))
                {
                    sql += " and a.MTIME='{2}'";
                }
                sql = string.Format(sql, JsonData.OApplyNegCode, JsonData.User, JsonData.MTime);
                sqlInfo = @"select
                            ID as DetailID,
                            Sequence as Sequence ,
                            InvCode as InvCode,
                            Quantity as Quantity,
                            Amount as Amount,
                            SourceDetailID as SourceDetailID
                            from ICSOApplyNegDetail 
                            where OApplyNegCode=(select OApplyNegCode from ICSOApplyNeg where OApplyNegCode='{0}' and WorkPoint='{1}')";

                sqlInfo = string.Format(sqlInfo, JsonData.OApplyNegCode, JsonData.WorkPoint);
                //}
                dt = DBHelper.SQlReturnData(sql, cmd);
                dtInfo = DBHelper.SQlReturnData(sqlInfo, cmd);
                string json = JsonConvert.SerializeObject(dt);
                string jsonInfo = JsonConvert.SerializeObject(dtInfo);
                string jsonlist = null;
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        ICSOApplyNegModel main = new ICSOApplyNegModel();
                        main.ID = dr["ID"].ToString();
                        main.OApplyNegCode = dr["OApplyNegCode"].ToString();
                        main.WHCode = dr["WHCode"].ToString();
                        main.WHName = dr["WHName"].ToString();
                        main.User = dr["MUSER"].ToString();
                        main.MTime = dr["MTime"].ToString();
                        List<ICSOApplyNegModelInfo> list = new List<ICSOApplyNegModelInfo>();
                        foreach (DataRow info in dtInfo.Rows)
                        {
                            ICSOApplyNegModelInfo detail = new ICSOApplyNegModelInfo();
                            detail.DetailID = info["DetailID"].ToString();
                            detail.Sequence = info["Sequence"].ToString();
                            detail.InvCode = info["InvCode"].ToString();
                            detail.Quantity = info["Quantity"].ToString();
                            detail.Amount = info["Amount"].ToString();
                            detail.SourceDetailID = info["SourceDetailID"].ToString();
                            list.Add(detail);
                        }
                        main.detail = list;
                        jsonlist = JsonConvert.SerializeObject(main);
                    }
                    var deliveryNotrModelInfo = JsonConvert.DeserializeObject<ICSOApplyNegModel>(jsonlist);
                    cmd.Transaction.Commit();
                    return deliveryNotrModelInfo;
                }
                else
                {
                    throw new Exception("数据为空");
                }

            }
            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();
            }


        }


        /// <summary>
        /// 委外退料 新建
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public int OutsourcingIssueDoNegativeApplyCreate(List<ICSOApplyNeg> JsonData)
        {
            Random Rdm = new Random();
            int iRdm = Rdm.Next(0, 100);
            List<ICSOApplyNegModel> deliveryNotrModel = new List<ICSOApplyNegModel>();
            ICSOApplyNegModel model = new ICSOApplyNegModel();
            SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int num = 0;
            int numInfo = 0;
            try
            {
                string sql = string.Empty;
                string sqlInfo = string.Empty;
                string Pre = "";

                foreach (var item in JsonData)
                {
                    foreach (var itemInfo in item.detail)
                    {
                        //主表新建数据
                        string Date = DateTime.Now.ToString("yy");
                        Pre = "OOISSUENEGAPPLY" + item.WHCode + iRdm + Date;//新的委外退料申请号

                        sql = @"INSERT INTO ICSOApplyNeg
                       ([ID]
                       ,[OApplyNegCode]
                       ,[WHCode]
                       ,[Status]
                       ,[Type]
                       ,[Memo]
                       ,[CreatePerson]
                       ,[CreateDateTime]
                       ,[MUSER]
                       ,[MUSERName]
                       ,[MTIME]
                       ,[WorkPoint]
                       ,[EATTRIBUTE1])
                         VALUES
                          (newid(),'{0}','{1}','开立','委外',' ','{2}','{3}','{2}','{2}','{3}','{4}',' ')";
                        sql = string.Format(sql, Pre, item.WHCode, item.User, item.MTime, itemInfo.WorkPoint);
                        cmd.CommandText = sql;
                        //cmd.Transaction.Commit();
                        num = cmd.ExecuteNonQuery();//返回条数

                        sqlInfo = @"INSERT INTO [ICSOApplyNegDetail]
                                   ([ID]
                                   ,[OApplyNegCode]
                                   ,[Sequence]
                                   ,[SourceDetailID]
                                   ,[InvCode]
                                   ,[Quantity]
                                   ,[Amount]
                                   ,[IssueNegQuantity]
                                   ,[ExtensionID]
                                   ,[MUSER]
                                   ,[MUSERName]
                                   ,[MTIME]
                                   ,[WorkPoint]
                                   ,[EATTRIBUTE])
                                  VALUES
                                   (newid(),'{0}'
                                   ,'{1}','{2}','{3}',{4},{5},0,'','{6}','{6}','{7}','{8}','')";
                        sqlInfo = string.Format(sqlInfo, Pre, itemInfo.Sequence, itemInfo.SourceDetailID, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, item.User, item.MTime, itemInfo.WorkPoint);
                        cmd.CommandText = sqlInfo;
                        //cmd.Transaction.Commit();
                        numInfo = cmd.ExecuteNonQuery();//返回条数
                    }
                    cmd.Transaction.Commit();

                }
                if (num > 0 && numInfo > 0)
                {
                    return num + numInfo;
                }
                return num;
            }
            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();
            }


        }


        /// <summary>
        /// 委外退料 修改
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public int OutsourcingIssueDoNegativeApplyUpdate(List<ICSOApplyNeg> JsonData)
        {
            List<ICSOApplyNegModel> deliveryNotrModel = new List<ICSOApplyNegModel>();
            ICSOApplyNegModel model = new ICSOApplyNegModel();
            SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int num = 0;
            int numInfo = 0;
            try
            {
                string sql = string.Empty;
                string sqlInfo = string.Empty;
                string Pre = "";
                foreach (var item in JsonData)
                {

                    //主表修改
                    sql = @"update ICSOApplyNeg set WHCode='{0}' ,MUSER='{1}',MTIME='{2}'where ID='{3}' and WorkPoint='{4}' ";
                    sql = string.Format(sql, item.WHCode, item.User, item.MTime, item.id, item.WorkPoint);
                    cmd.CommandText = sql;
                    cmd.Transaction.Commit();
                    num = cmd.ExecuteNonQuery();
                    foreach (var itemInfo in item.detail)
                    {
                        sql = @"update ICSOApplyNegDetail set InvCode='{0}' ,Quantity='{1}',Amount='{2}' where ID='{3}'and SourceDetailID='{4}' and WorkPoint='{5}'";
                        sql = string.Format(sql, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.DetailID, itemInfo.SourceDetailID, itemInfo.WorkPoint);
                        cmd.CommandText = sql;
                        //cmd.Transaction.Commit();
                        numInfo = cmd.ExecuteNonQuery();
                    }

                }
                if (num > 0 && numInfo > 0)
                {
                    return numInfo + num;
                }
                return num + numInfo;
            }
            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();
            }


        }


        /// <summary>
        /// 委外退料 删除
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public int OutsourcingIssueDoNegativeApplyDelete(List<ICSOApplyNeg> JsonData)
        {
            List<ICSOApplyNegModel> deliveryNotrModel = new List<ICSOApplyNegModel>();
            ICSOApplyNegModel model = new ICSOApplyNegModel();
            SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int num = 0;
            int numInfo = 0;
            try
            {
                string sql = string.Empty;
                string sqlInfo = string.Empty;
                string Pre = "";
                foreach (var item in JsonData)
                {

                    foreach (var itemInfo in item.detail)
                    {
                        sqlInfo = @"DELETE FROM ICSOApplyNegDetail   where ID='{0}'  and WorkPoint='{1}' ";
                        sqlInfo = string.Format(sqlInfo, itemInfo.DetailID, itemInfo.WorkPoint);
                        cmd.CommandText = sqlInfo;
                        cmd.Transaction.Commit();
                        numInfo = cmd.ExecuteNonQuery();
                    }
                    if (numInfo > 0)
                    {
                        //主表删除
                        sql = @"DELETE FROM [ICSOApplyNeg] where ID='{0}' and WorkPoint='{3}'";
                        if (!string.IsNullOrEmpty(item.User))
                        {
                            sql = "and MUSER = '{1}' ";
                        }
                        if (!string.IsNullOrEmpty(item.MTime))
                        {
                            sql = " and MTIME = '{2}'";
                        }
                        sql = string.Format(sql, item.id, item.User, item.MTime, item.WorkPoint);
                        cmd.CommandText = sql;
                        //  cmd.Transaction.Commit();
                        num = cmd.ExecuteNonQuery();
                    }
                }
                if (num > 0 && numInfo > 0)
                {
                    return numInfo + num;
                }
                return num + numInfo;
            }
            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

        #region 库存盘点单
        public object CheckGet(ICSCheck JsonData)
        {
            List<ICSCheck> deliveryNotrModel = new List<ICSCheck>();
            ICSCheck model = new ICSCheck();
            DataTable dt = null;
            DataTable dtInfo = null;

            SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            try
            {
                string sql = string.Empty;
                string sqlInfo = string.Empty;
                string sqlList = string.Empty;
                //foreach (var item in JsonData)
                //{

                sqlList = @" select * from ICSCheck where CheckCode='{0}' and WorkPoint='{1}'";
                sql = string.Format(sqlList, JsonData.CheckCode, JsonData.WorkPoint);
                dt = DBHelper.SQlReturnData(sql, cmd);
                if (dt.Rows.Count > 0)
                {
                    sql = @"select
                                 a.ID as ID,
                                 a.CheckCode as CheckCode,
                                 a.WHCode as WHCode,
                                 b.WarehouseName as WHName,
                                 a.InvCode as InvCode,
                                 a.Quantity as Quantity,
                                 a.ActualQuantity as ActualQuantity,
                                 a.MUSER as MUSER,
                                 a.MTIME as MTime
                                 from ICSCheck a
                                 left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
                                  where 1=1 and Status='2'";
                    if (!string.IsNullOrWhiteSpace(JsonData.CheckCode))
                    {
                        sql += "and  a.CheckCode='{0}'";
                    }
                    if (!string.IsNullOrWhiteSpace(JsonData.User))
                    {
                        sql += " and a.MUSER='{1}'";
                    }
                    if (!string.IsNullOrWhiteSpace(JsonData.MTime))
                    {
                        sql += " and a.MTIME='{2}'";
                    }
                    sql = string.Format(sql, JsonData.CheckCode, JsonData.User, JsonData.MTime);


                    sqlInfo = @" select 
                             a.ID as DetailID ,
                             c.TransSequence as Sequence,
                             a.LotNo as LotNo,
                             a.Quantity as LotQuantity,
                             a.ActualQuantity as LotActualQuantity
                             from ICSCheckDetail a
                             left join ICSCheck b on a.CheckCode=b.CheckCode and a.WorkPoint=b.WorkPoint
                             left join ICSInventoryLotDetail c on a.LotNo=c.LotNo and  c.WorkPoint=a.WorkPoint
                             where 1=1 and a.CheckCode='{0}' ";

                    sqlInfo = string.Format(sqlInfo, JsonData.CheckCode);
                    //}
                    dt = DBHelper.SQlReturnData(sql, cmd);
                    dtInfo = DBHelper.SQlReturnData(sqlInfo, cmd);
                    //string json = JsonConvert.SerializeObject(dt);
                    //string jsonInfo = JsonConvert.SerializeObject(dtInfo);
                    string jsonlist = null;
                    if (dt.Rows.Count > 0)
                    {
                        foreach (DataRow dr in dt.Rows)
                        {
                            ICSCheckInfo main = new ICSCheckInfo();
                            main.ID = dr["ID"].ToString();
                            main.CheckCode = dr["CheckCode"].ToString();
                            main.WHCode = dr["WHCode"].ToString();
                            main.WHName = dr["WHName"].ToString();
                            main.InvCode = dr["InvCode"].ToString();
                            main.Quantity = dr["Quantity"].ToString();
                            main.ActualQuantity = dr["ActualQuantity"].ToString();
                            main.User = dr["MUSER"].ToString();
                            main.MTime = dr["MTime"].ToString();
                            List<ICSCheckInfoModel> list = new List<ICSCheckInfoModel>();
                            foreach (DataRow info in dtInfo.Rows)
                            {
                                ICSCheckInfoModel detail = new ICSCheckInfoModel();
                                detail.DetailID = info["DetailID"].ToString();
                                detail.Sequence = info["Sequence"].ToString();
                                detail.LotNo = info["LotNo"].ToString();
                                detail.LotQuantity = info["LotQuantity"].ToString();
                                detail.LotActualQuantity = info["LotActualQuantity"].ToString();
                                //detail.SourceDetailID = info["SourceDetailID"].ToString();
                                list.Add(detail);
                            }
                            main.detail = list;
                            jsonlist = JsonConvert.SerializeObject(main);
                        }
                        var deliveryNotrModelInfo = JsonConvert.DeserializeObject(jsonlist);
                        cmd.Transaction.Commit();
                        return deliveryNotrModelInfo;
                    }
                    else
                    {
                        throw new Exception("数据未审核,请先审核");
                    }
                }
                else
                {
                    throw new Exception("单据不存在");
                }


            }
            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();
            }


        }


        /// <summary>
        /// 库存盘点
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public object CheckCreate(List<ICSCheck> JsonData, string type)
        {
            List<ICSCheck> deliveryNotrModel = new List<ICSCheck>();
            List<ICSCheckInfo> iCs = new List<ICSCheckInfo>();

            ICSCheck model = new ICSCheck();
            SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            DataTable dt;
            int num = 0;
            Random Rdm = new Random();
            int iRdm = Rdm.Next(0, 100);
            try
            {
                string Pre = "";
                string sql = string.Empty;
                string sqlInfo = string.Empty;
                foreach (var item in JsonData)
                {
                    foreach (var itemInfo in item.detail)
                    {
                        if (type == "库存盘点")
                        {
                            string Date = DateTime.Now.ToString("yy");
                            Pre = "CHK" + itemInfo.WHCode + iRdm + Date;//库存盘点单号

                            sqlInfo = @"select * from ICSWarehouse a
                                    left join ICSWareHouseLotInfo b on a.WarehouseCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
                                    where a.Enable=1 and a.WarehouseCode='{0}' and a.WorkPoint='{1}'";
                            sqlInfo = string.Format(sqlInfo, itemInfo.WHCode, itemInfo.WorkPoint);
                            cmd.CommandText = sqlInfo;
                            dt = DBHelper.SQlReturnData(sqlInfo, cmd);
                            if (dt.Rows.Count > 0)
                            {
                                sql = @"INSERT INTO [ICSCheck]
                                        ([ID]
                                        ,[CheckCode]
                                        ,[WHCode]
                                        ,[InvCode]
                                        ,[Status]
                                        ,[Quantity]
                                        ,[MUSER]
                                        ,[MTIME]
                                        ,MUSERName
                                        ,[WorkPoint])
                            (SELECT  newid(),'{0}','{1}',a.InvCode,'1',SUM(a.Quantity),'{2}','{3}',b.F_RealName,'{4}'
							 FROM ICSWareHouseLotInfo a
							INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{4}'
							where WarehouseCode='{1}' and WorkPoint='{4}'
							  GROUP BY InvCode ,b.F_RealName)";
                                sql = string.Format(sql, Pre, itemInfo.WHCode, item.User, DateTime.Now, itemInfo.WorkPoint);
                                cmd.CommandText = sql;
                                num = cmd.ExecuteNonQuery();//返回条数
                                if (num > 0)
                                {
                                    string sqlCheck = @"select * from ICSCheck where CheckCode='{0}' and WorkPoint='{1}'";
                                    sqlCheck = string.Format(sqlCheck, Pre, itemInfo.WorkPoint);
                                    DataTable data = DBHelper.SQlReturnData(sqlCheck, cmd);
                                    string json = JsonConvert.SerializeObject(data);
                                    iCs = JsonConvert.DeserializeObject<List<ICSCheckInfo>>(json);
                                    //List<ICSCheckInfo> docmodel = new List<ICSCheckInfo>();
                                    //foreach (DataRow row in data.Rows)
                                    //{
                                    //    ICSCheckInfo doc = new ICSCheckInfo();
                                    //    doc.ID = row["ID"].ToString();
                                    //    doc.CheckCode = row["CheckCode"].ToString();
                                    //    doc.WHCode = row["WHCode"].ToString();
                                    //    doc.WHName = "";
                                    //    doc.InvCode = row["InvCode"].ToString();
                                    //    doc.Quantity = row["Quantity"].ToString();
                                    //    doc.ActualQuantity = row["ActualQuantity"].ToString();
                                    //    doc.User = row["User"].ToString();
                                    //    doc.MTime = row["MTime"].ToString();
                                    //    docmodel.Add(doc);
                                    //}
                                    //List<ICSCheckInfoModel> list = new List<ICSCheckInfoModel>();
                                    //foreach (DataRow dtList in ERPtable.Rows)
                                    //{
                                    //    IssueDocList docc = new IssueDocList();
                                    //    docc.Sequence = dtList["TransSequence"].ToString();
                                    //    docc.InvCode = dtList["InvCode"].ToString();
                                    //    docc.Quantity = dtList["Quantity"].ToString();
                                    //    docc.Amount = dtList["Amount"].ToString();
                                    //    docc.SourceDetailID = dtList["PickID"].ToString();
                                    //    list.Add(docc);
                                    //}


                                    cmd.Transaction.Commit();
                                }
                                else
                                {
                                    cmd.Transaction.Rollback();
                                }

                            }
                            else
                            {
                                throw new Exception("仓库未启用或仓库不存在!");
                            }
                        }
                        else if (type == "条码库存")
                        {
                            string Date = DateTime.Now.ToString("yy");
                            Pre = "LOTCHKdsk" + item.WHCode + Date;//条码盘点

                            sqlInfo = @"select  *  from ICSWarehouse a
                                    left join ICSWareHouseLotInfo b on a.WarehouseCode=b.WarehouseCode
                                    where a.Enable=1 and b.LotNo='{0}'  and WorkPoint='{1}'";
                            sqlInfo = string.Format(sqlInfo, itemInfo.WHCode, item.WorkPoint);
                            DataTable dtInfo = DBHelper.SQlReturnData(sqlInfo, cmd);
                            if (dtInfo.Rows.Count > 0)
                            {
                                sql = @"INSERT INTO [ICSCheckDetail]
                                    ([ID]
                                    ,[CheckCode]
                                    ,[LotNo]
                                    ,[Quantity]
                                    ,[ActualQuantity]
                                    ,[MUSER]
                                    ,[MUSERName]
                                    ,[MTIME]
                                    ,[WorkPoint])
                                     VALUES
                                     (newid(),'{0}','{1}', (select Quantity from  ICSWareHouseLotInfo where LotNo='{1}' and WorkPoint='{4}' ),
                                     (select Quantity from  ICSWareHouseLotInfo where LotNo='{1}' and WorkPoint='{4}'  ),'{2}','{2}','{3}','{4}' )";
                                sql = string.Format(sql, Pre, itemInfo.WHCode, item.User, item.MTime, item.WorkPoint);
                                cmd.CommandText = sql;

                                num = cmd.ExecuteNonQuery();//返回条数
                                if (num > 0)
                                {
                                    cmd.Transaction.Commit();
                                }
                                else
                                {
                                    cmd.Transaction.Rollback();
                                }
                            }
                            else
                            {
                                throw new Exception("仓库未启用或仓库不存在!");
                            }

                        }
                    }
                }


                return iCs;

            }
            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();
            }


        }

        /// <summary>
        /// 盘点单审核
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public bool CreateApprove(ICSCheck JsonData)
        {

            SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            DataTable dt;
            int num = 0;
            Random Rdm = new Random();
            int iRdm = Rdm.Next(0, 100);
            try
            {
                sql = @"select * from ICSCheck where CheckCode='{0}' and WorkPoint='{1}' ";
                sql = string.Format(sql, JsonData.CheckCode, JsonData.WorkPoint);
                dt = DBHelper.SQlReturnData(sql, cmd);
                if (dt.Rows.Count <= 0)
                {
                    throw new Exception("盘点单不存在!");
                }
                else
                {
                    string sqlInfo = @"upadte ICSCheck set Status='2' ,MUSER ='{2}', MUSERName=(select F_RealName from Sys_SRM_User where F_Account ='{2}' and F_Location='{1}' ) , MTIME='{3}' where CheckCode='{0}'  and WorkPoint='{1}'";
                    sqlInfo = string.Format(sqlInfo, JsonData.CheckCode, JsonData.WorkPoint, JsonData.User, DateTime.Now);
                    cmd.CommandText = sql;
                    num = cmd.ExecuteNonQuery();//返回条数
                    if (num > 0)
                    {

                        cmd.Transaction.Commit();
                    }
                    else
                    {
                        cmd.Transaction.Rollback();
                    }
                }
                return true;
            }
            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();
            }


        }

        /// <summary>
        /// PDA库存盘点
        /// </summary>
        /// <param name="JsonData"></param>
        /// <returns></returns>
        public int PDACheckCreate(List<ICSCheck> JsonData, string type)
        {
            List<ICSCheck> deliveryNotrModel = new List<ICSCheck>();
            ICSCheck model = new ICSCheck();
            SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            DataTable dt;
            int num = 0;
            try
            {
                string Pre = "";
                string sql = string.Empty;
                string sqlInfo = string.Empty;
                foreach (var item in JsonData)
                {
                    foreach (var itemInfo in item.detail)
                    {
                        if (item.isChecked == "1")
                        {
                            string sqlICSCheck = @"update ICSCheck set Quantity=(select SUM(Quantity) from ICSCheck WHERE InvCode='{5}' AND WHCode='{6}') + '{0}' ,MUSER='{1}'
                                                    ,MUSERName=(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{1}' and F_Location='{3}')
                                                    ,MTIME='{2}'  where WorkPoint='{3}'  and  CheckCode='{4}'  and InvCode='{5}' AND WHCode='{6}'";
                            sqlICSCheck = string.Format(sqlICSCheck, itemInfo.ActualQuantity, item.User, DateTime.Now, item.WorkPoint, item.CheckCode, item.InvCode, item.WHCode);
                            cmd.CommandText = sqlICSCheck;
                            num = cmd.ExecuteNonQuery();

                            string SQLDetail = @" SELECT * FROM ICSCheckDetail WHERE  LotNo='{0}' and WorkPoint='{1}'";
                            SQLDetail = string.Format(SQLDetail, itemInfo.LotNo, item.WorkPoint);
                            DataTable data = DBHelper.SQlReturnData(SQLDetail, cmd);
                            if (data.Rows.Count <= 0)
                            {
                                string SQLInertDetail = @"insert into ICSCheckDetail( ID,CheckCode,LotNo,Quantity,ActualQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
                                                            (select newid(),'{0}','{1}' ,a.Quantity,'{2}','{3}',b.F_RealName,'{4}','{5}',''
                                                             from ICSWareHouseLotInfo a
                                                              left join Sys_SRM_User b on F_Account='{3}' and F_Location='{5}'
                                                                where a.LotNo='{1}' and a.WorkPoint='{5}')";
                                SQLInertDetail = string.Format(SQLInertDetail, item.CheckCode, itemInfo.LotNo, itemInfo.ActualQuantity, item.User, DateTime.Now, item.WorkPoint);
                                cmd.CommandText = SQLInertDetail;
                                num = cmd.ExecuteNonQuery();
                            }
                            else
                            {
                                sql = @"update ICSCheckDetail set ActualQuantity=(select ActualQuantity from ICSCheckDetail where CheckCode='{2}' and  LotNo='{3}') +'{0}',MUSER='{4}'
                                    ,MUSERName=(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{4}' and F_Location='{1}')
                                    ,MTIME='{5}'
                                        where WorkPoint='{1}'  and  CheckCode='{2}' and LotNo='{3}'";
                                sql = string.Format(sql, itemInfo.ActualQuantity, item.WorkPoint, item.CheckCode, itemInfo.LotNo, item.User, DateTime.Now);
                                cmd.CommandText = sql;
                                num = cmd.ExecuteNonQuery();
                            }

                            string LotInfo = @"update ICSWareHouseLotInfo set Quantity= (select sum(Quantity) from  ICSWareHouseLotInfo  where LotNo='{3}'and WorkPoint='{4}')+'{0}',MUSER='{1}',
                              MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{1}' and F_Location='{4}') ,MTIME='{2}' where LotNo='{3}' and WorkPoint='{4}'";

                            LotInfo = string.Format(LotInfo, itemInfo.ActualQuantity, item.User, DateTime.Now, itemInfo.LotNo, item.WorkPoint);
                            cmd.CommandText = LotInfo;
                            num = cmd.ExecuteNonQuery();
                            string 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])
                                             VALUES
                                                   (newid()
                                                   ,'{5}'
                                                   ,''
                                                   ,'{0}'
                                                   ,'{6}'
                                                   ,(SELECT WarehouseCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
                                                   ,(SELECT LocationCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
                                                   ,''
                                                   ,''
                                                   ,'{1}'
                                                   ,''
                                                   ,''
                                                   ,'19'
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,''
                                                   ,'{2}'
                                                   ,(select F_RealName from Sys_SRM_User where F_Account='{2}' and F_Location='{4}')
                                                   ,'{3}'
                                                   ,'{4}'
                                                   ,'')";
                            sqlLog = string.Format(sqlLog, itemInfo.LotNo, itemInfo.ActualQuantity, item.User, DateTime.Now, item.WorkPoint, item.CheckCode, item.InvCode);
                            cmd.CommandText = sqlLog;
                            num = cmd.ExecuteNonQuery();
                            if (num > 0)
                            {
                                cmd.Transaction.Commit();
                            }
                            else
                            {
                                cmd.Transaction.Rollback();
                            }
                        }

                        else
                        {

                            string SQLDetail = @" SELECT * FROM ICSCheckDetail WHERE  LotNo='{0}' and WorkPoint='{1}'";
                            SQLDetail = string.Format(SQLDetail, itemInfo.LotNo, item.WorkPoint);
                            DataTable data = DBHelper.SQlReturnData(SQLDetail, cmd);
                            if (data.Rows.Count <= 0)
                            {
                                string SQLInertDetail = @"insert into ICSCheckDetail( ID,CheckCode,LotNo,Quantity,ActualQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
                                                            (select newid(),'{0}','{1}' ,a.Quantity,'{2}','{3}',b.F_RealName,'{4}','{5}',''
                                                             from ICSWareHouseLotInfo a
                                                              left join Sys_SRM_User b on F_Account='{3}' and F_Location='{5}'
                                                                where a.LotNo='{1}' and a.WorkPoint='{5}')";
                                SQLInertDetail = string.Format(SQLInertDetail, item.CheckCode, itemInfo.LotNo, itemInfo.ActualQuantity, item.User, DateTime.Now, item.WorkPoint);
                                cmd.CommandText = SQLInertDetail;
                                num = cmd.ExecuteNonQuery();
                            }
                            else
                            {
                                sql = @"update ICSCheckDetail set ActualQuantity=(select ActualQuantity from ICSCheckDetail where CheckCode='{2}' and  LotNo='{3}') +'{0}',MUSER='{4}'
                                    ,MUSERName=(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{4}' and F_Location='{1}')
                                    ,MTIME='{5}'
                                        where WorkPoint='{1}'  and  CheckCode='{2}' and LotNo='{3}'";
                                sql = string.Format(sql, itemInfo.ActualQuantity, item.WorkPoint, item.CheckCode, itemInfo.LotNo, item.User, DateTime.Now);
                                cmd.CommandText = sql;
                                num = cmd.ExecuteNonQuery();
                            }

                            if (num > 0)
                            {
                                cmd.Transaction.Commit();
                            }
                            else
                            {
                                cmd.Transaction.Rollback();
                            }

                        }
                    }

                }
                return num;

            }
            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


        #region 调拨单
        public string TransferDocupdte(TransferDoc JsonData)
        {
            List<ICSCheck> deliveryNotrModel = new List<ICSCheck>();
            ICSCheck model = new ICSCheck();
            DataTable dt = null;
            DataTable dtInfo = null;
            DataTable dtInfoModel = null;
            string sqlInsert;
            string sqlNum;
            SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            int num;

            try
            {
                string sql = string.Empty;
                string sqlInfo = string.Empty;
                string sqlList = string.Empty;

                //验证数量是否大于调拨数量
                sql = @"select Quantity from ICSWareHouseLotInfo where LotNo='{0}'  and WorkPoint='{1}'";
                sql = string.Format(sql, JsonData.Lotno, JsonData.WorkPoint);
                dt = DBHelper.SQlReturnData(sql, cmd);
                if (dt.Rows.Count <= 0)
                {
                    throw new Exception("查无数据!");
                }
                foreach (DataRow dr in dt.Rows)
                {
                    TransferDoc main = new TransferDoc();
                    main.Quantity = Convert.ToInt32(dr["Quantity"]);
                    if (main.Quantity < JsonData.Quantity)
                    {
                        throw new Exception("输入数量小于库存数量不能调拨!");
                    }
                }
                ///查询调拨的库位是否存在
                sqlInfo = @"select * from ICSLocation where LocationCode='{0}' and WorkPoint='{1}' ";
                sqlInfo = string.Format(sqlInfo, JsonData.LocationCode, JsonData.WorkPoint);
                dtInfo = DBHelper.SQlReturnData(sqlInfo, cmd);
                if (dtInfo.Rows.Count <= 0)
                {
                    throw new Exception("目标库位不存在,请输入正确的目标库位!");
                }
                sqlNum = @"select * from ICSWareHouseLotInfo where LotNo='{0}' and WorkPoint='{1}' ";
                sqlNum = string.Format(sqlNum, JsonData.Lotno, JsonData.WorkPoint);
                dtInfoModel = DBHelper.SQlReturnData(sqlNum, cmd);
                if (dtInfoModel.Rows.Count < 0)
                {
                    throw new Exception("条码不存在!");
                }
                bool isTransfer = verification.isTransfer(JsonData.TransCode, JsonData.TransSequence, JsonData.Quantity, JsonData.Lotno, JsonData.WarehouseCode, JsonData.LocationCode, JsonData.WorkPoint);
                if (isTransfer == true)
                {
                    string updateSql = @"update ICSTransfer set TransferQuantity ='{0}' where  TransferNO='{1}' and Sequence='{2}' and WorkPoint='{3}'";
                    updateSql = string.Format(updateSql, JsonData.Quantity, JsonData.TransCode, JsonData.TransSequence, JsonData.WorkPoint);
                    cmd.CommandText = updateSql;
                    num = cmd.ExecuteNonQuery();
                    string HouseSql = @" update ICSWareHouseLotInfo set WarehouseCode='{0}',LocationCode='{1}' where LotNo='{2}' and WorkPoint='{3}' ";
                    HouseSql = string.Format(HouseSql, JsonData.WarehouseCode, JsonData.LocationCode, JsonData.Lotno, JsonData.WorkPoint);
                    cmd.CommandText = HouseSql;
                    num = cmd.ExecuteNonQuery();
                    sqlInsert = @"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])
                         VALUES
                               (newid()
                               ,'{0}'--TransCode
                               ,'null'
                               ,'{1}'
                               ,(select InvCode from ICSWareHouseLotInfo where LotNo='{1}' )
                               ,(select WarehouseCode from ICSWareHouseLotInfo where LotNo='{1}')
                               ,(select LocationCode from ICSWareHouseLotInfo where LotNo='{1}')
                               ,'null'--LocationCode
                               ,'{2}'--LocationCode
                               ,'{3}'--Quantity
                               ,'null'
                               ,0
                               ,6
                               ,'13'
                               ,'null'
                               ,'null'
                               ,'null'
                               ,'null'
                               ,'{4}'
                               ,'{4}'
                               ,'{5}'
                               ,'{6}'
                               ,'null')";
                    sqlInsert = string.Format(sqlInsert, JsonData.TransCode, JsonData.Lotno, JsonData.LocationCode, JsonData.Quantity, JsonData.User, DateTime.Now, JsonData.WorkPoint);
                    cmd.CommandText = sqlInsert;
                    num = cmd.ExecuteNonQuery();
                    if (num > 0)
                    {
                        //throw new Exception("");
                        cmd.Transaction.Commit();
                        string ing = "成功 ";
                        return ing;
                    }
                    else
                    {
                        cmd.Transaction.Rollback();

                    }
                }

                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


        #region 接口调用
        public static string HttpPost(string apiName, string url, string body)
        {
            try
            {
                Encoding encoding = Encoding.UTF8;
                System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
                request.Method = "POST";
                request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
                request.ContentType = "application/json; charset=utf-8";
                // request.ContentType = "text/html, application/xhtml+xml";
                byte[] buffer = encoding.GetBytes(body);
                request.ContentLength = buffer.Length;
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
                using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
                {
                    return reader.ReadToEnd();
                }
            }
            catch (System.Net.WebException ex)
            {
                throw new Exception(apiName + "调用失败," + ex.Message);

            }
        }
        #endregion

        #region logIn
        public object CheckLogin(Sys_SRM_User userModel)
        {
            List<Sys_SRM_User> userLogOnEntity = new List<Sys_SRM_User>();
            SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
            conn.Open();
            SqlTransaction sqlTran = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();
            cmd.Transaction = sqlTran;
            cmd.Connection = conn;
            DataTable dt;
            try
            {
                sql = @"select * from Sys_SRM_User where F_Account='{0}' and F_Location='{1}' and F_EnabledMark='1'";//已经启用的账号
                sql = string.Format(sql, userModel.UserCode, userModel.WorkPoint);
                dt = DBHelper.SQlReturnData(sql, cmd);
                if (dt.Rows.Count > 0)//查询的数据不为空
                {
                    sqlInfo = @" select a.[F_Id]  as UserId
                              ,[F_Account] as userCode
                              ,[F_RealName]  as UserName
                              ,[F_NickName]
	                          ,b.F_UserPassword
	                          ,b.F_UserSecretkey
                              ,[F_HeadIcon]
                              ,[F_Gender]
                              ,[F_Birthday]
                              ,[F_MobilePhone]
                              ,[F_Email]
                              ,[F_WeChat]
                              ,[F_ManagerId]
                              ,[F_SecurityLevel]
                              ,[F_Signature]
                              ,[F_OrganizeId]
                              ,[F_DepartmentId]
                              ,[F_RoleId]
                              ,[F_DutyId]
                              ,[F_IsAdministrator]
                              ,[F_SortCode]
                              ,[F_DeleteMark]
                              ,[F_EnabledMark]
                              ,[F_Description]
                              ,[F_CreatorTime]
                              ,[F_CreatorUserId]
                              ,[F_LastModifyTime]
                              ,[F_LastModifyUserId]
                              ,[F_DeleteTime]
                              ,[F_DeleteUserId]
                              ,[F_Location] as WorkPoint
                              ,[F_VenCode]
	                          from Sys_SRM_User a 
                              left join Sys_SRM_UserLogOn b on  b.F_UserId=a.F_Id
                               where F_Account='{0}' and F_Location='{1}' and F_EnabledMark='1'";
                    sqlInfo = string.Format(sqlInfo, userModel.UserCode, userModel.WorkPoint);
                    dt = DBHelper.SQlReturnData(sqlInfo, cmd);
                    IList<UserLogOnEntity> users = DBHelper.ModelConvertHelper<UserLogOnEntity>.ConvertToModel(dt);
                    //  string dbPassword = Md5.md5(DESEncrypt.Encrypt(userModel.F_UserPassword.ToLower(), item.F_UserSecretkey.ToLower()).ToLower(), 32).ToLower();
                    foreach (var item in users)
                    {
                        //string UserPassword = Md5.md5(DESEncrypt.Encrypt(userModel.F_UserPassword.ToLower()),16).ToLower();

                        string dbPassword = Md5.md5(DESEncrypt.Encrypt(userModel.UserPassword.ToLower(), item.F_UserSecretkey.ToLower()).ToLower(), 32).ToLower();
                        if (dbPassword == item.F_UserPassword)
                        {
                            string json = JsonConvert.SerializeObject(dt);
                            userLogOnEntity = JsonConvert.DeserializeObject<List<Sys_SRM_User>>(json);
                            return userLogOnEntity;
                        }
                        else
                        {
                            throw new Exception("密码不正确,请重新输入");
                        }
                    }


                }
                else
                {
                    throw new Exception("用户名不存在,请重新输入!");
                }

                //cmd.CommandText = sql;
                //int  num = cmd.ExecuteNonQuery();


            }
            catch (Exception ex)
            {
                log.Error(ex.Message);
                throw new Exception(ex.Message);
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
                conn.Dispose();
            }
            return null;
        }
        #endregion

    }
}