Joburgess преди 4 години
родител
ревизия
e953ebabef

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleTeacherSalaryService.java

@@ -281,10 +281,21 @@ public interface CourseScheduleTeacherSalaryService extends BaseService<Long, Co
      * @date 2021/4/16 0016
      * @param year:
      * @return java.util.Map<java.lang.String,java.math.BigDecimal>
+     * 移动端全部更新后将废弃
      */
+    @Deprecated
     Map<String, Object> teacherIncomeStat(Integer teacherId, Integer year, Integer month);
 
     /**
+     * @describe 收入统计
+     * @author Joburgess
+     * @date 2021/4/16 0016
+     * @param year:
+     * @return java.util.Map<java.lang.String,java.math.BigDecimal>
+     */
+    Map<String, Object> teacherIncomeStatNew(Integer teacherId, Integer year, Integer month);
+
+    /**
      * @describe 推送查看今日收入提醒
      * @author Joburgess
      * @date 2021/4/19 0019

+ 68 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -2271,6 +2271,74 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
         Map<String, Object> result = new HashMap<>();
         result.put("total", BigDecimal.ZERO);
+        result.put("salary", BigDecimal.ZERO);
+
+        LocalDate minDate = LocalDate.of(2021, 3, 1);
+        LocalDate startDate = LocalDate.of(year, Objects.isNull(month)?1:month, 1);
+
+        if(year<=2021&&Objects.isNull(month)){
+            startDate = startDate.withMonth(3);
+        }
+
+        result.put("total", BigDecimal.ZERO);
+        result.put("salary", BigDecimal.ZERO);
+        result.put("data", Collections.emptyList());
+
+        if(startDate.compareTo(minDate)<0){
+            return result;
+        }
+
+        List<LocalDateBigDecimalMapDto> monthIncomeMapList = courseScheduleTeacherSalaryDao.teacherIncomeStat(teacherId, year, month);
+
+        if(CollectionUtils.isEmpty(monthIncomeMapList)){
+            return result;
+        }
+
+        if(Objects.isNull(month)){
+            Set<String> months = monthIncomeMapList.stream().map(e -> DateUtil.dateToString(e.getDate(), "yyyy-MM")).collect(Collectors.toSet());
+
+            LocalDate now = LocalDate.now();
+            now = now.plusMonths(-1);
+            DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
+            while (startDate.compareTo(now)<=0&&year.equals(startDate.get(ChronoField.YEAR))){
+                String dateStr = dateFormatter.format(startDate);
+                if(!months.contains(dateStr)){
+                    monthIncomeMapList.add(new LocalDateBigDecimalMapDto(Date.from(startDate.atStartOfDay(DateUtil.zoneId).toInstant()), dateStr, BigDecimal.ZERO));
+                }
+                startDate = startDate.plusMonths(1);
+            }
+        }else{
+            Set<String> dates = monthIncomeMapList.stream().map(e -> DateUtil.dateToString(e.getDate(), "yyyy-MM-dd")).collect(Collectors.toSet());
+
+            Integer oldMonth = Objects.isNull(month)?new Integer(1):month;
+            while (oldMonth.equals(startDate.get(ChronoField.MONTH_OF_YEAR))){
+                String dateStr = DateUtil.dateFormatter.format(startDate);
+                if(!dates.contains(dateStr)){
+                    monthIncomeMapList.add(new LocalDateBigDecimalMapDto(Date.from(startDate.atStartOfDay(DateUtil.zoneId).toInstant()), dateStr, BigDecimal.ZERO));
+                }
+                startDate = startDate.plusDays(1);
+            }
+        }
+
+        monthIncomeMapList.sort(Comparator.comparing(LocalDateBigDecimalMapDto::getDate));
+
+        BigDecimal reduce = monthIncomeMapList.stream().map(LocalDateBigDecimalMapDto::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+        result.put("total", reduce);
+        result.put("salary", reduce);
+        result.put("data", monthIncomeMapList);
+
+        return result;
+    }
+
+    @Override
+    public Map<String, Object> teacherIncomeStatNew(Integer teacherId, Integer year, Integer month) {
+        if(Objects.isNull(year)){
+            year = LocalDate.now().get(ChronoField.YEAR);
+        }
+
+        Map<String, Object> result = new HashMap<>();
+        result.put("total", BigDecimal.ZERO);
 
         LocalDate minDate = LocalDate.of(2021, 3, 1);
         LocalDate startDate = LocalDate.of(year, Objects.isNull(month)?1:month, 1);

+ 18 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -657,10 +657,24 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			teacherAttendance.setTeacherId(teacherAttendanceInfo.getTeacherId());
 			teacherAttendance.setCreateTime(date);
 		}
-		teacherAttendance.setSignInTime(date);
-		teacherAttendance.setSignInStatus(teacherAttendanceInfo.getSignInStatus());
-		teacherAttendance.setSignOutTime(date);
-		teacherAttendance.setSignOutStatus(teacherAttendanceInfo.getSignOutStatus());
+
+		if(Objects.isNull(teacherAttendance.getSignInStatus())||teacherAttendance.getSignInStatus().equals(YesOrNoEnum.NO)){
+			int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
+			Date add20Minutes = DateUtil.addMinutes(courseSchedule.getStartClassTime(), advanceSignMinutes * -1);
+			teacherAttendance.setSignInTime(add20Minutes);
+			teacherAttendance.setSignInStatus(teacherAttendanceInfo.getSignInStatus());
+		}
+
+		if(Objects.isNull(teacherAttendance.getSignOutStatus())||teacherAttendance.getSignOutStatus().equals(YesOrNoEnum.NO)) {
+			teacherAttendance.setSignOutTime(courseSchedule.getEndClassTime());
+			teacherAttendance.setSignOutStatus(teacherAttendanceInfo.getSignOutStatus());
+		}
+
+		School school = schoolDao.get(courseSchedule.getSchoolId());
+		if(Objects.nonNull(school)){
+			teacherAttendance.setSignInLongitudeLatitude(school.getLongitudeLatitude());
+			teacherAttendance.setSignOutLongitudeLatitude(school.getLongitudeLatitude());
+		}
 
 		SysUser sysUser = sysUserFeignService.queryUserInfo();
 		StringBuilder remark=new StringBuilder("补签到,");

+ 10 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseScheduleTeacherSalaryController.java

@@ -122,4 +122,14 @@ public class CourseScheduleTeacherSalaryController extends BaseController {
         return succeed(courseScheduleTeacherSalaryService.teacherIncomeStat(sysUser.getId(), year, month));
     }
 
+    @ApiOperation(value = "收入统计")
+    @GetMapping("/teacherIncomeStatNew")
+    public HttpResponseResult teacherIncomeStatNew(Integer year, Integer month){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        return succeed(courseScheduleTeacherSalaryService.teacherIncomeStat(sysUser.getId(), year, month));
+    }
+
 }