Bläddra i källkod

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 5 år sedan
förälder
incheckning
ac1ad63d80

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentAttendanceDao.java

@@ -90,6 +90,15 @@ public interface StudentAttendanceDao extends BaseDAO<Long, StudentAttendance> {
     int countByCourseSchedule(Long courseScheduleId);
 
     /**
+     * @describe 统计每节课上的学生数
+     * @author Joburgess
+     * @date 2019/12/26
+     * @param courseScheduleIds:
+     * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
+     */
+    List<Map<Integer,Integer>> countStudentAttendancesByCourses(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+    /**
      * @describe 根据课程获取最后的点名时间
      * @author Joburgess
      * @date 2019/10/24

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseScheduleDto.java

@@ -44,6 +44,17 @@ public class CourseScheduleDto extends CourseSchedule {
 
     private String subjectName;
 
+    @ApiModelProperty(value = "是否是第一次进行学生点名")
+    private int studentAttendanceIsFirstTime;
+
+    public int getStudentAttendanceIsFirstTime() {
+        return studentAttendanceIsFirstTime;
+    }
+
+    public void setStudentAttendanceIsFirstTime(int studentAttendanceIsFirstTime) {
+        this.studentAttendanceIsFirstTime = studentAttendanceIsFirstTime;
+    }
+
     public String getSubjectName() {
         return subjectName;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderExportDto.java

@@ -13,6 +13,8 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     //零星费用类型
     private String sporadicType;
 
+    private BigDecimal courseFee;
+
     //乐器费用
     private BigDecimal musicalFee;
 
@@ -120,4 +122,12 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     public void setChargeType(Integer chargeType) {
         this.chargeType = chargeType;
     }
+
+    public BigDecimal getCourseFee() {
+        return courseFee;
+    }
+
+    public void setCourseFee(BigDecimal courseFee) {
+        this.courseFee = courseFee;
+    }
 }

+ 0 - 22
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherAttendanceDto.java

@@ -83,28 +83,6 @@ public class TeacherAttendanceDto {
     @ApiModelProperty(value = "学生数量")
     private Integer studentNum;
 
-    @ApiModelProperty(value = "可更新学生签到信息限制时间")
-    private Integer enableStudentAttendanceTimeRange;
-
-    @ApiModelProperty(value = "是否是第一次进行学生点名")
-    private int studentAttendanceIsFirstTime;
-
-    public Integer getEnableStudentAttendanceTimeRange() {
-        return enableStudentAttendanceTimeRange;
-    }
-
-    public void setEnableStudentAttendanceTimeRange(Integer enableStudentAttendanceTimeRange) {
-        this.enableStudentAttendanceTimeRange = enableStudentAttendanceTimeRange;
-    }
-
-    public int getStudentAttendanceIsFirstTime() {
-        return studentAttendanceIsFirstTime;
-    }
-
-    public void setStudentAttendanceIsFirstTime(int studentAttendanceIsFirstTime) {
-        this.studentAttendanceIsFirstTime = studentAttendanceIsFirstTime;
-    }
-
     public Integer getStudentNum() {
         return studentNum;
     }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRegistration.java

@@ -105,6 +105,8 @@ public class StudentRegistration {
 
     private String kitType;
 
+    private BigDecimal depositFee;
+
     public BigDecimal getBalance() {
         return balance;
     }
@@ -359,4 +361,12 @@ public class StudentRegistration {
     public void setKitType(String kitType) {
         this.kitType = kitType;
     }
+
+    public BigDecimal getDepositFee() {
+        return depositFee;
+    }
+
+    public void setDepositFee(BigDecimal depositFee) {
+        this.depositFee = depositFee;
+    }
 }

+ 8 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java

@@ -211,7 +211,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		// 生成借款协议PDF
 		try {
 			PDFUtil.renderToPDFByData(ContractServiceImpl.class.getResource("/").getFile(), FileUtils.readFileToString(srcFile), srcPdfPath,
-					"config/fonts/simsun.ttc");
+					"simsun.ttc");
 		} catch (IOException e) {
 			throw new BizException("生成pdf协议失败", e);
 		}
@@ -221,7 +221,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		Date date = new Date();
 		// 上传到oss
 		String dateStrOss = dateFormatOss.format(date);
-		dateStrOss = dateStrOss + "/" + DateUtil.getHour(date);
+		dateStrOss = "users/" + dateStrOss + "/" + DateUtil.getHour(date);
 		String pdfFilePath = storagePlugin.uploadFile(dateStrOss, srcFile);
 
 		SysUserContracts sysUserContracts = new SysUserContracts();
@@ -344,7 +344,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		// 生成借款协议PDF
 		try {
 			PDFUtil.renderToPDFByData(ContractServiceImpl.class.getResource("/").getFile(), FileUtils.readFileToString(srcFile), srcPdfPath,
-					"config/fonts/simsun.ttc");
+					"simsun.ttc");
 		} catch (IOException e) {
 			throw new BizException("生成pdf协议失败", e);
 		}
@@ -364,7 +364,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 
 		// 上传到oss
 		String dateStrOss = dateFormatOss.format(date);
-		dateStrOss = dateStrOss + "/" + DateUtil.getHour(date);
+		dateStrOss = "musicCourses/" + dateStrOss + "/" + DateUtil.getHour(date);
 		String pdfFilePath = storagePlugin.uploadFile(dateStrOss, srcFile);
 
 		SysUserContracts sysUserContracts = new SysUserContracts();
@@ -509,7 +509,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		// 生成借款协议PDF
 		try {
 			PDFUtil.renderToPDFByData(ContractServiceImpl.class.getResource("/").getFile(), FileUtils.readFileToString(srcFile), srcPdfPath,
-					"config/fonts/simsun.ttc");
+					"simsun.ttc");
 		} catch (IOException e) {
 			throw new BizException("生成pdf协议失败", e);
 		}
@@ -525,7 +525,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 
 		// 上传到oss
 		String dateStrOss = dateFormatOss.format(date);
-		dateStrOss = dateStrOss + "/" + DateUtil.getHour(date);
+		dateStrOss = "vipCourses/" + dateStrOss + "/" + DateUtil.getHour(date);
 		String pdfFilePath = storagePlugin.uploadFile(dateStrOss, srcFile);
 
 		SysUserContracts sysUserContracts = new SysUserContracts();
@@ -669,7 +669,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		// 生成借款协议PDF
 		try {
 			PDFUtil.renderToPDFByData(ContractServiceImpl.class.getResource("/").getFile(), FileUtils.readFileToString(srcFile), srcPdfPath,
-					"config/fonts/simsun.ttc");
+					"simsun.ttc");
 		} catch (IOException e) {
 			throw new BizException("生成pdf协议失败", e);
 		}
@@ -690,7 +690,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 
 		// 上传到oss
 		String dateStrOss = dateFormatOss.format(date);
-		dateStrOss = dateStrOss + "/" + DateUtil.getHour(date);
+		dateStrOss = "goods/" + dateStrOss + "/" + DateUtil.getHour(date);
 		String pdfFilePath = storagePlugin.uploadFile(dateStrOss, srcFile);
 
 		SysUserContracts sysUserContracts = new SysUserContracts();

+ 16 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -113,16 +113,12 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		if(Objects.isNull(currentCourseDetail)){
 		    throw new BizException("课程不存在");
         }
-		SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
 		YesOrNoEnum yesOrNoEnum = enableOnlyNormalAttendance(currentCourseDetail.getStartClassTime(),
 				user.getId().longValue(),
 				true,
 				currentCourseDetail.getSchoolId().intValue());
 		currentCourseDetail.setOnlyNormal(yesOrNoEnum);
 		currentCourseDetail.setCurrentClassTimes(courseScheduleDao.countClassGroupOverCourseNum(currentCourseDetail.getClassId()));
-		currentCourseDetail.setEnableStudentAttendanceTimeRange(sysConfig.getParanValue(Integer.class));
-		int i = studentAttendanceDao.countByCourseSchedule(courseID);
-		currentCourseDetail.setStudentAttendanceIsFirstTime(i>0?0:1);
 
 		currentCourseDetail.setCurrentTime(new Date());
 		currentCourseDetail.setAdvanceSignInMinutes(Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES)));
@@ -367,6 +363,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		}
 		Date now=new Date();
 		List<CourseScheduleDto> teacherCourseSchedulesWithDate = courseScheduleDao.getTeacherCourseSchedulesWithDate(classDate, userId.longValue(),type);
+		List<Long> allCourseScheduleIds = teacherCourseSchedulesWithDate.stream().map(CourseScheduleDto::getId).collect(Collectors.toList());
 		List<Long> courseScheduleIds = teacherCourseSchedulesWithDate.stream()
 				.filter(cs -> cs.getType().equals(CourseSchedule.CourseScheduleType.VIP) || cs.getType().equals(CourseSchedule.CourseScheduleType.DEMO))
 				.map(CourseScheduleDto::getId).collect(Collectors.toList());
@@ -376,7 +373,22 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			List<Map<Integer, String>> subjectNameCourseMaps = subjectDao.findSubjectNameCourseMaps(courseScheduleIds);
 			subjectNameCourseMap = MapUtil.convertMybatisMap(subjectNameCourseMaps);
 		}
+		List<Map<Integer, Integer>> studentNumCourseMaps=null;
+		if(!CollectionUtils.isEmpty(allCourseScheduleIds)){
+			studentNumCourseMaps = studentAttendanceDao.countStudentAttendancesByCourses(allCourseScheduleIds);
+		}
+		Map<Integer, Long> studentNumCourseMap=new HashMap<>();
+		if(Objects.nonNull(studentNumCourseMaps)){
+			studentNumCourseMap=MapUtil.convertIntegerMap(studentNumCourseMaps);
+		}
 		for (CourseScheduleDto courseScheduleDto : teacherCourseSchedulesWithDate) {
+			Long studentNum=studentNumCourseMap.get(courseScheduleDto.getId());
+			if(Objects.nonNull(studentNum)){
+				courseScheduleDto.setStudentAttendanceIsFirstTime(studentNum>0?0:1);
+			}else{
+				courseScheduleDto.setStudentAttendanceIsFirstTime(1);
+			}
+
 			if(now.before(courseScheduleDto.getStartClassTime())){
 				courseScheduleDto.setStatus(CourseStatusEnum.NOT_START);
 			}else if(now.after(courseScheduleDto.getEndClassTime())){

+ 6 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -83,6 +83,12 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 		if(Objects.isNull(courseSchedule)){
 			throw new BizException("请指定课程");
 		}
+		Date date = new Date();
+		SysConfig attendanceTimeRange = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
+		int courseEndTime = DateUtil.minutesBetween(courseSchedule.getEndClassTime(), date);
+		if(date.after(courseSchedule.getEndClassTime())&&courseEndTime>attendanceTimeRange.getParanValue(Integer.class)){
+			throw new BizException("程结束一小时后禁止点名");
+		}
 		studentAttendanceDao.deleteStudentAttendancesByCourse(courseScheduleId);
 		int classTimes=courseScheduleDao.countClassTimes(courseSchedule.getClassGroupId().longValue(),courseSchedule.getStartClassTime());
 		studentAttendances.forEach(studentAttendance -> {
@@ -166,7 +172,6 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(sysUser.getId().longValue(),courseSchedule.getId());
 
-		Date date = new Date();
 		if(Objects.isNull(teacherAttendance)){
 			teacherAttendance= new TeacherAttendance();
 			teacherAttendance.setTeacherId(sysUser.getId());

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -773,7 +773,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
         //成功报名状态变更
         StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(studentPaymentOrder.getUserId(), studentPaymentOrder.getMusicGroupId());
-        MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId());
+        MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
 
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.SUCCESS)) {
             if(studentRegistration.getTemporaryCourseFee() != null){
@@ -789,6 +789,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 StudentPaymentOrder waitPayOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(studentRegistration.getUserId(), studentRegistration.getMusicGroupId(), DealStatusEnum.WAIT_PAY);
                 waitPayOrder.setStatus(DealStatusEnum.CLOSE);
                 studentPaymentOrderService.update(waitPayOrder);
+                MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(studentRegistration.getUserId(), studentRegistration.getMusicGroupId());
+                musicGroupStudentFee.setLatestPaidTime(nowDate);
+                musicGroupStudentFee.setUpdateTime(nowDate);
+                musicGroupStudentFeeDao.update(musicGroupStudentFee);
                 //添加学生
                 //classGroupStudentMapperService.addStudents(waitPayOrder.getClassGroupId(), studentRegistration.getUserId().toString(), GroupType.MUSIC);
             }

+ 12 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -1458,6 +1458,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(Objects.isNull(studentPauseInfo)){
 			throw new BizException("未找到休学信息");
 		}
+
+		classStudentMapperByUserIdAndClassGroupId.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+		classGroupStudentMapperDao.update(classStudentMapperByUserIdAndClassGroupId);
+
+		if(Objects.nonNull(studentRecoverInfo.getTeacherId())){
+			vipGroup.setUserId(studentRecoverInfo.getTeacherId());
+		}
+
 		Map<String, Object> courseInfo = JSON.parseObject(studentPauseInfo.getCoursesJson(), Map.class);
 		List<BigDecimal> coursePrices = (List<BigDecimal>) courseInfo.get("coursePriceInfo");
 		coursePrices.sort(Comparator.naturalOrder());
@@ -1485,6 +1493,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 			TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId(), vipGroup.getVipGroupCategoryId());
 
+			if(Objects.isNull(teacherDefaultVipGroupSalary)){
+				throw new BizException("请设置默认课酬");
+			}
+
 			//创建老师单节课课酬信息
 			courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroup,
 					newCourseSchedules,
@@ -1522,8 +1534,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPaymentList);
 		}
 		sysUserCashAccountService.appendCourseBalance(studentRecoverInfo.getUserId(), surplusCourseFee.negate());
-		classStudentMapperByUserIdAndClassGroupId.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-		classGroupStudentMapperDao.update(classStudentMapperByUserIdAndClassGroupId);
 		studentPauseInfo.setDelFlag(1);
 		studentPauseInfoDao.update(studentPauseInfo);
         vipGroup.setStatus(VipGroupStatusEnum.PROGRESS);

+ 14 - 0
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -361,4 +361,18 @@
     <select id="countStudentAttendenceNum" resultType="int">
         SELECT COUNT(*) FROM student_attendance sa WHERE course_schedule_id_ = #{courseScheduleId} AND status_='NORMAL'
     </select>
+    <select id="countStudentAttendancesByCourses" resultType="java.util.Map">
+        SELECT
+            course_schedule_id_ AS 'key',
+            COUNT( id_ ) AS 'value'
+        FROM
+            student_attendance
+        WHERE
+            course_schedule_id_ IN
+            <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+                #{courseScheduleId}
+            </foreach>
+        GROUP BY
+            course_schedule_id_
+    </select>
 </mapper>

+ 2 - 1
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -411,6 +411,7 @@
         <result column="username_" property="user.username"/>
         <result column="charge_type_" property="chargeType"/>
         <collection property="orderDetailList" ofType="com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail">
+            <result column="detail_id_" property="id"/>
             <result column="detail_type_" property="type"/>
             <result column="detail_price_" property="price"/>
         </collection>
@@ -418,7 +419,7 @@
 
     <!-- 分页查询 -->
     <select id="ExportQueryPage" resultMap="orderAndDetail" parameterType="map">
-        SELECT spo.*,u.username_,spod.type_ detail_type_,spod.price_ detail_price_,o.name_ organ_name,sci.charge_type_
+        SELECT spo.*,u.username_,spod.id_ detail_id_,spod.type_ detail_type_,spod.price_ detail_price_,o.name_ organ_name,sci.charge_type_
         FROM student_payment_order spo
         LEFT JOIN sys_user u on spo.user_id_ = u.id_
         LEFT JOIN student_payment_order_detail spod on spo.id_ = spod.payment_order_id_

+ 4 - 3
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -39,6 +39,7 @@
         <result column="subject_name_" property="subjectName" />
         <result column="kit_group_purchase_type_" property="kitType" />
         <result column="username_" property="name" />
+        <result column="deposit_fee_" property="depositFee" />
     </resultMap>
 
     <resultMap type="com.ym.mec.biz.dal.dto.StudentInfo" id="StudentInfo">
@@ -589,11 +590,11 @@
     </update>
 
     <select id="findStudentByMusicGroupIdAndUserId" resultMap="StudentRegistration">
-        SELECT sr.*,s.name_ school_name_,s2.name_ subject_name_,mgsp.kit_group_purchase_type_ kit_group_purchase_type_ FROM student_registration sr
+        SELECT sr.*,s.name_ school_name_,s2.name_ subject_name_,mgsp.kit_group_purchase_type_ kit_group_purchase_type_,mgsp.deposit_fee_ FROM student_registration sr
         LEFT JOIN music_group mg ON mg.id_ =sr.music_group_id_
         LEFT JOIN school s ON mg.school_id_ = s.id_
-        LEFT JOIN subject s2 ON sr.subject_id_ = s2.id_
-        LEFT JOIN music_group_subject_plan mgsp ON mgsp.subject_id_ = sr.subject_id_ AND mgsp.music_group_id_ = sr.music_group_id_
+        LEFT JOIN subject s2 ON sr.actual_subject_id_ = s2.id_
+        LEFT JOIN music_group_subject_plan mgsp ON mgsp.subject_id_ = sr.actual_subject_id_ AND mgsp.music_group_id_ = sr.music_group_id_
         WHERE sr.music_group_id_ = #{musicGroupId} AND sr.user_id_ = #{userId} AND sr.music_group_status_ != 'QUIT' LIMIT 1
     </select>
 </mapper>

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -298,7 +298,7 @@
             teacher t
             LEFT JOIN sys_user su ON t.id_ = su.id_
         WHERE
-            FIND_IN_SET(t.subject_id_, #{subjectIds})
+            FIND_IN_SET(#{subjectIds},t.subject_id_)
             AND INTE_ARRAY ( CONCAT(t.organ_id_,',',t.flow_organ_range_), #{organIds} )
     </select>
     <select id="findByTeacherId" resultMap="TeacherBasicDto">

+ 6 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -5,12 +5,14 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.StudentAttendanceService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -37,6 +39,8 @@ public class TeacherCourseScheduleController extends BaseController {
     private StudentAttendanceService studentAttendanceService;
     @Autowired
     private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SysConfigService sysConfigService;
 
     @ApiOperation(value = "根据月份获取该月有课的日期")
     @GetMapping("/getCourseScheduleDateByMonth")
@@ -59,10 +63,12 @@ public class TeacherCourseScheduleController extends BaseController {
         if(null==user){
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
+        SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
         List<CourseScheduleDto> teacherCourseSchedulesWithDate = scheduleService.getTeacherCourseSchedulesWithDate(user.getId(),date,type);
         Map<String,Object> result = new HashMap<>();
         result.put("rows",teacherCourseSchedulesWithDate);
         result.put("appealDaysRange",1);
+        result.put("enableStudentAttendanceTimeRange",sysConfig.getParanValue(Integer.class));
         return succeed(result);
     }
 

+ 8 - 7
mec-util/src/main/java/com/ym/mec/util/pdf/PDFUtil.java

@@ -11,7 +11,6 @@ import java.net.URL;
 
 import org.xhtmlrenderer.pdf.ITextRenderer;
 
-import com.google.zxing.client.result.BizcardResultParser;
 import com.lowagie.text.DocumentException;
 import com.lowagie.text.pdf.BaseFont;
 import com.ym.mec.util.exception.UtilException;
@@ -315,12 +314,14 @@ public class PDFUtil {
 	private static ITextRenderer getRendererByData(String baseUrl, String data, String fontFamily) throws DocumentException, IOException {
 		ITextRenderer renderer = new ITextRenderer();
 
-		File fontFamilyFile = new File(baseUrl, fontFamily);
-		if (fontFamilyFile.exists()) {
-			renderer.getFontResolver().addFont(fontFamilyFile.getAbsolutePath(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
-		} else {
-			throw new FileNotFoundException("字体文件找不到:" + fontFamilyFile.getPath());
-		}
+		String windir = System.getenv("windir");
+        String fileSeparator = System.getProperty("file.separator");
+        if (windir != null && fileSeparator != null) {
+            renderer.getFontResolver().addFont(windir + fileSeparator + "fonts" + fileSeparator + fontFamily, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
+        }else{
+        	renderer.getFontResolver().addFont("/usr/share/fonts" + fileSeparator + fontFamily, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
+        }
+        
 		renderer.setDocumentFromString(data);
 		renderer.getSharedContext().setBaseURL(baseUrl);
 		renderer.layout();

+ 8 - 4
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -188,15 +188,19 @@ public class ExportController extends BaseController {
             row.setTransferFee(transferFee);
             BigDecimal musicalFee = BigDecimal.ZERO;
             BigDecimal teachingFee = BigDecimal.ZERO;
+            BigDecimal courseFee = BigDecimal.ZERO;
             if (row.getOrderDetailList() != null) {
                 for (StudentPaymentOrderDetail orderDetail : row.getOrderDetailList()) {
                     if (orderDetail.getType().equals(OrderDetailTypeEnum.MUSICAL)) {
                         musicalFee = musicalFee.add(orderDetail.getPrice());
-                    } else if (orderDetail.getType().equals(OrderDetailTypeEnum.ACCESSORIES) || orderDetail.getType().equals(OrderDetailTypeEnum.TEACHING)) {
+                    }else if(orderDetail.getType().equals(OrderDetailTypeEnum.COURSE)){
+                        courseFee = courseFee.add(orderDetail.getPrice());
+                    }else if (orderDetail.getType().equals(OrderDetailTypeEnum.ACCESSORIES) || orderDetail.getType().equals(OrderDetailTypeEnum.TEACHING) || orderDetail.getType().equals(OrderDetailTypeEnum.OTHER)) {
                         teachingFee = teachingFee.add(orderDetail.getPrice());
                     }
                 }
             }
+            row.setCourseFee(courseFee);
             row.setMusicalFee(musicalFee);
             row.setTeachingFee(teachingFee);
             //专业
@@ -206,7 +210,7 @@ public class ExportController extends BaseController {
                     row.setSubjectName(studentRegistration.getSubjectName());
                     row.setSchoolName(studentRegistration.getSchoolName());
                     if (studentRegistration.getKitType() != null && studentRegistration.getKitType().equals("LEASE")) {
-                        row.setLeaseFee(musicalFee);
+                        row.setLeaseFee(studentRegistration.getDepositFee());
                         row.setMusicalFee(BigDecimal.ZERO);
                     }
                 }
@@ -250,9 +254,9 @@ public class ExportController extends BaseController {
 
         try {
             String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "支付金额", "到账时间",
-                    "关联乐团ID/VIP课ID", "课程形态", "押金", "乐器", "教辅费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "备注"};
+                    "关联乐团ID/VIP课ID", "课程形态","课程费用", "押金", "乐器", "教辅费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "备注"};
             String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "actualAmount", "payTime", "musicGroupId",
-                    "groupType.desc", "leaseFee", "musicalFee", "teachingFee", "sporadicAmount", "sporadicType", "transferFee", "subjectName", "organName", "schoolName", "memo"};
+                    "groupType.desc", "courseFee","leaseFee", "musicalFee", "teachingFee", "sporadicAmount", "sporadicType", "transferFee", "subjectName", "organName", "schoolName", "memo"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");