using DeviceRepair.Models;
using DeviceRepair.Models.DeviceMaintenance;
using DeviceRepair.Models.DeviceRepair.ExportView;
using DeviceRepair.Models.SFC;
using DeviceRepair.Utils;
using NLog;
using NLog.Filters;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using TsSFCDevice.Client.Biz.Base.Service;
using TsSFCDevice.Client.Biz.Base.Utils;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace TsSFCDevice.Client.Biz.Impl
{
///
/// 设备维修
///
public class MaintenanceRepository
{
private readonly Logger log;
private static MaintenanceRepository manager;
private IDictionary m_ApiParameters;
///
/// API输入参数
///
public IDictionary ApiParameters
{
get
{
return m_ApiParameters;
}
set
{
m_ApiParameters = value;
}
}
public static MaintenanceRepository Instance
{
get
{
if (manager == null)
manager = new MaintenanceRepository();
return manager;
}
}
public MaintenanceRepository()
{
log = LogManager.GetCurrentClassLogger();
m_ApiParameters = new Dictionary();
}
internal string GetParameters(string cOperator = "", bool bFlag = true)
{
return ParametersObject.GetInstance(cOperator).GetJsonSerialized(m_ApiParameters);
}
///
/// 设备维修数据
///
///
///
///
public IList GetDatas(DeviceRepair.Models.DeviceWarrantyRequestFormFilter filter)
{
try
{
byte[] btResults = null;
int[] EquipmentIds = Utility.SystemRuntimeInfo.CurrentDeviceCaches?.Select(x => x.AutoID)?.ToArray();
if (EquipmentIds == null || EquipmentIds.Length == 0)
{
return new List();
}
ApiParameters?.Clear();
ApiParameters.Add("EquipmentID", filter.EquipmentID);
ApiParameters.Add("Status", ((int)filter.Status) + "");
ApiParameters.Add("DownStatus", ((int)filter.DownStatus) + "");
if (filter.StartTime.HasValue)
{
ApiParameters.Add("StartTime", filter.StartTime.Value.ToString("yyyy-MM-dd hh:mm:ss"));
}
if (filter.EndTime.HasValue)
{
ApiParameters.Add("EndTime", filter.EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss"));
}
var Rtn = Utility.SfcBizService.CurrentSvc.GetDatas(DeviceSvc.SysModelType.Maintenance, GetParameters(), out btResults);
if (Rtn.Code != 1)
{
throw new Exception(Rtn.Message);
}
DataSet dsResults = CompressionHelper.ExactDataSet(btResults);
if (dsResults.Tables["Form"] == null)
{
return new List();
}
IList Datas = DTOHelper.DataTableToList(dsResults.Tables["Form"]);
Datas = Datas.Where(x => EquipmentIds.Contains(x.EquipmentPK))?.ToList();
IList Maintaion = DTOHelper.DataTableToList(dsResults.Tables["Maintaion"]);
IList Evals = DTOHelper.DataTableToList(dsResults.Tables["Eval"]);
Dictionary dictUser = Utility.SystemRuntimeInfo.CurrentUsersCaches?.ToDictionary(x => x.Id, x => x.UserName);
foreach (DeviceWarrantyRequestFormView item in Datas)
{
if (item.CreatBy.HasValue && dictUser.ContainsKey(item.CreatBy.Value))
{
item.CreatorName = dictUser[item.CreatBy.Value];
}
if (item.ModifyBy.HasValue && dictUser.ContainsKey(item.ModifyBy.Value))
{
item.ModifyByName = dictUser[item.ModifyBy.Value];
}
//item.RestorationConfirmationBy
if (item.RestorationConfirmationBy > 0 && dictUser.ContainsKey(item.RestorationConfirmationBy))
{
item.RestorationConfirmationOnName = dictUser[item.RestorationConfirmationBy];
}
item.MaintaionItems = Maintaion.FirstOrDefault(x => x.FormID == item.AutoID);
item.EvaluatorItems = Evals.Where(x => x.FormID == item.AutoID)?.ToList();
}
return Datas.Where(x => Utility.SystemRuntimeInfo.CurrentDeviceAutoIDCaches.Contains(x.EquipmentPK)).ToList();
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
throw ex;
}
}
///
/// 获取当前批次的QE PE邮箱
///
///
public IList SFC_Batch_PE_QE_Email(string Batch)
{
try
{
byte[] btResults = null;
ApiParameters?.Clear();
ApiParameters.Add("Batch", Batch);
var Rtn = Utility.SfcBizService.CurrentSvc.GetDatas(DeviceSvc.SysModelType.SFC_Batch_PE_QE_Email, GetParameters(), out btResults);
if (Rtn.Code != 1)
{
throw new Exception(Rtn.Message);
}
DataSet dsResults = CompressionHelper.ExactDataSet(btResults);
IList Datas = dsResults.Tables[0].Rows.Cast().Select(x => x[0] + "").ToList();
//IList Datas = dsResults.Tables[0].ToList(); DTOHelper.DataTableToList(dsResults.Tables[0]);
return Datas;
}
catch (Exception)
{
throw;
}
}
///
/// 获取维修单 维修配件列表
///
///
///
public IList GetFormAccessories(int MaintaionID)
{
try
{
byte[] btResults = null;
ApiParameters?.Clear();
ApiParameters.Add("MaintaionID", MaintaionID + "");
var Rtn = Utility.SfcBizService.CurrentSvc.GetDatas(DeviceSvc.SysModelType.MaintenanceAccessories, GetParameters(), out btResults);
if (Rtn.Code != 1)
{
throw new Exception(Rtn.Message);
}
DataSet dsResults = CompressionHelper.ExactDataSet(btResults);
IList Datas = DTOHelper.DataTableToList(dsResults.Tables[0]);
return Datas;
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
throw ex;
}
}
///
/// 设备维修单 - 设备停机状态修改
///
///
public APIResponseData Update_Maintenance_Status(int FormID, bool Status)
{
try
{
ApiParameters?.Clear();
ApiParameters.Add("FormID", FormID + "");
ApiParameters.Add("FormStatus", Status + "");
var Rtn = Utility.SfcBizService.CurrentSvc.Update_Maintenance_Status(GetParameters());
if (Rtn.Code != 1)
{
throw new Exception(Rtn.Message);
}
return new APIResponseData { Code = 1, Message = Rtn.Message };
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
throw ex;
}
}
///
/// 双重确认
///
///
/// 1:技术人员确认 2:工程师或维修主管确认
///
public APIResponseData ValidateMaintenance(int FormID, int PostID)
{
try
{
ApiParameters?.Clear();
ApiParameters.Add("FormID", FormID + "");
ApiParameters.Add("t", PostID + "");
var Rtn = Utility.SfcBizService.CurrentSvc.ADD_Maintenance_DoubleValidate(GetParameters());
if (Rtn.Code != 1)
{
throw new Exception(Rtn.Message);
}
return new APIResponseData { Code = 1, Message = Rtn.Message };
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
throw ex;
}
}
///
/// 设备维修单列表导出
///
///
///
public IList Get_Maintenance_Xlsx_Datas(DeviceRepair.Models.DeviceWarrantyRequestFormFilter filter)
{
try
{
byte[] btResults = null;
ApiParameters?.Clear();
ApiParameters.Add("EquipmentID", filter.EquipmentID);
ApiParameters.Add("Status", ((int)filter.Status) + "");
ApiParameters.Add("DownStatus", ((int)filter.DownStatus) + "");
List auths = new List();
if (Utility.SystemRuntimeInfo.AuthValidate(Utility.SystemRuntimeInfo.DEVICE_OEM))
auths.Add("OEM");
if (Utility.SystemRuntimeInfo.AuthValidate(Utility.SystemRuntimeInfo.DEVICE_KH))
auths.Add("KH");
ApiParameters.Add("Auths", string.Join(",", auths));
if (filter.StartTime.HasValue)
{
ApiParameters.Add("StartTime", filter.StartTime.Value.ToString("yyyy-MM-dd hh:mm:ss"));
}
if (filter.EndTime.HasValue)
{
ApiParameters.Add("EndTime", filter.EndTime.Value.ToString("yyyy-MM-dd hh:mm:ss"));
}
var Rtn = Utility.SfcBizService.CurrentSvc.Get_Maintenance_Xlsx_Datas(GetParameters(), out btResults);
if (Rtn.Code != 1)
{
throw new Exception(Rtn.Message);
}
DataSet dsResults = CompressionHelper.ExactDataSet(btResults);
IList Datas = DTOHelper.DataTableToList(dsResults.Tables[0]);
return Datas;
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
throw ex;
}
}
///
/// 设备维修单是否已提交
///
///
///
public bool DataBeSubmit(int FormID)
{
try
{
bool BeSubmit = false;
ApiParameters?.Clear();
ApiParameters.Add("FormID", FormID + "");
var Rtn = Utility.SfcBizService.CurrentSvc.Get_Maintenance_BeSubmit(GetParameters(), out BeSubmit);
if (Rtn.Code != 1)
{
throw new Exception(Rtn.Message);
}
return BeSubmit;
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
throw ex;
}
}
///
/// 保养数据新增
///
///
///
///
public APIResponseData Insert(DeviceRepair.Models.DeviceMaintenance.DeviceWarrantyRequestMaintaionInfo Entity, List AccessoriesItems, bool beSubmit = false)
{
try
{
ApiParameters?.Clear();
ApiParameters.Add("IsSubmit", beSubmit + "");
DataSet DataContent = new DataSet();
DataTable table = (new List { Entity }).ToDataTable();
table.TableName = "Maintaion";
DataTable table2 = AccessoriesItems.ToDataTable();
table2.TableName = "Accessories";
DataContent.Tables.Add(table);
DataContent.Tables.Add(table2);
var apiResponseData = Utility.SfcBizService.CurrentSvc.Insert_Maintenance_Data(GetParameters(), DataContent);
if (apiResponseData.Code != 1)
{
return new APIResponseData { Code = -1, Message = apiResponseData.Message };
}
return new APIResponseData { Code = 1 };
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
throw ex;
}
}
///
/// 判断当前账户是否PE QE
///
///
public int CurrentIsManager()
{
try
{
ApiParameters?.Clear();
ApiParameters.Add("UserCode", Utility.SystemRuntimeInfo.CurrentUser.UserCode);
int PostType = -1;
var Rtn = Utility.SfcBizService.CurrentSvc.Get_CurrentIsManager(GetParameters(), out PostType);
if (Rtn.Code != 1)
{
throw new Exception(Rtn.Message);
}
return PostType;
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
throw ex;
}
}
///
/// 停机单 - 评估
///
///
///
public APIResponseData DownFormAssessment(DeviceRepair.Models.DeviceWarrantyEvaluatorInfo Evaluator)
{
try
{
ApiParameters?.Clear();
ApiParameters.Add("OPERATORNAME", Utility.SystemRuntimeInfo.CurrentUser.UserName);
DataTable table = (new List { Evaluator }).ToDataTable();
var apiResponseData = Utility.SfcBizService.CurrentSvc.ADD_DownFormAssessment(GetParameters(), table);
if (apiResponseData.Code != 1)
{
return new APIResponseData { Code = -1, Message = apiResponseData.Message };
}
return new APIResponseData { Code = 1 };
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
throw ex;
}
}
///
/// 生产部门 - 设备恢复确认
///
///
///
public APIResponseData DeviceResumptionComfirm(int AutoID)
{
try
{
ApiParameters?.Clear();
ApiParameters.Add("AutoID", AutoID + "");
ApiParameters.Add("OPERATORNAME", Utility.SystemRuntimeInfo.CurrentUser.UserName);
var apiResponseData = Utility.SfcBizService.CurrentSvc.DeviceResumptionComfirm(GetParameters());
if (apiResponseData.Code != 1)
{
return new APIResponseData { Code = -1, Message = apiResponseData.Message };
}
return new APIResponseData { Code = 1 };
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
throw ex;
}
}
///
/// 停机单新增
///
///
///
///
public APIResponseData ADD_DeviceDownForm_DATA(DeviceWarrantyRequestFormInfo Form, out int AutoID)
{
AutoID = 0;
try
{
ApiParameters?.Clear();
ApiParameters.Add("OPERATORNAME", Utility.SystemRuntimeInfo.CurrentUser.UserName);
DataTable table = (new List { Form }).ToDataTable();
var apiResponseData = Utility.SfcBizService.CurrentSvc.ADD_DeviceDownForm_DATA(GetParameters(), table, out AutoID);
if (apiResponseData.Code != 1)
{
return new APIResponseData { Code = -1, Message = apiResponseData.Message };
}
return new APIResponseData { Code = 1 };
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
throw ex;
}
}
}
}