public bool AddMesData(MES_StationDataRecord MesInfo) { try { //插入数据前判断是否重复-- //var result = MesDataSyncRepository.GetAll().Where(p => p.Date == MesInfo.Date && p.TimeInterVal == MesInfo.TimeInterVal && p.StartTimeInterval == MesInfo.StartTimeInterval && p.EndTimeInterval == MesInfo.EndTimeInterval && p.PIS_ProcessID == MesInfo.PIS_ProcessID); var result = MesDataSyncRepository.Is_MES_Exist(MesInfo); //更新 if (result) { //result.FirstOrDefault().ProductQuantity = MesInfo.ProductQuantity; //MesDataSyncRepository.Update(MesInfo); return(MesDataSyncRepository.UpData_MESByID(MesInfo)); //unitOfWork.Commit(); } else//增加 { //MES_StationDataRecord dto = AutoMapper.Mapper.Map<MES_StationDataRecord>(MesInfo); MesDataSyncRepository.Add(MesInfo); unitOfWork.Commit(); return(true); } } catch (Exception ex) { return(false); } }
//添加数据 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); } }
//添加数据 public static void AddMES_PIS(MesDataSyncService mes_Service, List <MES_StationDataRecordDTO> mesDataList, List <ProcessIDTransformConfigDTO> pisConfigList, CurentTimeModel CurrentDate, MesRequestParamModel mesRequest) { var isSendEMail = false; var isAddFailRecord = false; try { var resultModelList = new List <MES_StationDataRecordDTO>(); var convertModel = mesDataList.GroupBy(p => new { p.MES_ProcessID, p.Color }).ToDictionary(p => p.Key, m => m); var mesPickIngConfigList = pisConfigList.Select(m => new { m.PIS_ProcessID, m.PIS_ProcessName, m.MES_PickingID, m.Color }).ToList(); var mesNgConfigList = pisConfigList.Select(m => new { m.PIS_ProcessID, m.PIS_ProcessName, m.MES_NgID, m.Color }).ToList(); var mesReworkConfigList = pisConfigList.Select(m => new { m.PIS_ProcessID, m.PIS_ProcessName, m.MES_ReworkID, m.Color }).ToList(); var mesGoodProductConfigList = pisConfigList.Select(m => new { m.PIS_ProcessID, m.PIS_ProcessName, m.MES_GoodProductID, m.Color }).ToList(); //筛选领料--待商议 var AllPickIngModel = convertModel.Where(p => mesPickIngConfigList.Where(m => m.MES_PickingID == p.Key.MES_ProcessID && m.Color == p.Key.Color).Count() > 0); var AllGoodProductModel = convertModel.Where(p => mesGoodProductConfigList.Where(m => m.MES_GoodProductID == p.Key.MES_ProcessID && m.Color == p.Key.Color).Count() > 0); var AllNgModel = convertModel.Where(p => mesNgConfigList.Where(m => m.MES_NgID == p.Key.MES_ProcessID && m.Color == p.Key.Color).Count() > 0); var AllReworkModel = convertModel.Where(p => mesReworkConfigList.Where(m => m.MES_ReworkID == p.Key.MES_ProcessID && m.Color == p.Key.Color).Count() > 0); //Pick foreach (var item in AllPickIngModel) { isAddFailRecord = true; MES_StationDataRecord AddPisModel = new MES_StationDataRecord(); var pisPickConfigModel = mesPickIngConfigList.Where(p => p.MES_PickingID == item.Key.MES_ProcessID && p.Color == item.Key.Color).FirstOrDefault(); AddPisModel.Date = CurrentDate.CurrentDay; AddPisModel.TimeInterVal = CurrentDate.CurrentInterval; AddPisModel.StartTimeInterval = CurrentDate.CurrentStartMinute; AddPisModel.EndTimeInterval = CurrentDate.CurrentEndMinute; AddPisModel.PIS_ProcessID = pisPickConfigModel.PIS_ProcessID; AddPisModel.PIS_ProcessName = pisPickConfigModel.PIS_ProcessName; AddPisModel.MES_ProcessID = item.Key.MES_ProcessID; AddPisModel.MES_ProcessName = item.Value.FirstOrDefault().MES_ProcessName; 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; } } //GoodProduct foreach (var item in AllGoodProductModel) { isAddFailRecord = true; MES_StationDataRecord AddPisModel = new MES_StationDataRecord(); var pisPickConfigModel = mesGoodProductConfigList.Where(p => p.MES_GoodProductID == item.Key.MES_ProcessID && p.Color == item.Key.Color).FirstOrDefault(); AddPisModel.Date = CurrentDate.CurrentDay; AddPisModel.TimeInterVal = CurrentDate.CurrentInterval; AddPisModel.StartTimeInterval = CurrentDate.CurrentStartMinute; AddPisModel.EndTimeInterval = CurrentDate.CurrentEndMinute; AddPisModel.PIS_ProcessID = pisPickConfigModel.PIS_ProcessID; AddPisModel.PIS_ProcessName = pisPickConfigModel.PIS_ProcessName; AddPisModel.MES_ProcessID = item.Key.MES_ProcessID; AddPisModel.MES_ProcessName = item.Value.FirstOrDefault().MES_ProcessName; AddPisModel.ProductQuantity = item.Value.Count(); AddPisModel.ProjectName = mesRequest.CustomerIDString; AddPisModel.ProcessType = "PIS-GP"; var result = mes_Service.AddMesData(AddPisModel); if (!result) { isSendEMail = true; } } //NG foreach (var item in AllNgModel) { isAddFailRecord = true; MES_StationDataRecord AddPisModel = new MES_StationDataRecord(); var pisNgConfigModel = mesNgConfigList.Where(p => p.MES_NgID == item.Key.MES_ProcessID && p.Color == item.Key.Color).FirstOrDefault(); AddPisModel.Date = CurrentDate.CurrentDay; AddPisModel.TimeInterVal = CurrentDate.CurrentInterval; AddPisModel.StartTimeInterval = CurrentDate.CurrentStartMinute; AddPisModel.EndTimeInterval = CurrentDate.CurrentEndMinute; AddPisModel.PIS_ProcessID = pisNgConfigModel.PIS_ProcessID; AddPisModel.PIS_ProcessName = pisNgConfigModel.PIS_ProcessName; AddPisModel.MES_ProcessID = item.Key.MES_ProcessID; AddPisModel.MES_ProcessName = item.Value.FirstOrDefault().MES_ProcessName; 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; } } //Rework foreach (var item in AllReworkModel) { isAddFailRecord = true; MES_StationDataRecord AddPisModel = new MES_StationDataRecord(); var pisReworkConfigModel = mesReworkConfigList.Where(p => p.MES_ReworkID == item.Key.MES_ProcessID && p.Color == item.Key.Color).FirstOrDefault(); AddPisModel.Date = CurrentDate.CurrentDay; AddPisModel.TimeInterVal = CurrentDate.CurrentInterval; AddPisModel.StartTimeInterval = CurrentDate.CurrentStartMinute; AddPisModel.EndTimeInterval = CurrentDate.CurrentEndMinute; AddPisModel.PIS_ProcessID = pisReworkConfigModel.PIS_ProcessID; AddPisModel.PIS_ProcessName = pisReworkConfigModel.PIS_ProcessName; AddPisModel.MES_ProcessID = item.Key.MES_ProcessID; AddPisModel.MES_ProcessName = item.Value.FirstOrDefault().MES_ProcessName; AddPisModel.ProductQuantity = item.Value.Count(); AddPisModel.ProjectName = mesRequest.CustomerIDString; AddPisModel.ProcessType = "PIS-ReWork"; var result = mes_Service.AddMesData(AddPisModel); if (!result) { isSendEMail = true; } } if (isAddFailRecord) { //发邮件记日志 if (isSendEMail) { AddMESSyncFailedLog("MES_PIS", "MES数据自动同步", mesRequest); } } else { AddLog("无数据", "没有获取到对应配置的数据", mesRequest); } } catch (Exception ex) { AddLog("Failed", "AddPIS", mesRequest); } }