cnf
2025-11-20 ad1a9cd5ae489fbadc1ebfe754d3b71f65d43a1f
DevApp/Gs.DevApp/DevFrm/WW/Frm_ProductionOrder.cs
@@ -7,6 +7,8 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -255,24 +257,187 @@
        }
        /// <summary>
        ///     审核事件
        /// 审核事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ToolBarMenu1_btnChkClick(object sender, EventArgs e)
        {
            _toolCk(8);
            ExecuteBatchOperation(8, "审核");
        }
        /// <summary>
        ///     反审核
        /// 反审核
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <exception cref="NotImplementedException"></exception>
        private void ToolBarMenu1_btnFChkClick(object sender, EventArgs e)
        {
            _toolCk(9);
            ExecuteBatchOperation(9, "反审核");
        }
        /// <summary>
        /// 批量执行操作
        /// </summary>
        /// <param name="inFieldValue">操作类型值</param>
        /// <param name="operationName">操作名称</param>
        private void ExecuteBatchOperation(int inFieldValue, string operationName)
        {
            gridView1.PostEditor();
            gridView1.UpdateCurrentRow();
            DataTable dt = this.gcMain1.DataSource as DataTable;
            // 收集所有选中的guid
            List<string> selectedGuids = new List<string>();
            foreach (DataRow dr in dt.Rows)
            {
                string checkBox = dr["chkInt"].ToString();
                string _guid = dr["guid"].ToString();
                if (Gs.DevApp.ToolBox.UtilityHelper.ToCheck(checkBox))
                {
                    selectedGuids.Add(_guid);
                }
            }
            // 如果没有选中的记录,直接返回
            if (selectedGuids.Count == 0)
            {
                MsgHelper.ShowError("请先选择你要操作的行!");
                return;
            }
            // 确认对话框
            if (!MsgHelper.AskQuestion($"你选择了 {selectedGuids.Count} 条记录,确定{operationName}吗?"))
                return;
            // 执行批量操作
            BatchExecuteOperation(selectedGuids, inFieldValue, operationName);
        }
        /// <summary>
        /// 批量执行操作并统一返回结果
        /// </summary>
        private void BatchExecuteOperation(List<string> guids, int inFieldValue, string operationName)
        {
            List<string> successMessages = new List<string>();
            List<string> errorMessages = new List<string>();
            string lastSuccessGuid = string.Empty;
            foreach (string rowGuid in guids)
            {
                if (string.IsNullOrEmpty(rowGuid))
                {
                    errorMessages.Add("遇到空GUID,跳过处理");
                    continue;
                }
                try
                {
                    var _obj = new
                    {
                        guid = rowGuid,
                        inFieldValue = inFieldValue,
                    };
                    var strJson = UtilityHelper.HttpPost("",
                        _webServiceName + "EditModelSubmit",
                        JsonConvert.SerializeObject(_obj));
                    var _rtn = UtilityHelper.ReturnToDynamic(strJson);
                    if (_rtn.rtnCode > 0 && _rtn.rtnData.outSum * 1 > 0)
                    {
                        successMessages.Add($"记录 {rowGuid}:{_rtn.rtnData.outMsg}");
                        lastSuccessGuid = rowGuid;
                        // 更新界面
                        UpdateUI(rowGuid, inFieldValue);
                    }
                    else
                    {
                        errorMessages.Add($"记录 {rowGuid}:{_rtn.rtnData.outMsg}");
                    }
                }
                catch (Exception ex)
                {
                    errorMessages.Add($"记录 {rowGuid}:处理失败 - {ex.Message}");
                }
            }
            // 统一显示结果
            ShowBatchResult(successMessages, errorMessages, operationName, lastSuccessGuid);
        }
        /// <summary>
        /// 更新界面
        /// </summary>
        private void UpdateUI(string rowGuid, int inFieldValue)
        {
            if (xtraTabControl1.SelectedTabPageIndex == 1)
            {
                getModel(lbGuid.Text.Trim());
                int rowHandle = gridView1.LocateByValue(1, gridView1.Columns["guid"], rowGuid);
                gridView1.FocusedRowHandle = rowHandle;
                UtilityHelper.SetCheckIco(gridView1, "auditStatusChk", "auditor", "auditDate", picCheckBox, this, (inFieldValue == 8 ? 1 : 0).ToString());
            }
            else
            {
                getPageList(this.pageBar1.CurrentPage);
                int rowHandle = gridView1.LocateByValue("guid", rowGuid);
                gridView1.FocusedRowHandle = rowHandle;
            }
        }
        /// <summary>
        /// 显示批量操作结果
        /// </summary>
        private void ShowBatchResult(List<string> successMessages, List<string> errorMessages, string operationName, string lastSuccessGuid)
        {
            StringBuilder resultMessage = new StringBuilder();
            resultMessage.AppendLine($"{operationName}操作完成:");
            resultMessage.AppendLine($"成功:{successMessages.Count} 条");
            resultMessage.AppendLine($"失败:{errorMessages.Count} 条");
            if (successMessages.Count > 0)
            {
                resultMessage.AppendLine();
                resultMessage.AppendLine("成功记录:");
                foreach (var msg in successMessages.Take(5)) // 只显示前5条成功信息
                {
                    resultMessage.AppendLine($"  ✓ {msg}");
                }
                if (successMessages.Count > 5)
                {
                    resultMessage.AppendLine($"  ... 还有 {successMessages.Count - 5} 条成功记录");
                }
            }
            if (errorMessages.Count > 0)
            {
                resultMessage.AppendLine();
                resultMessage.AppendLine("失败记录:");
                foreach (var msg in errorMessages.Take(5)) // 只显示前5条错误信息
                {
                    resultMessage.AppendLine($"  ✗ {msg}");
                }
                if (errorMessages.Count > 5)
                {
                    resultMessage.AppendLine($"  ... 还有 {errorMessages.Count - 5} 条失败记录");
                }
            }
            // 根据结果类型显示不同的消息框
            if (errorMessages.Count == 0)
            {
                MsgHelper.ShowInformation(resultMessage.ToString());
            }
            else if (successMessages.Count == 0)
            {
                MsgHelper.ShowError(resultMessage.ToString());
            }
            else
            {
                MsgHelper.ShowError(resultMessage.ToString());
            }
        }
        /// <summary>