package com.csc.library.databean; import java.text.DecimalFormat; import java.util.Iterator; import com.csc.library.timeattendance.DayShift; import com.csc.library.timeattendance.Shift; import com.csc.library.timeattendance.TimeZone; import com.csc.library.timeattendance.WorkingShift; import com.csc.library.utilities.MyLog; import com.csc.library.session.DbInquiry; import com.csc.library.session.DbRecord; import com.csc.library.session.InitialInquiry; import com.csc.library.session.InitialRecord; import com.csc.library.session.RecordCmp; import com.csc.library.utilities.CscCalendar; public class Tforgetcard_nstda extends RecordCmp { private DecimalFormat df = new DecimalFormat("#0.00"); public Tforgetcard_nstda() { super("Tforgetcard_nstda", "Tforgetcard_nstda Table"); } protected void postInsertTrigger() throws Exception { super.postInsertTrigger(); if (this.getString("wf_status").equalsIgnoreCase("4") || this.getString("wf_status").equalsIgnoreCase("6")) { this.setNewData(); } else if (this.getString("wf_status").equalsIgnoreCase("8") || this.getString("wf_status").equalsIgnoreCase("9")) { this.delOldData(); } } protected void postUpdateTrigger() throws Exception { super.postUpdateTrigger(); if (this.getString("wf_status").equalsIgnoreCase("4") || this.getString("wf_status").equalsIgnoreCase("6")) { this.setNewData(); } else if (this.getString("wf_status").equalsIgnoreCase("8") || this.getString("wf_status").equalsIgnoreCase("9")) { this.delOldData(); } } protected void postDeleteTrigger() throws Exception { super.postDeleteTrigger(); this.delOldData(); } private void setNewData() { try { String time0id=""; DbInquiry inq = new InitialInquiry(this.userPro).getDbInquiry(); inq.setParam(this.param); inq.setSchemaName(this.userPro.getSchemaName()); inq.initMyTable("Memployee", " employeeid='"+this.getString("employeeid")+"'", ""); inq.setColumn("employeeid, time0, companyid, status, startdate, resigndate"); inq.refresh(); while (inq.next()) { time0id = inq.getString("time0"); } DbRecord rec = new InitialRecord(this.userPro).getDbRecord("Ttimetemp"); for (int i=1; i<=10; i++) { rec.clearField(); if (!this.getString("FGDATE"+i).equals("") && !this.getString("FGTIME"+i).equals("") && !this.getString("FGCAUSE"+i).equals("")) { rec.setColumn("*"); rec.set("COMPANYID", this.getString("COMPANYID")); rec.set("EMPLOYEEID", this.getString("EMPLOYEEID")); rec.set("SWIPEDATE", this.getString("FGDATE"+i)); rec.set("SWIPETIME", this.getString("FGTIME"+i)); rec.set("SWIPETYPE", this.getString("FGTYPE")); rec.set("SOURCE", "0"); rec.set("TIME0ID", time0id); rec.save(); } } } catch (Exception e) { MyLog.error(this, e); } } private void delOldData() { try { for (int i=1; i<=10; i++) { CscCalendar csc = new CscCalendar(this.getString("FORGET_DATE")); String filter = " employeeid='"+this.getString("EMPLOYEEID")+"' " + "and swipedate='"+csc.getYYYYMMDD()+"' " + "and swipetime="+this.getDouble("FORGET_TIME"); DbInquiry inq = new InitialInquiry(this.userPro).getDbInquiry(); inq.setParam(this.param); inq.setSchemaName(this.userPro.getSchemaName()); inq.initMyTable("Ttimetemp", filter , ""); inq.setColumn("SWIPEDATE, EMPLOYEEID, SWIPETIME, COMPANYID"); inq.refresh(); while (inq.next()) { DbRecord rec = inq.getCurrentDbRecord().cloneRecord(true); rec.delete(); } } } catch (Exception e) { MyLog.error(this, e); } } /** * @author PipoXP * @param empCode * @param date * @return start_time (���ҷ���ͧ������ӧҹ) */ public String getWorkingTime(String empCode, String date){ float start_time = 0; try{ DbInquiry inqEmp = new InitialInquiry(this.getUProfile()).getDbInquiry(); //inqEmp.setParam(this.param); inqEmp.setSchemaName(this.getUProfile().getSchemaName()); inqEmp.initMyTable("Memployee", "employeeid='" + empCode + "'", ""); inqEmp.setColumn("employeeid, time0,companyid, status, startdate, resigndate"); inqEmp.refresh(); while (inqEmp.next()) { Mtime0 rec = (Mtime0) new InitialRecord(this.getUProfile()).getDbRecord("Mtime0"); rec.set("time0id", inqEmp.getString("time0")); rec.set("companyid", this.getUProfile().get("companyid")); rec.search(); CscCalendar cs1 = new CscCalendar(date); rec.setEmpRec(inqEmp.getCurrentDbRecord().cloneRecord(false)); MyLog.debug(this, ">>>>>> DATE TO PROCESS >>>>>> date=" + cs1.getYYYYMMDD()); WorkingShift ws = rec.genWorkingShift(new CscCalendar(cs1.getYYYYMMDD()), new CscCalendar(cs1.getYYYYMMDD()), "true"); if (!ws.isEmpty()) { ws.setUProfile(this.getUProfile()); ws.setEmployeeid(inqEmp.getString("employeeid")); //ws.adjustLeave(); ws.overlapChecking(); ws.createLink(); int i= 0; Iterator it = (Iterator) ws.keySet().iterator(); if (it.hasNext()) { i++; DayShift ds = (DayShift) ws.get(it.next()); int ds_size = ds.size(); Iterator it_ds = (Iterator) ds.keySet().iterator(); if (it_ds.hasNext()) { Shift sh = (Shift) ds.get((String) it_ds.next()); if (sh!=null) { TimeZone tz = sh.getMidDayStop(); CscCalendar cs = tz.getBeginZone(); start_time = sh.get_c_dt_in().getCSCTime(); } } } } } //End Check Leave Haft Day } catch (Exception e) { MyLog.error(this, e); } return df.format(start_time); } }