|
@@ -202,7 +202,7 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
|
|
|
}
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
|
|
|
- //查询所有老师发起顶课通过的数量(只查询事假、病假),也要分别计算早自习、晚自习、正课、如果日期出入课时删除中,也需要跳过
|
|
|
+ //查询所有老师发起顶课通过的数量,也要分别计算早自习、晚自习、正课、如果日期出入课时删除中,也需要跳过
|
|
|
List<CourseListVo> allSubstituteList = this.baseMapper.getSubstituteList(statistics);
|
|
|
List<ClassTimeStatisticsRecord> insertList = new ArrayList<>();
|
|
|
//循环教师,准备开始计算
|
|
@@ -303,7 +303,7 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
|
|
|
}
|
|
|
}
|
|
|
//早自习、正课、晚辅、顶课、调课
|
|
|
- Double classTime7 = 0D,classTime8 = 0D,classTime9 = 0D,classTime10 = 0D,classTime11 = 0D;
|
|
|
+ Double classTime7 = 0D,classTime8 = 0D,classTime9 = 0D,classTime11 = 0D;
|
|
|
|
|
|
List<String> zkList = Arrays.asList("上1","上2","上3","上4","下1","下2","下3","下4");
|
|
|
List<String> wzxList = Arrays.asList("晚1","晚2","晚3");
|
|
@@ -341,7 +341,7 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
|
|
|
courseJson.addProperty("type", courseListVo.getShortName());
|
|
|
courseJson.addProperty("scheduleDate", courseListVo.getScheduleDate().format(formatter));
|
|
|
courseJson.addProperty("content", courseListVo.getClassName() + "," + courseListVo.getCourseName());
|
|
|
- courseJson.addProperty("adjustType", courseListVo.getAdjustType());
|
|
|
+ courseJson.addProperty("adjustType", courseListVo.getAdjustType() == null?"":courseListVo.getAdjustType());
|
|
|
allClassTimeDataArray.add(courseJson);
|
|
|
}
|
|
|
record.setClassTime7(classTime7);
|
|
@@ -404,30 +404,6 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
|
|
|
weekDataJson.add("weekData", new Gson().toJsonTree(weekTimeRangeVos));
|
|
|
weekDataJson.addProperty("allTimes", allTimes);
|
|
|
record.setWeekData(weekDataJson.toString());
|
|
|
-
|
|
|
- //计算该老师发起的事假、病假顶课数据
|
|
|
- List<CourseListVo> substituteList = allSubstituteList.stream().filter(x -> x.getExchangeTeacherId().equals(teacher.getId()))
|
|
|
- .collect(Collectors.toList());
|
|
|
- Double reduceTime = 0d;
|
|
|
- for (CourseListVo courseListVo : substituteList) {
|
|
|
- Set<LocalDate> deleteDates = deleteMap.get(courseListVo.getClassId());
|
|
|
- if(deleteDates !=null && deleteDates.contains(courseListVo.getScheduleDate())){
|
|
|
- continue;
|
|
|
- }
|
|
|
- reduceTime += weightSetMap.get(courseListVo.getShortName());
|
|
|
- }
|
|
|
-
|
|
|
- substituteList = allSubstituteList.stream().filter(x -> x.getTeacherId().equals(teacher.getId().toString()))
|
|
|
- .collect(Collectors.toList());
|
|
|
- for (CourseListVo courseListVo : substituteList) {
|
|
|
- Set<LocalDate> deleteDates = deleteMap.get(courseListVo.getClassId());
|
|
|
- if(deleteDates !=null && deleteDates.contains(courseListVo.getScheduleDate())){
|
|
|
- continue;
|
|
|
- }
|
|
|
- reduceTime = reduceTime - weightSetMap.get(courseListVo.getShortName());
|
|
|
- }
|
|
|
-
|
|
|
- record.setClassTime10(reduceTime);
|
|
|
//计算总课时
|
|
|
allClassTime = allClassTime + classTime7 + classTime8 + classTime9;
|
|
|
record.setAllClassTime(allClassTime);
|
|
@@ -468,29 +444,61 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
|
|
|
wzxCost = BigDecimal.valueOf(costSetMap.get("cost6"));
|
|
|
}
|
|
|
classTimeAmount += BigDecimal.valueOf(classTime9).multiply(wzxCost).doubleValue();
|
|
|
-
|
|
|
+ /**
|
|
|
+ * 顶课:
|
|
|
+ * 1、流程发起人(被顶老师)的课被顶课老师上了,那么被顶老师的课时就会-1,顶课老师课时就会+1
|
|
|
+ * 2、顶课老师会根据规则额外加一笔费用,根据设置1课时额外加4元
|
|
|
+ * 3、顶课类型为事假和病假的时候会扣除被顶老师的费用,根据设置为扣除4元
|
|
|
+ */
|
|
|
BigDecimal reduceTimeAmount = BigDecimal.ZERO;
|
|
|
- BigDecimal dkCost = BigDecimal.ZERO;//顶课费用,顶课老师加钱
|
|
|
- if("FB1601".equals(teacher.getEmployType())){
|
|
|
- dkCost = BigDecimal.valueOf(costSetMap.get("cost11"));
|
|
|
- }else{//外聘FB1605、合作人员FB1609
|
|
|
- dkCost = BigDecimal.valueOf(costSetMap.get("cost12"));
|
|
|
- }
|
|
|
- if(record.getClassTime10() != null && record.getClassTime10() > 0){
|
|
|
- reduceTimeAmount = BigDecimal.valueOf(record.getClassTime10()).multiply(dkCost);
|
|
|
- }
|
|
|
+ {
|
|
|
+ //计算该老师发起的事假、病假顶课数据
|
|
|
+ List<CourseListVo> substituteList = allSubstituteList.stream().filter(x -> x.getExchangeTeacherId().equals(teacher.getId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Double reduceTime = 0d;//顶课课时
|
|
|
+ Double bdkClassTime = 0d;//发起顶课的数量,只统计事假和病假的数量
|
|
|
+ for (CourseListVo courseListVo : substituteList) {
|
|
|
+ Set<LocalDate> deleteDates = deleteMap.get(courseListVo.getClassId());
|
|
|
+ if(deleteDates !=null && deleteDates.contains(courseListVo.getScheduleDate())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ reduceTime += weightSetMap.get(courseListVo.getShortName());
|
|
|
+ if("sick_leave".equals(courseListVo.getReason()) || "leave_absence".equals(courseListVo.getReason())){
|
|
|
+ bdkClassTime += weightSetMap.get(courseListVo.getShortName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Double dkClassTime = 0d;//去顶课的数量,所有顶课数量
|
|
|
+ substituteList = allSubstituteList.stream().filter(x -> x.getTeacherId().equals(teacher.getId().toString()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ for (CourseListVo courseListVo : substituteList) {
|
|
|
+ Set<LocalDate> deleteDates = deleteMap.get(courseListVo.getClassId());
|
|
|
+ if(deleteDates !=null && deleteDates.contains(courseListVo.getScheduleDate())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ reduceTime = reduceTime - weightSetMap.get(courseListVo.getShortName());
|
|
|
|
|
|
+ dkClassTime += weightSetMap.get(courseListVo.getShortName());
|
|
|
+ }
|
|
|
+ record.setClassTime10(reduceTime);
|
|
|
|
|
|
- BigDecimal bdkCost = BigDecimal.ZERO;//顶课费用,被顶课老师扣钱
|
|
|
- if("FB1601".equals(teacher.getEmployType())){
|
|
|
- bdkCost = BigDecimal.valueOf(costSetMap.get("cost13")==null?0:costSetMap.get("cost13"));
|
|
|
- }else{//外聘FB1605、合作人员FB1609
|
|
|
- bdkCost = BigDecimal.valueOf(costSetMap.get("cost14")==null?0:costSetMap.get("cost14"));
|
|
|
- }
|
|
|
- //计算被扣除的费用
|
|
|
- if(record.getClassTime10() != null && record.getClassTime10() < 0){
|
|
|
- reduceTimeAmount = bdkCost.multiply(BigDecimal.valueOf(record.getClassTime10()));
|
|
|
+ BigDecimal dkCost = BigDecimal.ZERO;//顶课费用,顶课老师加钱
|
|
|
+ if("FB1601".equals(teacher.getEmployType())){
|
|
|
+ dkCost = BigDecimal.valueOf(costSetMap.get("cost11"));
|
|
|
+ }else{//外聘FB1605、合作人员FB1609
|
|
|
+ dkCost = BigDecimal.valueOf(costSetMap.get("cost12"));
|
|
|
+ }
|
|
|
+ reduceTimeAmount = BigDecimal.valueOf(dkClassTime).multiply(dkCost);
|
|
|
+ BigDecimal bdkCost = BigDecimal.ZERO;//顶课费用,被顶课老师扣钱
|
|
|
+ if("FB1601".equals(teacher.getEmployType())){
|
|
|
+ bdkCost = BigDecimal.valueOf(costSetMap.get("cost13")==null?0:costSetMap.get("cost13"));
|
|
|
+ }else{//外聘FB1605、合作人员FB1609
|
|
|
+ bdkCost = BigDecimal.valueOf(costSetMap.get("cost14")==null?0:costSetMap.get("cost14"));
|
|
|
+ }
|
|
|
+ //计算被扣除的费用
|
|
|
+ reduceTimeAmount = reduceTimeAmount.subtract(bdkCost.multiply(BigDecimal.valueOf(bdkClassTime)));
|
|
|
}
|
|
|
+
|
|
|
record.setClassTimeAmount(classTimeAmount);
|
|
|
//计算超出的课时,需要先计算出每个周的开始结束时间
|
|
|
BigDecimal ccksCost = BigDecimal.ZERO;
|
|
@@ -955,6 +963,10 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
|
|
|
if(!scheduleDate.equals(localDate)){
|
|
|
continue;
|
|
|
}
|
|
|
+ String adjustType = object.get("adjustType").getAsString();
|
|
|
+ if("course_delete".equals(adjustType)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if(weightSetMap.get(object.get("type").getAsString()) == null){
|
|
|
sum += object.get("content").getAsDouble();
|
|
|
allClassTime += object.get("content").getAsDouble();
|
|
@@ -982,6 +994,10 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
|
|
|
if(!type.equals(typeStr)){
|
|
|
continue;
|
|
|
}
|
|
|
+ String adjustType = object.get("adjustType").getAsString();
|
|
|
+ if("course_delete".equals(adjustType)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
sum += weightSetMap.get(typeStr);
|
|
|
}
|
|
|
columnTitleJson.addProperty("type", type);
|
|
@@ -1000,6 +1016,10 @@ public class ClassTimeStatisticsServiceImpl extends MPJBaseServiceImpl<ClassTime
|
|
|
if (!courseTimeType.equals(typeStr)) {
|
|
|
continue;
|
|
|
}
|
|
|
+ String adjustType = object.get("adjustType").getAsString();
|
|
|
+ if("course_delete".equals(adjustType)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
sum += object.get("content").getAsDouble();
|
|
|
}
|
|
|
columnTitleJson.addProperty("type", courseTimeType);
|