Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
Education
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄奎
Education
Commits
b1cf3f50
Commit
b1cf3f50
authored
Jun 15, 2021
by
吴春
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/Kui2/education
parents
eab7a8d6
1d4fc2d1
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
217 additions
and
8 deletions
+217
-8
RB_Class_Plan_ViewModel.cs
Edu.Model/ViewModel/Course/RB_Class_Plan_ViewModel.cs
+5
-0
ClassModule.cs
Edu.Module.Course/ClassModule.cs
+90
-5
OrderModule.cs
Edu.Module.Course/OrderModule.cs
+3
-3
RB_Class_ConfigRepository.cs
Edu.Repository/Course/RB_Class_ConfigRepository.cs
+11
-0
RB_Class_PlanRepository.cs
Edu.Repository/Course/RB_Class_PlanRepository.cs
+54
-0
ClassController.cs
Edu.WebApi/Controllers/Course/ClassController.cs
+54
-0
No files found.
Edu.Model/ViewModel/Course/RB_Class_Plan_ViewModel.cs
View file @
b1cf3f50
...
...
@@ -44,6 +44,11 @@ namespace Edu.Model.ViewModel.Course
/// </summary>
public
string
ClassName
{
get
;
set
;
}
/// <summary>
/// 课程名称
/// </summary>
public
string
CourseName
{
get
;
set
;
}
/// <summary>
/// 班级类型
/// </summary>
...
...
Edu.Module.Course/ClassModule.cs
View file @
b1cf3f50
...
...
@@ -465,7 +465,7 @@ namespace Edu.Module.Course
if
(
FinishMinutes
>
0
)
{
//基础课时分钟数
var
BasicMinutes
=
class_ConfigRepository
.
Get
ClassConfigRepository
(
new
RB_Class_Config_ViewModel
()
{
Group_Id
=
classModel
.
Group_Id
})?.
BasicMinutes
??
45
;
var
BasicMinutes
=
class_ConfigRepository
.
Get
BasicMinutesRepository
(
classModel
.
Group_Id
)
;
//完成课时数
var
finishHours
=
FinishMinutes
/
BasicMinutes
;
if
(
classModel
.
ClassHours
>
0
)
...
...
@@ -783,13 +783,20 @@ namespace Edu.Module.Course
{
timeList
=
class_TimeRepository
.
GetClassTimeListRepository
(
new
RB_Class_Time_ViewModel
()
{
QClassPlanIds
=
Ids
});
}
var
minDate
=
planList
.
Min
(
qitem
=>
qitem
.
ClassDate
);
var
maxDate
=
planList
.
Max
(
qitem
=>
qitem
.
ClassDate
);
var
checkList
=
classCheckRepository
.
GetClassCheckListRepository
(
new
RB_Class_Check_ViewModel
()
{
ClassId
=
classId
,
StartDate
=
Common
.
ConvertHelper
.
FormatDate
(
minDate
),
EndDate
=
Common
.
ConvertHelper
.
FormatDate
(
maxDate
)});
DateTime
today
=
Convert
.
ToDateTime
(
DateTime
.
Now
.
ToString
(
"yyyy-MM-dd"
));
foreach
(
var
item
in
planList
)
{
item
.
PlanTimeList
=
timeList
?.
Where
(
qitem
=>
qitem
.
ClassPlanId
==
item
.
ClassPlanId
)?.
ToList
();
var
tempCheckList
=
checkList
?.
Where
(
qitem
=>
qitem
.
ClassId
==
item
.
ClassId
&&
qitem
.
ClassDate
==
item
.
ClassDate
)?.
ToList
()
??
new
List
<
RB_Class_Check_ViewModel
>();
list
.
Add
(
new
{
IsEndDate
=
item
.
ClassDate
<=
today
,
TotalNum
=
tempCheckList
?.
Count
(),
CheckNum
=
tempCheckList
?.
Where
(
qitem
=>
qitem
.
CheckStatus
==
0
)?.
Count
(),
NoCheckNum
=
tempCheckList
?.
Where
(
qitem
=>
qitem
.
CheckStatus
==
1
)?.
Count
(),
item
.
ClassPlanId
,
item
.
ClassId
,
item
.
ClassDate
,
...
...
@@ -1198,7 +1205,7 @@ namespace Edu.Module.Course
public
virtual
bool
AddClassCheckModule
(
List
<
RB_Class_Check_ViewModel
>
list
)
{
//基础课时分钟数
var
BasicMinutes
=
class_ConfigRepository
.
Get
ClassConfigRepository
(
new
RB_Class_Config_ViewModel
()
{
Group_Id
=
list
[
0
].
Group_Id
})?.
BasicMinutes
??
45
;
var
BasicMinutes
=
class_ConfigRepository
.
Get
BasicMinutesRepository
(
list
[
0
].
Group_Id
)
;
var
totalMinutes
=
classCheckRepository
.
CalcPlanMinutesRepository
(
new
RB_Class_Plan_ViewModel
()
{
ClassId
=
list
[
0
].
ClassId
,
...
...
@@ -1830,7 +1837,7 @@ namespace Edu.Module.Course
//班级完成的总分钟数
var
FinishMinutes
=
classCheckRepository
.
GetClassFinishMinutesRepository
(
model
.
ClassId
.
ToString
())?.
FirstOrDefault
()?.
FinishMinutes
??
0
;
//基础课时分钟数
var
BasicMinutes
=
class_ConfigRepository
.
Get
ClassConfigRepository
(
new
RB_Class_Config_ViewModel
()
{
Group_Id
=
model
.
Group_Id
})?.
BasicMinutes
??
45
;
var
BasicMinutes
=
class_ConfigRepository
.
Get
BasicMinutesRepository
(
model
.
Group_Id
)
;
var
nowHours
=
model
.
NewEndPlanDateTime
.
Value
.
Subtract
(
model
.
NewPlanDateTime
.
Value
).
TotalSeconds
;
if
(
FinishMinutes
>
0
)
{
...
...
@@ -1878,14 +1885,14 @@ namespace Edu.Module.Course
fileds
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Class_Time_ViewModel
.
ClassStatus
),
classStatus
},
{
nameof
(
RB_Class_Time_ViewModel
.
InClassTime
),
System
.
DateTime
.
Now
},
{
nameof
(
RB_Class_Time_ViewModel
.
InClassTime
),
System
.
DateTime
.
Now
},
};
}
else
if
(
classStatus
==
2
)
{
fileds
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Class_Time_ViewModel
.
ClassOverTime
),
System
.
DateTime
.
Now
},
{
nameof
(
RB_Class_Time_ViewModel
.
ClassOverTime
),
System
.
DateTime
.
Now
},
{
nameof
(
RB_Class_Time_ViewModel
.
ClassStatus
),
classStatus
},
};
}
...
...
@@ -2000,5 +2007,83 @@ namespace Edu.Module.Course
return
flag
;
}
#
endregion
/// <summary>
/// 上课计划统计
/// </summary>
/// <returns></returns>
public
object
GetClassPlanStatisticalModule
(
RB_Class_Plan_ViewModel
query
)
{
List
<
object
>
result
=
new
List
<
object
>();
var
startTime
=
Convert
.
ToDateTime
(
query
.
StartTime
);
var
endTime
=
Convert
.
ToDateTime
(
query
.
EndTime
);
TimeSpan
sp
=
endTime
.
Subtract
(
startTime
);
var
days
=
sp
.
Days
+
1
;
var
list
=
class_PlanRepository
.
GetClassPlanStatisticalRepository
(
query
);
if
(
list
!=
null
)
{
string
classIds
=
string
.
Join
(
","
,
list
.
Select
(
qitem
=>
qitem
.
ClassId
));
string
planIds
=
string
.
Join
(
","
,
list
.
Select
(
qitem
=>
qitem
.
ClassPlanId
));
var
timeList
=
class_TimeRepository
.
GetClassTimeListRepository
(
new
RB_Class_Time_ViewModel
()
{
QClassIds
=
classIds
,
QClassPlanIds
=
planIds
});
var
guestList
=
order_GuestRepository
.
GetList
(
new
RB_Order_Guest_ViewModel
()
{
ClassIds
=
classIds
});
for
(
var
i
=
0
;
i
<
days
;
i
++)
{
var
ClassDate
=
startTime
.
AddDays
(
i
);
List
<
object
>
subList
=
new
List
<
object
>();
var
tempList
=
list
.
Where
(
qitem
=>
qitem
.
ClassDate
==
ClassDate
);
foreach
(
var
subItem
in
tempList
)
{
var
tempTimeList
=
timeList
?.
Where
(
qitem
=>
qitem
.
ClassPlanId
==
subItem
.
ClassPlanId
)?.
ToList
()?.
OrderBy
(
qitem
=>
qitem
.
StartTime
);
subList
.
Add
(
new
{
subItem
.
ClassId
,
subItem
.
ClassName
,
subItem
.
CourseName
,
subItem
.
RoomName
,
subItem
.
TeacherName
,
StartTime
=
tempTimeList
?.
FirstOrDefault
()?.
StartTime
??
""
,
EndTime
=
tempTimeList
?.
LastOrDefault
()?.
EndTime
??
""
,
GuestList
=
guestList
.
Where
(
qitem
=>
qitem
.
ClassId
==
subItem
.
ClassId
)?.
Select
(
qitem
=>
new
{
qitem
.
GuestName
})
});
}
var
obj
=
new
{
ClassDate
=
Common
.
ConvertHelper
.
FormatDate
(
ClassDate
),
WeekStr
=
Common
.
ConvertHelper
.
GetWeekDay
(
ClassDate
),
SubList
=
subList
};
result
.
Add
(
obj
);
}
}
return
result
;
}
/// <summary>
/// 获取教师课时统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public
object
GetTeacherClassHoursStatisticalModule
(
RB_Class_Plan_ViewModel
query
)
{
List
<
object
>
result
=
new
List
<
object
>();
var
BasicMinutes
=
class_ConfigRepository
.
GetBasicMinutesRepository
(
query
.
Group_Id
);
var
list
=
class_PlanRepository
.
GetClassPlanStatisticalRepository
(
query
);
if
(
list
!=
null
)
{
var
groupList
=
list
.
GroupBy
(
qitem
=>
new
{
qitem
.
Teacher_Id
,
qitem
.
TeacherName
}).
Select
(
qitem
=>
new
{
qitem
.
Key
.
Teacher_Id
,
qitem
.
Key
.
TeacherName
});
foreach
(
var
item
in
groupList
)
{
var
totalClassMinutes
=
list
.
Where
(
qitem
=>
qitem
.
Teacher_Id
==
item
.
Teacher_Id
)?.
Sum
(
qitem
=>
qitem
.
ClassMinutes
)
??
0
;
var
obj
=
new
{
item
.
TeacherName
,
TeacherId
=
item
.
Teacher_Id
,
ClassHours
=
totalClassMinutes
/
BasicMinutes
};
result
.
Add
(
obj
);
}
}
return
result
;
}
}
}
Edu.Module.Course/OrderModule.cs
View file @
b1cf3f50
...
...
@@ -232,8 +232,8 @@ namespace Edu.Module.Course
var
planList
=
class_PlanRepository
.
GetClassPlanListExtRepository
(
new
RB_Class_Plan_ViewModel
()
{
ClassId
=
classId
,
EndTime
=
Common
.
ConvertHelper
.
FormatDate
(
DateTime
.
Now
)
});
var
totalMinutes
=
planList
?.
Sum
(
qitem
=>
qitem
.
ClassMinutes
)
??
0
;
//查询基础课时时长
var
configModel
=
class_ConfigRepository
.
GetClassConfigRepository
(
new
RB_Class_Config_ViewModel
()
{
Group_Id
=
Group_Id
}
);
var
finishHours
=
totalMinutes
/
(
configModel
?.
BasicMinutes
??
45.0
)
;
var
BasicMinutes
=
class_ConfigRepository
.
GetBasicMinutesRepository
(
Group_Id
);
var
finishHours
=
totalMinutes
/
BasicMinutes
;
fileds
.
Add
(
"finishHours"
,
finishHours
);
var
classModel
=
classRepository
.
GetEntity
(
classId
);
var
courseModel
=
courseRepository
.
GetEntity
(
classModel
.
CouseId
);
...
...
@@ -350,7 +350,7 @@ namespace Edu.Module.Course
}
else
{
coursePrice
=
coursePrice
-
coursePreferentialModel
.
PriceMoney
;
coursePrice
-=
coursePreferentialModel
.
PriceMoney
;
}
}
if
(
demodel
.
IsLessPrice
==
1
&&
demodel
.
LessPrice
>
0
)
...
...
Edu.Repository/Course/RB_Class_ConfigRepository.cs
View file @
b1cf3f50
...
...
@@ -36,5 +36,16 @@ WHERE 1=1
}
return
Get
<
RB_Class_Config_ViewModel
>(
builder
.
ToString
()).
FirstOrDefault
();
}
/// <summary>
/// 获取基础课时分钟数
/// </summary>
/// <param name="Group_Id"></param>
/// <returns></returns>
public
int
GetBasicMinutesRepository
(
int
Group_Id
)
{
var
BasicMinutes
=
GetClassConfigRepository
(
new
RB_Class_Config_ViewModel
()
{
Group_Id
=
Group_Id
})?.
BasicMinutes
??
45
;
return
BasicMinutes
;
}
}
}
Edu.Repository/Course/RB_Class_PlanRepository.cs
View file @
b1cf3f50
...
...
@@ -461,5 +461,59 @@ where sog.Account_Id={query.StuId} and c.ClassStatus in(1,2) and c.`Status`=0 an
}
return
Get
<
RB_Class_Plan_ViewModel
>(
builder
.
ToString
()).
ToList
();
}
/// <summary>
/// 老师上课计划统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public
List
<
RB_Class_Plan_ViewModel
>
GetClassPlanStatisticalRepository
(
RB_Class_Plan_ViewModel
query
)
{
StringBuilder
where
=
new
StringBuilder
();
if
(
query
!=
null
)
{
if
(
query
.
Group_Id
>
0
)
{
where
.
AppendFormat
(
" AND A.{0}={1} "
,
nameof
(
RB_Class_Plan_ViewModel
.
Group_Id
),
query
.
Group_Id
);
}
if
(!
string
.
IsNullOrEmpty
(
query
.
StartTime
))
{
where
.
AppendFormat
(
" AND DATE_FORMAT(A.{0},'%y-%m-%d')>=DATE_FORMAT('{1}','%y-%m-%d') "
,
nameof
(
RB_Class_Plan_ViewModel
.
ClassDate
),
query
.
StartTime
);
}
if
(!
string
.
IsNullOrEmpty
(
query
.
EndTime
))
{
where
.
AppendFormat
(
" AND DATE_FORMAT(A.{0},'%y-%m-%d')<=DATE_FORMAT('{1}','%y-%m-%d') "
,
nameof
(
RB_Class_Plan_ViewModel
.
ClassDate
),
query
.
EndTime
);
}
if
(
query
.
TeacherId
>
0
)
{
where
.
AppendFormat
(
" AND A.{0}={1} "
,
nameof
(
RB_Class_Plan_ViewModel
.
TeacherId
),
query
.
TeacherId
);
}
if
(
query
.
ClassRoomId
>
0
)
{
where
.
AppendFormat
(
" AND A.{0}={1} "
,
nameof
(
RB_Class_Plan_ViewModel
.
ClassRoomId
),
query
.
ClassRoomId
);
}
}
StringBuilder
builder
=
new
StringBuilder
();
builder
.
AppendFormat
(
@"
SELECT A.ClassPlanId,A.ClassId,A.ClassDate,A.ClassRoomId,A.ClassName,A.CourseName,A.Teacher_Id,A.TeacherName,A.RoomName
,SUM(A.minNum) AS ClassMinutes,MIN(A.StartTime) AS StartTime,MAX(A.EndTime) AS EndTime
FROM
(
SELECT A.ClassPlanId, A.ClassId,A.ClassDate,A.ClassRoomId,B.ClassName,C.CourseName,B.Teacher_Id,IFNULL(D.TeacherName,'') AS TeacherName,E.RoomName
,TIMESTAMPDIFF(MINUTE, CONCAT('2020-12-16',' ',F.StartTime), CONCAT('2020-12-16',' ',F.EndTime)) AS minNum,F.StartTime,F.EndTime
FROM rb_class_plan AS A LEFT JOIN rb_class AS B ON A.ClassId=B.ClassId
LEFT JOIN rb_course AS C ON B.CouseId=C.CourseId
LEFT JOIN rb_teacher AS D ON B.Teacher_Id=D.TId
LEFT JOIN rb_class_room AS E ON A.ClassRoomId=E.RoomId
LEFT JOIN rb_class_time F on A.ClassPlanId = F.ClassPlanId
WHERE 1=1 AND A.`Status`=0 {0}
) AS A
GROUP BY A.ClassPlanId,A.ClassId ,A.ClassDate,A.ClassRoomId
"
,
where
.
ToString
());
builder
.
AppendFormat
(
" "
);
return
Get
<
RB_Class_Plan_ViewModel
>(
builder
.
ToString
()).
ToList
();
}
}
}
Edu.WebApi/Controllers/Course/ClassController.cs
View file @
b1cf3f50
...
...
@@ -1842,5 +1842,59 @@ namespace Edu.WebApi.Controllers.Course
return
ApiResult
.
Success
(
data
:
data
);
}
#
endregion
#
region
老师上课统计
/// <summary>
/// 老师上课计划统计
/// </summary>
/// <returns></returns>
public
ApiResult
GetClassPlanStatistical
()
{
var
startDate
=
base
.
ParmJObj
.
GetStringValue
(
"StartTime"
);
var
endDate
=
base
.
ParmJObj
.
GetStringValue
(
"EndTime"
);
RB_Class_Plan_ViewModel
query
=
new
RB_Class_Plan_ViewModel
()
{
StartTime
=
startDate
,
EndTime
=
endDate
,
TeacherId
=
base
.
ParmJObj
.
GetInt
(
"TeacherId"
),
ClassRoomId
=
base
.
ParmJObj
.
GetInt
(
"ClassRoomId"
),
Group_Id
=
base
.
UserInfo
.
Group_Id
,
};
var
obj
=
classModule
.
GetClassPlanStatisticalModule
(
query
);
return
ApiResult
.
Success
(
data
:
obj
);
}
/// <summary>
/// 老师课时统计
/// </summary>
/// <returns></returns>
public
ApiResult
GetTeacherClassHoursStatistical
()
{
var
startDate
=
base
.
ParmJObj
.
GetStringValue
(
"StartTime"
);
var
endDate
=
base
.
ParmJObj
.
GetStringValue
(
"EndTime"
);
if
(!
string
.
IsNullOrEmpty
(
endDate
))
{
endDate
=
Common
.
ConvertHelper
.
FormatDate
(
DateTime
.
Now
);
}
else
{
if
(
Convert
.
ToDateTime
(
endDate
)
>
Convert
.
ToDateTime
(
Common
.
ConvertHelper
.
FormatDate
(
DateTime
.
Now
)))
{
endDate
=
Common
.
ConvertHelper
.
FormatDate
(
DateTime
.
Now
);
}
}
RB_Class_Plan_ViewModel
query
=
new
RB_Class_Plan_ViewModel
()
{
StartTime
=
startDate
,
EndTime
=
endDate
,
TeacherId
=
base
.
ParmJObj
.
GetInt
(
"TeacherId"
),
ClassRoomId
=
base
.
ParmJObj
.
GetInt
(
"ClassRoomId"
),
Group_Id
=
base
.
UserInfo
.
Group_Id
,
};
var
obj
=
classModule
.
GetTeacherClassHoursStatisticalModule
(
query
);
return
ApiResult
.
Success
(
data
:
obj
);
}
#
endregion
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment