/* * Aipo is a groupware program developed by TOWN, Inc. * Copyright (C) 2004-2015 TOWN, Inc. * http://www.aipo.com * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.aimluck.eip.exttimecard; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.aimluck.commons.field.ALDateField; import com.aimluck.commons.field.ALNumberField; import com.aimluck.eip.cayenne.om.portlet.EipTTimecardSettings; import com.aimluck.eip.common.ALBaseUser; import com.aimluck.eip.common.ALData; import com.aimluck.eip.exttimecard.util.ExtTimecardUtils; import com.aimluck.eip.orm.Database; import com.aimluck.eip.orm.query.SelectQuery; import com.aimluck.eip.util.ALCommonUtils; /** * 一日分のタイムカード(出勤・退勤の履歴)を保持する。<br> * 一日ごとの勤務時間・残業時間などを計算し、その結果を保持する。 * * */ public class ExtTimecardSummaryResultData implements ALData { private ALDateField date = null; private List<ExtTimecardResultData> list = null; /** オーナ ID */ private ALNumberField owner_id; /** 総労働日数 */ private ALNumberField total_work_day = null; /** 総労働時間 */ private ALNumberField total_work_hour = null; /** 就業日数 */ private ALNumberField work_day = null; /** 就業時間 */ private ALNumberField work_hour = null; /** 残業日数 */ private ALNumberField overtime_day = null; /** 残業時間 */ private ALNumberField overtime_hour = null; /** 休出日数 */ private ALNumberField off_day = null; /** 所定休日出勤日数 */ private ALNumberField official_off_day = null; /** 法定休日出勤日数 */ private ALNumberField statutory_off_day = null; /** 休出時間 */ private ALNumberField off_hour = null; /** 遅刻日数 */ private ALNumberField late_coming_day = null; /** 早退日数 */ private ALNumberField early_leaving_day = null; /** 欠勤日数 */ private ALNumberField absent_day = null; /** 有休日数 */ private ALNumberField paid_holiday = null; /** 代休日数 */ private ALNumberField compensatory_holiday = null; /** その他 */ private ALNumberField other_day = null; /** 未入力 */ private ALNumberField no_input = null; private String user_name = null; private String systemName = null; /** 対象ユーザー */ private ALBaseUser user = null; /** 遅刻時間 */ private ALNumberField late_coming_hour = null; /** 早退時間 */ private ALNumberField early_leaving_hour = null; /** 所定内深夜勤務時間 */ private ALNumberField midnight_work_hour = null; /** 法定内残業時間 */ private ALNumberField overtime_within_statutory_working_hour = null; /** 深夜残業時間 */ private ALNumberField midnight_overtime_hour = null; /** 深夜時間 */ private ALNumberField total_midnight_work_hour = null; /** 休憩時間 */ private ALNumberField rest_hour = null; /** 所定休日出勤時間 */ private ALNumberField total_official_off_hour = null; /** 所定休日所定内出勤時間 */ private ALNumberField off_day_regular_work_hour = null; /** 所定休日所定内深夜出勤時間 */ private ALNumberField off_day_regular_midnight_work_hour = null; /** 所定休日法定内残業時間 */ private ALNumberField off_day_within_statutory_working_hour = null; /** 所定休日残業時間 */ private ALNumberField off_day_overtime_hour = null; /** 所定休日深夜残業時間 */ private ALNumberField off_day_midnight_work_hour = null; /** 法定休日出勤時間 */ private ALNumberField total_statutory_off_hour = null; /** 法定休日所定内出勤時間 */ private ALNumberField statutory_off_day_regular_work_hour = null; /** 法定休日所定内深夜出勤時間 */ private ALNumberField statutory_off_day_regular_midnight_work_hour = null; /** 法定休日法定内残業時間 */ private ALNumberField statutory_off_day_within_statutory_working_hour = null; /** 法定休日残業時間 */ private ALNumberField statutory_off_day_overtime_hour = null; /** 法定休日深夜残業時間 */ private ALNumberField statutory_off_day_midnight_work_hour = null; /** * * */ @Override public void initField() { total_work_day = new ALNumberField(0); total_work_hour = new ALNumberField(0); work_day = new ALNumberField(0); work_hour = new ALNumberField(0); overtime_day = new ALNumberField(0); overtime_hour = new ALNumberField(0); off_day = new ALNumberField(0); off_hour = new ALNumberField(0); official_off_day = new ALNumberField(0); statutory_off_day = new ALNumberField(0); late_coming_day = new ALNumberField(0); early_leaving_day = new ALNumberField(0); absent_day = new ALNumberField(0); paid_holiday = new ALNumberField(0); compensatory_holiday = new ALNumberField(0); other_day = new ALNumberField(0); no_input = new ALNumberField(0); date = new ALDateField(); date.setValue(new Date()); list = new ArrayList<ExtTimecardResultData>(); owner_id = new ALNumberField(); late_coming_hour = new ALNumberField(0); early_leaving_hour = new ALNumberField(0); midnight_work_hour = new ALNumberField(0); overtime_within_statutory_working_hour = new ALNumberField(0); midnight_overtime_hour = new ALNumberField(0); rest_hour = new ALNumberField(0); total_official_off_hour = new ALNumberField(0); off_day_regular_work_hour = new ALNumberField(0); off_day_regular_midnight_work_hour = new ALNumberField(0); off_day_within_statutory_working_hour = new ALNumberField(0); off_day_overtime_hour = new ALNumberField(0); off_day_midnight_work_hour = new ALNumberField(0); total_statutory_off_hour = new ALNumberField(0); statutory_off_day_regular_work_hour = new ALNumberField(0); statutory_off_day_regular_midnight_work_hour = new ALNumberField(0); statutory_off_day_within_statutory_working_hour = new ALNumberField(0); statutory_off_day_overtime_hour = new ALNumberField(0); statutory_off_day_midnight_work_hour = new ALNumberField(0); statutory_off_day_midnight_work_hour = new ALNumberField(0); total_midnight_work_hour = new ALNumberField(0); } /** * 出勤日数、および時間を設定します。 * * @param days * @param hour */ public void setWorkDayHour(int days, float hour) { work_day.setValue(days); work_hour.setValue(String.valueOf(hour)); } /** * 残業日数、および時間を設定します。 * * @param days * @param hour */ public void setOvertimeDayHour(int days, float hour) { overtime_day.setValue(days); overtime_hour.setValue(String.valueOf(hour)); } /** * 休出日数、および時間を設定します。 * * @param days * @param hour */ public void setOffDayHour(int days, float hour) { off_day.setValue(days); off_hour.setValue(String.valueOf(hour)); } public void setOfficialOffDay(int days) { official_off_day.setValue(days); } public void setStatutoryOffDay(int days) { statutory_off_day.setValue(days); } /** * 遅刻日数を設定します。 * * @param days */ public void setLateComingDay(int days) { late_coming_day.setValue(days); } /** * 早退日数を設定します。 * * @param days */ public void setEarlyLeavingDay(int days) { early_leaving_day.setValue(days); } /** * 欠勤日数を設定します。 * * @param days */ public void setAbsentDay(int days) { absent_day.setValue(days); } /** * 有休日数を設定します。 * * @param days */ public void setPaidHoliday(int days) { paid_holiday.setValue(days); } /** * 代休日数を設定します。 * * @param days */ public void setCompensatoryHoliday(int days) { compensatory_holiday.setValue(days); } /** * その他日数を設定します。 * * @param days */ public void setOtherDay(int days) { other_day.setValue(days); } /** * 未入力日数を設定します。 * * @param days */ public void setNoInput(int days) { no_input.setValue(days); } /** * 就業日数を取得します。 * * @return */ public ALNumberField getWorkDay() { return work_day; } /** * 就業時間を取得します。 * * @return */ public ALNumberField getWorkHour() { return work_hour; } /** * 残業日数を取得します。 * * @return */ public ALNumberField getOvertimeDay() { return overtime_day; } /** * 残業時間を取得します。 * * @return */ public ALNumberField getOvertimeHour() { return overtime_hour; } /** * 休出日数を取得します。 * * @return */ public ALNumberField getOffDay() { return off_day; } /** * 休出時間を取得します。 * * @return */ public ALNumberField getOffHour() { return off_hour; } public ALNumberField getOfficialOffDay() { return official_off_day; } public ALNumberField getStatutoryOffDay() { return statutory_off_day; } /** * 遅刻日数を取得します。 * * @return */ public ALNumberField getLateComingDay() { return late_coming_day; } /** * 早退日数を取得します。 * * @return */ public ALNumberField getEarlyLeavingDay() { return early_leaving_day; } /** * 欠勤日数を取得します。 * * @return */ public ALNumberField getAbsentDay() { return absent_day; } /** * 有休日数を取得します。 * * @return */ public ALNumberField getPaidHoliday() { return paid_holiday; } /** * 代休日数を取得します。 * * @return */ public ALNumberField getCompensatoryHoliday() { return compensatory_holiday; } /** * その他日数を取得します。 * * @return */ public ALNumberField getOtherDay() { return other_day; } /** * 未入力数を取得します。 * * @return */ public ALNumberField getNoInput() { return no_input; } // -------------------------------------------------------------------------------------- /** * * @param date */ public void setDate(Date date) { this.date.setValue(date); } /** * @return date */ public ALDateField getDate() { return date; } /** * * @param minute * @return */ @SuppressWarnings("unused") private String minuteToHour(long minute) { BigDecimal decimal = new BigDecimal(minute / 60.0); DecimalFormat dformat = new DecimalFormat("##.#"); String str = dformat.format(decimal.setScale(1, BigDecimal.ROUND_FLOOR).doubleValue()); return str; } /** * * @return */ public String getDateStr() { try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日(EE)"); return sdf.format(date.getValue().getDate()); } catch (Exception e) { return ""; } } /** * * @return */ public List<ExtTimecardResultData> getList() { return list; } public void setUserName(String user_name) { this.user_name = user_name; } public String getUserName() { return user_name; } public String getUserNameHtml() { return ALCommonUtils.replaceToAutoCR(user_name); } public void setSystemName(String systemName) { this.systemName = systemName; } public String getSystemName() { return systemName; } public String getSystemNameHtml() { return ALCommonUtils.replaceToAutoCR(systemName); } /** * * @return */ public List<ExtTimecardResultData> getViewList() { ArrayList<ExtTimecardResultData> viewlist = new ArrayList<ExtTimecardResultData>(); ExtTimecardResultData rd = null; int size = list.size(); for (int i = 0; i < size; i++) { rd = list.get(i); if (!ExtTimecardUtils.WORK_FLG_DUMMY.equals(rd.getWorkFlag().getValue())) { viewlist.add(rd); } } return viewlist; } /** * * @param rd */ public void addExtTimecardResultData(ExtTimecardResultData rd) { list.add(rd); } /** * @param i */ public void setOwnerId(long i) { owner_id.setValue(i); } /** * @return */ public ALNumberField getOwnerId() { return owner_id; } /** * ExtTimecardResultDataオブジェクトのインスタンスを作る * * @param date * @param workflag * @return */ @SuppressWarnings("unused") private ExtTimecardResultData createExtTimecardResultData(Date date, String workflag) { ExtTimecardResultData rd = new ExtTimecardResultData(); rd.initField(); rd.setWorkDate(date); rd.setWorkFlag(workflag); return rd; } /** * 勤務時間設定をDBから取得する * * @return */ @SuppressWarnings("unused") private EipTTimecardSettings loadEipTTimecardSettings() { SelectQuery<EipTTimecardSettings> query = Database.query(EipTTimecardSettings.class); List<EipTTimecardSettings> aList = query.fetchList(); if (aList != null && aList.size() > 0) { EipTTimecardSettings record = aList.get(0); return record; } else { return null; } } /** * 遅刻日数、および時間を設定します。 * * @param days */ public void setLateComingDay(int days, float hour) { late_coming_hour.setValue(String.valueOf(hour)); setLateComingDay(days); } /** * 早退日数、および時間を設定します。 * * @param days */ public void setEarlyLeavingDay(int days, float hour) { early_leaving_hour.setValue(String.valueOf(hour)); setEarlyLeavingDay(days); } public void setUser(ALBaseUser user) { this.user = user; } /** * @return user */ public ALBaseUser getUser() { return user; } /** * @return late_coming_hour */ public ALNumberField getLateComingHour() { return late_coming_hour; } /** * @return early_leaving_hour */ public ALNumberField getEarlyLeavingHour() { return early_leaving_hour; } public void setRestHour(float hour) { this.rest_hour.setValue(String.valueOf(hour)); } /** * @return rest_hour */ public ALNumberField getRestHour() { return rest_hour; } public void setMidnightWorkHour(float hour) { this.midnight_work_hour.setValue(String.valueOf(hour)); } /** * @return midnight_work_hour */ public ALNumberField getMidnightWorkHour() { return midnight_work_hour; } public void setOvertimeWithinStatutoryWorkingHour(float hour) { this.overtime_within_statutory_working_hour.setValue(String.valueOf(hour)); } /** * @return overtime_within_statutory_working_hour */ public ALNumberField getOvertimeWithinStatutoryWorkingHour() { return overtime_within_statutory_working_hour; } /** * @return midnight_overtime_hour */ public ALNumberField getMidnightOvertimeHour() { return midnight_overtime_hour; } /** * @param midnight_overtime_hour * セットする midnight_overtime_hour */ public void setMidnightOvertimeHour(ALNumberField midnight_overtime_hour) { this.midnight_overtime_hour = midnight_overtime_hour; } /** * @param midnight_overtime_hour * セットする midnight_overtime_hour */ public void setMidnightOvertimeHour(float midnight_overtime_hour) { this.midnight_overtime_hour .setValue(String.valueOf(midnight_overtime_hour)); } /** * @return off_day_regular_work_hour */ public ALNumberField getOffDayRegularWorkHour() { return off_day_regular_work_hour; } public void setOffDayRegularWorkHour(float hour) { this.off_day_regular_work_hour.setValue(String.valueOf(hour)); } /** * @return off_day_regular_midnight_work_hour */ public ALNumberField getOffDayRegularMidnightWorkHour() { return off_day_regular_midnight_work_hour; } public void setOffDayRegularMidnightWorkHour(float hour) { this.off_day_regular_midnight_work_hour.setValue(String.valueOf(hour)); } /** * @return off_day_within_statutory_working_hour */ public ALNumberField getOffDayWithinStatutoryOvertimeWorkingHour() { return off_day_within_statutory_working_hour; } public void setOffDayWithinStatutoryOvertimeWorkingHour(float hour) { this.off_day_within_statutory_working_hour.setValue(String.valueOf(hour)); } /** * @return off_day_overtime_hour */ public ALNumberField getOffDayOvertimeHour() { return off_day_overtime_hour; } public void setOffDayOvertimeHour(float hour) { this.off_day_overtime_hour.setValue(String.valueOf(hour)); } /** * @return off_day_midnight_work_hour */ public ALNumberField getOffDayMidnightOvertimeWorkHour() { return off_day_midnight_work_hour; } public void setOffDayMidnightOvertimeWorkHour(float hour) { this.off_day_midnight_work_hour.setValue(String.valueOf(hour)); } /** * @return statutory_off_day_regular_work_hour */ public ALNumberField getStatutoryOffDayRegularWorkHour() { return statutory_off_day_regular_work_hour; } public void setStatutoryOffDayRegularWorkHour(float hour) { this.statutory_off_day_regular_work_hour.setValue(String.valueOf(hour)); } /** * @return statutory_off_day_regular_midnight_work_hour */ public ALNumberField getStatutoryOffDayRegularMidnightWorkHour() { return statutory_off_day_regular_midnight_work_hour; } public void setStatutoryOffDayRegularMidnightWorkHour(float hour) { this.statutory_off_day_regular_midnight_work_hour.setValue(String .valueOf(hour)); } /** * @return statutory_off_day_within_statutory_working_hour */ public ALNumberField getStatutoryOffDayWithinStatutoryOvertimeWorkingHour() { return statutory_off_day_within_statutory_working_hour; } public void setStatutoryOffDayWithinStatutoryOvertimeWorkingHour(float hour) { this.statutory_off_day_within_statutory_working_hour.setValue(String .valueOf(hour)); } /** * @return statutory_off_day_overtime_hour */ public ALNumberField getStatutoryOffDayOvertimeHour() { return statutory_off_day_overtime_hour; } public void setStatutoryOffDayOvertimeHour(float hour) { this.statutory_off_day_overtime_hour.setValue(String.valueOf(hour)); } /** * @return statutory_off_day_midnight_work_hour */ public ALNumberField getStatutoryOffDayMidnightOvertimeWorkHour() { return statutory_off_day_midnight_work_hour; } public void setStatutoryOffDayMidnightOvertimeWorkHour(float hour) { this.statutory_off_day_midnight_work_hour.setValue(String.valueOf(hour)); } /** * @return totalWorkDay */ public ALNumberField getTotalWorkDay() { return total_work_day; } /** * @param totalWorkDay * セットする totalWorkDay */ public void setTotalWorkDay(int totalWorkDay) { this.total_work_day.setValue(totalWorkDay); } /** * @return totalWorkHour */ public ALNumberField getTotalWorkHour() { return total_work_hour; } /** * @param totalWorkHour * セットする totalWorkHour */ public void setTotalWorkHour(float totalWorkHour) { this.total_work_hour.setValue(String.valueOf(totalWorkHour)); } /** * @return total_official_off_hour */ public ALNumberField getTotalOfficialOffHour() { return total_official_off_hour; } /** * @param total_official_off_hour * セットする total_official_off_hour */ public void setTotalOfficialOffHour(float total_official_off_hour) { this.total_official_off_hour.setValue(String .valueOf(total_official_off_hour)); } /** * @return total_statutory_off_hour */ public ALNumberField getTotalStatutoryOffHour() { return total_statutory_off_hour; } /** * @param total_statutory_off_hour * セットする total_statutory_off_hour */ public void setTotalStatutoryOffHour(float total_statutory_off_hour) { this.total_statutory_off_hour.setValue(String .valueOf(total_statutory_off_hour)); } /** * @return total_midnight_work_hour */ public ALNumberField getTotalMidnightWorkHour() { return total_midnight_work_hour; } /** * @param total_midnight_work_hour * セットする total_midnight_work_hour */ public void setTotalMidnightWorkHour(float total_midnight_work_hour) { this.total_midnight_work_hour.setValue(String .valueOf(total_midnight_work_hour)); } }