|
@@ -1,14 +1,219 @@
|
|
|
package com.ym.mec.web.controller;
|
|
|
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiImplicitParam;
|
|
|
+import io.swagger.annotations.ApiImplicitParams;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+import org.springframework.web.bind.annotation.GetMapping;
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
|
import com.ym.mec.auth.api.entity.SysUser;
|
|
|
-import com.ym.mec.biz.dal.dao.*;
|
|
|
-import com.ym.mec.biz.dal.dto.*;
|
|
|
-import com.ym.mec.biz.dal.entity.*;
|
|
|
-import com.ym.mec.biz.dal.enums.*;
|
|
|
-import com.ym.mec.biz.dal.page.*;
|
|
|
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
|
|
|
+import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
|
|
|
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
|
|
|
+import com.ym.mec.biz.dal.dao.PracticeGroupDao;
|
|
|
+import com.ym.mec.biz.dal.dao.StudentDao;
|
|
|
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
|
|
|
+import com.ym.mec.biz.dal.dao.SysUserCashAccountDetailDao;
|
|
|
+import com.ym.mec.biz.dal.dao.SysUserCoursesAccountDetailDao;
|
|
|
+import com.ym.mec.biz.dal.dao.TempBuyFreeLiveTheoryCourseDao;
|
|
|
+import com.ym.mec.biz.dal.dao.VipGroupDao;
|
|
|
+import com.ym.mec.biz.dal.dto.ChildrenStatisticsDetailDto;
|
|
|
+import com.ym.mec.biz.dal.dto.ClassGroupTeachersDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CloudTeacherActiveTargetDetailDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CloudTeacherActiveTargetDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CourseGroupExportDto;
|
|
|
+import com.ym.mec.biz.dal.dto.CourseReviewDto;
|
|
|
+import com.ym.mec.biz.dal.dto.DoubleEleven2021Dto;
|
|
|
+import com.ym.mec.biz.dal.dto.DoubleEleven2021OrderDetailDto;
|
|
|
+import com.ym.mec.biz.dal.dto.EduOrganStudentDataDto;
|
|
|
+import com.ym.mec.biz.dal.dto.EduOrganStudentListExportDto;
|
|
|
+import com.ym.mec.biz.dal.dto.ExportDto;
|
|
|
+import com.ym.mec.biz.dal.dto.ExportStudentAttendanceDto;
|
|
|
+import com.ym.mec.biz.dal.dto.ExportTeacherSalaryDto;
|
|
|
+import com.ym.mec.biz.dal.dto.ExportVipGroupActivityDto;
|
|
|
+import com.ym.mec.biz.dal.dto.ExtraExerciseStudentsDto;
|
|
|
+import com.ym.mec.biz.dal.dto.IndexErrorDataExportDto;
|
|
|
+import com.ym.mec.biz.dal.dto.MusicArrearageStudentDto;
|
|
|
+import com.ym.mec.biz.dal.dto.MusicGroupCourseScheduleDto;
|
|
|
+import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDto;
|
|
|
+import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderDetailDto;
|
|
|
+import com.ym.mec.biz.dal.dto.MusicGroupStudentsDto;
|
|
|
+import com.ym.mec.biz.dal.dto.MusicalListDetailDto;
|
|
|
+import com.ym.mec.biz.dal.dto.NoClassMusicStudentDto;
|
|
|
+import com.ym.mec.biz.dal.dto.OrderByTypeExportDto;
|
|
|
+import com.ym.mec.biz.dal.dto.OrganDoubleEleven2021StatisDto;
|
|
|
+import com.ym.mec.biz.dal.dto.PageInfoDegree;
|
|
|
+import com.ym.mec.biz.dal.dto.PracticeCourseDto;
|
|
|
+import com.ym.mec.biz.dal.dto.PracticeGroupDto;
|
|
|
+import com.ym.mec.biz.dal.dto.Student4operating;
|
|
|
+import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
|
|
|
+import com.ym.mec.biz.dal.dto.StudentBuyPracticeDto;
|
|
|
+import com.ym.mec.biz.dal.dto.StudentErrorLeaveDto;
|
|
|
+import com.ym.mec.biz.dal.dto.StudentExercisesSituationDto;
|
|
|
+import com.ym.mec.biz.dal.dto.StudentManageListDto;
|
|
|
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
|
|
|
+import com.ym.mec.biz.dal.dto.TeacherCourseSalaryDetail4WebDto;
|
|
|
+import com.ym.mec.biz.dal.dto.TeacherDefaultSalaryDto;
|
|
|
+import com.ym.mec.biz.dal.dto.TeacherSalaryDto;
|
|
|
+import com.ym.mec.biz.dal.dto.TeacherServeDto;
|
|
|
+import com.ym.mec.biz.dal.dto.TeacherStudentDataDto;
|
|
|
+import com.ym.mec.biz.dal.dto.VipBuyResultDto;
|
|
|
+import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
|
|
|
+import com.ym.mec.biz.dal.entity.CooperationOrgan;
|
|
|
+import com.ym.mec.biz.dal.entity.DegreeRegistration;
|
|
|
+import com.ym.mec.biz.dal.entity.EmployeeInfo;
|
|
|
+import com.ym.mec.biz.dal.entity.Goods;
|
|
|
+import com.ym.mec.biz.dal.entity.ManagerDownload;
|
|
|
+import com.ym.mec.biz.dal.entity.MusicEnlightenmentQuestionnaire;
|
|
|
+import com.ym.mec.biz.dal.entity.MusicGroup;
|
|
|
+import com.ym.mec.biz.dal.entity.MusicGroupQuit;
|
|
|
+import com.ym.mec.biz.dal.entity.SellOrder;
|
|
|
+import com.ym.mec.biz.dal.entity.SporadicChargeInfo;
|
|
|
+import com.ym.mec.biz.dal.entity.Student;
|
|
|
+import com.ym.mec.biz.dal.entity.StudentAttendance;
|
|
|
+import com.ym.mec.biz.dal.entity.SysMusicScore;
|
|
|
+import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
|
|
|
+import com.ym.mec.biz.dal.entity.SysUserCoursesAccountDetail;
|
|
|
+import com.ym.mec.biz.dal.entity.Teacher;
|
|
|
+import com.ym.mec.biz.dal.entity.TeacherCourseReward;
|
|
|
+import com.ym.mec.biz.dal.entity.TeacherCourseStatistics;
|
|
|
+import com.ym.mec.biz.dal.entity.TeacherSalaryComplaints;
|
|
|
+import com.ym.mec.biz.dal.entity.TempBuyFreeLiveTheoryCourse;
|
|
|
+import com.ym.mec.biz.dal.entity.TenantPaymentOrder;
|
|
|
+import com.ym.mec.biz.dal.entity.VipGroup;
|
|
|
+import com.ym.mec.biz.dal.enums.AccountType;
|
|
|
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.ExamSongTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.ExportEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.ExportTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.GroupType;
|
|
|
+import com.ym.mec.biz.dal.enums.IndexErrorType;
|
|
|
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.LevelEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.PaymentChannelEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.TeachTypeEnum;
|
|
|
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
|
|
|
+import com.ym.mec.biz.dal.page.ArrearageStudentsQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.ChildrenReserveQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.ClassGroupQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.CloudTeacherActiveQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.CooperationOrganQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.CourseReviewQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.CourseSalaryQueryInfo4Web;
|
|
|
+import com.ym.mec.biz.dal.page.CourseScheduleTeacherSalaryQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.DegreeQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.DoubleEleven2021QueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.EmployeeInfoQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.EndCourseScheduleQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.ExportStudentAttendanceQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.ExportTeacherSalaryQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.ExportUserAccountQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.ExtraExercilseReplyQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.GoodsQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.IndexErrRecordQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.LiveBroadcastRoomMemberQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.MusicCalenderDetailQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.MusicEnlightenmentQuestionnaireQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.MusicGroupQuitQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.MusicGroupStudentQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.OrganCloudStudyStudentDataQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.PracticeGroupQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.SellOrderQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.SporadicChargeInfoQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.StudentBuyPracticeQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.StudentErrorLeaveQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.StudentExercisesSituationQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.StudentManageQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.StudentOperatingQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.StudentQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.SysExamSongQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.TeacherCloseQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.TeacherCourseRewardQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.TeacherCourseStatisticsQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.TeacherQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.TeacherSalaryModifyQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.TeacherServeQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.TenantPaymentOrderQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.VipGroupActivityQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.page.queryMusicGroupCourseScheduleQueryInfo;
|
|
|
import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomMemberVo;
|
|
|
-import com.ym.mec.biz.service.*;
|
|
|
+import com.ym.mec.biz.service.ChildrenDayReserveService;
|
|
|
+import com.ym.mec.biz.service.ClassGroupService;
|
|
|
+import com.ym.mec.biz.service.CooperationOrganService;
|
|
|
+import com.ym.mec.biz.service.CourseReviewService;
|
|
|
+import com.ym.mec.biz.service.CourseScheduleService;
|
|
|
+import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
|
|
|
+import com.ym.mec.biz.service.DegreeRegistrationService;
|
|
|
+import com.ym.mec.biz.service.EmployeeInfoService;
|
|
|
+import com.ym.mec.biz.service.ExportService;
|
|
|
+import com.ym.mec.biz.service.ExtracurricularExercisesReplyService;
|
|
|
+import com.ym.mec.biz.service.GoodsService;
|
|
|
+import com.ym.mec.biz.service.ImLiveBroadcastRoomMemberService;
|
|
|
+import com.ym.mec.biz.service.IndexBaseMonthDataService;
|
|
|
+import com.ym.mec.biz.service.IndexErrDataRecordService;
|
|
|
+import com.ym.mec.biz.service.MusicEnlightenmentQuestionnaireService;
|
|
|
+import com.ym.mec.biz.service.MusicGroupPaymentCalenderDetailService;
|
|
|
+import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
|
|
|
+import com.ym.mec.biz.service.MusicGroupQuitService;
|
|
|
+import com.ym.mec.biz.service.MusicGroupService;
|
|
|
+import com.ym.mec.biz.service.OrganizationService;
|
|
|
+import com.ym.mec.biz.service.PracticeGroupService;
|
|
|
+import com.ym.mec.biz.service.SellOrderService;
|
|
|
+import com.ym.mec.biz.service.SporadicChargeInfoService;
|
|
|
+import com.ym.mec.biz.service.StudentAttendanceService;
|
|
|
+import com.ym.mec.biz.service.StudentExtracurricularExercisesSituationService;
|
|
|
+import com.ym.mec.biz.service.StudentManageService;
|
|
|
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
|
|
|
+import com.ym.mec.biz.service.StudentRegistrationService;
|
|
|
+import com.ym.mec.biz.service.StudentService;
|
|
|
+import com.ym.mec.biz.service.StudentVisitService;
|
|
|
+import com.ym.mec.biz.service.SysConfigService;
|
|
|
+import com.ym.mec.biz.service.SysMusicScoreService;
|
|
|
+import com.ym.mec.biz.service.SysTenantConfigService;
|
|
|
+import com.ym.mec.biz.service.TeacherAttendanceService;
|
|
|
+import com.ym.mec.biz.service.TeacherCourseRewardService;
|
|
|
+import com.ym.mec.biz.service.TeacherCourseStatisticsService;
|
|
|
+import com.ym.mec.biz.service.TeacherSalaryComplaintsService;
|
|
|
+import com.ym.mec.biz.service.TeacherService;
|
|
|
+import com.ym.mec.biz.service.TenantPaymentOrderService;
|
|
|
+import com.ym.mec.biz.service.VipGroupActivityService;
|
|
|
+import com.ym.mec.biz.service.VipGroupService;
|
|
|
import com.ym.mec.common.constant.CommonConstants;
|
|
|
import com.ym.mec.common.controller.BaseController;
|
|
|
import com.ym.mec.common.entity.HttpResponseResult;
|
|
@@ -19,27 +224,6 @@ import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
import com.ym.mec.util.excel.POIUtil;
|
|
|
|
|
|
-import io.swagger.annotations.Api;
|
|
|
-import io.swagger.annotations.ApiImplicitParam;
|
|
|
-import io.swagger.annotations.ApiImplicitParams;
|
|
|
-import io.swagger.annotations.ApiOperation;
|
|
|
-
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
-import org.springframework.util.CollectionUtils;
|
|
|
-import org.springframework.web.bind.annotation.*;
|
|
|
-
|
|
|
-import javax.annotation.Resource;
|
|
|
-import javax.servlet.http.HttpServletResponse;
|
|
|
-
|
|
|
-import java.io.IOException;
|
|
|
-import java.io.OutputStream;
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.util.*;
|
|
|
-import java.util.stream.Collectors;
|
|
|
-
|
|
|
@RequestMapping
|
|
|
@Api(tags = "数据导出服务")
|
|
|
@RestController
|
|
@@ -3048,4 +3232,76 @@ public class ExportController extends BaseController {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @ApiOperation(value = "没有班级的学员导出")
|
|
|
+ @PostMapping("export/noClassGroupStudentList")
|
|
|
+ @PreAuthorize("@pcs.hasPermissions('export/noClassGroupStudentList')")
|
|
|
+ public void exportNoClassGroupStudentList(HttpServletResponse response, NoClassMusicStudentQueryInfo queryInfo) throws IOException {
|
|
|
+ queryInfo = organizationService.onlyEducation(queryInfo);
|
|
|
+ queryInfo.setPage(1);
|
|
|
+ queryInfo.setRows(49999);
|
|
|
+ List<NoClassMusicStudentDto> rows = studentRegistrationService.queryNoClassMusicStudentInfo(queryInfo).getRows();
|
|
|
+ if (rows.size() < 1) {
|
|
|
+ throw new BizException("没有可导出数据");
|
|
|
+ }
|
|
|
+ OutputStream outputStream = response.getOutputStream();
|
|
|
+ try {
|
|
|
+ HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团编号",
|
|
|
+ "乐团名称", "学生编号", "学生姓名", "学员声部"}, new String[]{
|
|
|
+ "organName", "groupId", "groupName", "studentId", "studentName", "subjectName"}, rows);
|
|
|
+ response.setContentType("application/octet-stream");
|
|
|
+ response.setHeader("Content-Disposition", "attac:wq" +
|
|
|
+ "hment;filename=noClassGroupStudentList-" + DateUtil.getDate(new Date()) + ".xls");
|
|
|
+
|
|
|
+ outputStream = response.getOutputStream();
|
|
|
+ workbook.write(outputStream);
|
|
|
+ outputStream.flush();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ if (outputStream != null) {
|
|
|
+ try {
|
|
|
+ outputStream.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @ApiOperation(value = "学员异常请假列表")
|
|
|
+ @PostMapping("export/studentErrorLeaveList")
|
|
|
+ @PreAuthorize("@pcs.hasPermissions('export/studentErrorLeaveList')")
|
|
|
+ public void exportStudentErrorLeaveList(HttpServletResponse response, StudentErrorLeaveQueryInfo queryInfo) throws IOException {
|
|
|
+ queryInfo.setOrganIds(organizationService.getEmployeeOrgan(queryInfo.getOrganIds()));
|
|
|
+ queryInfo.setPage(1);
|
|
|
+ queryInfo.setRows(49999);
|
|
|
+ List<StudentErrorLeaveDto> rows = studentManageService.queryStudentErrorLeaveList(queryInfo).getRows();
|
|
|
+ if (rows.size() < 1) {
|
|
|
+ throw new BizException("没有可导出数据");
|
|
|
+ }
|
|
|
+ OutputStream outputStream = response.getOutputStream();
|
|
|
+ try {
|
|
|
+ HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学生编号",
|
|
|
+ "学生姓名", "手机号", "近两个月请假次数", "本月请假次数"}, new String[]{
|
|
|
+ "organName", "userId", "studentName", "phone", "totalNum", "currentNum"}, rows);
|
|
|
+ response.setContentType("application/octet-stream");
|
|
|
+ response.setHeader("Content-Disposition", "attac:wq" +
|
|
|
+ "hment;filename=studentErrorLeaveList-" + DateUtil.getDate(new Date()) + ".xls");
|
|
|
+
|
|
|
+ outputStream = response.getOutputStream();
|
|
|
+ workbook.write(outputStream);
|
|
|
+ outputStream.flush();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ if (outputStream != null) {
|
|
|
+ try {
|
|
|
+ outputStream.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|