Beispiel #1
0
        //添加数据
        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);
            }
        }
Beispiel #2
0
        /// <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);
        }