Browse Source

Merge pull request '修改mu为统计昨天的数据' (#357) from feature_report into develop

Reviewed-on: http://101.201.121.115:3000/leo/LAPP_GAAS_GFrame_BACKEND/pulls/357
Reviewed-by: weichenglei <chenglei.wei@le-it.com.cn>
pull/358/head
weichenglei 3 years ago
parent
commit
067f37aef6
1 changed files with 148 additions and 18 deletions
  1. +148
    -18
      services/report/implments/FilterDataInfo.service.impl.go

+ 148
- 18
services/report/implments/FilterDataInfo.service.impl.go View File

@ -327,10 +327,18 @@ func (impl *FilterDataInfoServiceImplement) GetDisplayData() (result []model.AWM
workShiftDao := baseDal.NewWorkShiftDAO(localSession, baseModel.PlantNr, user)
todayString := time.Now().Format(grmi.DateOutFormat)
today, _ := time.ParseInLocation(grmi.DateOutFormat, time.Now().Format(grmi.DateOutFormat), utils.TimezoneLocation)
yesterday, err := time.ParseInLocation(grmi.DateOutFormat, time.Now().AddDate(0, 0, -1).Format(grmi.DateOutFormat), utils.TimezoneLocation)
if err != nil {
return nil, err
}
todayBegin, err := time.ParseInLocation(grmi.DateOutFormat, time.Now().Format(grmi.DateOutFormat), utils.TimezoneLocation)
if err != nil {
return nil, err
}
yesterdayBegin, err := time.ParseInLocation(grmi.DateOutFormat, time.Now().AddDate(0, 0, -1).Format(grmi.DateOutFormat), utils.TimezoneLocation)
if err != nil {
return nil, err
}
//todayBegin, err := time.ParseInLocation(grmi.DateOutFormat, "2021-06-12", utils.TimezoneLocation)
//if err != nil {
// return nil, err
@ -397,7 +405,10 @@ func (impl *FilterDataInfoServiceImplement) GetDisplayData() (result []model.AWM
if workPlace == nil {
return nil, grmi.NewBusinessError("该工位不存在")
}
// 获取今天和昨天的日模型
var dayModelNr int
var yesterdayModelNr int
if workPlace.WorkCalendarNr != 0 {
workCalendar, err := calendarHeadDao.SelectOne(workPlace.WorkCalendarNr)
if err != nil {
@ -413,10 +424,16 @@ func (impl *FilterDataInfoServiceImplement) GetDisplayData() (result []model.AWM
for _, calendar := range calendarLstLi {
if calendar.WorkDate.Restore().Equal(today) {
dayModelNr = calendar.DayModelNr
} else if calendar.WorkDate.Restore().Equal(yesterday) {
yesterdayModelNr = calendar.DayModelNr
}
if dayModelNr != 0 && yesterdayModelNr != 0 {
break
}
}
}
var weekModelLstLi []baseModel.WeekModelLst
if dayModelNr == 0 {
weekModel, err := weekModelHeadDao.SelectOne(workPlace.WeekModelNr)
if err != nil {
@ -425,8 +442,8 @@ func (impl *FilterDataInfoServiceImplement) GetDisplayData() (result []model.AWM
if weekModel == nil {
return nil, grmi.NewBusinessError("不存在工位对应的周模型")
}
weekModelLstLi, err := weekModelLstDao.Select([]grmi.Predicate{baseMeta.WeekModelLst_WeekModelNr.NewPredicate(grmi.Equal, weekModel.WeekModelNr)}, []grmi.Field{baseMeta.WeekModelLst_WorkDate})
weekDay := time.Now().Weekday()
weekModelLstLi, err = weekModelLstDao.Select([]grmi.Predicate{baseMeta.WeekModelLst_WeekModelNr.NewPredicate(grmi.Equal, weekModel.WeekModelNr)}, []grmi.Field{baseMeta.WeekModelLst_WorkDate})
weekDay := today.Weekday()
for _, weekModelLst := range weekModelLstLi {
if weekDay == weekModelLst.WorkDate.Restore().Weekday() {
dayModelNr = weekModelLst.DayModelNr
@ -434,25 +451,110 @@ func (impl *FilterDataInfoServiceImplement) GetDisplayData() (result []model.AWM
}
}
}
if dayModelNr == 0 {
return nil, grmi.NewBusinessError("为获取到该工位的日模型主数据")
if yesterdayModelNr == 0 {
weekModel, err := weekModelHeadDao.SelectOne(workPlace.WeekModelNr)
if err != nil {
return nil, err
}
if weekModel == nil {
return nil, grmi.NewBusinessError("不存在工位对应的周模型")
}
if weekModelLstLi == nil {
weekModelLstLi, err = weekModelLstDao.Select([]grmi.Predicate{baseMeta.WeekModelLst_WeekModelNr.NewPredicate(grmi.Equal, weekModel.WeekModelNr)}, []grmi.Field{baseMeta.WeekModelLst_WorkDate})
}
weekDay := yesterday.Weekday()
for _, weekModelLst := range weekModelLstLi {
if weekDay == weekModelLst.WorkDate.Restore().Weekday() {
yesterdayModelNr = weekModelLst.DayModelNr
break
}
}
}
if dayModelNr == 0 || yesterdayModelNr == 0{
return nil, grmi.NewBusinessError("未获取到该工位的日模型主数据")
}
dayModel, err := dayModelDao.SelectOne(dayModelNr)
if err != nil {
return nil, err
}
if dayModel == nil {
return nil, grmi.NewBusinessError("为获取到该工位的日模型主数据")
return nil, grmi.NewBusinessError("未获取到该工位的今天日模型主数据")
}
yesterdayModel, err := dayModelDao.SelectOne(yesterdayModelNr)
if err != nil {
return nil, err
}
if yesterdayModel == nil {
return nil, grmi.NewBusinessError("未获取到该工位的昨天日模型主数据")
}
var yesterdayEnd int
var yesterdayStart int
var yesterdayLength int
var start time.Time
var end time.Time
// 求取昨天的开始 结束时间和工作时长
if yesterdayModel.WorkShiftToggle {
if yesterdayModel.S1WorkShiftNr == 0 {
return nil, grmi.NewBusinessError("绑定的日模型错误")
}
s1WorkShift, err := workShiftDao.SelectOne(yesterdayModel.S1WorkShiftNr)
if err != nil {
return nil, err
}
if s1WorkShift == nil {
return nil, grmi.NewBusinessError("绑定的日模型错误, 人员班组不存在")
}
yesterdayLength += s1WorkShift.SLen
yesterdayStart = s1WorkShift.SBeg
yesterdayEnd = s1WorkShift.SEnd
if yesterdayModel.S2WorkShiftNr != 0 {
s2WorkShift, err := workShiftDao.SelectOne(yesterdayModel.S2WorkShiftNr)
if err != nil {
return nil, err
}
if s2WorkShift == nil {
return nil, grmi.NewBusinessError("绑定的日模型错误, 人员班组不存在")
}
yesterdayEnd = s2WorkShift.SEnd
yesterdayLength += s2WorkShift.SLen
}
if yesterdayModel.S3WorkShiftNr != 0 {
s3WorkShift, err := workShiftDao.SelectOne(yesterdayModel.S3WorkShiftNr)
if err != nil {
return nil, err
}
if s3WorkShift == nil {
return nil, grmi.NewBusinessError("绑定的日模型错误, 人员班组不存在")
}
yesterdayEnd = s3WorkShift.SEnd
yesterdayLength += s3WorkShift.SLen
}
} else {
yesterdayStart = yesterdayModel.S1Beg
yesterdayEnd = yesterdayModel.S1End
yesterdayLength += yesterdayModel.S1Len
if yesterdayModel.S2End != 0 {
yesterdayEnd = yesterdayModel.S2End
yesterdayLength += yesterdayModel.S2Len
}
if yesterdayModel.S3End != 0 {
yesterdayEnd = yesterdayModel.S3End
yesterdayLength += yesterdayModel.S3Len
}
}
yesterdayStartStr := yesterdayBegin.Add(time.Duration(yesterdayStart) * time.Second).Format(grmi.DatetimeOutFormat)
yesterdayEndStr := yesterdayBegin.Add(time.Duration(yesterdayEnd) * time.Second).Format(grmi.DatetimeOutFormat)
// 求取今天的开始 结束时间
var startInt int
if dayModel.WorkShiftToggle {
if dayModel.S1WorkShiftNr == 0 {
return nil, grmi.NewBusinessError("绑定的日模型错误")
}
s1WorkShift, err := workShiftDao.SelectOne(dayModel.S1WorkShiftNr)
if err != nil {
return nil, err
@ -491,7 +593,6 @@ func (impl *FilterDataInfoServiceImplement) GetDisplayData() (result []model.AWM
endTime = time.Now().Format(grmi.DatetimeOutFormat)
endTime = endTime[11:len(endTime)]
}
if startTime != "" {
startTimeStr := todayString + " " + startTime
start, err = time.ParseInLocation(grmi.DatetimeOutFormat, startTimeStr, utils.TimezoneLocation)
@ -506,8 +607,8 @@ func (impl *FilterDataInfoServiceImplement) GetDisplayData() (result []model.AWM
if err != nil {
return nil, err
}
dayModelList := impl.InitDayModelList(dayModel, today)
duration := impl.GetValidDuration(dayModelList, start, end)
//dayModelList := impl.InitDayModelList(dayModel, today)
//duration := impl.GetValidDuration(dayModelList, start, end)
startStr := start.Format(grmi.DatetimeOutFormat)
endStr := end.Format(grmi.DatetimeOutFormat)
var displayData model.AWMDisplay
@ -515,6 +616,39 @@ func (impl *FilterDataInfoServiceImplement) GetDisplayData() (result []model.AWM
if err != nil {
return result, err
}
yesterdayArcLi, err := dao.SelectDisplayData(descCN, yesterdayStartStr, yesterdayEndStr)
if err != nil {
return result, err
}
// 计算昨天的mu
var mu float64
yesterdayCapacity := 0
for _, dataInfo := range yesterdayArcLi {
targetValue := reflect.ValueOf(dataInfo).FieldByName(statisticField).String()
target, err := strconv.ParseFloat(targetValue, 64)
if err != nil {
return result, err
}
if max != 0 && target > max {
continue
}
if min != 0 && target < min {
continue
}
yesterdayCapacity++
}
if yesterdayCapacity == 0 {
mu = 0
} else {
mu = float64(yesterdayCapacity) / (float64(yesterdayLength) / 3600)
}
mu, err = strconv.ParseFloat(fmt.Sprintf("%.2f", mu), 64)
if err != nil {
return result, err
}
// 处理今天的数据
displayArcLi := make([]model.FilterDataInfo, 0)
var sum float64
for _, dataInfo := range arcLi {
@ -533,23 +667,19 @@ func (impl *FilterDataInfoServiceImplement) GetDisplayData() (result []model.AWM
sum += target
}
var avg float64
var mu float64
capacity := len(arcLi)
if len(arcLi) == 0 {
capacity := len(displayArcLi)
if capacity == 0 {
avg = 0
mu = 0
} else {
avg = sum / float64(capacity)
mu = float64(capacity) / duration.Hours()
}
avg, err = strconv.ParseFloat(fmt.Sprintf("%.2f", avg), 64)
if err != nil {
return result, err
}
mu, err = strconv.ParseFloat(fmt.Sprintf("%.2f", mu), 64)
if err != nil {
return result, err
}
displayData.MuTitle = muTitle
displayData.MuUom = muUom
displayData.Capacity = capacity


Loading…
Cancel
Save