2024-05-28 14:36:38 +00:00
|
|
|
|
using DevExpress.XtraEditors;
|
|
|
|
|
using DevExpress.XtraEditors.Controls;
|
|
|
|
|
using DevExpress.XtraSplashScreen;
|
|
|
|
|
using DeviceRepair.Models;
|
|
|
|
|
using DeviceRepairAndOptimization.Biz;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using DeviceRepairAndOptimization.Common;
|
|
|
|
|
|
|
|
|
|
namespace DeviceRepairAndOptimization.Pages.Plan
|
|
|
|
|
{
|
|
|
|
|
public partial class page_PlanEdit : Form
|
|
|
|
|
{
|
|
|
|
|
private AnnualMaintenancePlan DataSource;
|
|
|
|
|
|
|
|
|
|
private string OperationType = "修改";
|
|
|
|
|
|
|
|
|
|
List<ComboBoxEdit> controlLst = new List<ComboBoxEdit>();
|
|
|
|
|
|
|
|
|
|
public page_PlanEdit(AnnualMaintenancePlan view)
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
controlLst = GetControlsInfo(this);
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(view.DisplayEquipmentID))
|
|
|
|
|
{
|
|
|
|
|
OperationType = "新增";
|
|
|
|
|
DataSource = new AnnualMaintenancePlan();
|
|
|
|
|
txt_EquipmentID.ReadOnly = false;
|
|
|
|
|
txt_DeviceName.ReadOnly = true;
|
|
|
|
|
tp_StartMonth.Value = DateTime.Today;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
APIResponseData r = PlanManager.Instance.GetPlanRecordProgress(view.EquipmentID, view.MaintenanceYear);
|
|
|
|
|
if (r.IsSuccess)
|
|
|
|
|
{
|
|
|
|
|
List<PlanProgress> progList = r.ToDeserializeObject<List<PlanProgress>>();
|
|
|
|
|
if (progList != null && progList.Count > 0)
|
|
|
|
|
{
|
2024-07-01 16:52:48 +00:00
|
|
|
|
txt_EquipmentID.Enabled = false;
|
|
|
|
|
foreach (EditorButton item in txt_EquipmentID.Properties.Buttons)
|
|
|
|
|
{
|
|
|
|
|
item.Enabled = false;
|
|
|
|
|
}
|
2024-05-28 14:36:38 +00:00
|
|
|
|
|
|
|
|
|
foreach (PlanProgress item in progList)
|
|
|
|
|
{
|
|
|
|
|
Control con = controlLst.FirstOrDefault(x => string.Equals(x.Properties.Tag + "", item.PlanMonth + ""));
|
|
|
|
|
if (con != null)
|
|
|
|
|
con.Enabled = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DataSource = view;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 历遍指定窗体类的所有控件
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="AllControl">窗体类控件集合</param>
|
|
|
|
|
private List<ComboBoxEdit> GetControlsInfo(Control AllControl)
|
|
|
|
|
{
|
|
|
|
|
List<ComboBoxEdit> cbe = new List<ComboBoxEdit>();
|
|
|
|
|
foreach (Control con in AllControl.Controls)
|
|
|
|
|
{
|
|
|
|
|
//如果查找到的控件数量大于0,则说明是容器控件,需要将容器作为控件集合进行递归查找
|
|
|
|
|
if (con.Controls.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
cbe.AddRange(GetControlsInfo(con));//针对容器控 件递归查找 (自己调用自己)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//根据对应的控件类型进行相应的数据提取操作
|
|
|
|
|
if (con is ComboBoxEdit)
|
|
|
|
|
cbe.Add((ComboBoxEdit)con);
|
|
|
|
|
}
|
|
|
|
|
return cbe;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DataBind()
|
|
|
|
|
{
|
2024-06-10 17:33:11 +00:00
|
|
|
|
APIResponseData r = PlanManager.Instance.GetPlanRecordProgress(DataSource.EquipmentID, DataSource.MaintenanceYear);
|
|
|
|
|
if (r.IsSuccess)
|
2024-05-28 14:36:38 +00:00
|
|
|
|
{
|
2024-06-10 17:33:11 +00:00
|
|
|
|
List<PlanProgress> progList = r.ToDeserializeObject<List<PlanProgress>>();
|
|
|
|
|
if (progList != null && progList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
foreach (PlanProgress item in progList)
|
|
|
|
|
{
|
|
|
|
|
Control con = controlLst.FirstOrDefault(x => string.Equals(x.Properties.Tag + "", item.PlanMonth + ""));
|
|
|
|
|
if (con != null)
|
|
|
|
|
con.Enabled = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-05-28 14:36:38 +00:00
|
|
|
|
}
|
2024-06-10 17:33:11 +00:00
|
|
|
|
|
|
|
|
|
//foreach (EditorButton item in txt_EquipmentID.Properties.Buttons)
|
|
|
|
|
//{
|
|
|
|
|
// item.Enabled = false;
|
|
|
|
|
//}
|
2024-05-28 14:36:38 +00:00
|
|
|
|
txt_EquipmentID.Text = DataSource.DisplayEquipmentID;
|
|
|
|
|
txt_DeviceName.Text = DataSource.EquipmentName;
|
|
|
|
|
ck_Jan.SelectedItem = DataSource.Jan;
|
|
|
|
|
ck_Feb.SelectedItem = DataSource.Feb;
|
|
|
|
|
ck_Mar.SelectedItem = DataSource.Mar;
|
|
|
|
|
ck_Apr.SelectedItem = DataSource.Apr;
|
|
|
|
|
ck_May.SelectedItem = DataSource.May;
|
|
|
|
|
ck_Jun.SelectedItem = DataSource.Jun;
|
|
|
|
|
ck_Jul.SelectedItem = DataSource.Jul;
|
|
|
|
|
ck_Aug.SelectedItem = DataSource.Aug;
|
|
|
|
|
ck_Sep.SelectedItem = DataSource.Sep;
|
|
|
|
|
ck_Oct.SelectedItem = DataSource.Oct;
|
|
|
|
|
ck_Nov.SelectedItem = DataSource.Nov;
|
|
|
|
|
ck_Dec.SelectedItem = DataSource.Dec;
|
2024-06-05 17:09:59 +00:00
|
|
|
|
tp_StartMonth.Value = string.IsNullOrEmpty(DataSource.PMStartMonth) ? DateTime.Today : Convert.ToDateTime(DataSource.PMStartMonth);
|
2024-05-28 14:36:38 +00:00
|
|
|
|
txt_Remark.Text = DataSource.Remarks;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btn_Cancel_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.DialogResult = DialogResult.Cancel;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btn_Submit_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (ValidateData())
|
|
|
|
|
{
|
|
|
|
|
if (txt_Remark.Text.Length > 2000)
|
|
|
|
|
{
|
|
|
|
|
XtraMessageBoxHelper.Error($"备注信息过长,请勿超过2000字!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SplashScreenManager.ShowDefaultWaitForm("数据正在提交", "请稍等...");
|
|
|
|
|
|
|
|
|
|
#region 实体创建
|
|
|
|
|
List<DriveMaintencePlanInfo> lst2 = new List<DriveMaintencePlanInfo>();
|
|
|
|
|
foreach (ComboBoxEdit item in controlLst)
|
|
|
|
|
{
|
|
|
|
|
if (!item.Enabled)
|
|
|
|
|
continue;
|
|
|
|
|
DriveMaintencePlanInfo planItem = new DriveMaintencePlanInfo();
|
|
|
|
|
planItem.Remarks = txt_Remark.Text;
|
|
|
|
|
planItem.EquipmentID = DataSource.EquipmentID;
|
|
|
|
|
planItem.MaintenanceMonth = (int)item.Properties.Tag;
|
|
|
|
|
planItem.MaintenanceType = item.SelectedItem + "";
|
|
|
|
|
planItem.MaintenanceYear = DataSource.MaintenanceYear;
|
|
|
|
|
planItem.PMStartMonth = tp_StartMonth.Value;
|
|
|
|
|
lst2.Add(planItem);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
APIResponseData apiResponseData = PlanManager.Instance.InsertDatas(lst2);
|
|
|
|
|
if (apiResponseData.IsSuccess)
|
|
|
|
|
{
|
|
|
|
|
// 关闭等待窗口
|
|
|
|
|
SplashScreenManager.CloseDefaultWaitForm();
|
|
|
|
|
DialogResult = DialogResult.OK;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// 关闭等待窗口
|
|
|
|
|
SplashScreenManager.CloseDefaultWaitForm();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
XtraMessageBox.Show(ex.Message, "出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
this.DialogResult = DialogResult.Abort;
|
|
|
|
|
}
|
|
|
|
|
this.DialogResult = DialogResult.OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void page_PlanEdit_Load(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(DataSource.DisplayEquipmentID))
|
|
|
|
|
DataBind();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txt_EquipmentID_ButtonClick(object sender, ButtonPressedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (e.Button.Caption.Equals("确定"))
|
|
|
|
|
{
|
|
|
|
|
QueryEquipmentData();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
txt_EquipmentID.ReadOnly = false;
|
|
|
|
|
txt_EquipmentID.Text = "";
|
|
|
|
|
txt_DeviceName.Text = "";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void txt_EquipmentID_KeyDown(object sender, KeyEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (e.KeyCode == Keys.Enter)
|
|
|
|
|
{
|
|
|
|
|
QueryEquipmentData();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void QueryEquipmentData()
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(txt_EquipmentID.Text))
|
|
|
|
|
{
|
|
|
|
|
splashScreenManager1.ShowWaitForm();
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
2024-07-22 07:50:10 +00:00
|
|
|
|
APIResponseData apiResponseData = Biz.DeviceManager.Instance.GetModelByEquipmentID(txt_EquipmentID.Text.Trim());
|
2024-05-28 14:36:38 +00:00
|
|
|
|
if (!apiResponseData.IsSuccess)
|
|
|
|
|
throw new Exception(apiResponseData.Message);
|
|
|
|
|
DeviceInformationInfo dim = apiResponseData.ToDeserializeObject<DeviceInformationInfo>();
|
|
|
|
|
if (dim == null)
|
|
|
|
|
{
|
|
|
|
|
string eid = txt_EquipmentID.Text;
|
|
|
|
|
txt_EquipmentID.Text = "";
|
|
|
|
|
txt_DeviceName.Text = "";
|
|
|
|
|
splashScreenManager1.TryCloseWait();
|
|
|
|
|
XtraMessageBoxHelper.Warn($"当前设备编号:{eid}不存在!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2024-06-10 17:33:11 +00:00
|
|
|
|
// List<AnnualMaintenancePlan> vps = PlanManager.Instance.GetDatas();
|
|
|
|
|
// AnnualMaintenancePlan vp = vps.FirstOrDefault(x => x.MaintenanceYear == DataSource.MaintenanceYear && x.EquipmentID == dim.AutoID);
|
2024-05-28 14:36:38 +00:00
|
|
|
|
AnnualMaintenancePlan vp = PlanManager.Instance.GetPlanByEquipmentPkAndYear(DataSource.MaintenanceYear, dim.AutoID);
|
|
|
|
|
if (vp != null)
|
|
|
|
|
{
|
|
|
|
|
splashScreenManager1.TryCloseWait();
|
|
|
|
|
if (XtraMessageBox.Show($"当前年度下设备编号:{dim.EquipmentID}的设备已经存在计划,是否转到编辑?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes)
|
|
|
|
|
{
|
|
|
|
|
DataSource = vp;
|
|
|
|
|
txt_EquipmentID.Enabled = false;
|
|
|
|
|
DataBind();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
txt_EquipmentID.ReadOnly = false;
|
|
|
|
|
txt_EquipmentID.Text = "";
|
|
|
|
|
txt_DeviceName.Text = "";
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
txt_EquipmentID.Text = dim.EquipmentID;
|
|
|
|
|
txt_DeviceName.Text = dim.EquipmentName;
|
|
|
|
|
DataSource.DisplayEquipmentID = dim.EquipmentID;
|
|
|
|
|
DataSource.EquipmentID = dim.AutoID;
|
|
|
|
|
DataSource.EquipmentName = dim.EquipmentName;
|
|
|
|
|
txt_EquipmentID.ReadOnly = true;
|
|
|
|
|
ck_Jan.Focus();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
splashScreenManager1.TryCloseWait();
|
|
|
|
|
XtraMessageBoxHelper.Error(ex.Message);
|
|
|
|
|
}
|
|
|
|
|
splashScreenManager1.TryCloseWait();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool ValidateData()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrWhiteSpace(DataSource.DisplayEquipmentID) || string.IsNullOrWhiteSpace(DataSource.EquipmentName))
|
|
|
|
|
{
|
|
|
|
|
dxErrorProvider1.SetError(txt_EquipmentID, "设备信息不允许为空!");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
dxErrorProvider1.SetError(txt_EquipmentID, "");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|