svnno****@sourc*****
svnno****@sourc*****
2008年 10月 21日 (火) 10:50:20 JST
Revision: 1226 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=pal&view=rev&rev=1226 Author: shinsuke Date: 2008-10-21 10:50:19 +0900 (Tue, 21 Oct 2008) Log Message: ----------- added workflow. Modified Paths: -------------- timecard/trunk/src/main/config/erd/timecard.erd timecard/trunk/src/main/config/sql/timecard.ddl timecard/trunk/src/main/java/jp/sf/pal/timecard/TimecardConstants.java timecard/trunk/src/main/java/jp/sf/pal/timecard/action/EmployeeAction.java timecard/trunk/src/main/java/jp/sf/pal/timecard/action/admin/EmployeeAction.java timecard/trunk/src/main/java/jp/sf/pal/timecard/action/admin/TimecardAction.java timecard/trunk/src/main/java/jp/sf/pal/timecard/action/manager/EmployeeAction.java timecard/trunk/src/main/java/jp/sf/pal/timecard/action/manager/TimecardAction.java timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsbhv/BsDailyReportBhv.java timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsdao/BsDailyReportDao.java timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/BsDailyReport.java timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/BsEmployee.java timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/BsMonthlyReport.java timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/dbmeta/DailyReportDbm.java timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/bs/BsDailyReportCB.java timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/AbstractBsDailyReportCQ.java timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/AbstractBsEmployeeCQ.java timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/AbstractBsMonthlyReportCQ.java timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/BsDailyReportCQ.java timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/ciq/DailyReportCIQ.java timecard/trunk/src/main/java/jp/sf/pal/timecard/dxo/DailyReportDxo.java timecard/trunk/src/main/java/jp/sf/pal/timecard/form/employee/EmployeeForm.java timecard/trunk/src/main/java/jp/sf/pal/timecard/service/ReportService.java timecard/trunk/src/main/java/jp/sf/pal/timecard/util/TimecardUtil.java timecard/trunk/src/main/webapp/WEB-INF/db/timecard.1.log.db timecard/trunk/src/main/webapp/WEB-INF/db/timecard.data.db timecard/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/confirm.jsp timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/edit.jsp timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/index.jsp timecard/trunk/src/main/webapp/WEB-INF/view/employee/confirm.jsp timecard/trunk/src/main/webapp/WEB-INF/view/employee/edit.jsp timecard/trunk/src/main/webapp/WEB-INF/view/employee/index.jsp timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/confirm.jsp timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/edit.jsp timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/index.jsp Removed Paths: ------------- timecard/trunk/src/main/webapp/WEB-INF/db/timecard.trace.db -------------- next part -------------- Modified: timecard/trunk/src/main/config/erd/timecard.erd =================================================================== --- timecard/trunk/src/main/config/erd/timecard.erd 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/config/erd/timecard.erd 2008-10-21 01:50:19 UTC (rev 1226) @@ -570,6 +570,22 @@ <defaultValue>1</defaultValue> </net.java.amateras.db.visual.model.ColumnModel> <net.java.amateras.db.visual.model.ColumnModel> + <columnName>status</columnName> + <logicalName>Status</logicalName> + <columnType class="net.java.amateras.db.dialect.ColumnType"> + <name>INTEGER</name> + <logicalName>Integer</logicalName> + <supportSize>false</supportSize> + <type>4</type> + </columnType> + <size>10</size> + <notNull>true</notNull> + <primaryKey>false</primaryKey> + <description></description> + <autoIncrement>false</autoIncrement> + <defaultValue>1</defaultValue> + </net.java.amateras.db.visual.model.ColumnModel> + <net.java.amateras.db.visual.model.ColumnModel> <columnName>start_time</columnName> <logicalName>Start Time</logicalName> <columnType class="net.java.amateras.db.dialect.ColumnType"> @@ -588,7 +604,7 @@ <net.java.amateras.db.visual.model.ColumnModel> <columnName>end_time</columnName> <logicalName>End Time</logicalName> - <columnType class="net.java.amateras.db.dialect.ColumnType" reference="../../net.java.amateras.db.visual.model.ColumnModel[6]/columnType"/> + <columnType class="net.java.amateras.db.dialect.ColumnType" reference="../../net.java.amateras.db.visual.model.ColumnModel[7]/columnType"/> <size>10</size> <notNull>false</notNull> <primaryKey>false</primaryKey> @@ -599,7 +615,7 @@ <net.java.amateras.db.visual.model.ColumnModel> <columnName>break_time</columnName> <logicalName>Break Time</logicalName> - <columnType class="net.java.amateras.db.dialect.ColumnType" reference="../../net.java.amateras.db.visual.model.ColumnModel[6]/columnType"/> + <columnType class="net.java.amateras.db.dialect.ColumnType" reference="../../net.java.amateras.db.visual.model.ColumnModel[7]/columnType"/> <size>10</size> <notNull>false</notNull> <primaryKey>false</primaryKey> @@ -610,7 +626,7 @@ <net.java.amateras.db.visual.model.ColumnModel> <columnName>otj_time</columnName> <logicalName>Off-the-job Time</logicalName> - <columnType class="net.java.amateras.db.dialect.ColumnType" reference="../../net.java.amateras.db.visual.model.ColumnModel[6]/columnType"/> + <columnType class="net.java.amateras.db.dialect.ColumnType" reference="../../net.java.amateras.db.visual.model.ColumnModel[7]/columnType"/> <size>10</size> <notNull>false</notNull> <primaryKey>false</primaryKey> Modified: timecard/trunk/src/main/config/sql/timecard.ddl =================================================================== --- timecard/trunk/src/main/config/sql/timecard.ddl 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/config/sql/timecard.ddl 2008-10-21 01:50:19 UTC (rev 1226) @@ -56,6 +56,7 @@ day_of_week INTEGER NOT NULL, date_type INTEGER NOT NULL, working_type INTEGER DEFAULT 1 NOT NULL, + status INTEGER DEFAULT 1 NOT NULL, start_time TIME, end_time TIME, break_time TIME, Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/TimecardConstants.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/TimecardConstants.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/TimecardConstants.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -20,6 +20,8 @@ public static final int REPORT_STATUS_EDITING = 1; + public static final int REPORT_STATUS_REQUEST = 2; + public static final int REPORT_STATUS_APPROVED = 10; public static final int DATE_TYPE_WORKING = 1; Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/action/EmployeeAction.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/action/EmployeeAction.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/action/EmployeeAction.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -10,12 +10,12 @@ import jp.sf.pal.timecard.TimecardConstants; import jp.sf.pal.timecard.common.util.DateUtil; +import jp.sf.pal.timecard.common.util.SAStrutsUtil; import jp.sf.pal.timecard.db.exentity.DailyReport; import jp.sf.pal.timecard.db.exentity.MonthlyReport; import jp.sf.pal.timecard.dxo.DailyReportDxo; import jp.sf.pal.timecard.form.employee.EmployeeForm; import jp.sf.pal.timecard.service.ReportService; -import jp.sf.pal.timecard.util.TimecardUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -73,6 +73,7 @@ } monthlyReport = reportService.getMonthlyReport(username, year, month); + employeeForm.monthlyReportId = monthlyReport.getId().toString(); return "index.jsp"; } @@ -161,9 +162,18 @@ @Execute(validator = true, input = "edit.jsp") public String confirm() { + employeeForm.status = String + .valueOf(TimecardConstants.REPORT_STATUS_EDITING); return "confirm.jsp"; } + @Execute(validator = true, input = "edit.jsp") + public String sendrequest() { + employeeForm.status = String + .valueOf(TimecardConstants.REPORT_STATUS_REQUEST); + return "confirm.jsp"; + } + // @Execute(validator = false, input = "error.jsp") // public String deletepage() { // employeeForm.mode = TimecardConstants.DELETE_MODE; @@ -181,7 +191,7 @@ try { DailyReport dailyReport = createDailyReport(); reportService.store(dailyReport); - TimecardUtil.addMessage(request, "success.create_daily_report"); + SAStrutsUtil.addMessage(request, "success.create_daily_report"); // reset edit page loadListPageParameters(); @@ -199,7 +209,7 @@ try { DailyReport dailyReport = createDailyReport(); reportService.store(dailyReport); - TimecardUtil.addMessage(request, "success.update_daily_report"); + SAStrutsUtil.addMessage(request, "success.update_daily_report"); // reset edit page loadListPageParameters(); @@ -230,6 +240,27 @@ // } // } + @Execute(validator = true, input = "error.jsp") + public String fixmonthlyreport() { + try { + Long monthlyReportId = Long.parseLong(employeeForm.monthlyReportId); + MonthlyReport monthlyReport = reportService + .getMonthlyReport(monthlyReportId); + monthlyReport.setUpdatedBy(request.getRemoteUser()); + reportService.fix(monthlyReport); + SAStrutsUtil.addMessage(request, "success.update_daily_report"); + + // reset edit page + loadListPageParameters(); + + return displayList(); + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new ActionMessagesException( + "errors.failed_to_update_daily_report"); + } + } + private void loadDailyReport() { Long dailyReportId = Long.parseLong(employeeForm.id); Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/action/admin/EmployeeAction.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/action/admin/EmployeeAction.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/action/admin/EmployeeAction.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -6,13 +6,13 @@ import javax.servlet.http.HttpServletRequest; import jp.sf.pal.timecard.TimecardConstants; +import jp.sf.pal.timecard.common.util.SAStrutsUtil; import jp.sf.pal.timecard.db.exentity.Employee; import jp.sf.pal.timecard.dxo.EmployeeDxo; import jp.sf.pal.timecard.dxo.PagerDxo; import jp.sf.pal.timecard.form.admin.EmployeeForm; import jp.sf.pal.timecard.pager.EmployeePager; import jp.sf.pal.timecard.service.EmployeeService; -import jp.sf.pal.timecard.util.TimecardUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -163,7 +163,7 @@ try { Employee employee = createEmployee(); employeeService.store(employee); - TimecardUtil.addMessage(request, "success.create_employee"); + SAStrutsUtil.addMessage(request, "success.create_employee"); // reset edit page loadListPageParameters(); @@ -181,7 +181,7 @@ try { Employee employee = createEmployee(); employeeService.store(employee); - TimecardUtil.addMessage(request, "success.update_employee"); + SAStrutsUtil.addMessage(request, "success.update_employee"); // reset edit page loadListPageParameters(); @@ -199,7 +199,7 @@ try { employeeService.disable(Integer.parseInt(employeeForm.id), request .getRemoteUser()); - TimecardUtil.addMessage(request, "success.delete_employee"); + SAStrutsUtil.addMessage(request, "success.delete_employee"); // reset edit page loadListPageParameters(); Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/action/admin/TimecardAction.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/action/admin/TimecardAction.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/action/admin/TimecardAction.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -10,12 +10,12 @@ import jp.sf.pal.timecard.TimecardConstants; import jp.sf.pal.timecard.common.util.DateUtil; +import jp.sf.pal.timecard.common.util.SAStrutsUtil; import jp.sf.pal.timecard.db.exentity.DailyReport; import jp.sf.pal.timecard.db.exentity.MonthlyReport; import jp.sf.pal.timecard.dxo.DailyReportDxo; import jp.sf.pal.timecard.form.admin.TimecardForm; import jp.sf.pal.timecard.service.ReportService; -import jp.sf.pal.timecard.util.TimecardUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -187,7 +187,7 @@ try { DailyReport dailyReport = createDailyReport(); reportService.store(dailyReport); - TimecardUtil.addMessage(request, "success.create_daily_report"); + SAStrutsUtil.addMessage(request, "success.create_daily_report"); // reset edit page loadListPageParameters(); @@ -205,7 +205,7 @@ try { DailyReport dailyReport = createDailyReport(); reportService.store(dailyReport); - TimecardUtil.addMessage(request, "success.update_daily_report"); + SAStrutsUtil.addMessage(request, "success.update_daily_report"); // reset edit page loadListPageParameters(); @@ -243,8 +243,8 @@ .parseLong(timecardForm.monthlyReportId)); monthlyReport.setStatus(Integer.parseInt(timecardForm.status)); monthlyReport.setUpdatedBy(request.getRemoteUser()); - reportService.store(monthlyReport); - TimecardUtil.addMessage(request, "success.update_monthly_report"); + reportService.approve(monthlyReport); + SAStrutsUtil.addMessage(request, "success.update_monthly_report"); return displayList(); } catch (Exception e) { Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/action/manager/EmployeeAction.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/action/manager/EmployeeAction.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/action/manager/EmployeeAction.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -6,13 +6,13 @@ import javax.servlet.http.HttpServletRequest; import jp.sf.pal.timecard.TimecardConstants; +import jp.sf.pal.timecard.common.util.SAStrutsUtil; import jp.sf.pal.timecard.db.exentity.Employee; import jp.sf.pal.timecard.dxo.EmployeeDxo; import jp.sf.pal.timecard.dxo.PagerDxo; import jp.sf.pal.timecard.form.manager.EmployeeForm; import jp.sf.pal.timecard.pager.EmployeePager; import jp.sf.pal.timecard.service.EmployeeService; -import jp.sf.pal.timecard.util.TimecardUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -166,7 +166,7 @@ try { Employee employee = createEmployee(); employeeService.store(employee); - TimecardUtil.addMessage(request, "success.create_employee"); + SAStrutsUtil.addMessage(request, "success.create_employee"); // reset edit page loadListPageParameters(); @@ -184,7 +184,7 @@ try { Employee employee = createEmployee(); employeeService.store(employee); - TimecardUtil.addMessage(request, "success.update_employee"); + SAStrutsUtil.addMessage(request, "success.update_employee"); // reset edit page loadListPageParameters(); @@ -202,7 +202,7 @@ try { employeeService.disable(Integer.parseInt(employeeForm.id), request .getRemoteUser()); - TimecardUtil.addMessage(request, "success.delete_employee"); + SAStrutsUtil.addMessage(request, "success.delete_employee"); // reset edit page loadListPageParameters(); Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/action/manager/TimecardAction.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/action/manager/TimecardAction.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/action/manager/TimecardAction.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -10,12 +10,12 @@ import jp.sf.pal.timecard.TimecardConstants; import jp.sf.pal.timecard.common.util.DateUtil; +import jp.sf.pal.timecard.common.util.SAStrutsUtil; import jp.sf.pal.timecard.db.exentity.DailyReport; import jp.sf.pal.timecard.db.exentity.MonthlyReport; import jp.sf.pal.timecard.dxo.DailyReportDxo; import jp.sf.pal.timecard.form.manager.TimecardForm; import jp.sf.pal.timecard.service.ReportService; -import jp.sf.pal.timecard.util.TimecardUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -187,7 +187,7 @@ try { DailyReport dailyReport = createDailyReport(); reportService.store(dailyReport); - TimecardUtil.addMessage(request, "success.create_daily_report"); + SAStrutsUtil.addMessage(request, "success.create_daily_report"); // reset edit page loadListPageParameters(); @@ -205,7 +205,7 @@ try { DailyReport dailyReport = createDailyReport(); reportService.store(dailyReport); - TimecardUtil.addMessage(request, "success.update_daily_report"); + SAStrutsUtil.addMessage(request, "success.update_daily_report"); // reset edit page loadListPageParameters(); @@ -243,8 +243,8 @@ .parseLong(timecardForm.monthlyReportId)); monthlyReport.setStatus(Integer.parseInt(timecardForm.status)); monthlyReport.setUpdatedBy(request.getRemoteUser()); - reportService.store(monthlyReport); - TimecardUtil.addMessage(request, "success.update_monthly_report"); + reportService.approve(monthlyReport); + SAStrutsUtil.addMessage(request, "success.update_monthly_report"); return displayList(); } catch (Exception e) { @@ -254,6 +254,28 @@ } } + @Execute(validator = true, input = "error.jsp", urlPattern = "approvedailyreport/{id}/{year}/{month}/{username}") + public String approvedailyreport() { + try { + Long dailyReportId = Long.parseLong(timecardForm.id); + DailyReport dailyReport = reportService + .getDailyReport(dailyReportId); + dailyReport.setUpdatedBy(request.getRemoteUser()); + dailyReport.setStatus(TimecardConstants.REPORT_STATUS_APPROVED); + reportService.store(dailyReport); + SAStrutsUtil.addMessage(request, "success.update_daily_report"); + + // reset edit page + loadListPageParameters(); + + return displayList(); + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new ActionMessagesException( + "errors.failed_to_update_daily_report"); + } + } + private void loadDailyReport() { Long dailyReportId = Long.parseLong(timecardForm.id); Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsbhv/BsDailyReportBhv.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsbhv/BsDailyReportBhv.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsbhv/BsDailyReportBhv.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -27,7 +27,7 @@ * ID * * [column] - * ID, DATE, DAY_OF_WEEK, DATE_TYPE, WORKING_TYPE, START_TIME, END_TIME, BREAK_TIME, OTJ_TIME, WORKING_TIME, MEMO, MONTHLY_REPORT_ID, CREATED_TIME, CREATED_BY, UPDATED_TIME, UPDATED_BY, VERSIONNO + * ID, DATE, DAY_OF_WEEK, DATE_TYPE, WORKING_TYPE, STATUS, START_TIME, END_TIME, BREAK_TIME, OTJ_TIME, WORKING_TIME, MEMO, MONTHLY_REPORT_ID, CREATED_TIME, CREATED_BY, UPDATED_TIME, UPDATED_BY, VERSIONNO * * [sequence] * Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsdao/BsDailyReportDao.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsdao/BsDailyReportDao.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsdao/BsDailyReportDao.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -20,11 +20,11 @@ public int getCountAll(); - public static final String getListAll_SQL = "select ID, DATE, DAY_OF_WEEK, DATE_TYPE, WORKING_TYPE, START_TIME, END_TIME, BREAK_TIME, OTJ_TIME, WORKING_TIME, MEMO, MONTHLY_REPORT_ID, CREATED_TIME, CREATED_BY, UPDATED_TIME, UPDATED_BY, VERSIONNO from DAILY_REPORT"; + public static final String getListAll_SQL = "select ID, DATE, DAY_OF_WEEK, DATE_TYPE, WORKING_TYPE, STATUS, START_TIME, END_TIME, BREAK_TIME, OTJ_TIME, WORKING_TIME, MEMO, MONTHLY_REPORT_ID, CREATED_TIME, CREATED_BY, UPDATED_TIME, UPDATED_BY, VERSIONNO from DAILY_REPORT"; public java.util.List<DailyReport> getListAll(); - public static final String getEntity_SQL = "select ID, DATE, DAY_OF_WEEK, DATE_TYPE, WORKING_TYPE, START_TIME, END_TIME, BREAK_TIME, OTJ_TIME, WORKING_TIME, MEMO, MONTHLY_REPORT_ID, CREATED_TIME, CREATED_BY, UPDATED_TIME, UPDATED_BY, VERSIONNO from DAILY_REPORT where DAILY_REPORT.ID = /*id*/null"; + public static final String getEntity_SQL = "select ID, DATE, DAY_OF_WEEK, DATE_TYPE, WORKING_TYPE, STATUS, START_TIME, END_TIME, BREAK_TIME, OTJ_TIME, WORKING_TIME, MEMO, MONTHLY_REPORT_ID, CREATED_TIME, CREATED_BY, UPDATED_TIME, UPDATED_BY, VERSIONNO from DAILY_REPORT where DAILY_REPORT.ID = /*id*/null"; public static final String getEntity_ARGS = "id"; Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/BsDailyReport.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/BsDailyReport.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/BsDailyReport.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -15,7 +15,7 @@ * ID * * [column] - * ID, DATE, DAY_OF_WEEK, DATE_TYPE, WORKING_TYPE, START_TIME, END_TIME, BREAK_TIME, OTJ_TIME, WORKING_TIME, MEMO, MONTHLY_REPORT_ID, CREATED_TIME, CREATED_BY, UPDATED_TIME, UPDATED_BY, VERSIONNO + * ID, DATE, DAY_OF_WEEK, DATE_TYPE, WORKING_TYPE, STATUS, START_TIME, END_TIME, BREAK_TIME, OTJ_TIME, WORKING_TIME, MEMO, MONTHLY_REPORT_ID, CREATED_TIME, CREATED_BY, UPDATED_TIME, UPDATED_BY, VERSIONNO * * [sequence] * @@ -70,7 +70,7 @@ /** * The attribute of the column 'ID'. {PK : INC : BIGINT : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_65624B57_D1A2_4E5B_9B33_C068AEB94D0F]} + * PUBLIC.SYSTEM_SEQUENCE_F95B09D3_3E35_4F4E_81F4_295D5B036C69]} */ protected Long _id; @@ -89,6 +89,9 @@ */ protected Integer _workingType; + /** The attribute of the column 'STATUS'. {INTEGER : NotNull : Default=[1]} */ + protected Integer _status; + /** The attribute of the column 'START_TIME'. {TIME} */ protected java.sql.Time _startTime; @@ -299,6 +302,7 @@ sb.append(delimiter).append(getDayOfWeek()); sb.append(delimiter).append(getDateType()); sb.append(delimiter).append(getWorkingType()); + sb.append(delimiter).append(getStatus()); sb.append(delimiter).append(getStartTime()); sb.append(delimiter).append(getEndTime()); sb.append(delimiter).append(getBreakTime()); @@ -326,14 +330,14 @@ /** * The column annotation for S2Dao. {PK : INC : BIGINT : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_65624B57_D1A2_4E5B_9B33_C068AEB94D0F]} + * PUBLIC.SYSTEM_SEQUENCE_F95B09D3_3E35_4F4E_81F4_295D5B036C69]} */ public static final String id_COLUMN = "ID"; /** * Get the value of the column 'ID'. <br /> {PK : INC : BIGINT : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_65624B57_D1A2_4E5B_9B33_C068AEB94D0F]} + * PUBLIC.SYSTEM_SEQUENCE_F95B09D3_3E35_4F4E_81F4_295D5B036C69]} * * @return The value of the column 'ID'. (Nullable) */ @@ -344,7 +348,7 @@ /** * Set the value of the column 'ID'. <br /> {PK : INC : BIGINT : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_65624B57_D1A2_4E5B_9B33_C068AEB94D0F]} + * PUBLIC.SYSTEM_SEQUENCE_F95B09D3_3E35_4F4E_81F4_295D5B036C69]} * * @param id The value of the column 'ID'. (Nullable) */ @@ -443,6 +447,30 @@ this._workingType = workingType; } + /** The column annotation for S2Dao. {INTEGER : NotNull : Default=[1]} */ + public static final String status_COLUMN = "STATUS"; + + /** + * Get the value of the column 'STATUS'. <br /> {INTEGER : NotNull : + * Default=[1]} + * + * @return The value of the column 'STATUS'. (Nullable) + */ + public Integer getStatus() { + return _status; + } + + /** + * Set the value of the column 'STATUS'. <br /> {INTEGER : NotNull : + * Default=[1]} + * + * @param status The value of the column 'STATUS'. (Nullable) + */ + public void setStatus(Integer status) { + _modifiedProperties.addPropertyName("status"); + this._status = status; + } + /** The column annotation for S2Dao. {TIME} */ public static final String startTime_COLUMN = "START_TIME"; Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/BsEmployee.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/BsEmployee.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/BsEmployee.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -72,7 +72,7 @@ /** * The attribute of the column 'ID'. {PK : INC : INTEGER : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_3B109D89_940E_4DA9_9AF7_BAB09F1AC3F2]} + * PUBLIC.SYSTEM_SEQUENCE_DECF6155_521A_4FFA_8951_09452601F6FA]} */ protected Integer _id; @@ -308,14 +308,14 @@ /** * The column annotation for S2Dao. {PK : INC : INTEGER : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_3B109D89_940E_4DA9_9AF7_BAB09F1AC3F2]} + * PUBLIC.SYSTEM_SEQUENCE_DECF6155_521A_4FFA_8951_09452601F6FA]} */ public static final String id_COLUMN = "ID"; /** * Get the value of the column 'ID'. <br /> {PK : INC : INTEGER : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_3B109D89_940E_4DA9_9AF7_BAB09F1AC3F2]} + * PUBLIC.SYSTEM_SEQUENCE_DECF6155_521A_4FFA_8951_09452601F6FA]} * * @return The value of the column 'ID'. (Nullable) */ @@ -326,7 +326,7 @@ /** * Set the value of the column 'ID'. <br /> {PK : INC : INTEGER : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_3B109D89_940E_4DA9_9AF7_BAB09F1AC3F2]} + * PUBLIC.SYSTEM_SEQUENCE_DECF6155_521A_4FFA_8951_09452601F6FA]} * * @param id The value of the column 'ID'. (Nullable) */ Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/BsMonthlyReport.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/BsMonthlyReport.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/BsMonthlyReport.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -73,7 +73,7 @@ /** * The attribute of the column 'ID'. {PK : INC : BIGINT : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_9E332EC0_C8AC_4F37_A016_B295403B3663]} + * PUBLIC.SYSTEM_SEQUENCE_940A2BD3_BBE2_4599_9FBC_C0BA4C739586]} */ protected Long _id; @@ -388,14 +388,14 @@ /** * The column annotation for S2Dao. {PK : INC : BIGINT : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_9E332EC0_C8AC_4F37_A016_B295403B3663]} + * PUBLIC.SYSTEM_SEQUENCE_940A2BD3_BBE2_4599_9FBC_C0BA4C739586]} */ public static final String id_COLUMN = "ID"; /** * Get the value of the column 'ID'. <br /> {PK : INC : BIGINT : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_9E332EC0_C8AC_4F37_A016_B295403B3663]} + * PUBLIC.SYSTEM_SEQUENCE_940A2BD3_BBE2_4599_9FBC_C0BA4C739586]} * * @return The value of the column 'ID'. (Nullable) */ @@ -406,7 +406,7 @@ /** * Set the value of the column 'ID'. <br /> {PK : INC : BIGINT : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_9E332EC0_C8AC_4F37_A016_B295403B3663]} + * PUBLIC.SYSTEM_SEQUENCE_940A2BD3_BBE2_4599_9FBC_C0BA4C739586]} * * @param id The value of the column 'ID'. (Nullable) */ Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/dbmeta/DailyReportDbm.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/dbmeta/DailyReportDbm.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/db/bsentity/dbmeta/DailyReportDbm.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -58,6 +58,9 @@ protected ColumnInfo _columnWorkingType = cci("WORKING_TYPE", "workingType", Integer.class, false, null, null); + protected ColumnInfo _columnStatus = cci("STATUS", "status", Integer.class, + false, null, null); + protected ColumnInfo _columnStartTime = cci("START_TIME", "startTime", java.sql.Time.class, false, null, null); @@ -114,6 +117,10 @@ return _columnWorkingType; } + public ColumnInfo columnStatus() { + return _columnStatus; + } + public ColumnInfo columnStartTime() { return _columnStartTime; } @@ -367,6 +374,7 @@ setupEps(_epsMap, new EpsDayOfWeek(), columnDayOfWeek()); setupEps(_epsMap, new EpsDateType(), columnDateType()); setupEps(_epsMap, new EpsWorkingType(), columnWorkingType()); + setupEps(_epsMap, new EpsStatus(), columnStatus()); setupEps(_epsMap, new EpsStartTime(), columnStartTime()); setupEps(_epsMap, new EpsEndTime(), columnEndTime()); setupEps(_epsMap, new EpsBreakTime(), columnBreakTime()); @@ -420,6 +428,12 @@ } } + public static class EpsStatus implements Eps<DailyReport> { + public void setup(DailyReport e, Object v) { + e.setStatus((Integer) v); + } + } + public static class EpsStartTime implements Eps<DailyReport> { public void setup(DailyReport e, Object v) { e.setStartTime((java.sql.Time) v); Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/bs/BsDailyReportCB.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/bs/BsDailyReportCB.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/bs/BsDailyReportCB.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -240,6 +240,10 @@ doColumn("WORKING_TYPE"); } + public void columnStatus() { + doColumn("STATUS"); + } + public void columnStartTime() { doColumn("START_TIME"); } Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/AbstractBsDailyReportCQ.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/AbstractBsDailyReportCQ.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/AbstractBsDailyReportCQ.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -50,7 +50,7 @@ /** * Equal(=). And NullIgnored, OnceRegistered. {PK : INC : BIGINT : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_65624B57_D1A2_4E5B_9B33_C068AEB94D0F]} + * PUBLIC.SYSTEM_SEQUENCE_F95B09D3_3E35_4F4E_81F4_295D5B036C69]} * * @param id The value of id as equal. */ @@ -491,6 +491,93 @@ abstract protected ConditionValue getCValueWorkingType(); /** + * Equal(=). And NullIgnored, OnceRegistered. {INTEGER : NotNull : + * Default=[1]} + * + * @param status The value of status as equal. + */ + public void setStatus_Equal(Integer status) { + regStatus(CK_EQ, status); + } + + /** + * NotEqual(!=). And NullIgnored, OnceRegistered. + * + * @param status The value of status as notEqual. + */ + public void setStatus_NotEqual(Integer status) { + regStatus(CK_NE, status); + } + + /** + * GreaterThan(>). And NullIgnored, OnceRegistered. + * + * @param status The value of status as greaterThan. + */ + public void setStatus_GreaterThan(Integer status) { + regStatus(CK_GT, status); + } + + /** + * LessThan(<). And NullIgnored, OnceRegistered. + * + * @param status The value of status as lessThan. + */ + public void setStatus_LessThan(Integer status) { + regStatus(CK_LT, status); + } + + /** + * GreaterEqual(>=). And NullIgnored, OnceRegistered. + * + * @param status The value of status as greaterEqual. + */ + public void setStatus_GreaterEqual(Integer status) { + regStatus(CK_GE, status); + } + + /** + * LessEqual(<=). And NullIgnored, OnceRegistered. + * + * @param status The value of status as lessEqual. + */ + public void setStatus_LessEqual(Integer status) { + regStatus(CK_LE, status); + } + + /** + * InScope(in (1, 2)). And NullIgnored, NullElementIgnored, + * SeveralRegistered. + * + * @param statusList The collection of status as inScope. + */ + public void setStatus_InScope(Collection<Integer> statusList) { + regStatus(CK_INS, cTL(statusList)); + } + + /** + * NotInScope(not in (1, 2)). And NullIgnored, NullElementIgnored, + * SeveralRegistered. + * + * @param statusList The collection of status as notInScope. + */ + public void setStatus_NotInScope(Collection<Integer> statusList) { + regStatus(CK_NINS, cTL(statusList)); + } + + protected void regStatus(ConditionKey key, Object value) { + registerQuery(key, value, getCValueStatus(), "STATUS", "Status", + "status"); + } + + protected void registerInlineStatus(ConditionKey key, Object value) { + registerInlineQuery(key, value, getCValueStatus(), "STATUS", "Status", + "status"); + } + + abstract protected ConditionValue getCValueStatus(); + + /** * Equal(=). And NullIgnored, OnceRegistered. {TIME} * * @param startTime The value of startTime as equal. Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/AbstractBsEmployeeCQ.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/AbstractBsEmployeeCQ.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/AbstractBsEmployeeCQ.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -50,7 +50,7 @@ /** * Equal(=). And NullIgnored, OnceRegistered. {PK : INC : INTEGER : NotNull * : Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_3B109D89_940E_4DA9_9AF7_BAB09F1AC3F2]} + * PUBLIC.SYSTEM_SEQUENCE_DECF6155_521A_4FFA_8951_09452601F6FA]} * * @param id The value of id as equal. */ Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/AbstractBsMonthlyReportCQ.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/AbstractBsMonthlyReportCQ.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/AbstractBsMonthlyReportCQ.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -52,7 +52,7 @@ /** * Equal(=). And NullIgnored, OnceRegistered. {PK : INC : BIGINT : NotNull : * Default=[NEXT VALUE FOR - * PUBLIC.SYSTEM_SEQUENCE_9E332EC0_C8AC_4F37_A016_B295403B3663]} + * PUBLIC.SYSTEM_SEQUENCE_940A2BD3_BBE2_4599_9FBC_C0BA4C739586]} * * @param id The value of id as equal. */ Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/BsDailyReportCQ.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/BsDailyReportCQ.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/bs/BsDailyReportCQ.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -187,6 +187,29 @@ return this; } + protected ConditionValue _status; + + public ConditionValue getStatus() { + if (_status == null) { + _status = new ConditionValue(); + } + return _status; + } + + protected ConditionValue getCValueStatus() { + return getStatus(); + } + + public BsDailyReportCQ addOrderBy_Status_Asc() { + regOBA("STATUS"); + return this; + } + + public BsDailyReportCQ addOrderBy_Status_Desc() { + regOBD("STATUS"); + return this; + } + protected ConditionValue _startTime; public ConditionValue getStartTime() { Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/ciq/DailyReportCIQ.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/ciq/DailyReportCIQ.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/db/cbean/cq/ciq/DailyReportCIQ.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -111,6 +111,10 @@ return _myCQ.getWorkingType(); } + protected ConditionValue getCValueStatus() { + return _myCQ.getStatus(); + } + protected ConditionValue getCValueStartTime() { return _myCQ.getStartTime(); } Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/dxo/DailyReportDxo.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/dxo/DailyReportDxo.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/dxo/DailyReportDxo.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -21,6 +21,7 @@ + ", dayOfWeek : dayOfWeek" // + ", dateType : dateType" // + ", workingType : workingType" // + + ", status : status" // // + ", startTime : startTime" // + ", startTimeHr : startTimeHr" // + ", startTimeMin : startTimeMin" // @@ -54,6 +55,7 @@ // + ", dayOfWeek : dayOfWeek" // // "dateType : dateType" // "workingType : workingType" // + + ", status : status" // // + ", startTime : startTime" // + ", startTimeHr : startTimeHr" // + ", startTimeMin : startTimeMin" // @@ -88,6 +90,7 @@ + ", dayOfWeek : dayOfWeek" // + ", dateType : dateType" // + ", workingType : workingType" // + + ", status : status" // // + ", startTime : startTime" // + ", startTimeHr : startTimeHr" // + ", startTimeMin : startTimeMin" // @@ -121,6 +124,7 @@ // + ", dayOfWeek : dayOfWeek" // // "dateType : dateType" // "workingType : workingType" // + + ", status : status" // // + ", startTime : startTime" // + ", startTimeHr : startTimeHr" // + ", startTimeMin : startTimeMin" // @@ -155,6 +159,7 @@ + ", dayOfWeek : dayOfWeek" // + ", dateType : dateType" // + ", workingType : workingType" // + + ", status : status" // // + ", startTime : startTime" // + ", startTimeHr : startTimeHr" // + ", startTimeMin : startTimeMin" // @@ -188,6 +193,7 @@ // + ", dayOfWeek : dayOfWeek" // // "dateType : dateType" // "workingType : workingType" // + + ", status : status" // // + ", startTime : startTime" // + ", startTimeHr : startTimeHr" // + ", startTimeMin : startTimeMin" // Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/form/employee/EmployeeForm.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/form/employee/EmployeeForm.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/form/employee/EmployeeForm.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -41,6 +41,9 @@ public String workingType; @IntegerType + public String status; + + @IntegerType public String startTimeHr; @IntegerType @@ -73,6 +76,7 @@ @Maxbytelength(maxbytelength = 200) public String memo; + @Required(target = "commit") @LongType public String monthlyReportId; @@ -95,6 +99,7 @@ dayOfWeek = null; dateType = null; workingType = null; + status = null; startTimeHr = null; startTimeMin = null; endTimeHr = null; Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/service/ReportService.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/service/ReportService.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/service/ReportService.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -203,8 +203,14 @@ long overTime = 0; long mntOverTime = 0; + boolean editing = false; + for (DailyReport dailyReport : dailyReportList) { + if (dailyReport.getStatus() == TimecardConstants.REPORT_STATUS_EDITING) { + editing = true; + } + // standard working days if (dailyReport.getDateType() == TimecardConstants.DATE_TYPE_WORKING) { stdWorkingDays = BigDecimal.valueOf(stdWorkingDays @@ -290,6 +296,10 @@ } } + if (editing) { + monthlyReport.setStatus(TimecardConstants.REPORT_STATUS_EDITING); + } + // TODO overTime = workingTime - stdWorkingTime; if (overTime < 0) { @@ -324,6 +334,89 @@ monthlyReportBhv.update(monthlyReport); } + public void approve(MonthlyReport monthlyReport) { + Timestamp now = new Timestamp(new Date().getTime()); + monthlyReport.setUpdatedTime(now); + monthlyReportBhv.update(monthlyReport); + DailyReportCB cb = new DailyReportCB(); + cb.query().setMonthlyReportId_Equal(monthlyReport.getId()); + cb.query().addOrderBy_Date_Asc(); + List<DailyReport> dailyReportList = dailyReportBhv.selectList(cb); + for (DailyReport dailyReport : dailyReportList) { + dailyReport.setStatus(TimecardConstants.REPORT_STATUS_APPROVED); + dailyReport.setUpdatedTime(now); + dailyReport.setUpdatedBy(monthlyReport.getUpdatedBy()); + dailyReportBhv.update(dailyReport); + } + } + + public void fix(MonthlyReport monthlyReport) { + Timestamp now = new Timestamp(new Date().getTime()); + monthlyReport.setUpdatedTime(now); + monthlyReport.setStatus(TimecardConstants.REPORT_STATUS_REQUEST); + monthlyReportBhv.update(monthlyReport); + + DailyReportCB cb = new DailyReportCB(); + cb.query().setMonthlyReportId_Equal(monthlyReport.getId()); + cb.query().addOrderBy_Date_Asc(); + List<DailyReport> dailyReportList = dailyReportBhv.selectList(cb); + for (DailyReport dailyReport : dailyReportList) { + dailyReport.setStatus(TimecardConstants.REPORT_STATUS_REQUEST); + dailyReport.setUpdatedTime(now); + dailyReport.setUpdatedBy(monthlyReport.getUpdatedBy()); + + int workingType = dailyReport.getWorkingType(); + + if (workingType == TimecardConstants.WORKING_TYPE_WORK) { + TimecardUtil.updateWorkingTime(dailyReport); + } + + if (workingType == TimecardConstants.WORKING_TYPE_WORK_ON_HOLIDAY) { + TimecardUtil.updateWorkingTime(dailyReport); + } + + if (workingType == TimecardConstants.WORKING_TYPE_AM_WORK_ON_HOLIDAY) { + TimecardUtil.updateAMWorkingTime(dailyReport); + } + + if (workingType == TimecardConstants.WORKING_TYPE_PM_WORK_ON_HOLIDAY) { + TimecardUtil.updatePMWorkingTime(dailyReport); + } + + // paid holiday + if (workingType >= 10 && workingType < 100) { + if (workingType % 10 == 0) { + TimecardUtil.updateWorkingTime(dailyReport); + } else if (workingType % 10 == 1) { + // am off + TimecardUtil.updatePMWorkingTime(dailyReport); + } else if (workingType % 10 == 2) { + // pm off + TimecardUtil.updateAMWorkingTime(dailyReport); + } + } + + // no paid holiday + if (workingType >= 100 && workingType < 200) { + if (workingType % 10 == 0) { + TimecardUtil.updateWorkingTime(dailyReport); + } else if (workingType % 10 == 1) { + // am off + TimecardUtil.updatePMWorkingTime(dailyReport); + } else if (workingType % 10 == 2) { + // pm off + TimecardUtil.updateAMWorkingTime(dailyReport); + } + } + + dailyReport.calculateWorkingTime(); + + dailyReportBhv.update(dailyReport); + } + + calculateMontlyReport(monthlyReport.getId()); + } + public EmployeeBhv getEmployeeBhv() { return employeeBhv; } Modified: timecard/trunk/src/main/java/jp/sf/pal/timecard/util/TimecardUtil.java =================================================================== --- timecard/trunk/src/main/java/jp/sf/pal/timecard/util/TimecardUtil.java 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/java/jp/sf/pal/timecard/util/TimecardUtil.java 2008-10-21 01:50:19 UTC (rev 1226) @@ -1,44 +1,14 @@ package jp.sf.pal.timecard.util; +import java.sql.Time; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; -import javax.portlet.PortletRequest; -import javax.portlet.PortletSession; -import javax.servlet.http.HttpServletRequest; +import jp.sf.pal.timecard.common.util.DateUtil; +import jp.sf.pal.timecard.db.exentity.DailyReport; -import org.apache.struts.action.ActionMessage; -import org.apache.struts.action.ActionMessages; -import org.seasar.struts.portlet.util.PortletUtil; -import org.seasar.struts.util.ActionMessagesUtil; - public class TimecardUtil { - public static void addMessage(HttpServletRequest request, String key) { - ActionMessages msgs = new ActionMessages(); - msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(key)); - ActionMessagesUtil.saveMessages(request, msgs); - } - - public static String getRequestParameter(HttpServletRequest request, - String key) { - PortletRequest portletRequest = (PortletRequest) request - .getAttribute(PortletUtil.PORTLET_REQUEST); - if (portletRequest != null) { - return portletRequest.getParameter(key); - } - return null; - } - - public static PortletSession getPortletSession(HttpServletRequest request) { - PortletRequest portletRequest = (PortletRequest) request - .getAttribute(PortletUtil.PORTLET_REQUEST); - if (portletRequest != null) { - return portletRequest.getPortletSession(); - } - return null; - } - public static String getHours(long time) { Date d = new Date(time); Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); @@ -66,18 +36,113 @@ return String.valueOf(min); } + public static Time getSqlTime(long t) { + return new Time(t + DateUtil.get(70, 0, 1, 0, 0).getTime()); + } + + public static void updateWorkingTime(DailyReport dailyReport) { + if (dailyReport.getStartTime() == null) { + dailyReport.setStartTime(TimecardUtil.getStdStartTime()); + } + if (dailyReport.getEndTime() == null) { + dailyReport.setEndTime(TimecardUtil.getStdEndTime()); + } + if (dailyReport.getBreakTime() == null) { + dailyReport + .setBreakTime(getSqlTime(TimecardUtil.getStdBreakTime())); + } + } + + public static void updateAMWorkingTime(DailyReport dailyReport) { + if (dailyReport.getStartTime() == null) { + dailyReport.setStartTime(TimecardUtil.getStdStartTime()); + } + if (dailyReport.getEndTime() == null) { + dailyReport.setEndTime(TimecardUtil.getStdAMEndTime()); + } + if (dailyReport.getBreakTime() == null) { + dailyReport.setBreakTime(getSqlTime(0)); + } + } + + public static void updatePMWorkingTime(DailyReport dailyReport) { + if (dailyReport.getStartTime() == null) { + dailyReport.setStartTime(TimecardUtil.getStdPMStartTime()); + } + if (dailyReport.getEndTime() == null) { + dailyReport.setEndTime(TimecardUtil.getStdEndTime()); + } + if (dailyReport.getBreakTime() == null) { + dailyReport.setBreakTime(getSqlTime(0)); + } + } + public static long getStdWorkingTimeByDay() { - // TODO - return 8L * 60L * 60L * 1000L; + return getStdEndTime().getTime() - getStdStartTime().getTime() + - getStdBreakTime(); } public static long getStdWorkingTimeByAM() { - // TODO - return 4L * 60L * 60L * 1000L; + return getStdAMEndTime().getTime() - getStdStartTime().getTime(); } public static long getStdWorkingTimeByPM() { + return getStdEndTime().getTime() - getStdPMStartTime().getTime(); + } + + public static long getStdBreakTime() { + return getStdPMStartTime().getTime() - getStdAMEndTime().getTime(); + } + + public static Time getStdStartTime() { // TODO - return 4L * 60L * 60L * 1000L; + String time = "9:00"; + int hr = 9; + int min = 0; + if (time != null && time.indexOf(":") == 1) { + String[] t = time.split(":"); + hr = Integer.parseInt(t[0]); + min = Integer.parseInt(t[1]); + } + return new Time(DateUtil.get(70, 0, 1, hr, min).getTime()); } + + public static Time getStdAMEndTime() { + // TODO + String time = "12:00"; + int hr = 12; + int min = 0; + if (time != null && time.indexOf(":") == 1) { + String[] t = time.split(":"); + hr = Integer.parseInt(t[0]); + min = Integer.parseInt(t[1]); + } + return new Time(DateUtil.get(70, 0, 1, hr, min).getTime()); + } + + public static Time getStdPMStartTime() { + // TODO + String time = "13:00"; + int hr = 13; + int min = 0; + if (time != null && time.indexOf(":") == 1) { + String[] t = time.split(":"); + hr = Integer.parseInt(t[0]); + min = Integer.parseInt(t[1]); + } + return new Time(DateUtil.get(70, 0, 1, hr, min).getTime()); + } + + public static Time getStdEndTime() { + // TODO + String time = "17:30"; + int hr = 17; + int min = 30; + if (time != null && time.indexOf(":") == 1) { + String[] t = time.split(":"); + hr = Integer.parseInt(t[0]); + min = Integer.parseInt(t[1]); + } + return new Time(DateUtil.get(70, 0, 1, hr, min).getTime()); + } } Modified: timecard/trunk/src/main/webapp/WEB-INF/db/timecard.1.log.db =================================================================== (Binary files differ) Modified: timecard/trunk/src/main/webapp/WEB-INF/db/timecard.data.db =================================================================== (Binary files differ) Deleted: timecard/trunk/src/main/webapp/WEB-INF/db/timecard.trace.db =================================================================== --- timecard/trunk/src/main/webapp/WEB-INF/db/timecard.trace.db 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/webapp/WEB-INF/db/timecard.trace.db 2008-10-21 01:50:19 UTC (rev 1226) @@ -1,51 +0,0 @@ -10-19 08:25:52 jdbc[2]: SQLException -org.h2.jdbc.JdbcSQLException: テーブル DAILY_REPORT が見つかりません -Table DAILY_REPORT not found [42102-79] - at org.h2.message.Message.getSQLException(Message.java:103) - at org.h2.message.Message.getSQLException(Message.java:114) - at org.h2.message.Message.getSQLException(Message.java:77) - at org.h2.command.ddl.DropTable.prepareDrop(DropTable.java:63) - at org.h2.command.ddl.DropTable.update(DropTable.java:93) - at org.h2.command.CommandContainer.update(CommandContainer.java:69) - at org.h2.command.Command.executeUpdate(Command.java:206) - at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:163) - at org.h2.server.web.WebThread.getResult(WebThread.java:1713) - at org.h2.server.web.WebThread.query(WebThread.java:1276) - at org.h2.server.web.WebThread.process(WebThread.java:443) - at org.h2.server.web.WebThread.processRequest(WebThread.java:185) - at org.h2.server.web.WebThread.process(WebThread.java:240) - at org.h2.server.web.WebThread.run(WebThread.java:195) -10-19 08:25:52 jdbc[2]: SQLException -org.h2.jdbc.JdbcSQLException: テーブル MONTHLY_REPORT が見つかりません -Table MONTHLY_REPORT not found [42102-79] - at org.h2.message.Message.getSQLException(Message.java:103) - at org.h2.message.Message.getSQLException(Message.java:114) - at org.h2.message.Message.getSQLException(Message.java:77) - at org.h2.command.ddl.DropTable.prepareDrop(DropTable.java:63) - at org.h2.command.ddl.DropTable.update(DropTable.java:93) - at org.h2.command.CommandContainer.update(CommandContainer.java:69) - at org.h2.command.Command.executeUpdate(Command.java:206) - at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:163) - at org.h2.server.web.WebThread.getResult(WebThread.java:1713) - at org.h2.server.web.WebThread.query(WebThread.java:1276) - at org.h2.server.web.WebThread.process(WebThread.java:443) - at org.h2.server.web.WebThread.processRequest(WebThread.java:185) - at org.h2.server.web.WebThread.process(WebThread.java:240) - at org.h2.server.web.WebThread.run(WebThread.java:195) -10-19 08:25:52 jdbc[2]: SQLException -org.h2.jdbc.JdbcSQLException: テーブル EMPLOYEE が見つかりません -Table EMPLOYEE not found [42102-79] - at org.h2.message.Message.getSQLException(Message.java:103) - at org.h2.message.Message.getSQLException(Message.java:114) - at org.h2.message.Message.getSQLException(Message.java:77) - at org.h2.command.ddl.DropTable.prepareDrop(DropTable.java:63) - at org.h2.command.ddl.DropTable.update(DropTable.java:93) - at org.h2.command.CommandContainer.update(CommandContainer.java:69) - at org.h2.command.Command.executeUpdate(Command.java:206) - at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:163) - at org.h2.server.web.WebThread.getResult(WebThread.java:1713) - at org.h2.server.web.WebThread.query(WebThread.java:1276) - at org.h2.server.web.WebThread.process(WebThread.java:443) - at org.h2.server.web.WebThread.processRequest(WebThread.java:185) - at org.h2.server.web.WebThread.process(WebThread.java:240) - at org.h2.server.web.WebThread.run(WebThread.java:195) Modified: timecard/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml =================================================================== --- timecard/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/webapp/WEB-INF/jetspeed-portlet.xml 2008-10-21 01:50:19 UTC (rev 1226) @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and limitations under the License. --> -<portlet-app xmlns="http://portals.apache.org/jetspeed" xmlns:js="http://portals.apache.org/jetspeed" xmlns:dc="http://www.purl.org/dc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="goodjob" version="1.0" xsi:schemaLocation="http://portals.apache.org/jetspeed http://portals.apache.org/jetspeed-2/2.1/schemas/jetspeed-portlet.xsd"> +<portlet-app xmlns="http://portals.apache.org/jetspeed" xmlns:js="http://portals.apache.org/jetspeed" xmlns:dc="http://www.purl.org/dc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="timecard" version="1.0" xsi:schemaLocation="http://portals.apache.org/jetspeed http://portals.apache.org/jetspeed-2/2.1/schemas/jetspeed-portlet.xsd"> <dc:title>Timecard</dc:title> <dc:creator>PAL Project</dc:creator> <portlet> Modified: timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/confirm.jsp =================================================================== --- timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/confirm.jsp 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/confirm.jsp 2008-10-21 01:50:19 UTC (rev 1226) @@ -114,6 +114,15 @@ <html:hidden property="otjTimeMin"/> </td> </tr> + <tr> + <th>状態</th> + <td> +<c:if test="${status == 1}">編集中</c:if> +<c:if test="${status == 2}">申請</c:if> +<c:if test="${status == 10}">承認</c:if> +<html:hidden property="status"/> + </td> + </tr> <tr> <th>メモ</th> <td>${f:br(f:nbsp(f:h(memo)))}<html:hidden property="memo"/></td> Modified: timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/edit.jsp =================================================================== --- timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/edit.jsp 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/edit.jsp 2008-10-21 01:50:19 UTC (rev 1226) @@ -131,6 +131,16 @@ </td> </tr> <tr> + <th>状態</th> + <td> + <html:select property="status"> +<html:option value="1">編集中</html:option> +<html:option value="2">申請</html:option> +<html:option value="10">承認</html:option> + </html:select> + </td> + </tr> + <tr> <th>メモ</th> <td><html:textarea property="memo" cols="50" rows="5"/></td> </tr> Modified: timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/index.jsp =================================================================== --- timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/index.jsp 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/webapp/WEB-INF/view/admin/timecard/index.jsp 2008-10-21 01:50:19 UTC (rev 1226) @@ -68,6 +68,7 @@ <td style="text-align: center;"> <html:select property="status"> <html:option value="1">編集中</html:option> +<html:option value="2">申請</html:option> <html:option value="10">承認</html:option> </html:select> </td> @@ -100,7 +101,8 @@ <th style="width:50px;text-align: center;"">退社</th> <th style="width:50px;text-align: center;"">休憩</th> <th style="width:50px;text-align: center;"">勤務</th> - <th style="width:120px;text-align: center;"">状況</th> + <th style="width:120px;text-align: center;"">内容</th> + <th style="width:50px;text-align: center;"">状況</th> <th style="width:50px;text-align: center;"> </th> </tr> </thead> @@ -143,6 +145,11 @@ <c:if test="${dr.workingType == 111}">代休(午前)</c:if> <c:if test="${dr.workingType == 112}">代休(午後)</c:if> </td> + <td style="text-align: center;"> +<c:if test="${dr.status == 1}">編集中</c:if> +<c:if test="${dr.status == 2}">申請</c:if> +<c:if test="${dr.status == 10}">承認</c:if> + </td> <td style="text-align: center;"><s:link href="editpage/2/${f:u(dr.id)}/${year}/${month}/${username}">編集</s:link></td> </tr> </c:forEach> Modified: timecard/trunk/src/main/webapp/WEB-INF/view/employee/confirm.jsp =================================================================== --- timecard/trunk/src/main/webapp/WEB-INF/view/employee/confirm.jsp 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/webapp/WEB-INF/view/employee/confirm.jsp 2008-10-21 01:50:19 UTC (rev 1226) @@ -15,6 +15,7 @@ <html:hidden property="month"/> <html:hidden property="date"/> <html:hidden property="mode"/> + <html:hidden property="status"/> <div class="form-table"> <table style="width: 580px;"> <caption>時刻編集の確認</caption> Modified: timecard/trunk/src/main/webapp/WEB-INF/view/employee/edit.jsp =================================================================== --- timecard/trunk/src/main/webapp/WEB-INF/view/employee/edit.jsp 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/webapp/WEB-INF/view/employee/edit.jsp 2008-10-21 01:50:19 UTC (rev 1226) @@ -14,6 +14,7 @@ <html:hidden property="month"/> <html:hidden property="date"/> <html:hidden property="mode"/> + <html:hidden property="status"/> <div class="form-table"> <table style="width: 580px;"> <caption>時刻編集</caption> @@ -138,6 +139,9 @@ <tr> <td colspan="2"> <input type="submit" name="confirm" value="確認"/> +<c:if test="${status==1}"> + <input type="submit" name="sendrequest" value="申請"/> +</c:if> <input type="submit" name="back" value="戻る"/> </td> </tr> Modified: timecard/trunk/src/main/webapp/WEB-INF/view/employee/index.jsp =================================================================== --- timecard/trunk/src/main/webapp/WEB-INF/view/employee/index.jsp 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/webapp/WEB-INF/view/employee/index.jsp 2008-10-21 01:50:19 UTC (rev 1226) @@ -45,6 +45,10 @@ </tr> </tbody> </table> +<s:form> +<html:hidden property="monthlyReportId"/> +<html:hidden property="year"/> +<html:hidden property="month"/> <table style="width: 180px;margin-bottom: 10px;"> <caption>申請状況</caption> <tbody> @@ -52,11 +56,22 @@ <th>状況</th> <td style="text-align: center;"> <c:if test="${monthlyReport.status==1}">編集中</c:if> +<c:if test="${monthlyReport.status==2}">申請</c:if> <c:if test="${monthlyReport.status==10}">承認済み</c:if> </td> </tr> </tbody> +<c:if test="${monthlyReport.status==1}"> + <tfoot> + <tr> + <td colspan="2"> +<input type="submit" name="fixmonthlyreport" value="月次確定"/> + </td> + </tr> + </tfoot> +</c:if> </table> +</s:form> </div> <div style="float: left;margin-left:10px;" class="list-table"> @@ -75,7 +90,8 @@ <th style="width:50px;text-align: center;"">退社</th> <th style="width:50px;text-align: center;"">休憩</th> <th style="width:50px;text-align: center;"">勤務</th> - <th style="width:120px;text-align: center;"">状況</th> + <th style="width:120px;text-align: center;"">内容</th> + <th style="width:50px;text-align: center;"">状況</th> <th style="width:50px;text-align: center;"> </th> </tr> </thead> @@ -118,6 +134,11 @@ <c:if test="${dr.workingType == 111}">代休(午前)</c:if> <c:if test="${dr.workingType == 112}">代休(午後)</c:if> </td> + <td style="text-align: center;"> +<c:if test="${dr.status == 1}">編集中</c:if> +<c:if test="${dr.status == 2}">申請</c:if> +<c:if test="${dr.status == 10}">承認</c:if> + </td> <td style="text-align: center;"><s:link href="editpage/2/${f:u(dr.id)}/${year}/${month}">編集</s:link></td> </tr> </c:forEach> Modified: timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/confirm.jsp =================================================================== --- timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/confirm.jsp 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/confirm.jsp 2008-10-21 01:50:19 UTC (rev 1226) @@ -114,6 +114,14 @@ <html:hidden property="otjTimeMin"/> </td> </tr> + <tr> + <th>状態</th> + <td> +<c:if test="${status == 1}">編集中</c:if> +<c:if test="${status == 10}">承認</c:if> +<html:hidden property="status"/> + </td> + </tr> <tr> <th>メモ</th> <td>${f:br(f:nbsp(f:h(memo)))}<html:hidden property="memo"/></td> Modified: timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/edit.jsp =================================================================== --- timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/edit.jsp 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/edit.jsp 2008-10-21 01:50:19 UTC (rev 1226) @@ -131,6 +131,15 @@ </td> </tr> <tr> + <th>状態</th> + <td> + <html:select property="status"> +<html:option value="1">編集中</html:option> +<html:option value="10">承認</html:option> + </html:select> + </td> + </tr> + <tr> <th>メモ</th> <td><html:textarea property="memo" cols="50" rows="5"/></td> </tr> Modified: timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/index.jsp =================================================================== --- timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/index.jsp 2008-10-20 07:43:27 UTC (rev 1225) +++ timecard/trunk/src/main/webapp/WEB-INF/view/manager/timecard/index.jsp 2008-10-21 01:50:19 UTC (rev 1226) @@ -59,6 +59,8 @@ </table> <s:form> <html:hidden property="monthlyReportId"/> +<html:hidden property="year"/> +<html:hidden property="month"/> <html:hidden property="username"/> <table style="width: 180px;margin-bottom: 10px;"> <caption>申請状況</caption> @@ -68,6 +70,7 @@ <td style="text-align: center;"> <html:select property="status"> <html:option value="1">編集中</html:option> +<html:option value="2">申請</html:option> <html:option value="10">承認</html:option> </html:select> </td> @@ -100,10 +103,9 @@ <th style="width:50px;text-align: center;"">退社</th> <th style="width:50px;text-align: center;"">休憩</th> <th style="width:50px;text-align: center;"">勤務</th> - <th style="width:120px;text-align: center;"">状況</th> -<%-- + <th style="width:120px;text-align: center;"">内容</th> + <th style="width:50px;text-align: center;"">状況</th> <th style="width:50px;text-align: center;"> </th> ---%> </tr> </thead> <tbody> @@ -145,9 +147,19 @@ <c:if test="${dr.workingType == 111}">代休(午前)</c:if> <c:if test="${dr.workingType == 112}">代休(午後)</c:if> </td> + <td style="text-align: center;"> +<c:if test="${dr.status == 1}">編集中</c:if> +<c:if test="${dr.status == 2}">申請</c:if> +<c:if test="${dr.status == 10}">承認</c:if> + </td> + <td style="text-align: center;"> + <c:if test="${dr.status == 2}"> + <s:link href="approvedailyreport/${f:u(dr.id)}/${year}/${month}/${username}">承認</s:link> + </c:if> <%-- - <td style="text-align: center;"><s:link href="editpage/2/${f:u(dr.id)}/${year}/${month}/${username}">編集</s:link></td> + <s:link href="editpage/2/${f:u(dr.id)}/${year}/${month}/${username}">編集</s:link> --%> + </td> </tr> </c:forEach> </tbody>