{ "_id":のObjectId( "5d4d74e1685764420c4f9337" )、 "CREATETIME":ISODate( "2019-08-09T13:25:33.851Z" )、 "modifiedTime":ISODate( "2019-08-09T13:25:33.851Z" )、 "isDeleted":0 、 "dateYmd": "2019年8月9日" 、 "memberNumber": "10025" 、 "ユーザ名": "小杨" 、 "attendenceTime":ISODate( "2019-08-09T13: 25:33.851Z」)、 " ORGENTITY " :{ " schoolId ": "f11c8ea12f457dbc19c768a8bb6357f8"、 "SchoolName": "大学の経験" 、 "depName": "コンピュータ・アカデミー" 、 "depId": "5ca65e204a75670545bfe67418c1fd00" 、 "majorId": "ca46da02e825dcf2ceb48a67e3a888db" 、 "CLASSID": "87108cd7b71775fdf45a220eb734b6be" 、 "majorField": ".NET开发" 、 "majorName": "计算机应用技术" 、 "クラス名":「javaの一班」 "studentId": "029f7fd62186bfd1e9b2047f76095361" 、 "userNameに": "小杨" 、 "snowFlakeId":NumberLong(120986237900296192 )、 "studentNumber": "10025" 、 "グレード": "2018" }、 "teacherId": "1fbb4bd971550b540e2fb58b3f1efe52" }
の設定のMongoDB mogu_attendanceとして表:
このようschoolIdクエリなどの分野でORGENTITYによると:
MongoDBのクエリを次のように
db.getCollection( 'mogu_attendance')({ "を見つける。orgEntity.schoolId ": "f11c8ea12f457dbc19c768a8bb6357f8"、
"orgEntity.classId":{ "$の中に":[ "5a05540e9fd1ce8604015f3fa5067b63"、
"61a582659385c9b91033bad877609758"、 "70ef8baad5d97ae7b77c6df3038b0d84"、
"87108cd7b71775fdf45a220eb734b6beを" ]}、
"$および":[{ "attendenceTime":{ "$ GTE":ISODate( "2018-09-12T06:11:47.000Z")}}、
{ "attendenceTime":{ "$のLTE":ISODate ( "2029-09-22T06:11:47.000Z")}}]})
Javaのエンティティでは、フィールドは、エンティティにschoolIdとして照会される必要があります。
@data パブリック クラス MoguAttendenceEntityが延び BaseEntityが実装シリアライズ{ プライベート 静的 最終 長いのserialVersionUID = 1L 。 / ** *唯一主键 * / プライベート文字列のattendanceId。 / ** *学校ID * / プライベート文字列schoolId。 / ** *是否补卡 * / プライベート整数isReplace。 プライベートリスト<MongoGxyPracticeLogDto> logDtoList。 / ** *入参 * / プライベート日付のstartTime; 民間の日付endTimeは、 プライベート文字列のコメント。 プライベートリスト<文字列> attendenceIds。 プライベート整数applyState。 プライベート文字列teaId。 プライベート日付日時; プライベート文字列depId。 プライベート文字列majorId。 プライベート文字列CLASSID。 プライベート文字列のユーザーID。 プライベートロングsnowFlakeId。 / ** *筛选天数条件(1连续3天2七天3一个月) * / プライベート整数dayType。 / ** *表名 * / プライベート 文字列のattendencdTabName。 プライベート文字列のstuTabName。 プライベート文字列roleKey。 プライベートリスト<文字列> depIds。 プライベートリスト<文字列> のclassid; / ** *考勤时间 * / プライベート日付attendenceTime。 プライベートリスト<MoguAttendenceEntity> attendenceDtos。 プライベート文字列のバックアップ。 プライベートORGENTITY ORGENTITY。 プライベート文字列studentId。 プライベート文字列teacherId。 プライベート文字列のグレード。
プライベートリスト<文字列>のclassid;
}
コードは以下の通りであります:
moguAttendenceEntity.setClassIds(getClassIds(リクエスト))。
公共の一覧<MongoMoguAttendenceDto> listAttendance(MoguAttendenceEntity attendenceEntity){
ソートソート=新しいソート(Sort.Direction.ASC、 "attendenceTime");
クエリのクエリ=新しいクエリ();
基準の基準=新基準();
IF(attendenceEntity.getCurrPage()= 0 && attendenceEntity.getPageSize()= 0!){
query.skip((attendenceEntity.getCurrPage() - 1)* attendenceEntity.getPageSize())
.limit(attendenceEntity.getPageSize()) ;
}
IF(StrUtil.isNotEmpty(attendenceEntity.getDepId())){
criteria.and( "orgEntity.depId")(attendenceEntity.getDepId())です。
}
IF(StrUtil.isNotEmpty(attendenceEntity.getGrade())){
。criteria.and( "orgEntity.grade")である(attendenceEntity.getGrade());
}
IF(StrUtil.isNotEmpty(attendenceEntity.getUsername())){
criteria.and( "orgEntity.userName")(attendenceEntity.getUsername())です。
}
IF(StrUtil.isNotEmpty(attendenceEntity.getStudentNumber())){
criteria.and( "orgEntity.studentNumber")(attendenceEntity.getStudentNumber())です。
}
IF(StrUtil.isNotEmpty(attendenceEntity.getSchoolId())){
criteria.and( "orgEntity.schoolId")(attendenceEntity.getSchoolId())です。
}
IF(StrUtil.isNotEmpty(attendenceEntity.getStuId())){
criteria.and( "MEMBERID")(attendenceEntity.getStuId())です。
}
IF(!。attendenceEntity.getDepIds()= NULL && attendenceEntity.getDepIds()サイズ()> 0){
criteria.and( "orgEntity.depId")(attendenceEntity.getDepIds())中。
}
IF(!。attendenceEntity.getClassIds()= NULL && attendenceEntity.getClassIds()サイズ()> 0){
criteria.and( "orgEntity.classId")(attendenceEntity.getClassIds())中。
}
(attendenceEntity.getTeacherId()!= NULL){場合
criteria.and( "teacherId")は(attendenceEntity.getTeacherId())です。
}
(!StringUtils.isEmpty(attendenceEntity.getStartTime())&&!StringUtils.isEmpty(attendenceEntity.getEndTime())){もし
criteria.andOperator(
Criteria.where( "attendenceTime")。GTE(attendenceEntity。
Criteria.where( "attendenceTime")のLTE(attendenceEntity.getEndTime())。
);
}
query.addCriteria(基準)。
query.with(ソート)。
一覧<MongoMoguAttendenceDto>データ= mongoTemplate.find(クエリ、MongoMoguAttendenceDto.class)。
データを返します。
}