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; } } } }