//添加数据 public bool AddMES_PIS(int uid, List <MES_StationDataRecordDTO> mesDataList, CurentTimeModel CurrentDate, MesRequestParamModel mesRequest) { //是否发邮件 var isSendEMail = false; var isAddFailRecord = false; try { var pisConfigList = _process_Service.GetSyscProcessConfig(); var resultModelList = new List <MES_StationDataRecordDTO>(); var convertModel = mesDataList.GroupBy(p => p.MES_ProcessName).ToDictionary(p => p.Key, m => m); //筛选领料--待商议 var AllPickIngModel = convertModel.Where(p => pisConfigList.Select(m => m.MES_PickingID).Contains(p.Key)); var AllNgModel = convertModel.Where(p => pisConfigList.Select(m => m.MES_NgID).Contains(p.Key)); var AllReworkModel = convertModel.Where(p => pisConfigList.Select(m => m.MES_ReworkID).Contains(p.Key)); foreach (var item in AllNgModel) { isAddFailRecord = true; MES_StationDataRecord AddPisModel = new MES_StationDataRecord(); AddPisModel.Date = CurrentDate.CurrentDay; AddPisModel.TimeInterVal = CurrentDate.CurrentInterval; AddPisModel.StartTimeInterval = CurrentDate.CurrentStartMinute; AddPisModel.EndTimeInterval = CurrentDate.CurrentEndMinute; AddPisModel.PIS_ProcessID = pisConfigList.Where(p => p.MES_NgID == item.Key).FirstOrDefault().PIS_ProcessID; AddPisModel.PIS_ProcessName = pisConfigList.Where(p => p.MES_NgID == item.Key).FirstOrDefault().PIS_ProcessName; AddPisModel.MES_ProcessID = item.Value.FirstOrDefault().MES_ProcessID; AddPisModel.MES_ProcessName = item.Key; AddPisModel.ProductQuantity = item.Value.Count(); AddPisModel.ProjectName = mesRequest.CustomerIDString; AddPisModel.ProcessType = "PIS-NG"; //resultModelList.Add(AddPisModel); var result = _mes_Service.AddMesData(AddPisModel); if (!result) { isSendEMail = true; //AddMESSyncFailedLog("Failed", "AddPIS", mesRequest); } } foreach (var item in AllReworkModel) { isAddFailRecord = true; MES_StationDataRecord AddPisModel = new MES_StationDataRecord(); AddPisModel.Date = CurrentDate.CurrentDay; AddPisModel.TimeInterVal = CurrentDate.CurrentInterval; AddPisModel.StartTimeInterval = CurrentDate.CurrentStartMinute; AddPisModel.EndTimeInterval = CurrentDate.CurrentEndMinute; AddPisModel.PIS_ProcessID = pisConfigList.Where(p => p.MES_ReworkID == item.Key).FirstOrDefault().PIS_ProcessID; AddPisModel.PIS_ProcessName = pisConfigList.Where(p => p.MES_ReworkID == item.Key).FirstOrDefault().PIS_ProcessName; AddPisModel.MES_ProcessID = item.Value.FirstOrDefault().MES_ProcessID; AddPisModel.MES_ProcessName = item.Key; AddPisModel.ProductQuantity = item.Value.Count(); AddPisModel.ProjectName = mesRequest.CustomerIDString; AddPisModel.ProcessType = "PIS-ReWork"; var result = _mes_Service.AddMesData(AddPisModel); if (!result) { isSendEMail = true; //AddLog("Failed", "AddPIS", mesRequest); //AddMESSyncFailedLog("Failed", "AddPIS", mesRequest); } } foreach (var item in AllPickIngModel) { isAddFailRecord = true; MES_StationDataRecord AddPisModel = new MES_StationDataRecord(); AddPisModel.Date = CurrentDate.CurrentDay; AddPisModel.TimeInterVal = CurrentDate.CurrentInterval; AddPisModel.StartTimeInterval = CurrentDate.CurrentStartMinute; AddPisModel.EndTimeInterval = CurrentDate.CurrentEndMinute; AddPisModel.PIS_ProcessID = pisConfigList.Where(p => p.MES_PickingID == item.Key).FirstOrDefault().PIS_ProcessID; AddPisModel.PIS_ProcessName = pisConfigList.Where(p => p.MES_PickingID == item.Key).FirstOrDefault().PIS_ProcessName; AddPisModel.MES_ProcessID = item.Value.FirstOrDefault().MES_ProcessID; AddPisModel.MES_ProcessName = item.Key; AddPisModel.ProductQuantity = item.Value.Count(); AddPisModel.ProjectName = mesRequest.CustomerIDString; AddPisModel.ProcessType = "PIS-PICK"; //resultModelList.Add(AddPisModel); var result = _mes_Service.AddMesData(AddPisModel); if (!result) { isSendEMail = true; //AddLog("Failed", "AddPIS", mesRequest); //AddMESSyncFailedLog("Failed", "AddPIS", mesRequest); } } //手动同步失败更新状态和失败次数 if (isAddFailRecord) { if (isSendEMail) { UpdateSyncFailedLog("MES_PIS", "MES数据手动同步", false, uid, mesRequest); } else { UpdateSyncFailedLog("MES_PIS", "MES数据手动同步", true, uid, mesRequest); } } //有数据同步成功 if (isAddFailRecord && !isSendEMail) { return(true); } else { return(false); } } catch (Exception ex) { _LogService.AddLog(new LogMessageRecord() { LogType = "手动同步-异常", LogName = "手动同步异常", LogMessage = ex.Message.ToString(), LogTime = DateTime.Now, LogRemark = "添加_MES_StationDataRecord" }); return(false); } }
/// <summary> /// 返回当前时间的日期,时段,开始10分钟,结束10分钟 /// </summary> /// <param name="currentDate"></param> /// <returns></returns> public CurentTimeModel GetCurrentTime(DateTime currentDate) { var minute = currentDate.Minute; var currentDay = currentDate.ToString("yyyy/MM/dd"); var timeInterval = currentDate.AddHours(+0.5); var currentHour = currentDate.Hour / 2.0; //判断当前时间的时段 var resultCurrentInterval = string.Empty; var resultStartTime = 0; var resultStartTimeSrt = string.Empty; var resultEndHour = 0; var resultEndHourSrt = string.Empty; for (int i = 0; i <= 12; i++) { if (currentHour >= i & currentHour < i + 1) { resultStartTime = i * 2; break; } } resultEndHour = resultStartTime + 2; //补齐 开始时段"08:00-10:00" if (resultStartTime.ToString().Length == 1) { resultStartTimeSrt = "0" + resultStartTime.ToString(); } else { resultStartTimeSrt = resultStartTime.ToString(); } //补齐 结束时段"08:00-10:00" if (resultEndHour.ToString().Length == 1) { resultEndHourSrt = "0" + resultEndHour.ToString(); } else { resultEndHourSrt = resultEndHour.ToString(); } resultCurrentInterval = resultStartTimeSrt + ":00" + "-" + resultEndHourSrt + ":00"; //当前的分钟数 var currentMinute = minute / 10; currentMinute = currentMinute * 10; var currentStartMinute = currentMinute; var currentEndMinute = currentMinute + 10; var currentStartMinuteStr = string.Empty; var currentEndMinuteStr = string.Empty; if (currentEndMinute >= 60) { currentStartMinuteStr = currentDate.ToString("yyyy/MM/dd HH:50"); currentEndMinuteStr = currentDate.AddHours(1).ToString("yyyy/MM/dd HH:00"); } else if (currentStartMinute == 0) { currentStartMinuteStr = currentDate.ToString("yyyy/MM/dd HH:00"); currentEndMinuteStr = currentDate.ToString("yyyy/MM/dd HH:10"); } else { currentStartMinuteStr = currentDate.ToString("yyyy/MM/dd HH:") + currentStartMinute.ToString(); currentEndMinuteStr = currentDate.ToString("yyyy/MM/dd HH:") + currentEndMinute.ToString(); } CurentTimeModel resultModel = new CurentTimeModel { CurrentDay = currentDay, CurrentInterval = resultCurrentInterval, CurrentStartMinute = currentStartMinuteStr, CurrentEndMinute = currentEndMinuteStr }; return(resultModel); }