tjx
3 天以前 637d269fd640fbc43dbeab9c96663430db415525
StandardPda/MES.Service/service/Warehouse/MesPalletBinding1Manager.cs
@@ -49,99 +49,120 @@
    }
    /// <summary>
        /// 将接口返回的数据插入到数据库中
        /// </summary>
        /// <param name="palletBinding">栈板绑定信息</param>
        /// <returns>插入记录数</returns>
        public int InsertPalletBindingData(MesPalletBinding palletBinding)
    /// 将接口返回的数据插入到数据库中
    /// </summary>
    /// <param name="palletBinding">栈板绑定信息</param>
    /// <returns>插入记录数</returns>
    public int InsertPalletBindingData(MesPalletBinding palletBinding)
    {
        var response = GetTransferListByStackCodeAsync(palletBinding).Result;
        if (response?.Data?.SnList == null ||
            string.IsNullOrEmpty(response.Data.StackCode))
        {
            var response = GetTransferListByStackCodeAsync(palletBinding).Result;
            if (response?.Data?.SnList == null || string.IsNullOrEmpty(response.Data.StackCode))
            {
                return 0;
            }
            int insertedCount = 0;
            try
            {
                // 准备要插入的数据列表
                var bindingList = new List<MesPalletBinding1>();
                foreach (var snItem in response.Data.SnList)
                {
                    var binding = new MesPalletBinding1
                    {
                        Stackcode = response.Data.StackCode,
                        SnNo = snItem.SnNo,
                        TicketNo = snItem.TickeNo,
                        Mediumboxcode = snItem.MediumBoxCode,
                        CreateDate = DateTime.Now,
                        IsInbound = 0 // 默认未入库
                    };
                    bindingList.Add(binding);
                }
                // 批量插入数据到数据库
                if (bindingList.Any())
                {
                    // 批量插入新数据
                    var insertedIds = Db.Insertable(bindingList).PageSize(1)
                        .IgnoreColumnsNull()
                        .ExecuteCommand();
                    insertedCount = insertedIds;
                }
            }
            catch (Exception ex)
            {
                throw new Exception($"插入栈板绑定数据失败: {ex.Message}");
            }
            return insertedCount;
            return 0;
        }
        /// <summary>
        /// 检查栈板码在数据库中是否存在
        /// </summary>
        /// <param name="stackCode">栈板码</param>
        /// <returns>存在返回true,否则返回false</returns>
        public bool CheckStackCodeExists(string stackCode)
        int insertedCount = 0;
        try
        {
            try
            // 准备要插入的数据列表
            var bindingList = new List<MesPalletBinding1>();
            var bindingLogList = new List<MesPalletBindingLog>();
            foreach (var snItem in response.Data.SnList)
            {
                if (string.IsNullOrEmpty(stackCode))
                var binding = new MesPalletBinding1
                {
                    return false;
                }
                    Stackcode = response.Data.StackCode,
                    SnNo = snItem.SnNo,
                    TicketNo = snItem.TickeNo,
                    Mediumboxcode = snItem.MediumBoxCode,
                    CreateDate = DateTime.Now,
                    IsInbound = 0 // 默认未入库
                };
                // 查询MES_PALLET_BINDING表中是否存在该栈板码的数据
                var exists = Db.Queryable<MesPalletBinding1>()
                    .Any(x => x.Stackcode == stackCode);
                bindingList.Add(binding);
                return exists;
                var bindingLog = new MesPalletBindingLog
                {
                    StackCode = response.Data.StackCode,
                    SnNo = snItem.SnNo,
                    TicketNo = snItem.TickeNo,
                    MediumBoxCode = snItem.MediumBoxCode,
                    CreateDate = DateTime.Now,
                    OperationType = "0" // 默认未入库
                };
                bindingLogList.Add(bindingLog);
            }
            catch (Exception ex)
            // 批量插入数据到数据库
            if (bindingList.Any())
            {
                throw new Exception($"检查栈板码是否存在时出错: {ex.Message}");
                // 批量插入新数据
                var insertedIds = Db.Insertable(bindingList).PageSize(1)
                    .IgnoreColumnsNull()
                    .ExecuteCommand();
                var insertedIds1 = Db.Insertable(bindingLogList).PageSize(1)
                    .IgnoreColumnsNull()
                    .ExecuteCommand();
                insertedCount = insertedIds + insertedIds1;
            }
        }
        /// <summary>
        /// 将接口返回的数据插入到数据库中(带存在性检查)
        /// </summary>
        /// <param name="palletBinding">栈板绑定信息</param>
        /// <returns>操作结果</returns>
        public async Task<int> InsertPalletBindingDataWithCheckAsync(MesPalletBinding palletBinding)
        catch (Exception ex)
        {
            // 先检查栈板码是否存在
            bool exists = CheckStackCodeExists(palletBinding.StackCode);
            return exists ? 1 :
                // 调用原来的插入方法
                InsertPalletBindingData(palletBinding);
            throw new Exception($"插入栈板绑定数据失败: {ex.Message}");
        }
        return insertedCount;
    }
    /// <summary>
    /// 检查栈板码在数据库中是否存在
    /// </summary>
    /// <param name="stackCode">栈板码</param>
    /// <returns>存在返回true,否则返回false</returns>
    public bool CheckStackCodeExists(string stackCode)
    {
        try
        {
            if (string.IsNullOrEmpty(stackCode))
            {
                return false;
            }
            // 查询MES_PALLET_BINDING表中是否存在该栈板码的数据
            var exists = Db.Queryable<MesPalletBinding1>()
                .Any(x => x.Stackcode == stackCode);
            return exists;
        }
        catch (Exception ex)
        {
            throw new Exception($"检查栈板码是否存在时出错: {ex.Message}");
        }
    }
    /// <summary>
    /// 将接口返回的数据插入到数据库中(带存在性检查)
    /// </summary>
    /// <param name="palletBinding">栈板绑定信息</param>
    /// <returns>操作结果</returns>
    public async Task<int> InsertPalletBindingDataWithCheckAsync(
        MesPalletBinding palletBinding)
    {
        // 先检查栈板码是否存在
        bool exists = CheckStackCodeExists(palletBinding.StackCode);
        return exists
            ? 1
            :
            // 调用原来的插入方法
            InsertPalletBindingData(palletBinding);
    }
    /// <summary>
    /// 根据栈板码删除旧数据
    /// </summary>