From e5538f6e324a51076d7d8c08061101fde679cf5d Mon Sep 17 00:00:00 2001 From: "MSI\\derek" Date: Tue, 24 Dec 2024 07:34:49 +0800 Subject: [PATCH] update email --- .../mail/service/MailReminderService.kt | 73 ++++--------------- 1 file changed, 16 insertions(+), 57 deletions(-) diff --git a/src/main/java/com/ffii/tsms/modules/common/mail/service/MailReminderService.kt b/src/main/java/com/ffii/tsms/modules/common/mail/service/MailReminderService.kt index 8e0de40..6370863 100644 --- a/src/main/java/com/ffii/tsms/modules/common/mail/service/MailReminderService.kt +++ b/src/main/java/com/ffii/tsms/modules/common/mail/service/MailReminderService.kt @@ -52,7 +52,6 @@ open class MailReminderService( val username = settingsService.findByName(SettingNames.MAIL_SMTP_USERNAME).orElseThrow().value val pw = settingsService.findByName(SettingNames.MAIL_SMTP_USERNAME).orElseThrow().value return !username.isNullOrEmpty() && !pw.isNullOrEmpty() - } catch (e: Error) { return false } @@ -106,13 +105,9 @@ open class MailReminderService( open fun sendTimesheetToTeamLead7TH() { if (!isSettingsConfigValid()) return val today = LocalDate.now() - val dayOfWeek = today.dayOfWeek - val holidayList = holidayService.commonHolidayList().map { it.date } val companyHolidayList = companyHolidayService.allCompanyHolidays().map { it.date } val allHolidaysList: List = (holidayList + companyHolidayList).toSet().toList() - //check if today is holiday - if (allHolidaysList.contains(today) || dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY) return // get working days from last month val lastMonth = today.minusMonths(1) val yearMonth = YearMonth.from(lastMonth) @@ -133,25 +128,17 @@ open class MailReminderService( hours = it["hours"].toString().toDouble() ) } -// val timesheet = timesheetRepository.findByDeletedFalseAndRecordDateBetweenOrderByRecordDate(filteredLastMonthDays.first(),filteredLastMonthDays.last()) val staffs = staffRepository.findAllByEmployTypeAndDeletedFalseAndDepartDateIsNull(FULLTIME) - val teams = teamRepository.findAll().filter { team -> team.deleted == false && ( team.code == "WY" || team.code == "TW" || team.code == "CH" || team.code == "MN" || team.code == "MC" ) } -// val teams = teamRepository.findAll().filter { team -> team.deleted == false } + val teams = teamRepository.findAll().filter { team -> team.deleted == false +// && ( team.code == "WY" || team.code == "TW" || team.code == "CH" || team.code == "MN" || team.code == "MC" ) + } for (team in teams) { -// if (team.id?.toInt() != 5) continue // remove this when finishes val teamLead = team.staff val teamMembers: List = staffs.filter { it.team != null && it.team.id == team.id } if (teamMembers.isEmpty()) continue - val teamMembersIds: List = teamMembers.map { it.id }.sorted() -// val filteredTimesheet = timesheet.filter { teamMembersIds.contains(it.staff?.id) } + val teamMembersIds: List = teamMembers.map { it.id!! }.sorted() val filteredTimesheet = timesheet.filter { teamMembersIds.contains(it.staffId) } -// val timesheetByIdAndRecord = filteredTimesheet.groupBy { it.staff?.id to it.recordDate } -// .map { (key, _) -> -// val (staffId, recordDate) = key -// recordDate to mutableListOf(staffId ?: 0) -// } - println(filteredTimesheet.filter { it.staffId == 4.toLong() }) val timesheetByIdAndRecord = filteredTimesheet.groupBy { it.staffId to it.recordDate } .mapNotNull { (key, records) -> Triple( @@ -160,12 +147,6 @@ open class MailReminderService( records.sumOf { it.hours } ) } -// val goodStaffsList = filteredLastMonthDays.map { day -> -// timesheetByIdAndRecord.find { -// it.first == day -// } ?: Pair(day, mutableListOf()) -// }.sortedBy { it.first } - val goodStaffsList = filteredLastMonthDays.map { date -> val matchedStaffIds = timesheetByIdAndRecord .filter { it.first == date && it.third >= 8 } @@ -203,13 +184,11 @@ open class MailReminderService( @Scheduled(cron = "0 0 6 15 * ?") // (SS/MM/HH/DD/MM/YY) open fun sendTimesheetToTeamLead15TH() { if (!isSettingsConfigValid()) return - val today = LocalDate.now() // should always be 15 val firstDay = today.withDayOfMonth(1) val holidayList = holidayService.commonHolidayList().map { it.date } val companyHolidayList = companyHolidayService.allCompanyHolidays().map { it.date } val allHolidaysList: List = (holidayList + companyHolidayList).toSet().toList() - //get data val args = mutableMapOf( "from" to firstDay, @@ -223,18 +202,16 @@ open class MailReminderService( hours = it["hours"].toString().toDouble() ) } -// val timesheet = timesheetRepository.findByDeletedFalseAndRecordDateBetweenOrderByRecordDate(firstDay, today) val staffs = staffRepository.findAllByEmployTypeAndDeletedFalseAndDepartDateIsNull(FULLTIME) - val teams = teamRepository.findAll().filter { team -> team.deleted == false && ( team.code == "WY" || team.code == "TW" || team.code == "CH" || team.code == "MN" || team.code == "MC" )} -// val teams = teamRepository.findAll().filter { team -> team.deleted == false } - + val teams = teamRepository.findAll().filter { team -> team.deleted == false +// && ( team.code == "WY" || team.code == "TW" || team.code == "CH" || team.code == "MN" || team.code == "MC" ) + } val dateList = generateSequence(firstDay) { it.plusDays(1) } .takeWhile { it <= today } .toList() val filteredDatesList = dateList.filter { it !in allHolidaysList && it.dayOfWeek != DayOfWeek.SATURDAY && it.dayOfWeek != DayOfWeek.SUNDAY } - //loop each team for (team in teams) { // if (team.id?.toInt() != 5) continue // just for testing with fewer records, remove this when finishes @@ -260,7 +237,6 @@ open class MailReminderService( // Returning a Pair of the date and the list of matched staff IDs Pair(date, matchedStaffIds) }.sortedBy { it.first } - // creating the email content val intro = StringBuilder("${teamLead.name}, Staffs Missing Timesheet in the Table Below: ($firstDay-$today) \n") val tableData = mutableListOf() @@ -288,10 +264,8 @@ open class MailReminderService( @Scheduled(cron = "0 0 6 * * ?") // (SS/MM/HH/DD/MM/YY) - Runs at 06:00 AM every day open fun sendTimesheetReminder() { if (!isSettingsConfigValid()) return - val today = LocalDate.now() val dayOfWeek = today.dayOfWeek - val holidayList = holidayService.commonHolidayList().map { it.date } val companyHolidayList = companyHolidayService.allCompanyHolidays().map { it.date } val allHolidaysList: List = (holidayList + companyHolidayList).toSet().toList() @@ -302,9 +276,7 @@ open class MailReminderService( var fourDaysBefore: LocalDate = today var sevenDaysBefore: LocalDate = today var daysBefore: LocalDate = today.minusDays(1) - val workingDaysList = mutableListOf() - while (true) { if (!allHolidaysList.contains(daysBefore) && daysBefore.dayOfWeek != DayOfWeek.SATURDAY && daysBefore.dayOfWeek != DayOfWeek.SUNDAY) { daysChecking++ @@ -335,22 +307,17 @@ open class MailReminderService( ) } // val timesheet = timesheetRepository.findByDeletedFalseAndRecordDateBetweenOrderByRecordDate(sevenDaysBefore, fourDaysBefore) - val staffs = staffRepository.findAllByEmployTypeAndDeletedFalseAndDepartDateIsNull(FULLTIME).filter { - staff: Staff? -> - staff?.team?.code == "WY" || - staff?.team?.code == "TW" || - staff?.team?.code == "MN" || - staff?.team?.code == "MC" || - staff?.team?.code == "CH" - } // FT? FT? etc + val staffs = staffRepository.findAllByEmployTypeAndDeletedFalseAndDepartDateIsNull(FULLTIME) +// .filter { +// staff: Staff? -> +// staff?.team?.code == "WY" || +// staff?.team?.code == "TW" || +// staff?.team?.code == "MN" || +// staff?.team?.code == "MC" || +// staff?.team?.code == "CH" +// } // FT? FT? etc // val staffs = staffRepository.findAllByEmployTypeAndDeletedFalseAndDepartDateIsNull(FULLTIME) val staffIds: List = staffs.map { it.id as Long } - -// val timesheetByIdAndRecord = timesheet.groupBy { it.staff?.id to it.recordDate } -// .map { (key, _) -> -// val (staffId, recordDate) = key -// "$recordDate" to mutableListOf(staffId ?: 0) -// } val timesheetByIdAndRecord = timesheet.groupBy { it.staffId to it.recordDate }.mapNotNull { (key, records) -> @@ -444,13 +411,6 @@ open class MailReminderService( staffIds.forEach { id -> var isNaughty: Boolean = false val message = StringBuilder("Enter timesheet for:") -// val tableHtml = StringBuilder( -// "" -// + "" -// + "" -// + "" -// + "" -// ) goodStaffsList.forEach { (key, value) -> if (!value.contains(id)) { isNaughty = true @@ -459,7 +419,6 @@ open class MailReminderService( } println(message) fullLog.append("\n $id, $message") - println("about to return") if (!isNaughty) return@forEach println("no return") val emailAddress = staffRepository.findById(id).get().email
Product Name Count