|
|
@ -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 |
|
|
|