using DevExpress.Utils.DirectXPaint;
|
using DevExpress.XtraEditors;
|
using DevExpress.XtraGrid.Columns;
|
using Gs.DevApp.DevFrm.QC;
|
using Gs.DevApp.DevFrm.Rpt;
|
using Gs.DevApp.Entity;
|
using Gs.DevApp.ToolBox;
|
using Gs.DevApp.UserControl;
|
using Newtonsoft.Json;
|
using Newtonsoft.Json.Linq;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Windows.Forms;
|
|
namespace Gs.DevApp.DevFrm.JJGZ
|
{
|
public partial class Frm_MesAttanCon : DevExpress.XtraEditors.XtraForm
|
{
|
string _webServiceName = "MesAttanCon/";
|
List<FilterEntity> _filterList = new List<FilterEntity>();
|
string date;
|
string lineNo;
|
|
// 用于跟踪原始值的字典
|
private Dictionary<string, Dictionary<string, object>> _originalValues = new Dictionary<string, Dictionary<string, object>>();
|
|
public Frm_MesAttanCon()
|
{
|
InitializeComponent();
|
//this.toolBarMenu1.btnAddClick += ToolBarMenu1_btnAddClick;
|
this.toolBarMenu1.btnEdtClick += ToolBarMenu1_btnEdtClick;
|
this.toolBarMenu1.btnSaveClick += ToolBarMenu1_btnSaveClick;
|
this.toolBarMenu1.btnLoadClick += ToolBarMenu1_btnLoadClick;
|
//this.toolBarMenu1.btnDelClick += ToolBarMenu1_btnDelClick1;
|
this.toolBarMenu1.btnEscClick += ToolBarMenu1_btnEscClick;
|
this.toolBarMenu1.btnQueryClick += ToolBarMenu1_btnQueryClick;
|
this.toolBarMenu1.btnGongZiClick += ToolBarMenu1_btnGongZiClick;
|
this.toolBarMenu1.btnLianBanClick += ToolBarMenu1_btnLianBanClick;
|
toolBarMenu1.btnChkClick += ToolBarMenu1_btnChkClick;
|
toolBarMenu1.btnFChkClick += ToolBarMenu1_btnFChkClick;
|
this.toolBarMenu1.getXmlConfig();
|
Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameter(gridView1, picCheckBox, this, "checkStatus", "", (value) =>
|
{
|
Gs.DevApp.ToolBox.UtilityHelper.JumpTab(xtraTabControl1, 0);
|
}, tips);
|
//getPageList(1);
|
//_setIno();
|
|
}
|
|
/// <summary>
|
/// 查询事件
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void ToolBarMenu1_btnQueryClick(object sender, EventArgs e)
|
{
|
var frm = new KQCX(lineNo, date);
|
//赋值给明细表
|
frm.UpdateParent += (ss, ee) =>
|
{
|
var lst = new List<string>();
|
lst = ee.StringList;
|
lineNo = string.IsNullOrEmpty(lst[0]) ? "0" : lst[0];
|
date = string.IsNullOrEmpty(lst[1]) ? DateTime.Now.AddMonths(-1).ToString() : lst[1];
|
getPageList();
|
};
|
frm.ShowDialog();
|
}
|
|
/// <summary>
|
/// 刷新事件
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void ToolBarMenu1_btnLoadClick(object sender, EventArgs e)
|
{
|
|
//getPageList(1);
|
getPageList();
|
|
}
|
|
/// <summary>
|
/// 连班设置
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void ToolBarMenu1_btnLianBanClick(object sender, EventArgs e)
|
{
|
|
var frm = new SetLB();
|
//赋值给明细表
|
frm.UpdateParent += (ss, ee) =>
|
{
|
var lst = new List<string>();
|
lst = ee.StringList;
|
var time = string.IsNullOrEmpty(lst[0]) ? "0" : lst[0];
|
SetLB(time);
|
};
|
frm.ShowDialog();
|
|
}
|
|
/// <summary>
|
/// </summary>
|
/// <param name="curPage">第几页</param>
|
/// <param name="pageSize">每页几条</param>
|
private void getPageList()
|
{
|
var _obj = new
|
{
|
date = date,
|
lineNo = lineNo
|
};
|
// gcMain1.DataSource = null;
|
var _sbSqlWhere = UtilityHelper.GetSearchWhere(_filterList);
|
|
try
|
{
|
var strReturn = UtilityHelper.HttpPost("",
|
_webServiceName + "GetListPage", JsonConvert.SerializeObject(_obj));
|
ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strReturn);
|
if (_rtn.rtnCode > 0)
|
{
|
dynamic dy = _rtn.rtnData;
|
JObject _job = JObject.Parse(strReturn);
|
|
|
JArray array = new JArray();
|
foreach (var a in _job["rtnData"]["list"])
|
{
|
array.Add(a);
|
}
|
DataTable dt = JsonConvert.DeserializeObject<DataTable>(array.ToString());
|
if (dt.Rows.Count > 0)
|
{
|
gridControl1.BindingContext = new BindingContext();
|
gridControl1.DataSource = dt;
|
gridControl1.ForceInitialize();
|
gridView1.BestFitColumns();
|
Gs.DevApp.ToolBox.UtilityHelper.SetGridLayout(gridView1);
|
}
|
else
|
{
|
Gs.DevApp.ToolBox.UtilityHelper.SetDefaultTable(gridControl1, gridView1);
|
}
|
|
JArray array1 = new JArray();
|
foreach (var a in _job["rtnData"]["list1"])
|
{
|
array1.Add(a);
|
}
|
DataTable dt1 = JsonConvert.DeserializeObject<DataTable>(array1.ToString());
|
if (dt1.Rows.Count > 0)
|
{
|
gridControl2.BindingContext = new BindingContext();
|
gridControl2.DataSource = dt1;
|
gridControl2.ForceInitialize();
|
gridView2.BestFitColumns();
|
Gs.DevApp.ToolBox.UtilityHelper.SetGridLayout(gridView2);
|
// 保存原始值
|
SaveOriginalValues();
|
}
|
else
|
{
|
Gs.DevApp.ToolBox.UtilityHelper.SetDefaultTable(gridControl2, gridView2);
|
_originalValues.Clear();
|
}
|
|
JArray array2 = new JArray();
|
foreach (var a in _job["rtnData"]["list2"])
|
{
|
array2.Add(a);
|
}
|
DataTable dt2 = JsonConvert.DeserializeObject<DataTable>(array2.ToString());
|
if (dt2.Rows.Count > 0)
|
{
|
gridControl3.BindingContext = new BindingContext();
|
gridControl3.DataSource = dt2;
|
gridControl3.ForceInitialize();
|
gridView3.BestFitColumns();
|
Gs.DevApp.ToolBox.UtilityHelper.SetGridLayout(gridView3);
|
}
|
else
|
{
|
Gs.DevApp.ToolBox.UtilityHelper.SetDefaultTable(gridControl3, gridView3);
|
}
|
|
JArray array3 = new JArray();
|
foreach (var a in _job["rtnData"]["list3"])
|
{
|
array3.Add(a);
|
}
|
DataTable dt3 = JsonConvert.DeserializeObject<DataTable>(array3.ToString());
|
if (dt3.Rows.Count > 0)
|
{
|
gridControl4.BindingContext = new BindingContext();
|
gridControl4.DataSource = dt3;
|
gridControl4.ForceInitialize();
|
gridView4.BestFitColumns();
|
Gs.DevApp.ToolBox.UtilityHelper.SetGridLayout(gridView4);
|
}
|
else
|
{
|
Gs.DevApp.ToolBox.UtilityHelper.SetDefaultTable(gridControl4, gridView4);
|
}
|
}
|
else
|
ToolBox.MsgHelper.Warning("提示:" + _rtn.rtnMsg);
|
}
|
catch (Exception ex)
|
{
|
MsgHelper.Warning("提示:" + ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 取消事件
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void ToolBarMenu1_btnEscClick(object sender, EventArgs e)
|
{
|
// Gs.DevApp.ToolBox.UtilityHelper.JumpTab(xtraTabControl1, 1);
|
}
|
|
/// <summary>
|
/// 计算工资
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void ToolBarMenu1_btnGongZiClick(object sender, EventArgs e)
|
{
|
|
var _obj = new
|
{
|
date = date,
|
lineNo = lineNo
|
};
|
try
|
{
|
string strJson = UtilityHelper.HttpPost("", _webServiceName + "CountModel", JsonConvert.SerializeObject(_obj));
|
ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
|
|
if (_rtn.rtnCode > 0)
|
{
|
ToolBox.MsgHelper.ShowInformation("提示:" + _rtn.rtnMsg);
|
getPageList();
|
}
|
else
|
ToolBox.MsgHelper.ShowError("提示:" + _rtn.rtnMsg);
|
}
|
catch (Exception ex)
|
{
|
ToolBox.MsgHelper.ShowError("提示:" + ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 设置连班
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void SetLB(string time)
|
{
|
// 验证参数
|
if (string.IsNullOrEmpty(time) || !decimal.TryParse(time, out decimal addTime))
|
{
|
ToolBox.MsgHelper.ShowError("连班时长格式不正确!");
|
return;
|
}
|
|
// 获取当前 gridControl2 的数据
|
DataTable dt = gridControl2.DataSource as DataTable;
|
if (dt == null || dt.Rows.Count == 0)
|
{
|
ToolBox.MsgHelper.ShowError("没有可设置连班的数据!");
|
return;
|
}
|
|
var list = new List<object>();
|
|
// 遍历所有行,设置连班
|
foreach (DataRow row in dt.Rows)
|
{
|
if (row["GUID"] != null)
|
{
|
string guid = row["GUID"].ToString();
|
|
// 获取原始的 Hour 值并加上连班时长
|
decimal originalHour = 0;
|
if (row["Hour"] != null && decimal.TryParse(row["Hour"].ToString(), out originalHour))
|
{
|
decimal newHour = originalHour + addTime;
|
|
list.Add(new
|
{
|
GUID = guid,
|
Hour = newHour,
|
Reason = "连班"
|
});
|
}
|
}
|
}
|
|
if (list.Count == 0)
|
{
|
ToolBox.MsgHelper.ShowError("没有有效的数据可以设置连班!");
|
return;
|
}
|
|
var postObj = new
|
{
|
lineNo = lineNo,
|
date = date,
|
list = list
|
};
|
|
try
|
{
|
string strJson = UtilityHelper.HttpPost("", _webServiceName + "EditModel", JsonConvert.SerializeObject(postObj));
|
ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
|
|
if (_rtn.rtnCode > 0)
|
{
|
ToolBox.MsgHelper.ShowInformation($"连班设置成功!共设置 {list.Count} 条记录,每条增加 {addTime} 小时。");
|
getPageList();
|
|
}
|
else
|
ToolBox.MsgHelper.ShowError("连班设置失败:" + _rtn.rtnMsg);
|
}
|
catch (Exception ex)
|
{
|
ToolBox.MsgHelper.ShowError("连班设置异常:" + ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 保存原始值
|
/// </summary>
|
private void SaveOriginalValues()
|
{
|
_originalValues.Clear();
|
DataTable dt = gridControl2.DataSource as DataTable;
|
if (dt == null) return;
|
|
foreach (DataRow row in dt.Rows)
|
{
|
if (row["GUID"] != null)
|
{
|
string guid = row["GUID"].ToString();
|
_originalValues[guid] = new Dictionary<string, object>
|
{
|
["Hour"] = row["Hour"]
|
};
|
}
|
}
|
}
|
|
/// <summary>
|
/// 修改
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void ToolBarMenu1_btnEdtClick(object sender, EventArgs e)
|
{
|
// 其它需要的UI状态切换
|
//Gs.DevApp.ToolBox.UtilityHelper.JumpTab(xtraTabControl1, 3);
|
}
|
|
/// <summary>
|
/// 保存
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
|
private void ToolBarMenu1_btnSaveClick(object sender, EventArgs e)
|
{
|
// 结束编辑,确保数据已提交到DataTable
|
gridView2.CloseEditor();
|
gridView2.UpdateCurrentRow();
|
gridView2.PostEditor();
|
BindingContext[gridControl2.DataSource].EndCurrentEdit();
|
|
DataTable dt = gridControl2.DataSource as DataTable;
|
if (dt == null) return;
|
|
var list = new List<object>();
|
foreach (DataRow row in dt.Rows)
|
{
|
if (row["GUID"] != null)
|
{
|
string guid = row["GUID"].ToString();
|
|
// 检查是否有原始值记录
|
if (_originalValues.ContainsKey(guid))
|
{
|
var originalRow = _originalValues[guid];
|
object currentHour = row["Hour"];
|
object originalHour = originalRow["Hour"];
|
|
// 只比较 Hour 字段的当前值与原始值
|
bool hourChanged = !Equals(currentHour, originalHour);
|
|
if (hourChanged)
|
{
|
list.Add(new
|
{
|
GUID = guid,
|
Hour = currentHour,
|
Reason = row["Reason"]
|
});
|
}
|
}
|
}
|
}
|
|
if (list.Count == 0)
|
{
|
ToolBox.MsgHelper.ShowInformation("没有需要保存的更改。");
|
return;
|
}
|
|
var postObj = new
|
{
|
lineNo = lineNo,
|
date = date,
|
list = list
|
};
|
|
try
|
{
|
string strJson = UtilityHelper.HttpPost("", _webServiceName + "EditModel", JsonConvert.SerializeObject(postObj));
|
ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
|
if (_rtn.rtnCode > 0)
|
{
|
ToolBox.MsgHelper.ShowInformation("保存成功!");
|
getPageList();
|
toolBarMenu1.isSetBtn = true;
|
}
|
else
|
{
|
ToolBox.MsgHelper.ShowError("保存失败:" + _rtn.rtnMsg);
|
}
|
}
|
catch (Exception ex)
|
{
|
ToolBox.MsgHelper.ShowError("异常:" + ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 审核事件
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void ToolBarMenu1_btnChkClick(object sender, EventArgs e)
|
{
|
_toolCk(1);
|
}
|
|
/// <summary>
|
/// 反审核
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
/// <exception cref="NotImplementedException"></exception>
|
private void ToolBarMenu1_btnFChkClick(object sender, EventArgs e)
|
{
|
_toolCk(0);
|
}
|
|
private void _toolCk(int _inFieldValue)
|
{
|
string strMsg = "";
|
switch (_inFieldValue)
|
{
|
case 1:
|
strMsg = "审核";
|
break;
|
case 0:
|
strMsg = "反审核";
|
break;
|
}
|
;
|
toolBarMenu1.guidKey = "";
|
var _obj = new
|
{
|
lineNo = lineNo,
|
attenDate = date,
|
inFieldValue = _inFieldValue
|
};
|
try
|
{
|
var strJson = UtilityHelper.HttpPost("", _webServiceName + "EditModelSubmit",
|
JsonConvert.SerializeObject(_obj));
|
var _rtn = UtilityHelper.ReturnToDynamic(strJson);
|
if (_rtn.rtnCode > 0)
|
{
|
MsgHelper.ShowInformation(_rtn.rtnData.outMsg.ToString());
|
UtilityHelper.SetCheckIco(gridView1, "checkStatus", "checkBy", "checkDate", picCheckBox, this, _inFieldValue.ToString());
|
}
|
else
|
MsgHelper.ShowError(_rtn.rtnData.outMsg.ToString());
|
}
|
catch (Exception ex)
|
{
|
MsgHelper.ShowError("提示:" + ex.Message);
|
}
|
}
|
}
|
}
|