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;
@@ -23,6 +25,9 @@
            this.toolBarMenu1.btnQueryClick += ToolBarMenu1_btnQueryClick;
            this.toolBarMenu1.btnJieAnClick += ToolBarMenu1_btnJieAnClick1;
            this.toolBarMenu1.btnFjieAnClick += ToolBarMenu1_btnFjieAnClick;
            toolBarMenu1.btnChkClick += ToolBarMenu1_btnChkClick;
            toolBarMenu1.btnFChkClick += ToolBarMenu1_btnFChkClick;
            toolBarMenu1.btnLogClick += ToolBarMenu1_btnLogClick;
            this.toolBarMenu1.getXmlConfig();
            Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameterMx(gvMx1);
            Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameter(gridView1, picCheckBox, this, "auditStatusChk", "", (value) =>
@@ -79,7 +84,19 @@
            _filterList = e.FilterList;
            getPageList(1);
        }
        /// <summary>
        /// 日志
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ToolBarMenu1_btnLogClick(object sender, EventArgs e)
        {
            toolBarMenu1.guidKey = "";
            string rowGuid, rowName;
            (rowGuid, rowName) = UtilityHelper.GetCurrentRow(xtraTabControl1,
                lbGuid, txt_orderNo, gridView1);
            toolBarMenu1.guidKey = rowGuid;
        }
        /// <summary>
        /// 刷新事件
        /// </summary>
@@ -146,7 +163,11 @@
        /// <param name="pageSize">每页几条</param>
        private void getPageList(int curPage)
        {
            gcMain1.DataSource = null;var _sbSqlWhere = UtilityHelper.GetSearchWhere(_filterList);
            gcMain1.DataSource = null;
            System.Text.StringBuilder _sbSqlWhere = new System.Text.StringBuilder();
            _sbSqlWhere.Append(" and hzOrg.FID in");
            _sbSqlWhere.Append(ToolBox.UtilityHelper.GetOrgWhere());
            _sbSqlWhere.Append(UtilityHelper.GetSearchWhere(_filterList));
            PageQueryModel pgq = new PageQueryModel(curPage, this.pageBar1.RowsCount, "order_no", "asc", "", _sbSqlWhere.ToString());
            string json = JsonConvert.SerializeObject(pgq);
            try
@@ -188,7 +209,7 @@
            if (toolBarMenu1.currentAction == "edit") isEdit = true;
            if (string.IsNullOrEmpty(strGuid))
            {
                ToolBox.MsgHelper.Warning("请先选择你要操作的行!");
                ToolBox.MsgHelper.ShowError("请先选择你要操作的行!");
                return;
            }
            var _obj = new
@@ -227,11 +248,195 @@
                    }
                }
                else
                    ToolBox.MsgHelper.Warning("提示:" + _rtn.rtnMsg);
                    ToolBox.MsgHelper.ShowError("提示:" + _rtn.rtnMsg);
            }
            catch (Exception ex)
            {
                ToolBox.MsgHelper.Warning("提示:" + ex.Message);
                ToolBox.MsgHelper.ShowError("提示:" + ex.Message);
            }
        }
        /// <summary>
        /// 审核事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ToolBarMenu1_btnChkClick(object sender, EventArgs e)
        {
            ExecuteBatchOperation(8, "审核");
        }
        /// <summary>
        /// 反审核
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ToolBarMenu1_btnFChkClick(object sender, EventArgs e)
        {
            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());
            }
        }
@@ -253,6 +458,12 @@
                case 3:
                    strMsg = "反结案(反执行至完工)";
                    break;
                case 8:
                    strMsg = "审核";
                    break;
                case 9:
                    strMsg = "反审核";
                    break;
            };
            toolBarMenu1.guidKey = "";
            string rowGuid, rowName;
@@ -260,7 +471,7 @@
                lbGuid, txt_orderNo, gridView1, "orderNo");
            if (string.IsNullOrEmpty(rowGuid))
            {
                MsgHelper.Warning("请先选择你要操作的行!");
                MsgHelper.ShowError("请先选择你要操作的行!");
                return;
            }
            if (!MsgHelper.AskQuestion("你选择了【" + rowName + "】,确定" + strMsg + "吗?"))
@@ -277,12 +488,15 @@
                    _webServiceName + "EditModelSubmit",
                    JsonConvert.SerializeObject(_obj));
                var _rtn = UtilityHelper.ReturnToDynamic(strJson);
                MsgHelper.Warning(_rtn.rtnData.outMsg.ToString());
                if (_rtn.rtnCode > 0 && _rtn.rtnData.outSum * 1 > 0)
                {
                    MsgHelper.ShowInformation(_rtn.rtnData.outMsg.ToString());
                    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
                    {
@@ -292,13 +506,13 @@
                        gridView1.FocusedRowHandle = rowHandle;
                    }
                }
                else
                    MsgHelper.ShowError(_rtn.rtnData.outMsg.ToString());
            }
            catch (Exception ex)
            {
                MsgHelper.Warning("提示:" + ex.Message);
                MsgHelper.ShowError("提示:" + ex.Message);
            }
        }
    }
}