package com.chuanghai.attendance.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chuanghai.attendance.common.exception.BizCodeEnume; import com.chuanghai.attendance.common.exception.RRException; import com.chuanghai.attendance.dao.MonthlySummaryDao; import com.chuanghai.attendance.dto.MonthlyDto; import com.chuanghai.attendance.entity.*; import com.chuanghai.attendance.service.*; import com.chuanghai.attendance.utils.DateUtil; import com.chuanghai.attendance.utils.excel.ExcelImportXLSXUtil; import com.chuanghai.attendance.vo.ClockTimeVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import static com.alibaba.excel.util.DateUtils.format; /** * @Author: binguo * @Date: 2022/10/9 星期日 16:06 * @Description: com.chuanghai.attendance.service.impl * @Version: 1.0 */ @Slf4j @Service("monthlySummaryService") public class MonthlySummaryServiceImpl extends ServiceImpl implements MonthlySummaryService { @Autowired private DayDetailsService dayDetailsService; @Autowired private CampusTimeService campusTimeService; @Autowired private LateClockService lateClockService; @Autowired private OriginalDataService originalDataService; @Autowired private WorkerIdentityService workerIdentityService; private static String HJH = "黄家湖"; // private static String HJH = "华东"; private static String MXH = "墨轩湖"; /** * 导入钉钉考勤原始数据信息 * * @param file * @throws Exception */ @Override public Boolean importMonthDataExcel(MultipartFile file) throws Exception { List monthlySummaryList = new ArrayList<>(); List dayDetailsList = new ArrayList<>(); //删除导入的月度汇总每日数据 Boolean aBoolean = dayDetailsService.removeDayDetails(); //删除导入的月度汇总数据 Boolean mBoolean = removeMonthlySummary(); Boolean statu = Boolean.FALSE; if (aBoolean && mBoolean) { List list = ExcelImportXLSXUtil.readerExcel(file.getInputStream(), "月度汇总", 55); int count = 0; for (String[] strings : list) { count++; DayDetails dayDetails = new DayDetails(); if (count < 5) { if (count == 3) { dayDetails.setUserId("title"); dayDetails.setWorkName("title"); dayDetails.setOneOfMonth(strings[24]); dayDetails.setTwoOfMonth(strings[25]); dayDetails.setThreeOfMonth(strings[26]); dayDetails.setFourOfMonth(strings[27]); dayDetails.setFiveOfMonth(strings[28]); dayDetails.setSixOfMonth(strings[29]); dayDetails.setSevenOfMonth(strings[30]); dayDetails.setEightOfMonth(strings[31]); dayDetails.setNineOfMonth(strings[32]); dayDetails.setTenOfMonth(strings[33]); dayDetails.setElevenOfMonth(strings[34]); dayDetails.setTwelveOfMonth(strings[35]); dayDetails.setThirteenOfMonth(strings[36]); dayDetails.setFourteenOfMonth(strings[37]); dayDetails.setFifteenOfMonth(strings[38]); dayDetails.setSixteenOfMonth(strings[39]); dayDetails.setSeventeenOfMonth(strings[40]); dayDetails.setEighteenOfMonth(strings[41]); dayDetails.setNineteenOfMonth(strings[42]); dayDetails.setTwentyOfMonth(strings[43]); dayDetails.setTwentyOneOfMonth(strings[44]); dayDetails.setTwentyTwoOfMonth(strings[45]); dayDetails.setTwentyThreeOfMonth(strings[46]); dayDetails.setTwentyFourOfMonth(strings[47]); dayDetails.setTwentyFiveOfMonth(strings[48]); dayDetails.setTwentySixOfMonth(strings[49]); dayDetails.setTwentySevenOfMonth(strings[50]); dayDetails.setTwentyEightOfMonth(strings[51]); dayDetails.setTwentyNineOfMonth(strings[52]); dayDetails.setThirtyOfMonth(strings[53]); dayDetails.setThirtyOneOfMonth(strings[54]); } else { continue; } } else { MonthlySummary monthlySummary = new MonthlySummary(); monthlySummary.setWorkName(strings[0]); monthlySummary.setGroupOfCheck(strings[1]); monthlySummary.setDepartment(strings[2]); monthlySummary.setWorkNum(strings[3]); monthlySummary.setUserId(strings[4]); monthlySummary.setAttendanceDay(strings[5]); monthlySummary.setRestDay(strings[6]); monthlySummary.setWorkHours(strings[7]); monthlySummary.setNumberOfLate(strings[8]); monthlySummary.setNumberOfLateTime(strings[9]); monthlySummary.setNumberOfSeriousLateness(strings[10]); monthlySummary.setDurationOfSevereLateness(strings[11]); monthlySummary.setDaysOfAbsenteeismAndLateness(strings[12]); monthlySummary.setLeaveEarlyNumber(strings[13]); monthlySummary.setLeaveEarlyTimes(strings[14]); monthlySummary.setLackOfWorkCardTimes(strings[15]); monthlySummary.setLackOfMissingWorkCardTimes(strings[16]); monthlySummary.setAbsenteeismDay(strings[17]); // monthlySummary.setEvectionDay(strings[18]); monthlySummary.setGoOutDay(strings[18]); monthlySummary.setBereavementLeave(strings[19]); monthlySummary.setPrivateAffairLeaveDay(strings[20]); monthlySummary.setMaternityLeaveDay(strings[21]); monthlySummary.setSickLeaveDay(strings[22]); monthlySummary.setEscortFalse(strings[23]); //封装钉钉考勤月度汇总 monthlySummaryList.add(monthlySummary); // DayDetails dayDetails = new DayDetails(); dayDetails.setUserId(strings[4]); dayDetails.setWorkName(strings[0]); dayDetails.setOneOfMonth(strings[24]); dayDetails.setTwoOfMonth(strings[25]); dayDetails.setThreeOfMonth(strings[26]); dayDetails.setFourOfMonth(strings[27]); dayDetails.setFiveOfMonth(strings[28]); dayDetails.setSixOfMonth(strings[29]); dayDetails.setSevenOfMonth(strings[30]); dayDetails.setEightOfMonth(strings[31]); dayDetails.setNineOfMonth(strings[32]); dayDetails.setTenOfMonth(strings[33]); dayDetails.setElevenOfMonth(strings[34]); dayDetails.setTwelveOfMonth(strings[35]); dayDetails.setThirteenOfMonth(strings[36]); dayDetails.setFourteenOfMonth(strings[37]); dayDetails.setFifteenOfMonth(strings[38]); dayDetails.setSixteenOfMonth(strings[39]); dayDetails.setSeventeenOfMonth(strings[40]); dayDetails.setEighteenOfMonth(strings[41]); dayDetails.setNineteenOfMonth(strings[42]); dayDetails.setTwentyOfMonth(strings[43]); dayDetails.setTwentyOneOfMonth(strings[44]); dayDetails.setTwentyTwoOfMonth(strings[45]); dayDetails.setTwentyThreeOfMonth(strings[46]); dayDetails.setTwentyFourOfMonth(strings[47]); dayDetails.setTwentyFiveOfMonth(strings[48]); dayDetails.setTwentySixOfMonth(strings[49]); dayDetails.setTwentySevenOfMonth(strings[50]); dayDetails.setTwentyEightOfMonth(strings[51]); dayDetails.setTwentyNineOfMonth(strings[52]); dayDetails.setThirtyOfMonth(strings[53]); dayDetails.setThirtyOneOfMonth(strings[54]); } //封装本月度每日的工作详情 // if (StringUtils.hasText(dayDetails.getOneOfMonth()) && StringUtils.hasText(dayDetails.getTwentyOneOfMonth())) { // dayDetailsList.add(dayDetails); // } dayDetailsList.add(dayDetails); } } boolean d = dayDetailsService.saveBatch(dayDetailsList, dayDetailsList.size()); boolean m = this.saveBatch(monthlySummaryList, monthlySummaryList.size()); if (m & d) { statu = Boolean.TRUE; } return statu; } @Override public List queryAll() { List list = this.list(); if (list.size() == 0) { throw new RRException(BizCodeEnume.DATA_IS_NOT_EXIST, "月度汇总数据不存在"); } return list; } /** * 通过校区获取打卡名称 * * @param campus * @return */ public List getClockNameList(String campus) { List clockNameList = new ArrayList<>(); //查询校区的打卡时间段 List campusTimeList = campusTimeService.queryCampusTime(campus); for (CampusTime campusTime : campusTimeList) { if (campusTime.getClockName().contains("、")) { clockNameList.add(campusTime.getClockName().split("、")[0]); clockNameList.add(campusTime.getClockName().split("、")[1]); } else { clockNameList.add(campusTime.getClockName()); } } return clockNameList; } /** * 通过校区获取打卡次数 * * @param campus * @return */ public Integer getClockCampus(String campus) { Integer count = 0; List campusTimeList = campusTimeService.queryCampusTime(campus); for (CampusTime campusTime : campusTimeList) { count += campusTime.getCount(); } return count; } @Override public List analyse() { //各校区打卡次数 Integer countHJH = this.getClockCampus(HJH); Integer countMXH = this.getClockCampus(MXH); //查询校区的打卡时间段集合及打卡次数 List campusTimeHJHList = campusTimeService.queryCampusTime(HJH); List clockNameHJHList = getClockNameList(HJH); List campusTimeMXHList = campusTimeService.queryCampusTime(MXH); List clockNameMXHList = getClockNameList(MXH); //查询校区的早退规则 LateClock lateClockHJH = lateClockService.queryCampusTime(HJH); LateClock lateClockMXH = lateClockService.queryCampusTime(MXH); //创建接收分析结果的对象 List monthlySummaryList = this.queryAll(); ArrayList monthlyDtoList = new ArrayList<>(); int count = 0; for (MonthlySummary monthlySummary : monthlySummaryList) { // count++; // if (count >= 20) { // continue; // } MonthlyDto monthlyDto = new MonthlyDto(); //提取当月的所有打卡日期 List clockDateList = new ArrayList<>(); //得到该员工当月的所有考勤打卡原始数据 List originalDataList = originalDataService.queryByUserId(monthlySummary.getUserId(), monthlySummary.getWorkNum()); // List originalDataList = originalDataService.queryByUserId("2328214111684948", null); for (OriginalData originalData : originalDataList) { //提取当月的所有打卡日期 clockDateList.add(originalData.getDateOfAttendance()); } //去重后得到考勤打卡的日期 List dateList = clockDateList.stream().distinct().collect(Collectors.toList()); for (int mm = 0; mm < dateList.size(); mm++) { String date = dateList.get(mm); //通过 考勤日期和userId 得到当前员工当天的打卡原始数据 // List originalDataByDateList = originalDataService.queryByTimeAndUserId(date, "2328214111684948", null); List originalDataByDateList = originalDataService.queryByTimeAndUserId(date, monthlySummary.getUserId(), monthlySummary.getWorkNum()); String idCard = workerIdentityService.queryByuserId(monthlySummary.getUserId(), monthlySummary.getWorkNum(), monthlySummary.getWorkName()); // String idCard = workerIdentityService.queryByuserId("2328214111684948", null); //查询该员工当日有打卡记录则记录出勤天数 Boolean attendanceStatu = originalDataByDateList.size() > 0 ? Boolean.TRUE : Boolean.FALSE; //如果对应校区的打卡次数超过规定次数,则去除多余的打卡数据,保留对应的打卡机会 if (!originalDataByDateList.get(0).getClockAddress().contains(MXH)) { //标识黄家湖打卡记录 if (originalDataByDateList.size() > clockNameHJHList.size()) { originalDataByDateList = originalDataByDateList.subList(0, countHJH); } } else { //墨轩湖打卡记录 if (originalDataByDateList.size() > clockNameMXHList.size()) { originalDataByDateList = originalDataByDateList.subList(0, countMXH); } } //获取当天打卡地址的字符串 String campusStr = ""; //获取打卡时间集合 List clockTimeList = new ArrayList<>(); for (OriginalData originalData1 : originalDataByDateList) { // if (originalData1.getClockAddress().contains(HJH) || originalData1.getClockEquipment().contains("手机")) { if (!originalData1.getClockAddress().contains(MXH)) { // campusStr += HJH; campusStr += HJH + ","; clockTimeList.add(originalData1.getClockTime() + ":00"); } else { // } else if (originalData1.getClockAddress().contains(MXH)) { // campusStr += MXH; campusStr += MXH + ","; clockTimeList.add(originalData1.getClockTime() + ":00"); } } //去除尾部的 , // campusStr = campusStr.substring(0, campusStr.length() - 1); //------------------------------- 遍历员工当天的打卡数据 -------------------------------------------- Boolean aBoolean = Boolean.TRUE; for (int m = 0; m < originalDataByDateList.size(); m++) { OriginalData originalData = originalDataByDateList.get(m); //获取第一次打卡的校区位置 String campus = ""; if (!originalDataByDateList.get(0).getClockAddress().contains(MXH)) { campus = HJH; } else { // } else if (originalDataByDateList.get(0).getClockAddress().contains(MXH)) { campus = MXH; } //获取当前的打卡校区地址 String campusNow = ""; if (!originalDataByDateList.get(m).getClockAddress().contains(MXH)) { campusNow = HJH; } else { // } else if (originalDataByDateList.get(m).getClockAddress().contains(MXH)) { campusNow = MXH; } //获取当前打卡的打卡名称 String clockName = ""; if (campus.equals(HJH)) { clockName = clockNameHJHList.get(m); } else { clockName = clockNameMXHList.get(m); } //判断当天的打卡数据中是否包含两个校区,包含则为异地打卡 if (campusStr.contains(HJH) && campusStr.contains(MXH)) { if (!campus.contains(campusNow)) { //记录异地打卡天数 monthlyDto.setAbnormalClockNumber(monthlyDto.getAbnormalClockNumber() + 1); // String clockTime = date.substring(3); // int cloclCount = m + 1; monthlyDto.setAbnormalClockRecond(monthlyDto.getAbnormalClockRecond() + date.substring(3) + " " + clockName + " " + campusNow + "\r\n"); break; } } else { //-------------------------------------------- 判断缺卡情况 --------------------------------------------------------------- //设置各个校区的缺卡默认值 String shortageStrHJH = ""; //如果缺卡天数为空,则添加默值 if (!StringUtils.hasText(monthlyDto.getDaysOfcardShortageInHuangjiahu())) { for (int t = 0; t < clockNameHJHList.size() - 1; t++) { int countSHJH = t + 1; shortageStrHJH += "缺卡" + countSHJH + "次" + 0 + "天\r\n"; } monthlyDto.setDaysOfcardShortageInHuangjiahu(shortageStrHJH); } String shortageStrMXH = ""; if (!StringUtils.hasText(monthlyDto.getDaysOfcardShortageInMoxuanhu())) { for (int t = 0; t < clockNameMXHList.size() - 1; t++) { int countSMXH = t + 1; shortageStrMXH += "缺卡" + countSMXH + "次" + 0 + "天\r\n"; } monthlyDto.setDaysOfcardShortageInMoxuanhu(shortageStrMXH); } //黄家湖/墨轩湖出勤天数 String[] campusSplit = campusStr.split(","); if (attendanceStatu) { if (campusStr.contains(HJH) && campusSplit.length == countHJH) { monthlyDto.setDaysOfAttendanceInHuangjiahu(monthlyDto.getDaysOfAttendanceInHuangjiahu() + 1); } else if (campusStr.contains(MXH) && campusSplit.length == countMXH) { monthlyDto.setDaysOfAttendanceInMoxuanhu(monthlyDto.getDaysOfAttendanceInMoxuanhu() + 1); } } //防止重复计算出勤天数 attendanceStatu = Boolean.FALSE; //判断缺卡情况 if (campus.equals(HJH)) { int dateSize = originalDataByDateList.size(); if (dateSize < clockNameHJHList.size()) { int shortageCountHJH = clockNameHJHList.size() - dateSize; String recondOfHJHStr = monthlyDto.getRecondOfcardShortageInHuangjiahu(); String clockTimeStr = chackClockTime(clockTimeList, campus); clockTimeStr = clockTimeStr.substring(0, clockTimeStr.length() - 1); String[] splitClockTime = clockTimeStr.split(";"); for (int qw = 0; qw < splitClockTime.length; qw++) { Integer clockIndex = Integer.parseInt(splitClockTime[qw].split("、")[0]); Integer clockCount = Integer.parseInt(splitClockTime[qw].split("、")[1]); if (!clockTimeStr.contains("true")) { for (int w = 0; w < clockCount; w++) { if (qw > 0) { recondOfHJHStr += date.substring(3) + " " + clockNameHJHList.get(w+clockIndex+1) + "缺卡\r\n"; // recondOfHJHStr += date.substring(3) + " " + clockNameHJHList.get(w+clockIndex) + "缺卡\r\n"; }else { recondOfHJHStr += date.substring(3) + " " + clockNameHJHList.get(w+clockIndex) + "缺卡\r\n"; } //黄家湖缺卡天数 monthlyDto.setRecondOfcardShortageInHuangjiahu(recondOfHJHStr); } } } monthlyDto.setDaysOfcardShortageInHuangjiahu(DateUtil.getCount(monthlyDto.getDaysOfcardShortageInHuangjiahu(), shortageCountHJH)); break; } } else { int dateSize = originalDataByDateList.size(); if (dateSize < clockNameMXHList.size()) { int shortageCountMXH = clockNameMXHList.size() - dateSize; String recondOfMXHStr = monthlyDto.getRecondOfcardShortageInMoxuanhu(); String clockTimeStr = chackClockTime(clockTimeList, campus); clockTimeStr = clockTimeStr.substring(0, clockTimeStr.length() - 1); String[] splitClockTime = clockTimeStr.split(";"); for (int qw = 0; qw < splitClockTime.length; qw++) { Integer clockIndex = Integer.parseInt(splitClockTime[qw].split("、")[0]); Integer clockCount = Integer.parseInt(splitClockTime[qw].split("、")[1]); if (!clockTimeStr.contains("true")) { for (int w = 0; w < clockCount; w++) { if (qw > 0) { int countMXHs = w+clockIndex+1; if (countMXHs >= clockNameMXHList.size()-1) { countMXHs = clockNameMXHList.size()-1; } recondOfMXHStr += date.substring(3) + " " + clockNameMXHList.get(countMXHs) + "缺卡\r\n"; }else { recondOfMXHStr += date.substring(3) + " " + clockNameMXHList.get(w+clockIndex) + "缺卡\r\n"; } //黄家湖缺卡天数 monthlyDto.setRecondOfcardShortageInMoxuanhu(recondOfMXHStr); } } } monthlyDto.setDaysOfcardShortageInMoxuanhu(DateUtil.getCount(monthlyDto.getDaysOfcardShortageInMoxuanhu(), shortageCountMXH)); break; } // int dateSize = originalDataByDateList.size(); // if (dateSize < clockNameMXHList.size()) { // int shortageCountMXH = clockNameMXHList.size() - dateSize; // String recondOfMXHStr = monthlyDto.getRecondOfcardShortageInMoxuanhu(); // for (int w = clockNameMXHList.size() - 1; w > dateSize - 1; w--) { // recondOfMXHStr += date.substring(3) + " " + clockNameMXHList.get(w) + "缺卡\r\n"; // //墨轩湖缺卡天数 // monthlyDto.setRecondOfcardShortageInMoxuanhu(recondOfMXHStr); // } // monthlyDto.setDaysOfcardShortageInMoxuanhu(DateUtil.getCount(monthlyDto.getDaysOfcardShortageInMoxuanhu(), shortageCountMXH)); // break; // } } //-------------------------------------------- 判断迟到情况 --------------------------------------------------------------- // 迟到或者早退则为 FALSE, TRUE 为正常打卡 String timeStatu = ""; // 0 2 4 为上班卡 if (m % 2 == 0) { // 打卡迟到记录判断 timeStatu = changeTime(campusTimeService.queryCampusTime(campus), originalData.getClockTime(), lateClockService.queryCampusTime(campus).getLateOfWork(), "start", campus, m); // System.out.println(timeStatu + " start"); //true正常 false 迟到 String status = timeStatu.split("、")[0]; long ltime = Long.parseLong(timeStatu.split("、")[1]); //记录迟到 // if (status.contains("迟到")) { if (status.equals("false")) { ltime = Math.abs(ltime); if (ltime > 0 && ltime <= 20) { monthlyDto.setLeTwentyLateNumber(monthlyDto.getLeTwentyLateNumber() + 1); String record = date.substring(3) + " " + campusNow + clockName + " " + originalDataByDateList.get(m).getClockTime().substring(originalDataByDateList.get(m).getClockTime().length() - 5) + "\r\n"; monthlyDto.setLateOfRecond(monthlyDto.getLateOfRecond() + record); } else if (ltime > 20 && ltime <= 30) { monthlyDto.setLequalThirtyLateNumber(monthlyDto.getLequalThirtyLateNumber() + 1); String record = date.substring(3) + " " + campusNow + clockName + " " + originalDataByDateList.get(m).getClockTime().substring(originalDataByDateList.get(m).getClockTime().length() - 5) + "\r\n"; monthlyDto.setLateOfRecond(monthlyDto.getLateOfRecond() + record); } else if (ltime > 30) { monthlyDto.setGeThirtyLateNumber(monthlyDto.getGeThirtyLateNumber() + 1); String record = date.substring(3) + " " + campusNow + clockName + " " + originalDataByDateList.get(m).getClockTime().substring(originalDataByDateList.get(m).getClockTime().length() - 5) + "\r\n"; monthlyDto.setLateOfRecond(monthlyDto.getLateOfRecond() + record); } } } else { // 打卡早退记录判断 timeStatu = changeTime(campusTimeService.queryCampusTime(campus), originalData.getClockTime(), lateClockService.queryCampusTime(campus).getLeaveEarlyOfWork(), "end", campus, m); // System.out.println(timeStatu + " end"); String status = timeStatu.split("、")[0]; long ltime = Long.parseLong(timeStatu.split("、")[1]); ltime = Math.abs(ltime); //记录早退 // if (status.equals("早退")) { if (status.equals("false")) { if (ltime > 0 && ltime <= 20) { monthlyDto.setLeTwentyLeaveNumber(monthlyDto.getLeTwentyLeaveNumber() + 1); String record = date.substring(3) + " " + campusNow + clockName + " " + originalDataByDateList.get(m).getClockTime().substring(originalDataByDateList.get(m).getClockTime().length() - 5) + "\r\n"; monthlyDto.setLeaveOfRecond(monthlyDto.getLeaveOfRecond() + record); } else if (ltime > 20 && ltime <= 30) { monthlyDto.setLequalThirtyLeaveNumber(monthlyDto.getLequalThirtyLeaveNumber() + 1); String record = date.substring(3) + " " + campusNow + clockName + " " + originalDataByDateList.get(m).getClockTime().substring(originalDataByDateList.get(m).getClockTime().length() - 5) + "\r\n"; monthlyDto.setLeaveOfRecond(monthlyDto.getLeaveOfRecond() + record); } else if (ltime > 30) { monthlyDto.setGeThirtyLeaveNumber(monthlyDto.getGeThirtyLeaveNumber() + 1); String record = date.substring(3) + " " + campusNow + clockName + " " + originalDataByDateList.get(m).getClockTime().substring(originalDataByDateList.get(m).getClockTime().length() - 5) + "\r\n"; monthlyDto.setLeaveOfRecond(monthlyDto.getLeaveOfRecond() + record); } } } } } //计算个人单月总计出行天数 Integer countOfHJH = monthlyDto.getDaysOfAttendanceInHuangjiahu() + getShortage(monthlyDto.getDaysOfcardShortageInHuangjiahu()); Integer countOfMXH = monthlyDto.getDaysOfAttendanceInMoxuanhu() + getShortage(monthlyDto.getDaysOfcardShortageInMoxuanhu()); //统计黄家湖总出勤天数 monthlyDto.setSumAttendanceInHuangjiahu(countOfHJH); //统计墨轩湖总出勤天数 monthlyDto.setSumAttendanceInMoxuanhu(countOfMXH); //出现总天数 = 黄家湖出勤天数+黄家湖缺卡天数+墨轩湖出勤天数+墨轩湖缺卡天数+异地打卡天数 = 黄家湖总出勤天数 + 墨轩湖总出勤天数 + 异地打卡天数 Integer sumCount = countOfHJH + countOfMXH + monthlyDto.getAbnormalClockNumber(); monthlyDto.setAttendanceDays(sumCount); monthlyDto.setIdCard(idCard); } monthlyDtoList.add(monthlyDto); // System.out.println("sss"+monthlyDtoList.get(0)); } return monthlyDtoList; } public String chackClockTime(List clockTimeList, String campus) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List clockTimeVoList = new ArrayList<>(); List campusTimeList = campusTimeService.queryCampusTime(campus); List timeList = new ArrayList<>(); CampusTime campusTimeA = campusTimeList.get(0); for (int c = 0; c < campusTimeList.size(); c++) { CampusTime campusTime = campusTimeList.get(c); if (c == campusTimeList.size() - 1) { timeList.add(campusTime.getStartTime() + "、" + campusTime.getStartTime() + "、" + campusTime.getCount()); } else { // for (int d = 0; d < campusTimeList.get(c).getCount(); d++) { timeList.add(campusTime.getStartTime() + "、" + campusTimeList.get(c + 1).getStartTime() + "、" + campusTime.getCount()); // } } } List clockTimeVO2List = new ArrayList<>(); for (int x = 0; x < clockTimeList.size(); x++) { String clockTime = clockTimeList.get(x); for (int i = 0; i < timeList.size(); i++) { ClockTimeVo clockTimeVo2 = new ClockTimeVo(); ClockTimeVo clockTimeVo = new ClockTimeVo(); String timeStr = timeList.get(i); String[] startAndEndTime = timeStr.split("、"); String yms = clockTime.split(" ")[0]; //上班规则 Calendar calendar = Calendar.getInstance(); String leaveTimeNowStr = ""; String lateTimeNowStr = ""; String[] YMS = clockTime.split(" ")[0].split("-"); String[] HMS = startAndEndTime[0].split(":"); String[] HMS1 = startAndEndTime[1].split(":"); if (i == 0) { calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS[0]), Integer.parseInt(HMS[1]), 0); lateTimeNowStr = format(calendar.getTime()); calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS1[0]), Integer.parseInt(HMS1[1]) - 40, 0); leaveTimeNowStr = format(calendar.getTime()); } else if (i == timeList.size() - 1) { //下班打卡截至时间 calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS[0]), Integer.parseInt(HMS[1]) - 40, 0); lateTimeNowStr = format(calendar.getTime()); leaveTimeNowStr = clockTime.split(" ")[0] + " " + "23:59:59"; } else { //中间卡规则 calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS[0]), Integer.parseInt(HMS[1]) - 40, 0); lateTimeNowStr = format(calendar.getTime()); calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS1[0]), Integer.parseInt(HMS1[1]) - 40, 0); leaveTimeNowStr = format(calendar.getTime()); } clockTimeVo2.setClockTimeEnd(leaveTimeNowStr); clockTimeVo2.setClockTimeStart(lateTimeNowStr); clockTimeVo2.setStartTime(HMS[0]); clockTimeVO2List.add(clockTimeVo2); int compareTo = clockTime.compareTo(lateTimeNowStr); // System.out.println(lateTimeNowStr + " -------getClockTimeStart--------- " + clockTime + " " + compareTo); if (compareTo > 0) { compareTo = leaveTimeNowStr.compareTo(clockTime); // System.out.println(leaveTimeNowStr + " --------getClockTimeEnd-------- " + clockTime + " " + compareTo); if (compareTo > 0) { //在规定的范围内打卡,无缺卡 if (clockTimeVoList.size() == 0) { clockTimeVo.setClockTimeStart(lateTimeNowStr); clockTimeVo.setClockTimeEnd(leaveTimeNowStr); clockTimeVo.setCount(clockTimeVo.getCount() + 1); clockTimeVo.setStartTime(HMS[0]); } else { for (int r = 0; r < clockTimeVoList.size(); r++) { ClockTimeVo clockTimeVo1 = clockTimeVoList.get(r); if (clockTimeVo1.getClockTimeStart().equals(lateTimeNowStr)) { clockTimeVo.setCount(clockTimeVo1.getCount() + 1); clockTimeVo.setClockTimeStart(clockTimeVo1.getClockTimeStart()); clockTimeVo.setClockTimeEnd(clockTimeVo1.getClockTimeEnd()); clockTimeVo.setStartTime(HMS[0]); clockTimeVoList.remove(r); } else { clockTimeVo.setClockTimeStart(lateTimeNowStr); clockTimeVo.setClockTimeEnd(leaveTimeNowStr); clockTimeVo.setCount(clockTimeVo.getCount() + 1); clockTimeVo.setStartTime(HMS[0]); } } } clockTimeVoList.add(clockTimeVo); } } } } List clockTimeVO2ListUnique = clockTimeVO2List.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(ClockTimeVo::getClockTimeStart))), ArrayList::new)); List clockTimeVoListUnique = clockTimeVoList.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(ClockTimeVo::getClockTimeStart))), ArrayList::new)); // List clockTimeVoListNew = new ArrayList<>(); // System.out.println(clockTimeVO2ListUnique.size()+" --------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% "+clockTimeVoListUnique.size()); for (int as = 0; as < clockTimeVO2ListUnique.size(); as++) { ClockTimeVo clockTimeVO2 = clockTimeVO2ListUnique.get(as); for (int asa = 0; asa < clockTimeVoListUnique.size(); asa++) { ClockTimeVo clockTimeVo1 = clockTimeVoListUnique.get(asa); // System.out.println(clockTimeVo1.getClockTimeStart()+" ----clockTimeVo1-----------"+clockTimeVO2.getClockTimeStart()); if (clockTimeVO2.getClockTimeStart().equals(clockTimeVo1.getClockTimeStart())) { // clockTimeVO2ListUnique.remove(as); clockTimeVoListNew.add(clockTimeVo1); }else { clockTimeVoListNew.add(clockTimeVO2); } } } // clockTimeVoListNew.forEach(ssss->{ // System.out.println(ssss + " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "); // }); List newList = clockTimeVoListNew.stream().sorted(Comparator.comparing(ClockTimeVo::getCount).reversed()) .collect(Collectors.toList()); List clockTimeVoListUniqueNew = newList.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(ClockTimeVo::getClockTimeStart))), ArrayList::new)); // // clockTimeVoListUniqueNew.forEach(d -> { // System.out.println(d + " dddddddddddd"); // }); String size = ""; for (int y = 0; y < campusTimeList.size(); y++) { CampusTime campusTime = campusTimeList.get(y); Integer countCA = campusTime.getCount(); for (int h = 0; h < clockTimeVoListUniqueNew.size(); h++) { ClockTimeVo clockTimeVo = clockTimeVoListUniqueNew.get(h); Integer countCL = clockTimeVo.getCount(); int count = countCA - countCL; if (campusTime.getStartTime().split(":")[0].equals(clockTimeVo.getStartTime())) { if (count > 0) { size += y + "、" + count + ";"; } } } } // System.out.println("*********************************************************************"); // return "true、"; // System.out.println(size + " clockTimeVo1clockTimeVo1clockTimeVo1clockTimeVo1 aaaaaaaaaaaaaaaaaaaaaa"); if (StringUtils.hasText(size)) { return size; } else { return "true、" + ";"; } // return clockTimeVO2ListUnique; } /** * 判断是否在该时间段内缺卡 * * @param clockTime 打卡时间 * @param campus 校区 * @param index 传递的第几次打卡 * @param size 数据集合的大小 * @return */ public String chackClock(String clockTime, String campus, Integer index, Integer size) { Boolean statu = Boolean.FALSE; try { String startTime = ""; String endTime = ""; Integer lateTimeNow = 0; Integer leaveTimeNow = 0; // String clockTimeH = clockTime.split(" ")[1]; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List campusTimeList = campusTimeService.queryCampusTime(campus); LateClock lateClock = lateClockService.queryCampusTime(campus); List timeList = new ArrayList<>(); for (int c = 1; c < campusTimeList.size(); c++) { CampusTime campusTimeB = campusTimeList.get(c - 1); CampusTime campusTime = campusTimeList.get(c); if (campusTime.getClockName().contains("、")) { timeList.add(campusTimeB.getStartTime() + "、" + campusTime.getEndTime()); timeList.add(campusTimeB.getStartTime() + "、" + campusTime.getEndTime()); } else { timeList.add(campusTimeB.getStartTime() + "、" + campusTime.getEndTime()); } } // System.out.println( // index + " indexindexindexindexindexindex" // ); String timeStr = timeList.get(index); String[] startAndEndTime = timeStr.split("、"); String yms = clockTime.split(" ")[0]; //上班规则 Calendar calendar = Calendar.getInstance(); String leaveTimeNowStr = ""; String lateTimeNowStr = ""; // if (index == 0 || index == size - 1) { // // String[] YMS = clockTime.split(" ")[0].split("-"); // String[] HMS = clockTime.split(" ")[1].split(":"); // calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]), Integer.parseInt(YMS[2]), Integer.parseInt(HMS[0]), Integer.parseInt(HMS[1]), 0); // lateTimeNowStr = format(calendar.getTime()); // // calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]), Integer.parseInt(YMS[2]), Integer.parseInt(HMS[0]), Integer.parseInt(HMS[1]) - 40, 0); // leaveTimeNowStr = format(calendar.getTime()); //下班规则 // } else if (index == size - 1) { String[] YMS = clockTime.split(" ")[0].split("-"); String[] HMS = startAndEndTime[0].split(":"); String[] HMS1 = startAndEndTime[1].split(":"); calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS[0]), Integer.parseInt(HMS[1]), 0); lateTimeNowStr = format(calendar.getTime()); calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS1[0]), Integer.parseInt(HMS1[1]) - 40, 0); leaveTimeNowStr = format(calendar.getTime()); // lateTimeNow = Integer.parseInt(startAndEndTime[0].split(":")[1]) - Integer.parseInt(lateClock.getLateOfWork()); // leaveTimeNow = Integer.parseInt(startAndEndTime[1].split(":")[1]) - 40; //中间卡规则 } else { String[] YMS = clockTime.split(" ")[0].split("-"); String[] HMS = startAndEndTime[0].split(":"); String[] HMS1 = startAndEndTime[1].split(":"); calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS[0]), Integer.parseInt(HMS[1]), 0); lateTimeNowStr = format(calendar.getTime()); calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS1[0]), Integer.parseInt(HMS1[1]) - 40, 0); leaveTimeNowStr = format(calendar.getTime()); } // String lateTimeNowStr = startAndEndTime[0].split(":")[0] + ":" + lateTimeNow; // String leaveTimeNowStr = startAndEndTime[1].split(":")[0] + ":" + leaveTimeNow; // startTime = clockTime.split(" ")[0] + " " + lateTimeNowStr + ":00"; // endTime = clockTime.split(" ")[0] + " " + leaveTimeNowStr + ":00"; //下班打卡截至时间 if (index == timeList.size() - 1) { leaveTimeNowStr = clockTime.split(" ")[0] + " " + "23:59:59"; } clockTime = clockTime + ":00"; String clockTimeNow = format(format.parse(clockTime)); // String checkStartTime = format(format.parse(startTime)); long clockTimeLong = format.parse(clockTime).getTime(); long startTimeLong = format.parse(lateTimeNowStr).getTime(); Integer compareTo = clockTimeNow.compareTo(lateTimeNowStr); if (compareTo > 0) { //当前时间已经计算了早退时间 // String checkEndTime = format(format.parse(endTime)); long endTimeLong = format.parse(leaveTimeNowStr).getTime(); //打卡时间 - 考勤时间 // checkEndTime 晚于 clockTimeNow compareTo>0 迟到 1 true compareTo = leaveTimeNowStr.compareTo(clockTimeNow); } statu = compareTo > 0 ? Boolean.TRUE : Boolean.FALSE; } catch ( Exception e) { e.printStackTrace(); } return statu + "、" + index; } /** * 校验打卡时间 * * @param campusTimeList 校区打卡规则集合 * @param clockTime 打卡时间 * @param lateTime 迟到早退时间 * @param type 须交验的时间段 start上班 end 下班 * @param camousType 校区 HJH MXH * @return false 早退,迟到 true 正常打卡 */ public String changeTime(List campusTimeList, String clockTime, String lateTime, String type, String camousType, Integer index) { int compareTo = 0; //打卡时间 - 考勤时间 long csTime = 0l; try { List timeList = new ArrayList<>(); for (CampusTime campusTime : campusTimeList) { if (campusTime.getClockName().contains("、")) { timeList.add(campusTime.getStartTime() + "、" + campusTime.getEndTime()); timeList.add(campusTime.getStartTime() + "、" + campusTime.getEndTime()); } else { timeList.add(campusTime.getStartTime() + "、" + campusTime.getEndTime()); } } //获取当前打卡时间段的打卡规则 String campusTimeStr = timeList.get(index); String startTime = ""; String endTime = ""; Integer lateTimeNow = 0; Integer leaveTimeNow = 0; String[] startAndEndTime = campusTimeStr.split("、"); Calendar calendar = Calendar.getInstance(); String leaveTimeNowStr = ""; String lateTimeNowStr = ""; //上班规则 if (index == 0) { String[] YMS = clockTime.split(" ")[0].split("-"); String[] HMS = startAndEndTime[0].split(":"); String[] HMS1 = startAndEndTime[1].split(":"); // System.out.println(clockTime); calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]) - 1, Integer.parseInt(HMS[0]), Integer.parseInt(HMS[1]), 0); lateTimeNowStr = format(calendar.getTime()); calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS1[0]), Integer.parseInt(HMS1[1]) + Integer.parseInt(lateTime), 0); leaveTimeNowStr = format(calendar.getTime()); // lateTimeNow = Integer.parseInt(startAndEndTime[0].split(":")[1]) + Integer.parseInt(lateTime); // leaveTimeNow = Integer.parseInt(startAndEndTime[1].split(":")[1]) + Integer.parseInt(lateTime); //下班规则 } else if (index == timeList.size() - 1) { String[] YMS = clockTime.split(" ")[0].split("-"); String[] HMS = startAndEndTime[0].split(":"); String[] HMS1 = startAndEndTime[1].split(":"); calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS[0]), Integer.parseInt(HMS[1]) - Integer.parseInt(lateTime), 0); lateTimeNowStr = format(calendar.getTime()); calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS1[0]), Integer.parseInt(HMS1[1]), 0); leaveTimeNowStr = format(calendar.getTime()); // lateTimeNow = Integer.parseInt(startAndEndTime[0].split(":")[1]) - Integer.parseInt(lateTime); // leaveTimeNow = Integer.parseInt(startAndEndTime[1].split(":")[1]); //中间卡规则 } else { String[] YMS = clockTime.split(" ")[0].split("-"); String[] HMS = startAndEndTime[0].split(":"); String[] HMS1 = startAndEndTime[1].split(":"); calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS[0]), Integer.parseInt(HMS[1]) - Integer.parseInt(lateTime), 0); lateTimeNowStr = format(calendar.getTime()); calendar.set(Integer.parseInt(YMS[0]), Integer.parseInt(YMS[1]) - 1, Integer.parseInt(YMS[2]), Integer.parseInt(HMS1[0]), Integer.parseInt(HMS1[1]) + Integer.parseInt(lateTime), 0); leaveTimeNowStr = format(calendar.getTime()); // lateTimeNow = Integer.parseInt(startAndEndTime[0].split(":")[1]) - Integer.parseInt(lateTime); // leaveTimeNow = Integer.parseInt(startAndEndTime[1].split(":")[1]) + Integer.parseInt(lateTime); } // String lateTimeNowStr = startAndEndTime[0].split(":")[0] + ":" + lateTimeNow; // String leaveTimeNowStr = startAndEndTime[1].split(":")[0] + ":" + leaveTimeNow; // startTime = clockTime.split(" ")[0] + " " + lateTimeNowStr + ":00"; // endTime = clockTime.split(" ")[0] + " " + leaveTimeNowStr + ":00"; //下班打卡截至时间 if (index == timeList.size() - 1) { leaveTimeNowStr = clockTime.split(" ")[0] + " " + "23:59:59"; } clockTime = clockTime + ":00"; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String clockTimeNow = format(format.parse(clockTime)); // String checkStartTime = format(format.parse(startTime)); long clockTimeLong = format.parse(clockTime).getTime(); long startTimeLong = format.parse(lateTimeNowStr).getTime(); //打卡时间 - 考勤时间 csTime = (clockTimeLong - startTimeLong) / 1000 / 60; // checkStartTime 早于 clockTimeNow compareTo>0 1 true compareTo = clockTimeNow.compareTo(lateTimeNowStr); if (compareTo > 0) { //当前时间已经计算了早退时间 // String checkEndTime = format(format.parse(endTime)); long endTimeLong = format.parse(leaveTimeNowStr).getTime(); //打卡时间 - 考勤时间 csTime = (clockTimeLong - endTimeLong) / 1000 / 60; // checkEndTime 晚于 clockTimeNow compareTo>0 迟到 1 true compareTo = leaveTimeNowStr.compareTo(clockTimeNow); } } catch (Exception e) { e.printStackTrace(); } Boolean statu = compareTo > 0 ? Boolean.TRUE : Boolean.FALSE; return statu + "、" + csTime; } // /** // * 校验打卡时间 // * // * @param campusTimeList 校区打卡规则集合 // * @param clockTime 打卡时间 // * @param lateTime 迟到早退时间 // * @param type 须交验的时间段 start上班 end 下班 // * @param camousType 校区 HJH MXH // * @return false 早退,迟到 true 正常打卡 // */ // public String changeTime(List campusTimeList, String clockTime, String lateTime, String type, String camousType) { // // int compareTo = 0; // //打卡时间 - 考勤时间 // long csTime = 0l; // try { // String[] clockTimeArr = clockTime.split(" ")[0].split("-"); // SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd"); // Calendar calendar = Calendar.getInstance(); // List timeList = new ArrayList<>(); // for (CampusTime campusTime : campusTimeList) { // if (campusTime.getClockName().contains("、")) { // timeList.add(campusTime.getStartTime() + "、" + campusTime.getEndTime()); // timeList.add(campusTime.getStartTime() + "、" + campusTime.getEndTime()); // } else { // timeList.add(campusTime.getStartTime() + "、" + campusTime.getEndTime()); // } // } //// //判断一个时间段之内打多次卡 //// for (int n = 0; n < campusTimeList.size(); n++) { //// CampusTime campusTime = campusTimeList.get(n); //// //判断当前时间的打卡次数 //// if (campusTime.getCount() > 1) { //// //// //// //// //// //// //// //// //// } //// } // for (int m = 0; m < timeList.size(); m++) { // String campusTimeStr = timeList.get(m); // String[] startAndEndTime = campusTimeStr.split("、"); // String startTime = startAndEndTime[0]; // String endTime = startAndEndTime[1]; // //start 判断为上班上班时间 //// if ("start".equals(type)) { // //当前时间已经计算了迟到时间 // calendar.set(Integer.parseInt(clockTimeArr[0]), Integer.parseInt(clockTimeArr[1]), Integer.parseInt(clockTimeArr[2]) + Integer.parseInt(lateTime), // Integer.parseInt(startTime.split(":")[0]), Integer.parseInt(startTime.split(":")[1])); // String checkStartTime = format(calendar.getTime()); // long clockTimeLong = format.parse(clockTime).getTime(); // long startTimeLong = format.parse(checkStartTime).getTime(); // //打卡时间 - 考勤时间 // csTime = clockTimeLong - startTimeLong / 1000 / 60; // String clockTimeNow = format(format.parse(clockTime)); // // checkStartTime 早于 clockTimeNow compareTo>0 1 true // compareTo = checkStartTime.compareTo(clockTimeNow); // //打卡时间大于起始时间则进行结束时间判断 大于其实时间 小于结束时间则为正常打卡 // if (compareTo > 0) { // //当前时间已经计算了早退时间 // calendar.set(Integer.parseInt(clockTimeArr[0]), Integer.parseInt(clockTimeArr[1]), Integer.parseInt(clockTimeArr[2]) - Integer.parseInt(lateTime), // Integer.parseInt(endTime.split(":")[0]), Integer.parseInt(endTime.split(":")[1])); // String checkEndTime = format(calendar.getTime()); // long endTimeLong = format.parse(checkEndTime).getTime(); // //打卡时间 - 考勤时间 // csTime = clockTimeLong - endTimeLong / 1000 / 60; // // checkEndTime 晚于 clockTimeNow compareTo>0 迟到 1 true // compareTo = checkEndTime.compareTo(clockTimeNow); // if (compareTo < 0) { // Boolean statu = compareTo > 0 ? Boolean.TRUE : Boolean.FALSE; // return statu + "早退、" + csTime; // } // } else { // Boolean statu = compareTo > 0 ? Boolean.TRUE : Boolean.FALSE; // return statu + "迟到、" + csTime; // } // //// } else { //// calendar.set(Integer.parseInt(clockTimeArr[0]), Integer.parseInt(clockTimeArr[1]), Integer.parseInt(clockTimeArr[2])-Integer.parseInt(lateTime), //// Integer.parseInt(endTime.split(":")[0]), Integer.parseInt(endTime.split(":")[1])); //// String checkEndTime = format(calendar.getTime()); //// String clockTimeNow = format(format.parse(clockTime)); //// long clockTimeLong = format.parse(clockTime).getTime(); //// long endTimeLong = format.parse(checkEndTime).getTime(); //// //打卡时间 - 考勤时间 //// csTime = clockTimeLong - endTimeLong/1000/60; //// // checkEndTime 晚于 clockTimeNow compareTo>0 迟到 1 //// compareTo = clockTimeNow.compareTo(checkEndTime); //// } // } // // } catch (Exception e) { // e.printStackTrace(); // } // // System.out.println(compareTo + " ------------timeStatutimeStatutimeStatutimeStatutimeStatu-----"); // Boolean statu = compareTo > 0 ? Boolean.TRUE : Boolean.FALSE; // return statu + "正常、" + csTime; // } /** * 获取缺卡总天数 * * @param shortageStr * @return */ public Integer getShortage(String shortageStr) { Integer shortageCount = 0; String[] split = shortageStr.split("\r\n"); for (int u = 0; u < split.length; u++) { if (split[u].contains("次") && split[u].contains("天")) { int indexT = split[u].indexOf("天"); int indexC = split[u].indexOf("次"); String count = split[u].substring(indexC + 1, indexT); shortageCount += Integer.parseInt(count); } } return shortageCount; } @Override public List queryByWorkName(String workName) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("work_name", workName); List list = this.list(); if (list.size() == 0) { throw new RRException(BizCodeEnume.DATA_IS_NOT_EXIST, workName + "不存在"); } return list; } /** * 删除导入的月度汇总数据 * * @return */ public Boolean removeMonthlySummary() { List idList = new ArrayList<>(); List list = this.list(); if (list.size() == 0) { return Boolean.TRUE; } list.forEach(monthlySummary -> { idList.add(monthlySummary.getId()); }); return this.removeByIds(idList); } }