/// <summary>
        /// 撤销条码状态
        /// </summary>
        /// <param name="barcode"></param>
        /// <param name="loginUser"></param>
        /// <returns></returns>
        public bool UndoBarcodeStatus(string barcode, string loginUser)
        {
            List <BarcodeStatusInfo> barcodeStatusInfos = new BarcodeStatusDAL().GetListByPage("[BARCODE_DATA] = N'" + barcode + "'", "[ID] desc", 1, 2);

            if (barcodeStatusInfos.Count == 0)
            {
                throw new Exception("MC:0x00000276");///标签信息错误
            }
            if (barcodeStatusInfos.Count == 1)
            {
                throw new Exception("MC:0x00000276");///标签信息错误
            }
            ///获取上一个条码状态
            BarcodeStatusInfo barcodeStatusInfo = barcodeStatusInfos[1];
            string            sql = BarcodeDAL.GetBarcodeUpdateSql(barcodeStatusInfo.BarcodeStatus.GetValueOrDefault()
                                                                   , barcodeStatusInfo.WmNo
                                                                   , barcodeStatusInfo.ZoneNo
                                                                   , barcodeStatusInfo.Dloc
                                                                   , barcodeStatusInfo.AsnRunsheetNo
                                                                   , barcodeStatusInfo.BarcodeFid.GetValueOrDefault()
                                                                   , loginUser);

            if (!CommonDAL.ExecuteNonQueryBySql(sql))
            {
                throw new Exception("MC:0x00000276");///标签信息错误
            }
            return(true);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="barcodeInfos"></param>
        /// <param name="loginUser"></param>
        /// <returns></returns>
        public bool CancelBarcodes(List <BarcodeInfo> barcodeInfos, string loginUser)
        {
            List <BarcodeStatusInfo> barcodeStatusInfos = new BarcodeStatusDAL().GetList("[BARCODE_DATA] in ('" + string.Join(",", barcodeInfos.Select(d => d.BarcodeData).ToArray()) + "')", string.Empty);

            string sql = string.Empty;

            foreach (var barcodeInfo in barcodeInfos)
            {
                if (barcodeInfo.BarcodeStatus.GetValueOrDefault() == (int)BarcodeStatusConstants.Created)
                {
                    continue;
                }
                if (barcodeInfo.BarcodeStatus.GetValueOrDefault() == (int)BarcodeStatusConstants.Invalid)
                {
                    throw new Exception("MC:0x00000277");///标签已作废
                }
                if (barcodeInfo.BarcodeStatus.GetValueOrDefault() == (int)BarcodeStatusConstants.Frozen)
                {
                    throw new Exception("MC:0x00000361");///标签已冻结
                }
                if (barcodeInfo.BarcodeStatus.GetValueOrDefault() == (int)BarcodeStatusConstants.Inbound)
                {
                    throw new Exception("MC:0x00000362");///标签已入库
                }
                if (barcodeInfo.BarcodeStatus.GetValueOrDefault() == (int)BarcodeStatusConstants.Outbound)
                {
                    throw new Exception("MC:0x00000364");///标签已出库
                }
                if (barcodeInfo.BarcodeStatus.GetValueOrDefault() == (int)BarcodeStatusConstants.Shiped)
                {
                    throw new Exception("MC:0x00000365");///标签已发货
                }
                List <BarcodeStatusInfo> barcodeStatuses = barcodeStatusInfos.Where(d => d.BarcodeFid.GetValueOrDefault() == barcodeInfo.Fid.GetValueOrDefault()).OrderByDescending(d => d.Id).ToList();
                if (barcodeStatuses.Count == 0)
                {
                    throw new Exception("MC:0x00000276");///标签信息错误
                }
                if (barcodeStatuses.Count == 1)
                {
                    throw new Exception("MC:0x00000276");///标签信息错误
                }
                ///获取上一个条码状态
                BarcodeStatusInfo barcodeStatusInfo = barcodeStatuses.FirstOrDefault();
                sql += BarcodeDAL.GetBarcodeUpdateSql(barcodeStatusInfo.BarcodeStatus.GetValueOrDefault()
                                                      , barcodeStatusInfo.WmNo
                                                      , barcodeStatusInfo.ZoneNo
                                                      , barcodeStatusInfo.Dloc
                                                      , barcodeStatusInfo.AsnRunsheetNo
                                                      , barcodeStatusInfo.BarcodeFid.GetValueOrDefault()
                                                      , loginUser);
            }
            ///执行
            using (TransactionScope trans = new TransactionScope())
            {
                if (!string.IsNullOrEmpty(sql))
                {
                    CommonDAL.ExecuteNonQueryBySql(sql);
                }
                trans.Complete();
            }
            return(true);
        }