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
a7752df6
Commit
a7752df6
authored
Aug 17, 2021
by
黄奎
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/Kui2/education
parents
40b71267
e3f7ae99
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1355 additions
and
17 deletions
+1355
-17
ReceiptTypeEnum.cs
Edu.Common/Enum/Finance/ReceiptTypeEnum.cs
+5
-0
RB_Student_Leave.cs
Edu.Model/Entity/EduTask/RB_Student_Leave.cs
+93
-0
RB_Student_Leave_ViewModel.cs
Edu.Model/ViewModel/EduTask/RB_Student_Leave_ViewModel.cs
+79
-0
RB_Class_Check_ViewModel.cs
Edu.Model/ViewModel/Grade/RB_Class_Check_ViewModel.cs
+4
-1
EducationReceiptModule.cs
Edu.Module.EduTask/EducationReceiptModule.cs
+123
-16
LeaveStudentModule.cs
Edu.Module.EduTask/LeaveStudentModule.cs
+109
-0
StopStudentClassModule.cs
Edu.Module.EduTask/StopStudentClassModule.cs
+4
-0
RB_Education_ReceiptRepository.cs
Edu.Repository/EduTask/RB_Education_ReceiptRepository.cs
+9
-0
RB_Student_LeaveRepository.cs
Edu.Repository/EduTask/RB_Student_LeaveRepository.cs
+735
-0
RB_Class_CheckRepository.cs
Edu.Repository/Grade/RB_Class_CheckRepository.cs
+6
-0
AppletIndexController.cs
Edu.WebApi/Controllers/Applet/AppletIndexController.cs
+77
-0
LeaveStudentController.cs
Edu.WebApi/Controllers/Applet/LeaveStudentController.cs
+109
-0
appsettings.json
Edu.WebApi/appsettings.json
+2
-0
No files found.
Edu.Common/Enum/Finance/ReceiptTypeEnum.cs
View file @
a7752df6
...
@@ -43,5 +43,10 @@ namespace Edu.Common.Enum.Finance
...
@@ -43,5 +43,10 @@ namespace Edu.Common.Enum.Finance
/// </summary>
/// </summary>
[
EnumField
(
"订单分拆"
)]
[
EnumField
(
"订单分拆"
)]
OrderSplitClass
=
6
,
OrderSplitClass
=
6
,
/// <summary>
/// 学生请假
/// </summary>
[
EnumField
(
"学生请假"
)]
LeaveClass
=
7
,
}
}
}
}
Edu.Model/Entity/EduTask/RB_Student_Leave.cs
0 → 100644
View file @
a7752df6
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
VT.FW.DB
;
namespace
Edu.Model.Entity.EduTask
{
/// <summary>
/// 学生请假申请实体类
/// </summary>
[
Serializable
]
[
DB
(
ConnectionName
=
"DefaultConnection"
)]
public
class
RB_Student_Leave
{
/// <summary>
/// 主键(请假编号)
/// </summary>
public
int
Id
{
get
;
set
;
}
/// <summary>
/// 请假类型 1-事假,2-病假
/// </summary>
public
int
LeaveType
{
get
;
set
;
}
/// <summary>
/// 班级编号
/// </summary>
public
int
ClassId
{
get
;
set
;
}
/// <summary>
/// 课程编号
/// </summary>
public
int
CourseId
{
get
;
set
;
}
/// <summary>
/// 计划时间id
/// </summary>
public
string
ClassTimeIds
{
get
;
set
;
}
/// <summary>
/// 学生id
/// </summary>
public
int
OrderGuestId
{
get
;
set
;
}
/// <summary>
/// 请假信息
/// </summary>
public
string
LeaveInfo
{
get
;
set
;
}
/// <summary>
/// 集团编号
/// </summary>
public
int
Group_Id
{
get
;
set
;
}
/// <summary>
/// 学校编号
/// </summary>
public
int
School_Id
{
get
;
set
;
}
/// <summary>
/// 创建人
/// </summary>
public
int
CreateBy
{
get
;
set
;
}
/// <summary>
/// 创建时间
/// </summary>
public
DateTime
CreateTime
{
get
;
set
;
}
/// <summary>
/// 修改人
/// </summary>
public
int
UpdateBy
{
get
;
set
;
}
/// <summary>
/// 更新时间
/// </summary>
public
DateTime
UpdateTime
{
get
;
set
;
}
/// <summary>
/// 申请备注
/// </summary>
public
string
Remarks
{
get
;
set
;
}
}
}
Edu.Model/ViewModel/EduTask/RB_Student_Leave_ViewModel.cs
0 → 100644
View file @
a7752df6
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
Edu.Model.Entity.EduTask
;
using
Edu.Model.ViewModel.Sell
;
namespace
Edu.Model.ViewModel.EduTask
{
/// <summary>
/// 学员请假申请实体扩展表
/// </summary>
public
class
RB_Student_Leave_ViewModel
:
RB_Student_Leave
{
/// <summary>
/// 请假时间信息
/// </summary>
public
List
<
LeaveInfoModel
>
LeaveInfoList
{
get
;
set
;
}
/// <summary>
/// 班级名称
/// </summary>
public
string
ClassName
{
get
;
set
;
}
/// <summary>
/// 多个ids
/// </summary>
public
string
Q_Student_Leave_Ids
{
get
;
set
;
}
/// <summary>
/// 学员信息
/// </summary>
public
RB_Order_Guest_ViewModel
Order_Guest_ViewModel
{
get
;
set
;
}
}
public
class
LeaveInfoModel
{
/// <summary>
/// 计划id
/// </summary>
public
int
ClassPlanId
{
get
;
set
;
}
/// <summary>
/// 上课时间id
/// </summary>
public
int
ClassTimeId
{
get
;
set
;
}
/// <summary>
/// 上课日期
/// </summary>
public
string
ClassDate
{
get
;
set
;
}
/// <summary>
/// 上课开始时间
/// </summary>
public
string
StartTime
{
get
;
set
;
}
/// <summary>
/// 上课结束时间
/// </summary>
public
string
EndTime
{
get
;
set
;
}
/// <summary>
/// 上课课时
/// </summary>
public
decimal
TimeHour
{
get
;
set
;
}
/// <summary>
/// 老师名称
/// </summary>
public
string
TeacherName
{
get
;
set
;
}
/// <summary>
/// 教室名称
/// </summary>*
public
string
RoomName
{
get
;
set
;
}
}
}
Edu.Model/ViewModel/Grade/RB_Class_Check_ViewModel.cs
View file @
a7752df6
...
@@ -49,7 +49,10 @@ namespace Edu.Model.ViewModel.Grade
...
@@ -49,7 +49,10 @@ namespace Edu.Model.ViewModel.Grade
}
}
}
}
}
}
/// <summary>
/// ids
/// </summary>
public
string
Q_ClassTimeIds
{
get
;
set
;
}
/// <summary>
/// <summary>
/// ids
/// ids
/// </summary>
/// </summary>
...
...
Edu.Module.EduTask/EducationReceiptModule.cs
View file @
a7752df6
...
@@ -64,6 +64,13 @@ namespace Edu.Module.EduTask
...
@@ -64,6 +64,13 @@ namespace Edu.Module.EduTask
/// </summary>
/// </summary>
private
readonly
RB_Change_ClassPlanRepository
change_ClassPlanRepository
=
new
RB_Change_ClassPlanRepository
();
private
readonly
RB_Change_ClassPlanRepository
change_ClassPlanRepository
=
new
RB_Change_ClassPlanRepository
();
/// <summary>
/// 学生请假仓储层对象
/// </summary>
private
readonly
RB_Student_LeaveRepository
studentLeaveRepository
=
new
RB_Student_LeaveRepository
();
/// <summary>
/// <summary>
/// 老师仓储层对象
/// 老师仓储层对象
/// </summary>
/// </summary>
...
@@ -127,11 +134,24 @@ namespace Edu.Module.EduTask
...
@@ -127,11 +134,24 @@ namespace Edu.Module.EduTask
List
<
RB_Student_StopClass_ViewModel
>
stopClassList
=
new
List
<
RB_Student_StopClass_ViewModel
>();
List
<
RB_Student_StopClass_ViewModel
>
stopClassList
=
new
List
<
RB_Student_StopClass_ViewModel
>();
//临时上课邀请申请
//临时上课邀请申请
List
<
RB_Student_TempInvitation_ViewModel
>
studentTempInvitationClassList
=
new
List
<
RB_Student_TempInvitation_ViewModel
>();
List
<
RB_Student_TempInvitation_ViewModel
>
studentTempInvitationClassList
=
new
List
<
RB_Student_TempInvitation_ViewModel
>();
//学生请假申请
List
<
RB_Student_Leave_ViewModel
>
studentLeaveList
=
new
List
<
RB_Student_Leave_ViewModel
>();
List
<
RB_Order_Guest_ViewModel
>
orderGuestLeaveList
=
new
List
<
RB_Order_Guest_ViewModel
>();
//班级上课计划-学生请假申请列表
List
<
RB_Class_Plan_ViewModel
>
planLeaveList
=
new
List
<
RB_Class_Plan_ViewModel
>();
//班级上课时间-学生请假申请列表
List
<
RB_Class_Time_ViewModel
>
timeLeaveList
=
new
List
<
RB_Class_Time_ViewModel
>();
//老师列表
//老师列表
List
<
RB_Teacher_ViewModel
>
teacherList
=
new
List
<
RB_Teacher_ViewModel
>();
List
<
RB_Teacher_ViewModel
>
teacherList
=
new
List
<
RB_Teacher_ViewModel
>();
//学生信息
//学生信息
List
<
RB_Order_Guest_ViewModel
>
orderGuestList
=
new
List
<
RB_Order_Guest_ViewModel
>();
//学生信息
List
<
RB_Order_Guest_ViewModel
>
orderGuestList
=
new
List
<
RB_Order_Guest_ViewModel
>();
//学生信息
List
<
RB_Order_Guest_ViewModel
>
orderGuestTempInvitationList
=
new
List
<
RB_Order_Guest_ViewModel
>();
List
<
RB_Order_Guest_ViewModel
>
orderGuestTempInvitationList
=
new
List
<
RB_Order_Guest_ViewModel
>();
//教室列表
//教室列表
List
<
RB_Class_Room_ViewModel
>
roomList
=
new
List
<
RB_Class_Room_ViewModel
>();
List
<
RB_Class_Room_ViewModel
>
roomList
=
new
List
<
RB_Class_Room_ViewModel
>();
//班级上课计划列表
//班级上课计划列表
...
@@ -348,6 +368,46 @@ namespace Edu.Module.EduTask
...
@@ -348,6 +368,46 @@ namespace Edu.Module.EduTask
}
}
}
}
#
endregion
#
endregion
#
region
学生请假申请
if
(
subItem
.
ReceiptType
==
Common
.
Enum
.
Finance
.
ReceiptTypeEnum
.
LeaveClass
)
{
string
changeIds
=
string
.
Join
(
","
,
list
.
Where
(
qitem
=>
qitem
.
ReceiptType
==
subItem
.
ReceiptType
).
Select
(
qitem
=>
qitem
.
RelationId
));
studentLeaveList
=
studentLeaveRepository
.
GetStudentLeaveListRepository
(
new
RB_Student_Leave_ViewModel
()
{
Q_Student_Leave_Ids
=
changeIds
,
});
if
(
studentLeaveList
!=
null
&&
studentLeaveList
.
Any
())
{
string
orderGuestIds
=
string
.
Join
(
","
,
studentLeaveList
.
Select
(
x
=>
x
.
OrderGuestId
));
if
(!
string
.
IsNullOrWhiteSpace
(
orderGuestIds
))
{
orderGuestLeaveList
=
order_GuestRepository
.
GetStopingStudentPage
(
new
RB_Order_Guest_ViewModel
{
OrderGuestIds
=
orderGuestIds
});
}
string
classTimeIds
=
string
.
Join
(
","
,
studentLeaveList
.
Select
(
x
=>
x
.
ClassTimeIds
));
if
(!
string
.
IsNullOrWhiteSpace
(
classTimeIds
))
{
timeLeaveList
=
class_TimeRepository
.
GetClassTimeListRepository
(
new
RB_Class_Time_ViewModel
{
QClassTimeIds
=
classTimeIds
});
if
(
timeLeaveList
!=
null
&&
timeLeaveList
.
Any
())
{
string
classPlanIds
=
string
.
Join
(
","
,
timeLeaveList
.
Select
(
x
=>
x
.
ClassPlanId
));
if
(!
string
.
IsNullOrWhiteSpace
(
classPlanIds
))
{
planLeaveList
=
class_PlanRepository
.
GetClassPlanListRepository
(
new
RB_Class_Plan_ViewModel
{
QClassPlanIds
=
classPlanIds
});
}
}
}
}
}
#
endregion
}
}
foreach
(
var
item
in
list
)
foreach
(
var
item
in
list
)
...
@@ -430,13 +490,43 @@ namespace Edu.Module.EduTask
...
@@ -430,13 +490,43 @@ namespace Edu.Module.EduTask
//订单转班
//订单转班
if
(
item
.
ReceiptType
==
Common
.
Enum
.
Finance
.
ReceiptTypeEnum
.
OrderTransClass
)
if
(
item
.
ReceiptType
==
Common
.
Enum
.
Finance
.
ReceiptTypeEnum
.
OrderTransClass
)
{
{
DataObj
=
orderTransList
?.
Where
(
qitem
=>
qitem
.
Id
==
item
.
RelationId
&&
qitem
.
ChangeType
==
1
)?.
FirstOrDefault
();
DataObj
=
orderTransList
?.
Where
(
qitem
=>
qitem
.
Id
==
item
.
RelationId
&&
qitem
.
ChangeType
==
1
)?.
FirstOrDefault
();
}
}
//订单分拆
//订单分拆
if
(
item
.
ReceiptType
==
Common
.
Enum
.
Finance
.
ReceiptTypeEnum
.
OrderSplitClass
)
if
(
item
.
ReceiptType
==
Common
.
Enum
.
Finance
.
ReceiptTypeEnum
.
OrderSplitClass
)
{
{
DataObj
=
orderTransList
?.
Where
(
qitem
=>
qitem
.
Id
==
item
.
RelationId
&&
qitem
.
ChangeType
==
2
)?.
FirstOrDefault
();
DataObj
=
orderTransList
?.
Where
(
qitem
=>
qitem
.
Id
==
item
.
RelationId
&&
qitem
.
ChangeType
==
2
)?.
FirstOrDefault
();
}
}
//学生请假申请
string
accountName
=
""
;
if
(
item
.
ReceiptType
==
Common
.
Enum
.
Finance
.
ReceiptTypeEnum
.
LeaveClass
)
{
var
tempModel
=
studentLeaveList
.
Where
(
qitem
=>
qitem
.
Id
==
item
.
RelationId
)?.
FirstOrDefault
();
tempModel
.
LeaveInfoList
=
new
List
<
LeaveInfoModel
>();
foreach
(
var
itemClassTimeIds
in
tempModel
.
ClassTimeIds
.
Split
(
","
))
{
if
(!
string
.
IsNullOrWhiteSpace
(
itemClassTimeIds
))
{
var
tempTimeModel
=
timeLeaveList
.
Where
(
x
=>
x
.
ClassTimeId
.
ToString
()
==
itemClassTimeIds
).
FirstOrDefault
();
LeaveInfoModel
classPlanTimeModel
=
new
LeaveInfoModel
()
{
StartTime
=
tempTimeModel
?.
StartTime
??
""
,
EndTime
=
tempTimeModel
?.
EndTime
??
""
,
TimeHour
=
tempTimeModel
?.
TimeHour
??
0
,
ClassPlanId
=
tempTimeModel
.
ClassPlanId
,
ClassTimeId
=
tempTimeModel
.
ClassTimeId
,
TeacherName
=
planLeaveList
.
Where
(
x
=>
x
.
ClassPlanId
==
tempTimeModel
.
ClassPlanId
).
FirstOrDefault
()?.
TeacherName
??
""
,
RoomName
=
planLeaveList
.
Where
(
x
=>
x
.
ClassPlanId
==
tempTimeModel
.
ClassPlanId
).
FirstOrDefault
()?.
RoomName
??
""
,
};
classPlanTimeModel
.
ClassDate
=
planLeaveList
.
Where
(
x
=>
x
.
ClassPlanId
==
tempTimeModel
.
ClassPlanId
).
FirstOrDefault
()?.
ClassDate
.
ToString
(
"yyyy-MM-dd"
)
??
""
;
tempModel
.
LeaveInfoList
.
Add
(
classPlanTimeModel
);
}
}
tempModel
.
Order_Guest_ViewModel
=
new
RB_Order_Guest_ViewModel
();
tempModel
.
Order_Guest_ViewModel
=
orderGuestLeaveList
.
Where
(
x
=>
x
.
Id
==
tempModel
.
OrderGuestId
).
FirstOrDefault
();
DataObj
=
tempModel
;
accountName
=
tempModel
.
Order_Guest_ViewModel
.
GuestName
;
}
object
AuditObj
=
new
object
();
object
AuditObj
=
new
object
();
if
(
item
.
VerifyStatus
==
EduTaskRrocessStatus
.
NotAudit
||
item
.
VerifyStatus
==
EduTaskRrocessStatus
.
AuditIng
)
if
(
item
.
VerifyStatus
==
EduTaskRrocessStatus
.
NotAudit
||
item
.
VerifyStatus
==
EduTaskRrocessStatus
.
AuditIng
)
{
{
...
@@ -467,7 +557,7 @@ namespace Edu.Module.EduTask
...
@@ -467,7 +557,7 @@ namespace Edu.Module.EduTask
item
.
SpecialNode
,
item
.
SpecialNode
,
item
.
RelationId
,
item
.
RelationId
,
ReceiptTypeName
=
item
.
ReceiptType
.
ToName
(),
ReceiptTypeName
=
item
.
ReceiptType
.
ToName
(),
CreateByName
=
UserReidsCache
.
GetUserLoginInfo
(
item
.
CreateBy
)?.
AccountName
,
CreateByName
=
item
.
ReceiptType
==
Common
.
Enum
.
Finance
.
ReceiptTypeEnum
.
LeaveClass
?
accountName
:
UserReidsCache
.
GetUserLoginInfo
(
item
.
CreateBy
)?.
AccountName
,
CreateTime
=
Common
.
ConvertHelper
.
FormatTime
(
item
.
CreateTime
),
CreateTime
=
Common
.
ConvertHelper
.
FormatTime
(
item
.
CreateTime
),
item
.
TeacherName
,
item
.
TeacherName
,
item
.
SchoolName
,
item
.
SchoolName
,
...
@@ -475,7 +565,7 @@ namespace Edu.Module.EduTask
...
@@ -475,7 +565,7 @@ namespace Edu.Module.EduTask
AuditObj
,
AuditObj
,
item
.
VerifyStatus
,
item
.
VerifyStatus
,
AuditStatusName
=
item
.
VerifyStatus
==
Common
.
Enum
.
EduTask
.
EduTaskRrocessStatus
.
NotAudit
?
"待审"
:
item
.
VerifyStatus
.
ToName
(),
AuditStatusName
=
item
.
VerifyStatus
==
Common
.
Enum
.
EduTask
.
EduTaskRrocessStatus
.
NotAudit
?
"待审"
:
item
.
VerifyStatus
.
ToName
(),
ReceiptFileList
=
string
.
IsNullOrWhiteSpace
(
item
.
ReceiptFile
)?
new
List
<
string
>()
:
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
string
>>(
item
.
ReceiptFile
)
ReceiptFileList
=
string
.
IsNullOrWhiteSpace
(
item
.
ReceiptFile
)
?
new
List
<
string
>()
:
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
string
>>(
item
.
ReceiptFile
)
};
};
result
.
Add
(
obj
);
result
.
Add
(
obj
);
}
}
...
@@ -614,6 +704,11 @@ namespace Edu.Module.EduTask
...
@@ -614,6 +704,11 @@ namespace Edu.Module.EduTask
var
changeClassModel
=
student_StopClassRepository
.
GetEntity
<
RB_Student_StopClass_ViewModel
>(
receipt
.
RelationId
);
var
changeClassModel
=
student_StopClassRepository
.
GetEntity
<
RB_Student_StopClass_ViewModel
>(
receipt
.
RelationId
);
ApplyReason
=
changeClassModel
?.
Remarks
??
""
;
ApplyReason
=
changeClassModel
?.
Remarks
??
""
;
}
}
else
if
(
receipt
.
ReceiptType
==
Common
.
Enum
.
Finance
.
ReceiptTypeEnum
.
LeaveClass
)
{
var
studentLeaveModel
=
studentLeaveRepository
.
GetEntity
<
RB_Student_Leave_ViewModel
>(
receipt
.
RelationId
);
ApplyReason
=
studentLeaveModel
?.
Remarks
??
""
;
}
//获取审核记录
//获取审核记录
var
aurList
=
education_RecordRepository
.
GetEducationRecordListRepository
(
new
RB_Education_Record_ViewModel
()
var
aurList
=
education_RecordRepository
.
GetEducationRecordListRepository
(
new
RB_Education_Record_ViewModel
()
{
{
...
@@ -691,17 +786,19 @@ namespace Edu.Module.EduTask
...
@@ -691,17 +786,19 @@ namespace Edu.Module.EduTask
newRecipientIds
=
((!
string
.
IsNullOrEmpty
(
receipt
.
RecipientIds
)
?
receipt
.
RecipientIds
:
""
)
+
","
+
auditModel
.
RecipientIds
).
TrimStart
(
','
).
TrimEnd
(
','
);
newRecipientIds
=
((!
string
.
IsNullOrEmpty
(
receipt
.
RecipientIds
)
?
receipt
.
RecipientIds
:
""
)
+
","
+
auditModel
.
RecipientIds
).
TrimStart
(
','
).
TrimEnd
(
','
);
#
region
抄送通知
#
region
抄送通知
var
notifyUsers
=
accountRepository
.
GetAccountListExtRepository
(
new
RB_Account_ViewModel
()
{
var
notifyUsers
=
accountRepository
.
GetAccountListExtRepository
(
new
RB_Account_ViewModel
()
QIds
=
newRecipientIds
{
QIds
=
newRecipientIds
});
});
if
(
notifyUsers
!=
null
&&
notifyUsers
.
Count
()
>
0
)
if
(
notifyUsers
!=
null
&&
notifyUsers
.
Count
()
>
0
)
{
{
notifyUsers
.
ForEach
(
x
=>
{
notifyUsers
.
ForEach
(
x
=>
{
if
(!
string
.
IsNullOrEmpty
(
x
.
WorkUserId
))
if
(!
string
.
IsNullOrEmpty
(
x
.
WorkUserId
))
{
{
var
recipientPath
=
HttpUtility
.
UrlEncode
(
$"/teacher/change-class-manager?tab=4&id=
{
receipt
.
Id
}
"
);
var
recipientPath
=
HttpUtility
.
UrlEncode
(
$"/teacher/change-class-manager?tab=4&id=
{
receipt
.
Id
}
"
);
var
content
=
$"<font color='info'>抄送通知</font> 你收到了一张
{
EnumHelper
.
ToName
(
receipt
.
ReceiptType
)}
单据抄送\n>**概要信息** \n>抄 送 人:<font color='comment'>
{
user
.
AccountName
}
</font>\n>单据编号:<font color='comment'>
{
receipt
.
Id
}
</font>\n>创 建 人:<font color='comment'>
{
UserReidsCache
.
GetUserLoginInfo
(
receipt
.
CreateBy
).
AccountName
}
</font>\n>申请时间:<font color='comment'>
{
receipt
.
CreateTime
.
ToString
(
"MM-dd HH:mm"
)}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
recipientPath
}
)"
;
var
content
=
$"<font color='info'>抄送通知</font> 你收到了一张
{
EnumHelper
.
ToName
(
receipt
.
ReceiptType
)}
单据抄送\n>**概要信息** \n>抄 送 人:<font color='comment'>
{
user
.
AccountName
}
</font>\n>单据编号:<font color='comment'>
{
receipt
.
Id
}
</font>\n>创 建 人:<font color='comment'>
{
UserReidsCache
.
GetUserLoginInfo
(
receipt
.
CreateBy
).
AccountName
}
</font>\n>申请时间:<font color='comment'>
{
receipt
.
CreateTime
.
ToString
(
"MM-dd HH:mm"
)}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
recipientPath
}
)"
;
PushWorkChatHelper
.
PushToWorkChat
(
content
,
x
.
WorkUserId
,
"抄送通知"
);
PushWorkChatHelper
.
PushToWorkChat
(
content
,
x
.
WorkUserId
,
"抄送通知"
);
}
}
});
});
}
}
...
@@ -758,7 +855,8 @@ namespace Edu.Module.EduTask
...
@@ -758,7 +855,8 @@ namespace Edu.Module.EduTask
#
region
更新审核记录表状态
#
region
更新审核记录表状态
flag
=
UpdateEduRecordModule
(
WFRrocessStatus
.
AuditNotThrough
,
auditModel
.
Description
,
user
.
Id
,
amodel
.
Id
);
flag
=
UpdateEduRecordModule
(
WFRrocessStatus
.
AuditNotThrough
,
auditModel
.
Description
,
user
.
Id
,
amodel
.
Id
);
if
(
flag
)
{
if
(
flag
)
{
#
region
驳回通知
#
region
驳回通知
var
notifyUsers
=
accountRepository
.
GetWorkUserIdRepository
(
receipt
.
CreateBy
);
var
notifyUsers
=
accountRepository
.
GetWorkUserIdRepository
(
receipt
.
CreateBy
);
if
(!
string
.
IsNullOrEmpty
(
notifyUsers
))
if
(!
string
.
IsNullOrEmpty
(
notifyUsers
))
...
@@ -792,7 +890,7 @@ namespace Edu.Module.EduTask
...
@@ -792,7 +890,7 @@ namespace Edu.Module.EduTask
{
nameof
(
RB_Education_Receipt_ViewModel
.
VerifyStatus
),(
int
)
EduTaskRrocessStatus
.
Rejected
}
{
nameof
(
RB_Education_Receipt_ViewModel
.
VerifyStatus
),(
int
)
EduTaskRrocessStatus
.
Rejected
}
};
};
flag
=
education_ReceiptRepository
.
Update
(
fileds
,
new
WhereHelper
(
nameof
(
RB_Education_Receipt_ViewModel
.
Id
),
receipt
.
Id
));
flag
=
education_ReceiptRepository
.
Update
(
fileds
,
new
WhereHelper
(
nameof
(
RB_Education_Receipt_ViewModel
.
Id
),
receipt
.
Id
));
flag
=
UpdateOtherModule
(
receipt
,
auditModel
);
flag
=
UpdateOtherModule
(
receipt
,
auditModel
,
user
);
}
}
...
@@ -852,7 +950,7 @@ namespace Edu.Module.EduTask
...
@@ -852,7 +950,7 @@ namespace Edu.Module.EduTask
flag
=
UpdateEduRelevanceModule
(
model
.
Id
,
model
.
Stauts
,
model
.
AuditedId
);
flag
=
UpdateEduRelevanceModule
(
model
.
Id
,
model
.
Stauts
,
model
.
AuditedId
);
#
endregion
#
endregion
flag
=
UpdateOtherModule
(
receipt
,
auditModel
);
flag
=
UpdateOtherModule
(
receipt
,
auditModel
,
user
);
}
}
else
else
...
@@ -909,7 +1007,7 @@ namespace Edu.Module.EduTask
...
@@ -909,7 +1007,7 @@ namespace Edu.Module.EduTask
flag
=
UpdateEduRecordModule
(
WFRrocessStatus
.
OtherHaveAudit
,
auditModel
.
Description
,
user
.
Id
,
item
.
Id
);
flag
=
UpdateEduRecordModule
(
WFRrocessStatus
.
OtherHaveAudit
,
auditModel
.
Description
,
user
.
Id
,
item
.
Id
);
}
}
}
}
flag
=
UpdateOtherModule
(
receipt
,
auditModel
);
flag
=
UpdateOtherModule
(
receipt
,
auditModel
,
user
);
}
}
else
else
{
{
...
@@ -943,7 +1041,7 @@ namespace Edu.Module.EduTask
...
@@ -943,7 +1041,7 @@ namespace Edu.Module.EduTask
flag
=
UpdateEduRelevanceModule
(
model
.
Id
,
model
.
Stauts
,
model
.
AuditedId
);
flag
=
UpdateEduRelevanceModule
(
model
.
Id
,
model
.
Stauts
,
model
.
AuditedId
);
#
endregion
#
endregion
flag
=
UpdateOtherModule
(
receipt
,
auditModel
);
flag
=
UpdateOtherModule
(
receipt
,
auditModel
,
user
);
}
}
Dictionary
<
string
,
object
>
fileds
=
new
Dictionary
<
string
,
object
>()
Dictionary
<
string
,
object
>
fileds
=
new
Dictionary
<
string
,
object
>()
...
@@ -1161,7 +1259,7 @@ namespace Edu.Module.EduTask
...
@@ -1161,7 +1259,7 @@ namespace Edu.Module.EduTask
/// <param name="receiptModel">单据实体</param>
/// <param name="receiptModel">单据实体</param>
/// <param name="auditModel">审核实体</param>
/// <param name="auditModel">审核实体</param>
/// <returns></returns>
/// <returns></returns>
public
bool
UpdateOtherModule
(
RB_Education_Receipt
receiptModel
,
EduReceiptAudit
auditModel
)
public
bool
UpdateOtherModule
(
RB_Education_Receipt
receiptModel
,
EduReceiptAudit
auditModel
,
UserInfo
user
)
{
{
bool
flag
=
true
;
bool
flag
=
true
;
//退课
//退课
...
@@ -1228,6 +1326,15 @@ namespace Edu.Module.EduTask
...
@@ -1228,6 +1326,15 @@ namespace Edu.Module.EduTask
//student_BackClassRepository.UpdateGuestStateRepository(receiptModel, auditModel);
//student_BackClassRepository.UpdateGuestStateRepository(receiptModel, auditModel);
}
}
}
}
if
(
receiptModel
.
ReceiptType
==
Common
.
Enum
.
Finance
.
ReceiptTypeEnum
.
OrderSplitClass
)
{
if
(
auditModel
.
AuditStatus
==
2
)
{
studentLeaveRepository
.
UpdateStundetLeave
(
receiptModel
.
Id
,
user
.
Id
);
}
}
return
flag
;
return
flag
;
}
}
...
...
Edu.Module.EduTask/LeaveStudentModule.cs
0 → 100644
View file @
a7752df6
using
Edu.Model.Entity.Course
;
using
Edu.Model.Entity.EduTask
;
using
Edu.Model.Entity.Sell
;
using
Edu.Model.ViewModel.EduTask
;
using
Edu.Model.ViewModel.Sell
;
using
Edu.Repository.Course
;
using
Edu.Repository.EduTask
;
using
Edu.Repository.Sell
;
using
System.Collections.Generic
;
using
System.Linq
;
using
VT.FW.AOP.CustomerAttribute
;
using
VT.FW.DB
;
namespace
Edu.Module.EduTask
{
/// <summary>
/// 调课计划处理类
/// </summary>
public
class
LeaveStudentModule
{
/// <summary>
/// 教务单据仓储层对象
/// </summary>
private
readonly
RB_Education_ReceiptRepository
education_ReceiptRepository
=
new
RB_Education_ReceiptRepository
();
/// <summary>
/// 请假计划仓储层对象
/// </summary>
private
readonly
RB_Student_LeaveRepository
RB_Student_LeaveRepository
=
new
RB_Student_LeaveRepository
();
/// <summary>
/// 订单学员仓储层对象
/// </summary>
private
readonly
RB_Order_GuestRepository
order_GuestRepository
=
new
RB_Order_GuestRepository
();
/// <summary>
/// 获取请假列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public
List
<
RB_Student_Leave_ViewModel
>
GetStudentLeaveListRepository
(
RB_Student_Leave_ViewModel
query
)
{
return
RB_Student_LeaveRepository
.
GetStudentLeaveListRepository
(
query
);
}
/// <summary>
/// 新增修改请假申请
/// </summary>
/// <returns></returns>
[
TransactionCallHandler
]
public
virtual
bool
SetStudentLeaveModule
(
RB_Student_Leave_ViewModel
extModel
,
string
receiptFile
)
{
bool
flag
=
false
;
if
(
extModel
.
Id
>
0
)
{
Dictionary
<
string
,
object
>
fileds
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Student_Leave_ViewModel
.
OrderGuestId
),
extModel
.
OrderGuestId
},
{
nameof
(
RB_Student_Leave_ViewModel
.
ClassId
),
extModel
.
ClassId
},
{
nameof
(
RB_Student_Leave_ViewModel
.
CourseId
),
extModel
.
CourseId
},
{
nameof
(
RB_Student_Leave_ViewModel
.
LeaveInfo
),
extModel
.
LeaveInfo
},
{
nameof
(
RB_Student_Leave_ViewModel
.
UpdateBy
),
extModel
.
UpdateBy
},
{
nameof
(
RB_Student_Leave_ViewModel
.
UpdateTime
),
extModel
.
UpdateTime
},
};
flag
=
RB_Student_LeaveRepository
.
Update
(
fileds
,
new
WhereHelper
(
nameof
(
RB_Student_Leave_ViewModel
.
Id
),
extModel
.
Id
));
}
else
{
var
newId
=
RB_Student_LeaveRepository
.
Insert
(
extModel
);
extModel
.
Id
=
newId
;
flag
=
newId
>
0
;
if
(
flag
)
{
var
educationReceipt
=
new
RB_Education_Receipt
()
{
Id
=
0
,
Title
=
"学生请假申请"
,
ReceiptType
=
Common
.
Enum
.
Finance
.
ReceiptTypeEnum
.
LeaveClass
,
RelationId
=
newId
,
ClassId
=
extModel
.
ClassId
,
Group_Id
=
extModel
.
Group_Id
,
School_Id
=
extModel
.
School_Id
,
CreateBy
=
extModel
.
CreateBy
,
CreateTime
=
extModel
.
CreateTime
,
UpdateBy
=
extModel
.
UpdateBy
,
UpdateTime
=
extModel
.
UpdateTime
,
VerifyStatus
=
Common
.
Enum
.
EduTask
.
EduTaskRrocessStatus
.
NotAudit
,
ReceiptFile
=
receiptFile
};
flag
=
education_ReceiptRepository
.
SetEducationReceiptRepository
(
educationReceipt
,
out
string
message
);
}
}
return
flag
;
}
public
bool
UpdateChangeClassPlan
(
int
id
)
{
return
RB_Student_LeaveRepository
.
UpdateStundetLeave
(
id
,
1
);
}
}
}
Edu.Module.EduTask/StopStudentClassModule.cs
View file @
a7752df6
...
@@ -121,5 +121,9 @@ namespace Edu.Module.EduTask
...
@@ -121,5 +121,9 @@ namespace Edu.Module.EduTask
}
}
return
flag
;
return
flag
;
}
}
}
}
}
}
Edu.Repository/EduTask/RB_Education_ReceiptRepository.cs
View file @
a7752df6
...
@@ -277,6 +277,15 @@ WHERE 1=1
...
@@ -277,6 +277,15 @@ WHERE 1=1
return
false
;
return
false
;
}
}
}
}
else
if
(
model
.
ReceiptType
==
Common
.
Enum
.
Finance
.
ReceiptTypeEnum
.
LeaveClass
)
{
flowModel
=
flowRepository
.
GetFlowRepository
(
Common
.
Config
.
OrderSplitClassFlowId
);
if
(
flowModel
==
null
)
{
message
=
"未配置学生请假流程!"
;
return
false
;
}
}
if
(
flowModel
?.
FlowNodeList
?.
Count
==
0
)
if
(
flowModel
?.
FlowNodeList
?.
Count
==
0
)
{
{
message
=
"未配置审核流程!"
;
message
=
"未配置审核流程!"
;
...
...
Edu.Repository/EduTask/RB_Student_LeaveRepository.cs
0 → 100644
View file @
a7752df6
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Web
;
using
Edu.Common
;
using
Edu.Common.Enum.System
;
using
Edu.Model.Entity.EduTask
;
using
Edu.Model.Entity.Sell
;
using
Edu.Model.ViewModel.EduTask
;
using
Edu.Model.ViewModel.Grade
;
using
Edu.Model.ViewModel.Sell
;
using
Edu.Repository.Grade
;
using
Edu.Repository.Sell
;
using
VT.FW.DB
;
namespace
Edu.Repository.EduTask
{
public
class
RB_Student_LeaveRepository
:
BaseRepository
<
RB_Student_Leave
>
{
// <summary>
/// 订单学员仓储层对象
/// </summary>
private
readonly
RB_Order_GuestRepository
order_GuestRepository
=
new
RB_Order_GuestRepository
();
/// <summary>
/// 教务单据仓储层对象
/// </summary>
private
readonly
RB_Education_ReceiptRepository
education_ReceiptRepository
=
new
RB_Education_ReceiptRepository
();
/// <summary>
/// 课程基础配置
/// </summary>
private
readonly
RB_Class_ConfigRepository
class_ConfigRepository
=
new
RB_Class_ConfigRepository
();
/// <summary>
/// 班级仓储层对象
/// </summary>
private
readonly
RB_ClassRepository
classRepository
=
new
RB_ClassRepository
();
/// <summary>
/// 课程签到记录表
/// </summary>
private
readonly
RB_Class_CheckRepository
classCheckRepository
=
new
RB_Class_CheckRepository
();
/// <summary>
/// 班级上课计划仓储层对象
/// </summary>
private
readonly
RB_Class_PlanRepository
class_PlanRepository
=
new
RB_Class_PlanRepository
();
/// <summary>
/// 订单仓储层对象
/// </summary>
private
readonly
RB_OrderRepository
orderRepository
=
new
RB_OrderRepository
();
/// <summary>
/// 账户仓储层
/// </summary>
private
readonly
User
.
RB_AccountRepository
accountRepository
=
new
User
.
RB_AccountRepository
();
/// <summary>
/// 日志仓储对象
/// </summary>
private
readonly
Log
.
RB_User_ChangeLogRepository
user_ChangeLogRepository
=
new
Log
.
RB_User_ChangeLogRepository
();
/// <summary>
/// 班级上课计划上课时间仓储层对象
/// </summary>
private
readonly
RB_Class_TimeRepository
class_TimeRepository
=
new
RB_Class_TimeRepository
();
/// <summary>
/// 学员补课记录表仓储层对象
/// </summary>
private
readonly
BackClass
.
RB_Student_MakeupRepository
student_MakeupRepository
=
new
BackClass
.
RB_Student_MakeupRepository
();
/// <summary>
/// 获取请假列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public
List
<
RB_Student_Leave_ViewModel
>
GetStudentLeaveListRepository
(
RB_Student_Leave_ViewModel
query
)
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
AppendFormat
(
@" SELECT A.*,IFNULL(B.ClassName,'') AS ClassName FROM RB_Student_Leave AS A LEFT JOIN rb_class AS B ON A.ClassId=B.ClassId WHERE 1=1 "
);
if
(
query
!=
null
)
{
if
(!
string
.
IsNullOrEmpty
(
query
.
Q_Student_Leave_Ids
))
{
builder
.
AppendFormat
(
@" AND A.{0} IN ({1}) "
,
nameof
(
RB_Student_Leave_ViewModel
.
Id
),
query
.
Q_Student_Leave_Ids
);
}
}
return
Get
<
RB_Student_Leave_ViewModel
>(
builder
.
ToString
()).
ToList
();
}
/// <summary>
/// 审核通过后更新学生签到表
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public
bool
UpdateStundetLeave
(
object
Id
,
int
CreateById
)
{
//查询当前调课信息
bool
flag
=
false
;
var
receiptModel
=
education_ReceiptRepository
.
GetEntity
(
Id
);
if
(
receiptModel
==
null
||
receiptModel
.
Id
==
0
)
{
return
false
;
}
if
(
receiptModel
.
ReceiptType
!=
Common
.
Enum
.
Finance
.
ReceiptTypeEnum
.
LeaveClass
)
{
return
false
;
}
var
model
=
GetEntity
(
receiptModel
.
RelationId
);
if
(
model
==
null
||
model
.
Id
==
0
)
{
return
false
;
}
else
//更新学生的信息
{
/// <summary>
/// 请假时间信息
/// </summary>
List
<
LeaveInfoModel
>
LeaveInfoList
=
new
List
<
LeaveInfoModel
>();
if
(!
string
.
IsNullOrWhiteSpace
(
model
.
LeaveInfo
))
{
LeaveInfoList
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
LeaveInfoModel
>>(
model
.
LeaveInfo
);
}
//学生信息
List
<
RB_Order_Guest_ViewModel
>
orderGuestList
=
new
List
<
RB_Order_Guest_ViewModel
>();
//班级上课计划列表
List
<
RB_Class_Plan_ViewModel
>
planList
=
new
List
<
RB_Class_Plan_ViewModel
>();
//班级上课时间列表
List
<
RB_Class_Time_ViewModel
>
timeList
=
new
List
<
RB_Class_Time_ViewModel
>();
string
orderGuestIds
=
model
.
OrderGuestId
.
ToString
();
if
(!
string
.
IsNullOrWhiteSpace
(
orderGuestIds
))
{
orderGuestList
=
order_GuestRepository
.
GetStopingStudentPage
(
new
RB_Order_Guest_ViewModel
{
OrderGuestIds
=
orderGuestIds
});
}
string
classTimeIds
=
model
.
ClassTimeIds
;
if
(!
string
.
IsNullOrWhiteSpace
(
classTimeIds
))
{
timeList
=
class_TimeRepository
.
GetClassTimeListRepository
(
new
RB_Class_Time_ViewModel
{
QClassTimeIds
=
classTimeIds
});
if
(
timeList
!=
null
&&
timeList
.
Any
())
{
string
classPlanIds
=
string
.
Join
(
","
,
timeList
.
Select
(
x
=>
x
.
ClassPlanId
));
if
(!
string
.
IsNullOrWhiteSpace
(
classPlanIds
))
{
planList
=
class_PlanRepository
.
GetClassPlanListRepository
(
new
RB_Class_Plan_ViewModel
{
QClassPlanIds
=
classPlanIds
});
}
}
}
List
<
RB_Class_Check_ViewModel
>
classCheckList
=
new
List
<
RB_Class_Check_ViewModel
>();
//判断当天是否有已签到数据
var
checkLogList
=
classCheckRepository
.
GetClassCheckList
(
new
RB_Class_Check_ViewModel
{
Group_Id
=
model
.
Group_Id
,
ClassId
=
model
.
ClassId
,
Q_ClassTimeIds
=
model
.
ClassTimeIds
,
});
foreach
(
var
item
in
timeList
)
{
DateTime
?
dateTime
=
planList
.
Where
(
x
=>
x
.
ClassPlanId
==
item
.
ClassPlanId
).
FirstOrDefault
()?.
ClassDate
;
if
(!
dateTime
.
HasValue
)
{
try
{
dateTime
=
Convert
.
ToDateTime
(
LeaveInfoList
.
Where
(
x
=>
x
.
ClassTimeId
==
item
.
ClassTimeId
).
FirstOrDefault
().
ClassDate
);
}
catch
(
Exception
ex
)
{
}
}
var
signModel
=
checkLogList
?.
Where
(
qitem
=>
qitem
.
ClassTimeId
==
item
.
ClassTimeId
&&
qitem
.
ClassId
==
item
.
ClassId
&&
qitem
.
OrderGuestId
==
model
.
OrderGuestId
)?.
FirstOrDefault
();
RB_Class_Check_ViewModel
invitationModel
=
new
RB_Class_Check_ViewModel
()
{
ClassCheckId
=
(
signModel
!=
null
&&
signModel
.
ClassCheckId
>
0
)
?
signModel
.
ClassCheckId
:
0
,
ClassId
=
model
.
ClassId
,
Group_Id
=
model
.
Group_Id
,
School_Id
=
model
.
School_Id
,
CheckStatus
=
2
,
StudyNum
=
0
,
Status
=
0
,
TeacherId
=
planList
.
Where
(
x
=>
x
.
ClassPlanId
==
item
.
ClassPlanId
).
FirstOrDefault
()?.
TeacherId
??
0
,
ClassRoomId
=
planList
.
Where
(
x
=>
x
.
ClassPlanId
==
item
.
ClassPlanId
).
FirstOrDefault
()?.
ClassRoomId
??
0
,
ClassDate
=
dateTime
.
Value
,
ClassTimeId
=
item
.
ClassTimeId
,
OrderGuestId
=
model
.
OrderGuestId
,
CreateBy
=
CreateById
,
CreateTime
=
DateTime
.
Now
};
classCheckList
.
Add
(
invitationModel
);
}
if
(
classCheckList
!=
null
&&
classCheckList
.
Any
())
{
var
orderModel
=
orderRepository
.
GetEntity
(
orderGuestList
.
FirstOrDefault
().
OrderId
);
var
classModel
=
classRepository
.
GetEntity
<
RB_Class_ViewModel
>(
model
.
ClassId
);
var
sellerInfo
=
accountRepository
.
GetAccountListExtRepository
(
new
Model
.
ViewModel
.
User
.
RB_Account_ViewModel
{
Id
=
orderModel
.
EnterID
,
Group_Id
=
model
.
Group_Id
}).
FirstOrDefault
();
//UserReidsCache.GetUserLoginInfo(orderModel.EnterID);
flag
=
AddClassCheckModule
(
classCheckList
,
timeList
,
orderGuestList
,
orderModel
,
classModel
,
sellerInfo
);
}
}
return
flag
;
}
/// <summary>
/// 新增签到
/// </summary>
/// <param name="Ids"></param>
/// <param name="DropOutRemark"></param>
/// <returns></returns>
public
virtual
bool
AddClassCheckModule
(
List
<
RB_Class_Check_ViewModel
>
list
,
List
<
RB_Class_Time_ViewModel
>
timeList
,
List
<
RB_Order_Guest_ViewModel
>
orderGuestList
,
RB_Order
orderModel
,
RB_Class_ViewModel
classModel
,
Model
.
ViewModel
.
User
.
RB_Account_ViewModel
sellerInfo
)
{
//写日志
bool
flag
=
true
;
foreach
(
var
item
in
list
)
{
//基础课时分钟数
var
BasicMinutes
=
0
;
BasicMinutes
=
class_ConfigRepository
.
GetClassMinutesRepository
(
item
.
ClassId
);
var
timeModel
=
timeList
.
Where
(
x
=>
x
.
ClassTimeId
==
item
.
ClassTimeId
).
FirstOrDefault
();
if
(
flag
)
{
var
guestModel
=
orderGuestList
.
Where
(
x
=>
x
.
Id
==
item
.
OrderGuestId
).
FirstOrDefault
();
item
.
CurrentDeductionHours
=
timeModel
?.
TimeHour
??
0
;
decimal
currentDeductionHours
=
item
.
CurrentDeductionHours
;
if
(
item
.
CheckStatus
==
2
)
{
currentDeductionHours
=
0
;
}
if
(
item
.
ClassCheckId
>
0
)
{
Dictionary
<
string
,
object
>
fileds
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Class_Check_ViewModel
.
CheckStatus
),
item
.
CheckStatus
},
{
nameof
(
RB_Class_Check_ViewModel
.
StudyNum
),
item
.
StudyNum
},
{
nameof
(
RB_Class_Check_ViewModel
.
CurrentDeductionHours
),
currentDeductionHours
},
};
List
<
WhereHelper
>
wheres
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(
nameof
(
RB_Class_Check_ViewModel
.
ClassCheckId
),
item
.
ClassCheckId
)
};
flag
=
classCheckRepository
.
Update
(
fileds
,
wheres
);
}
else
{
item
.
CurrentDeductionHours
=
currentDeductionHours
;
item
.
MakeUpStatus
=
1
;
var
newId
=
classCheckRepository
.
Insert
(
item
);
item
.
ClassCheckId
=
newId
;
flag
=
newId
>
0
;
}
var
oldModel
=
classCheckRepository
.
GetGuestFinishMinutesRepository
(
item
.
OrderGuestId
.
ToString
(),
ClassCheckId
:
item
.
ClassCheckId
)?.
FirstOrDefault
();
if
(
flag
)
{
//更新学员完成课时
var
completeHours
=
(
oldModel
?.
FinishClassHours
??
0
)
+
currentDeductionHours
;
Dictionary
<
string
,
object
>
orderFileds
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Order_Guest_ViewModel
.
CompleteHours
),
completeHours
}
};
string
LogContent
=
""
;
var
shenyuHours
=
guestModel
.
ValidClassHours
-
completeHours
;
//已上课时>=有效课时,如果是,修改学员状态为停课,并且备注“有效课时消耗完毕,系统自动停课”
if
(
completeHours
>
guestModel
.
ValidClassHours
)
{
orderFileds
.
Add
(
nameof
(
RB_Order_Guest_ViewModel
.
GuestState
),
5
);
orderFileds
.
Add
(
nameof
(
RB_Order_Guest_ViewModel
.
ChangeEffectTime
),
DateTime
.
Now
);
orderFileds
.
Add
(
nameof
(
RB_Order_Guest_ViewModel
.
DropOutRemark
),
"有效课时消耗完毕,系统自动停课"
);
LogContent
=
guestModel
.
GuestName
+
"有效课时消耗完毕,系统自动停课!"
;
// var orderModel = orderRepository.GetEntity(guestModel.OrderId);
var
shengyuMoney
=
orderModel
.
PreferPrice
-
orderModel
.
Income
+
orderModel
.
Refund
-
orderModel
.
PlatformTax
-
orderModel
.
DiscountMoney
-
orderModel
.
LessPrice
;
// var classModel = classRepository.GetEntity<RB_Class_ViewModel>(guestModel.ClassId);
// var sellerInfo = UserReidsCache.GetUserLoginInfo(orderModel.EnterID);
#
region
欠费提醒(销售)
var
queryTargetWorkId
=
accountRepository
.
GetWorkUserIdRepository
(
orderModel
.
EnterID
);
if
(!
string
.
IsNullOrEmpty
(
queryTargetWorkId
))
{
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var
path
=
$"/sale/myOrder?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>当前状态:<font color='warning'>停课</font>\n>关联单号:
{
guestModel
.
OrderId
}
\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
.
ToString
(
"0.00"
)}
</font>\n>停课理由:费用不足,系统自动触发停课限制\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
orderModel
.
EnterID
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
Content
=
markdownContent
,
CoverImg
=
""
,
CreateByName
=
"系统"
,
JumpUrl
=
""
,
WorkMsgType
=
"markdown"
,
SendTime
=
DateTime
.
Now
,
SendType
=
0
,
Title
=
"学员欠费停课通知"
,
Platform
=
5
,
ReceiveId
=
queryTargetWorkId
};
Common
.
Message
.
MessageHelper
.
SendMessage
(
modelWork
);
}
#
endregion
#
region
欠费提醒(管理者)
var
queryNotifyManager
=
accountRepository
.
GetWorkUserIdByDictRepository
(
"Push_Arrears"
);
if
(
queryNotifyManager
!=
null
&&
queryNotifyManager
.
Count
>
0
)
{
queryNotifyManager
.
ForEach
(
x
=>
{
var
path
=
$"/sale/orderStatistics?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>当前状态:<font color='warning'>停课</font>\n>关联单号:
{
guestModel
.
OrderId
}
(
{
sellerInfo
.
AccountName
}
)\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
.
ToString
(
"0.00"
)}
</font>\n>停课理由:费用不足,系统自动触发停课限制\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
Content
=
markdownContent
,
CoverImg
=
""
,
CreateByName
=
"系统"
,
JumpUrl
=
""
,
WorkMsgType
=
"markdown"
,
SendTime
=
DateTime
.
Now
,
SendType
=
0
,
Title
=
"学员欠费停课通知"
,
Platform
=
5
,
ReceiveId
=
x
.
WorkUserId
};
Common
.
Message
.
MessageHelper
.
SendMessage
(
modelWork
);
});
}
#
endregion
}
else
if
(
guestModel
.
TotalHours
>
guestModel
.
ValidClassHours
&&
shenyuHours
<
12
)
{
// var orderModel = orderRepository.GetEntity(guestModel.OrderId);
var
shengyuMoney
=
orderModel
.
PreferPrice
-
orderModel
.
Income
+
orderModel
.
Refund
-
orderModel
.
PlatformTax
-
orderModel
.
DiscountMoney
-
orderModel
.
LessPrice
;
// var classModel = classRepository.GetEntity<RB_Class_ViewModel>(guestModel.ClassId);
// var sellerInfo = UserReidsCache.GetUserLoginInfo(orderModel.EnterID);
#
region
即将欠费提醒(销售)
var
queryTargetWorkId
=
accountRepository
.
GetWorkUserIdRepository
(
orderModel
.
EnterID
);
if
(!
string
.
IsNullOrEmpty
(
queryTargetWorkId
))
{
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var
path
=
$"/sale/myOrder?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`欠费预警` 学员即将欠费通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>剩余课时:<font color='warning'>
{
shenyuHours
}
</font>\n>关联单号:
{
guestModel
.
OrderId
}
\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
.
ToString
(
"0.00"
)}
</font>\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
orderModel
.
EnterID
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
Content
=
markdownContent
,
CoverImg
=
""
,
CreateByName
=
"系统"
,
JumpUrl
=
""
,
WorkMsgType
=
"markdown"
,
SendTime
=
DateTime
.
Now
,
SendType
=
0
,
Title
=
"学员即将欠费通知"
,
Platform
=
5
,
ReceiveId
=
queryTargetWorkId
};
Common
.
Message
.
MessageHelper
.
SendMessage
(
modelWork
);
}
#
endregion
#
region
即将欠费提醒(管理者)
var
queryNotifyManager
=
accountRepository
.
GetWorkUserIdByDictRepository
(
"Push_Arrears"
);
if
(
queryNotifyManager
!=
null
&&
queryNotifyManager
.
Count
>
0
)
{
queryNotifyManager
.
ForEach
(
x
=>
{
var
path
=
$"/sale/orderStatistics?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`欠费预警` 学员即将欠费通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>剩余课时:<font color='warning'>
{
shenyuHours
}
</font>\n>关联单号:
{
guestModel
.
OrderId
}
(
{
sellerInfo
.
AccountName
}
)\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
.
ToString
(
"0.00"
)}
</font>\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
Content
=
markdownContent
,
CoverImg
=
""
,
CreateByName
=
"系统"
,
JumpUrl
=
""
,
WorkMsgType
=
"markdown"
,
SendTime
=
DateTime
.
Now
,
SendType
=
0
,
Title
=
"学员即将欠费通知"
,
Platform
=
5
,
ReceiveId
=
x
.
WorkUserId
};
Common
.
Message
.
MessageHelper
.
SendMessage
(
modelWork
);
});
}
#
endregion
}
else
if
(
guestModel
.
TotalHours
==
guestModel
.
ValidClassHours
&&
shenyuHours
<
12
&&
shenyuHours
>
0
)
{
// var orderModel = orderRepository.GetEntity(guestModel.OrderId);
var
shengyuMoney
=
orderModel
.
PreferPrice
-
orderModel
.
Income
+
orderModel
.
Refund
-
orderModel
.
PlatformTax
-
orderModel
.
DiscountMoney
-
orderModel
.
LessPrice
;
// var classModel = classRepository.GetEntity<RB_Class_ViewModel>(guestModel.ClassId);
// var sellerInfo = UserReidsCache.GetUserLoginInfo(orderModel.EnterID);
#
region
即将结课提醒
(
销售端
)
var
queryTargetWorkId
=
accountRepository
.
GetWorkUserIdRepository
(
orderModel
.
EnterID
);
if
(!
string
.
IsNullOrEmpty
(
queryTargetWorkId
))
{
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var
path
=
$"/sale/myOrder?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`结课预警` 学员即将结课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>剩余课时:<font color='warning'>
{
shenyuHours
}
</font>\n>是否续班:<font color='
{(
orderModel
.
RenewOrderId
>
0
?
"info"
:
"warning"
)}
'>
{(
orderModel
.
RenewOrderId
>
0
?
"已续班("
+
orderModel
.
RenewOrderId
+
")"
:
"未续班"
)}
</font>\n>关联单号:
{
guestModel
.
OrderId
}
\n>\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
orderModel
.
EnterID
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
Content
=
markdownContent
,
CoverImg
=
""
,
CreateByName
=
"系统"
,
JumpUrl
=
""
,
WorkMsgType
=
"markdown"
,
SendTime
=
DateTime
.
Now
,
SendType
=
0
,
Title
=
"学员即将结课通知"
,
Platform
=
5
,
ReceiveId
=
queryTargetWorkId
};
Common
.
Message
.
MessageHelper
.
SendMessage
(
modelWork
);
}
#
endregion
#
region
即将结课提醒
(
管理端
)
var
queryNotifyManager
=
accountRepository
.
GetWorkUserIdByDictRepository
(
"Push_EndClass"
);
if
(
queryNotifyManager
!=
null
&&
queryNotifyManager
.
Count
>
0
)
{
queryNotifyManager
.
ForEach
(
x
=>
{
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var
path
=
$"/sale/orderStatistics?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`结课预警` 学员即将结课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>剩余课时:<font color='warning'>
{
shenyuHours
}
</font>\n>是否续班:<font color='
{(
orderModel
.
RenewOrderId
>
0
?
"info"
:
"warning"
)}
'>
{(
orderModel
.
RenewOrderId
>
0
?
"已续班("
+
orderModel
.
RenewOrderId
+
")"
:
"未续班"
)}
</font>\n>关联单号:
{
guestModel
.
OrderId
}
(
{
sellerInfo
.
AccountName
}
)\n>\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
Content
=
markdownContent
,
CoverImg
=
""
,
CreateByName
=
"系统"
,
JumpUrl
=
""
,
WorkMsgType
=
"markdown"
,
SendTime
=
DateTime
.
Now
,
SendType
=
0
,
Title
=
"学员即将结课通知"
,
Platform
=
5
,
ReceiveId
=
x
.
WorkUserId
};
Common
.
Message
.
MessageHelper
.
SendMessage
(
modelWork
);
});
}
#
endregion
}
else
if
(
guestModel
.
TotalHours
==
guestModel
.
ValidClassHours
&&
shenyuHours
==
0
)
{
// var orderModel = orderRepository.GetEntity(guestModel.OrderId);
var
shengyuMoney
=
orderModel
.
PreferPrice
-
orderModel
.
Income
+
orderModel
.
Refund
-
orderModel
.
PlatformTax
-
orderModel
.
DiscountMoney
-
orderModel
.
LessPrice
;
// var classModel = classRepository.GetEntity<RB_Class_ViewModel>(guestModel.ClassId);
// var sellerInfo = UserReidsCache.GetUserLoginInfo(orderModel.EnterID);
#
region
即将结课提醒
(
销售端
)
var
queryTargetWorkId
=
accountRepository
.
GetWorkUserIdRepository
(
orderModel
.
EnterID
);
if
(!
string
.
IsNullOrEmpty
(
queryTargetWorkId
))
{
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var
path
=
$"/sale/myOrder?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`结课通知` 学员已结课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>剩余课时:<font color='warning'>
{
shenyuHours
}
</font>\n>是否续班:<font color='
{(
orderModel
.
RenewOrderId
>
0
?
"info"
:
"warning"
)}
'>
{(
orderModel
.
RenewOrderId
>
0
?
"已续班("
+
orderModel
.
RenewOrderId
+
")"
:
"未续班"
)}
</font>\n>关联单号:
{
guestModel
.
OrderId
}
\n>\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
orderModel
.
EnterID
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
Content
=
markdownContent
,
CoverImg
=
""
,
CreateByName
=
"系统"
,
JumpUrl
=
""
,
WorkMsgType
=
"markdown"
,
SendTime
=
DateTime
.
Now
,
SendType
=
0
,
Title
=
"学员已结课通知"
,
Platform
=
5
,
ReceiveId
=
queryTargetWorkId
};
Common
.
Message
.
MessageHelper
.
SendMessage
(
modelWork
);
}
#
endregion
#
region
即将结课提醒
(
销售端
)
var
queryNotifyManager
=
accountRepository
.
GetWorkUserIdByDictRepository
(
"Push_EndClass"
);
if
(
queryNotifyManager
!=
null
&&
queryNotifyManager
.
Count
>
0
)
{
queryNotifyManager
.
ForEach
(
x
=>
{
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var
path
=
$"/sale/orderStatistics?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`结课通知` 学员已结课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>剩余课时:<font color='warning'>
{
shenyuHours
}
</font>\n>是否续班:<font color='
{(
orderModel
.
RenewOrderId
>
0
?
"info"
:
"warning"
)}
'>
{(
orderModel
.
RenewOrderId
>
0
?
"已续班("
+
orderModel
.
RenewOrderId
+
")"
:
"未续班"
)}
</font>\n>关联单号:
{
guestModel
.
OrderId
}
(
{
sellerInfo
.
AccountName
}
)\n>\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
Content
=
markdownContent
,
CoverImg
=
""
,
CreateByName
=
"系统"
,
JumpUrl
=
""
,
WorkMsgType
=
"markdown"
,
SendTime
=
DateTime
.
Now
,
SendType
=
0
,
Title
=
"学员已结课通知"
,
Platform
=
5
,
ReceiveId
=
x
.
WorkUserId
};
Common
.
Message
.
MessageHelper
.
SendMessage
(
modelWork
);
});
}
#
endregion
}
if
(
item
.
CheckStatus
==
1
)
{
#
region
通知缺勤信息
var
param
=
new
RB_Class_Plan_ViewModel
()
{
ClassTimeId
=
item
.
ClassTimeId
};
var
planModel
=
class_PlanRepository
.
GetClassPlanListExtRepository
(
param
).
FirstOrDefault
();
var
queryNotifyManager
=
accountRepository
.
GetWorkUserIdByDictRepository
(
"Push_Absence"
);
if
(
queryNotifyManager
!=
null
&&
queryNotifyManager
.
Count
>
0
)
{
queryNotifyManager
.
ForEach
(
x
=>
{
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var
path
=
$"/stuMan/studentManage?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`缺勤通知` 学员缺勤信息告知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>缺勤时间:<font color='warning'>
{
planModel
.
ClassDate
}
(
{
planModel
.
StartTime
}
-
{
planModel
.
EndTime
}
)</font>\n>关联单号:
{
guestModel
.
OrderId
}
\n>班级名称:<font>
{
planModel
.
ClassName
}
</font>\n>带班老师:<font>
{
planModel
.
TeacherName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
Content
=
markdownContent
,
CoverImg
=
""
,
CreateByName
=
"系统"
,
JumpUrl
=
""
,
WorkMsgType
=
"markdown"
,
SendTime
=
DateTime
.
Now
,
SendType
=
0
,
Title
=
"学员缺勤通知"
,
Platform
=
5
,
ReceiveId
=
x
.
WorkUserId
};
Common
.
Message
.
MessageHelper
.
SendMessage
(
modelWork
);
});
}
#
endregion
}
flag
=
order_GuestRepository
.
Update
(
orderFileds
,
new
WhereHelper
(
nameof
(
RB_Order_Guest_ViewModel
.
Id
),
item
.
OrderGuestId
));
if
(
flag
&&
!
string
.
IsNullOrEmpty
(
LogContent
))
{
user_ChangeLogRepository
.
Insert
(
new
Model
.
Entity
.
Log
.
RB_User_ChangeLog
()
{
Id
=
0
,
Type
=
3
,
CreateBy
=
item
.
CreateBy
,
CreateTime
=
DateTime
.
Now
,
Group_Id
=
item
.
Group_Id
,
LogContent
=
LogContent
,
School_Id
=
item
.
School_Id
,
SourceId
=
guestModel
.
Id
});
}
//缺勤和请假
if
(
item
.
CheckStatus
==
1
||
item
.
CheckStatus
==
2
)
{
flag
=
CalcGuestHoursModule
(
guestModel
,
item
,
orderModel
,
classModel
,
sellerInfo
);
}
}
}
}
return
flag
;
}
/// <summary>
/// 计算学员缺课课时
/// </summary>
/// <param name="guestModel"></param>
/// <param name="checkModel"></param>
/// <returns></returns>
public
bool
CalcGuestHoursModule
(
RB_Order_Guest
guestModel
,
RB_Class_Check_ViewModel
checkModel
,
RB_Order
orderModel
,
RB_Class_ViewModel
classModel
,
Model
.
ViewModel
.
User
.
RB_Account_ViewModel
sellerInfo
)
{
bool
flag
=
true
;
if
(
guestModel
.
GuestState
==
1
)
{
decimal
NoFinishHours
=
0
;
//获取以前所有签到列表【倒叙】
var
checkList
=
classCheckRepository
.
GetClassCheckListRepository
(
new
RB_Class_Check_ViewModel
()
{
ClassId
=
checkModel
.
ClassId
,
OrderGuestId
=
checkModel
.
OrderGuestId
,
EndDate
=
Common
.
ConvertHelper
.
FormatDate
(
checkModel
.
ClassDate
)
}).
OrderByDescending
(
qitem
=>
qitem
.
ClassDate
).
ToList
();
for
(
var
i
=
0
;
i
<
checkList
.
Count
;
i
++)
{
if
((
checkList
[
i
].
CheckStatus
==
1
)
&&
(
checkList
[
i
].
MakeUpStatus
==
3
||
checkList
[
i
].
MakeUpStatus
==
4
||
checkList
[
i
].
MakeUpStatus
==
1
))
{
NoFinishHours
+=
checkList
[
i
].
CurrentDeductionHours
;
}
else
{
break
;
}
}
Dictionary
<
string
,
object
>
fileds
=
new
Dictionary
<
string
,
object
>();
Dictionary
<
string
,
object
>
checkFileds
=
new
Dictionary
<
string
,
object
>();
//缺勤课时超过12课时更新学员状态为【停课】
if
(
NoFinishHours
>=
Common
.
Config
.
AbsentHours
)
{
fileds
.
Add
(
nameof
(
RB_Order_Guest_ViewModel
.
GuestState
),
5
);
checkFileds
.
Add
(
nameof
(
RB_Class_Check_ViewModel
.
IsAbsentHours
),
1
);
checkFileds
.
Add
(
nameof
(
RB_Class_Check_ViewModel
.
MakeUpStatus
),
4
);
// var orderModel = orderRepository.GetEntity(guestModel.OrderId);
var
shengyuMoney
=
orderModel
.
PreferPrice
-
orderModel
.
Income
+
orderModel
.
Refund
-
orderModel
.
PlatformTax
-
orderModel
.
DiscountMoney
-
orderModel
.
LessPrice
;
// var classModel = classRepository.GetEntity<RB_Class_ViewModel>(guestModel.ClassId);
// var sellerInfo = UserReidsCache.GetUserLoginInfo(orderModel.EnterID);
#
region
欠费提醒(销售)
var
queryTargetWorkId
=
accountRepository
.
GetWorkUserIdRepository
(
orderModel
.
EnterID
);
if
(!
string
.
IsNullOrEmpty
(
queryTargetWorkId
))
{
// 学员名称(名称+电话),剩余课时,关联单号,待收金额,班级老师,班级名称
var
path
=
$"/sale/myOrder?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>当前状态:<font color='warning'>停课</font>\n>关联单号:
{
guestModel
.
OrderId
}
\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
.
ToString
(
"0.00"
)}
</font>\n>停课理由:连续缺课超过
{
Config
.
AbsentHours
}
课时,系统自动停课\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
orderModel
.
EnterID
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
Content
=
markdownContent
,
CoverImg
=
""
,
CreateByName
=
"系统"
,
JumpUrl
=
""
,
WorkMsgType
=
"markdown"
,
SendTime
=
DateTime
.
Now
,
SendType
=
0
,
Title
=
"学员欠费停课通知"
,
Platform
=
5
,
ReceiveId
=
queryTargetWorkId
};
Common
.
Message
.
MessageHelper
.
SendMessage
(
modelWork
);
}
#
endregion
#
region
欠费提醒(管理者)
var
queryNotifyManager
=
accountRepository
.
GetWorkUserIdByDictRepository
(
"Push_Arrears"
);
if
(
queryNotifyManager
!=
null
&&
queryNotifyManager
.
Count
>
0
)
{
queryNotifyManager
.
ForEach
(
x
=>
{
var
path
=
$"/sale/orderStatistics?OrderId=
{
guestModel
.
OrderId
}
"
;
path
=
HttpUtility
.
UrlEncode
(
path
);
string
markdownContent
=
$"`停课通知` 学员欠费停课通知\n>**概要信息** \n>学员名称:
{
guestModel
.
GuestName
}
(
{
guestModel
.
Mobile
}
)\n>当前状态:<font color='warning'>停课</font>\n>关联单号:
{
guestModel
.
OrderId
}
(
{
sellerInfo
.
AccountName
}
)\n>\n>待收金额:<font color='warning'>¥
{
shengyuMoney
.
ToString
(
"0.00"
)}
</font>\n>停课理由:连续缺课超过
{
Config
.
AbsentHours
}
课时,系统自动停课\n>班级名称:<font>
{
classModel
.
ClassName
}
</font>\n>请点击:[查看详情](
{
Config
.
ErpUrl
}
/autologin?loginId=
{
x
.
Id
}
&target=
{
path
}
)"
;
Common
.
Message
.
PushMessageModel
modelWork
=
new
Common
.
Message
.
PushMessageModel
()
{
CategoryId
=
PushMessageCategoryEnum
.
SalePeople
,
Content
=
markdownContent
,
CoverImg
=
""
,
CreateByName
=
"系统"
,
JumpUrl
=
""
,
WorkMsgType
=
"markdown"
,
SendTime
=
DateTime
.
Now
,
SendType
=
0
,
Title
=
"学员欠费停课通知"
,
Platform
=
5
,
ReceiveId
=
x
.
WorkUserId
};
Common
.
Message
.
MessageHelper
.
SendMessage
(
modelWork
);
});
}
#
endregion
}
if
(
fileds
!=
null
&&
fileds
.
Count
>
0
&&
checkFileds
!=
null
&&
checkFileds
.
Count
>
0
)
{
List
<
WhereHelper
>
wheres
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(
nameof
(
RB_Order_Guest_ViewModel
.
Id
),
guestModel
.
Id
),
};
flag
=
order_GuestRepository
.
Update
(
fileds
,
wheres
);
List
<
WhereHelper
>
checkWheres
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(
nameof
(
RB_Class_Check_ViewModel
.
ClassCheckId
),
checkModel
.
ClassCheckId
),
};
flag
=
classCheckRepository
.
Update
(
checkFileds
,
checkWheres
);
}
if
(
flag
&&
checkModel
.
CheckStatus
==
1
&&
checkModel
.
IsUpdateMakeUp
!=
1
)
{
//请假的 因为不扣课时, 无法进补课
flag
=
student_MakeupRepository
.
SetStudentMakeUpRepository
(
new
RB_Student_Makeup
()
{
Id
=
0
,
ClassCheckId
=
checkModel
.
ClassCheckId
,
ClassDate
=
checkModel
.
ClassDate
,
ClassId
=
checkModel
.
ClassId
,
CreateBy
=
checkModel
.
CreateBy
,
CreateTime
=
checkModel
.
CreateTime
,
Group_Id
=
checkModel
.
Group_Id
,
MakeUpStatus
=
1
,
OrderGuestId
=
checkModel
.
OrderGuestId
});
}
}
return
flag
;
}
}
}
Edu.Repository/Grade/RB_Class_CheckRepository.cs
View file @
a7752df6
...
@@ -233,6 +233,12 @@ GROUP BY A.ClassId
...
@@ -233,6 +233,12 @@ GROUP BY A.ClassId
{
{
builder
.
AppendFormat
(
" AND A.{0} in({1}) "
,
nameof
(
RB_Class_Check_ViewModel
.
ClassId
),
query
.
Q_ClassIds
);
builder
.
AppendFormat
(
" AND A.{0} in({1}) "
,
nameof
(
RB_Class_Check_ViewModel
.
ClassId
),
query
.
Q_ClassIds
);
}
}
if
(!
string
.
IsNullOrEmpty
(
query
.
Q_ClassTimeIds
))
{
builder
.
AppendFormat
(
" AND A.{0} in({1}) "
,
nameof
(
RB_Class_Check_ViewModel
.
ClassTimeId
),
query
.
Q_ClassTimeIds
);
}
if
(!
string
.
IsNullOrWhiteSpace
(
query
.
StartDate
))
if
(!
string
.
IsNullOrWhiteSpace
(
query
.
StartDate
))
{
{
builder
.
AppendFormat
(
" AND DATE_FORMAT(A.{0},'%Y-%m-%d')>=DATE_FORMAT('{1}','%Y-%m-%d') "
,
nameof
(
RB_Class_Check_ViewModel
.
ClassDate
),
query
.
StartDate
);
builder
.
AppendFormat
(
" AND DATE_FORMAT(A.{0},'%Y-%m-%d')>=DATE_FORMAT('{1}','%Y-%m-%d') "
,
nameof
(
RB_Class_Check_ViewModel
.
ClassDate
),
query
.
StartDate
);
...
...
Edu.WebApi/Controllers/Applet/AppletIndexController.cs
View file @
a7752df6
...
@@ -7,6 +7,7 @@ using Edu.Common.Plugin;
...
@@ -7,6 +7,7 @@ using Edu.Common.Plugin;
using
Edu.Model.ViewModel.Grade
;
using
Edu.Model.ViewModel.Grade
;
using
Edu.Model.ViewModel.User
;
using
Edu.Model.ViewModel.User
;
using
Edu.Module.Course
;
using
Edu.Module.Course
;
using
Edu.Module.EduTask
;
using
Edu.Module.Public
;
using
Edu.Module.Public
;
using
Edu.Module.User
;
using
Edu.Module.User
;
using
Edu.WebApi.Filter
;
using
Edu.WebApi.Filter
;
...
@@ -51,6 +52,11 @@ namespace Edu.WebApi.Controllers.Applet
...
@@ -51,6 +52,11 @@ namespace Edu.WebApi.Controllers.Applet
/// </summary>
/// </summary>
private
readonly
CourseModule
courseModule
=
AOP
.
AOPHelper
.
CreateAOPObject
<
CourseModule
>();
private
readonly
CourseModule
courseModule
=
AOP
.
AOPHelper
.
CreateAOPObject
<
CourseModule
>();
/// <summary>
/// 教务单据处理类对象
/// </summary>
private
readonly
EducationReceiptModule
educationReceiptModule
=
AOP
.
AOPHelper
.
CreateAOPObject
<
EducationReceiptModule
>();
#
region
小程序首页
#
region
小程序首页
/// <summary>
/// <summary>
/// 小程序首页
/// 小程序首页
...
@@ -103,6 +109,7 @@ namespace Edu.WebApi.Controllers.Applet
...
@@ -103,6 +109,7 @@ namespace Edu.WebApi.Controllers.Applet
studentModel
.
SurplusHours
,
//剩余时间
studentModel
.
SurplusHours
,
//剩余时间
studentModel
.
TeacherName
,
//老师
studentModel
.
TeacherName
,
//老师
studentModel
.
ClassId
,
studentModel
.
ClassId
,
studentModel
.
ClassName
,
studentModel
.
CourseId
,
studentModel
.
CourseId
,
EnterPhone
=
Cache
.
User
.
UserReidsCache
.
GetUserLoginInfo
(
studentModel
.
EnterID
).
UserMobile
,
EnterPhone
=
Cache
.
User
.
UserReidsCache
.
GetUserLoginInfo
(
studentModel
.
EnterID
).
UserMobile
,
ContractNum
=
(((
contractList
!=
null
&&
contractList
.
Any
())
?
contractList
.
Count
()
:
0
)
+
((
backClassList
!=
null
&&
backClassList
.
Any
())
?
backClassList
.
Count
()
:
0
)),
//合同数
ContractNum
=
(((
contractList
!=
null
&&
contractList
.
Any
())
?
contractList
.
Count
()
:
0
)
+
((
backClassList
!=
null
&&
backClassList
.
Any
())
?
backClassList
.
Count
()
:
0
)),
//合同数
...
@@ -191,6 +198,7 @@ namespace Edu.WebApi.Controllers.Applet
...
@@ -191,6 +198,7 @@ namespace Edu.WebApi.Controllers.Applet
}
}
planListResult
.
Add
(
new
planListResult
.
Add
(
new
{
{
itemGroup
.
Chapter
,
itemGroup
.
Chapter
,
DateYear
=
startTime
.
AddDays
(
i
).
ToString
(
"yyyy"
),
DateYear
=
startTime
.
AddDays
(
i
).
ToString
(
"yyyy"
),
DateMonth
=
startTime
.
AddDays
(
i
).
ToString
(
"MM"
),
DateMonth
=
startTime
.
AddDays
(
i
).
ToString
(
"MM"
),
...
@@ -198,13 +206,19 @@ namespace Edu.WebApi.Controllers.Applet
...
@@ -198,13 +206,19 @@ namespace Edu.WebApi.Controllers.Applet
WeekStr
=
StringHelper
.
GetJapanWeekChar
(
startTime
.
AddDays
(
i
)),
WeekStr
=
StringHelper
.
GetJapanWeekChar
(
startTime
.
AddDays
(
i
)),
ClassDateStr
=
startTime
.
AddDays
(
i
).
ToString
(
"yyyy-MM-dd"
),
ClassDateStr
=
startTime
.
AddDays
(
i
).
ToString
(
"yyyy-MM-dd"
),
ClassName
=
plan
.
Where
(
x
=>
x
.
ClassId
==
itemGroup
.
ClassId
).
FirstOrDefault
()?.
ClassName
??
""
,
ClassName
=
plan
.
Where
(
x
=>
x
.
ClassId
==
itemGroup
.
ClassId
).
FirstOrDefault
()?.
ClassName
??
""
,
itemGroup
.
ClassId
,
itemGroup
.
CourseId
,
PlanTimeList
=
itemGroup
.
PlanTimeList
.
Select
(
x
=>
new
PlanTimeList
=
itemGroup
.
PlanTimeList
.
Select
(
x
=>
new
{
{
x
.
StartTime
,
x
.
StartTime
,
x
.
EndTime
,
x
.
EndTime
,
x
.
ClassPlanId
,
x
.
ClassTimeId
,
x
.
TimeHour
,
TeacherName
=
itemGroup
.
TeacherName
??
""
,
TeacherName
=
itemGroup
.
TeacherName
??
""
,
UserIcon
=
itemGroup
.
UserIcon
??
""
,
UserIcon
=
itemGroup
.
UserIcon
??
""
,
IsCheck
=
x
.
GuestList
.
Where
(
x
=>
x
.
StudentId
==
base
.
AppletUserInfo
.
AccountId
).
FirstOrDefault
()?.
IsCheck
,
IsCheck
=
x
.
GuestList
.
Where
(
x
=>
x
.
StudentId
==
base
.
AppletUserInfo
.
AccountId
).
FirstOrDefault
()?.
IsCheck
,
OrderGuestId
=
x
.
GuestList
.
Where
(
x
=>
x
.
StudentId
==
base
.
AppletUserInfo
.
AccountId
).
FirstOrDefault
()?.
Id
,
IsLeave
=
Convert
.
ToDateTime
(
x
.
NewPlanDateTime
)
>
DateTime
.
Now
?
1
:
0
IsLeave
=
Convert
.
ToDateTime
(
x
.
NewPlanDateTime
)
>
DateTime
.
Now
?
1
:
0
})
})
});
});
...
@@ -373,5 +387,68 @@ namespace Edu.WebApi.Controllers.Applet
...
@@ -373,5 +387,68 @@ namespace Edu.WebApi.Controllers.Applet
return
ApiResult
.
Success
(
data
:
planListResult
);
return
ApiResult
.
Success
(
data
:
planListResult
);
}
}
#
endregion
#
endregion
#
region
我的请假列表
/// <summary>
/// 获取请假单据分页列表
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
GetEducationReceiptPage
()
{
var
pageModel
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
ResultPageModel
>(
RequestParm
.
Msg
.
ToString
());
var
query
=
new
Model
.
ViewModel
.
EduTask
.
EducationReceiptQuery
()
{
Group_Id
=
base
.
AppletUserInfo
.
Group_Id
,
StartTime
=
base
.
ParmJObj
.
GetStringValue
(
"StartTime"
),
EndTime
=
base
.
ParmJObj
.
GetStringValue
(
"EndTime"
),
Conditon
=
Common
.
Enum
.
Course
.
EduReceiptConditionEnum
.
Launch
,
ReceiptType
=
7
,
Title
=
base
.
ParmJObj
.
GetStringValue
(
"Title"
)
};
if
(!
string
.
IsNullOrEmpty
(
base
.
ParmJObj
.
GetStringValue
(
"VerifyStatus"
)))
{
query
.
VerifyStatus
=
base
.
ParmJObj
.
GetInt
(
"VerifyStatus"
,
-
1
);
}
var
id
=
base
.
ParmJObj
.
GetInt
(
"Id"
);
if
(
id
>
0
)
{
query
.
QIds
=
id
.
ToString
();
}
query
.
CreateBy
=
base
.
AppletUserInfo
.
Id
;
var
list
=
educationReceiptModule
.
GetEducationReceiptPageModule
(
pageModel
.
PageIndex
,
pageModel
.
PageSize
,
out
long
rowsCount
,
query
);
pageModel
.
PageData
=
list
;
pageModel
.
Count
=
rowsCount
;
return
ApiResult
.
Success
(
data
:
pageModel
);
}
/// <summary>
/// 获取教务单据类型
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
GetEduReceiptInfo
()
{
var
Id
=
base
.
ParmJObj
.
GetInt
(
"Id"
);
var
Info
=
educationReceiptModule
.
GetEducationReceiptInfoModule
(
Id
);
return
ApiResult
.
Success
(
data
:
Info
);
}
/// <summary>
/// 教务单据作废
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
InvalidReceipt
()
{
var
Id
=
base
.
ParmJObj
.
GetInt
(
"Id"
);
var
flag
=
educationReceiptModule
.
InvalidReceiptModule
(
Id
);
return
flag
?
ApiResult
.
Success
()
:
ApiResult
.
Failed
();
}
#
endregion
}
}
}
}
Edu.WebApi/Controllers/Applet/LeaveStudentController.cs
0 → 100644
View file @
a7752df6
using
Edu.Common.API
;
using
Edu.Common.Enum.Course
;
using
Edu.Common.Plugin
;
using
Edu.Model.ViewModel.Course
;
using
Edu.Model.ViewModel.EduTask
;
using
Edu.Module.Course
;
using
Edu.Module.EduTask
;
using
Edu.WebApi.Filter
;
using
Microsoft.AspNetCore.Cors
;
using
Microsoft.AspNetCore.Mvc
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Threading.Tasks
;
namespace
Edu.WebApi.Controllers.Applet
{
/// <summary>
/// 改变流程相关申请
/// </summary>
[
Route
(
"api/[controller]/[action]"
)]
[
ApiExceptionFilter
]
[
ApiController
]
[
EnableCors
(
"AllowCors"
)]
public
class
LeaveStudentController
:
AppletBaseController
{
/// <summary>
/// 学生请假处理类对象
/// </summary>
private
readonly
LeaveStudentModule
leaveStudentModule
=
AOP
.
AOPHelper
.
CreateAOPObject
<
LeaveStudentModule
>();
/// <summary>
/// 班级处理类对象
/// </summary>
private
readonly
ClassModule
classModule
=
AOP
.
AOPHelper
.
CreateAOPObject
<
ClassModule
>();
/// <summary>
/// 新增修改学生请假
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
SetStudentLeave
()
{
var
model
=
new
RB_Student_Leave_ViewModel
()
{
Id
=
base
.
ParmJObj
.
GetInt
(
"Id"
),
ClassId
=
base
.
ParmJObj
.
GetInt
(
"ClassId"
),
CourseId
=
base
.
ParmJObj
.
GetInt
(
"CourseId"
),
OrderGuestId
=
base
.
ParmJObj
.
GetInt
(
"OrderGuestId"
),
Remarks
=
base
.
ParmJObj
.
GetStringValue
(
"Remarks"
),
LeaveType
=
base
.
ParmJObj
.
GetInt
(
"LeaveType"
)
};
var
classModel
=
classModule
.
GetClassModule
(
model
.
ClassId
);
string
receiptFile
=
string
.
Empty
;
try
{
List
<
LeaveInfoModel
>
LeaveInfoList
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
LeaveInfoModel
>>(
base
.
ParmJObj
.
GetStringValue
(
"LeaveInfoList"
));
if
(
LeaveInfoList
==
null
||
!
LeaveInfoList
.
Any
())
{
return
ApiResult
.
Failed
(
"请选择请假时间"
);
}
else
{
model
.
LeaveInfo
=
JsonHelper
.
Serialize
(
LeaveInfoList
);
model
.
ClassTimeIds
=
string
.
Join
(
","
,
LeaveInfoList
.
Select
(
x
=>
x
.
ClassTimeId
));
}
List
<
string
>
receiptFileList
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
string
>>(
base
.
ParmJObj
.
GetStringValue
(
"ReceiptFileList"
));
if
(
receiptFileList
==
null
||
!
receiptFileList
.
Any
())
{
receiptFile
=
""
;
// return ApiResult.Failed("附件必须上传");
}
else
{
receiptFile
=
JsonHelper
.
Serialize
(
receiptFileList
);
}
}
catch
(
Exception
ex
)
{
Common
.
Plugin
.
LogHelper
.
Write
(
ex
,
"SetStudentLeave"
);
}
if
(
model
.
Id
==
0
)
{
model
.
CreateBy
=
base
.
AppletUserInfo
.
Id
;
model
.
CreateTime
=
DateTime
.
Now
;
model
.
Group_Id
=
base
.
AppletUserInfo
.
Group_Id
;
model
.
School_Id
=
classModel
.
School_Id
;
}
model
.
UpdateBy
=
base
.
AppletUserInfo
.
Id
;
model
.
UpdateTime
=
DateTime
.
Now
;
bool
flag
=
leaveStudentModule
.
SetStudentLeaveModule
(
model
,
receiptFile
);
return
flag
?
ApiResult
.
Success
()
:
ApiResult
.
Failed
();
}
public
ApiResult
TestUpdateClassPlan
()
{
int
id
=
base
.
ParmJObj
.
GetInt
(
"Id"
);
var
result
=
leaveStudentModule
.
UpdateChangeClassPlan
(
id
);
return
ApiResult
.
Success
(
""
);
}
}
}
Edu.WebApi/appsettings.json
View file @
a7752df6
...
@@ -95,6 +95,8 @@
...
@@ -95,6 +95,8 @@
"OrderTransClassFlowId"
:
5
,
"OrderTransClassFlowId"
:
5
,
//订单分拆流程编号
//订单分拆流程编号
"OrderSplitClassFlowId"
:
6
,
"OrderSplitClassFlowId"
:
6
,
//学生请假流程编号
"StudentLeaveFlowId"
:
7
,
"ErpUrl"
:
"http://localhost:8181/#"
,
"ErpUrl"
:
"http://localhost:8181/#"
,
//是否开启调课数据验证
//是否开启调课数据验证
"IsOpenChangeClassVerify"
:
1
,
"IsOpenChangeClassVerify"
:
1
,
...
...
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