/**
 *                                                (客先名) 殿
 *                                             サブシステム名
 *                           機能名(プログラム名)(プログラムID)
 *
 *                                                       作成:アイエムシンクタンク株式会社
 *                                                       初版:年月日 by IMTT 作成者
 *                                                       改版:年月日 by
 */
 
package com.aimluck.eip.exttimecard;

import java.text.SimpleDateFormat;
import java.util.Iterator;
import java.util.List;

import org.apache.cayenne.DataRow;
import org.apache.cayenne.access.DataContext;
import org.apache.cayenne.query.SQLTemplate;
import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.turbine.util.RunData;
import org.apache.velocity.context.Context;

import com.aimluck.eip.cayenne.om.portlet.EipTExtTimecardSystem;
import com.aimluck.eip.common.ALEipUser;
import com.aimluck.eip.modules.screens.ExtTimecardXlsExportScreen;
import com.aimluck.eip.orm.DatabaseOrmService;

public class ExtTimecardExcelAllCreate {

  // Add 2010/8/26 ListVMと同等の処理でEXCELを作成　(青柳
  private static final JetspeedLogger logger = JetspeedLogFactoryService
  .getLogger(ExtTimecardXlsExportScreen.class.getName());  
 /**
  * 一覧表示に利用するデータをそのまま利用してEXCELテンプレートに貼り付けていく
  * 
  * @author 小濵
  */
  public static void executeVmLike(RunData rundata, Context context, 
        ExtTimecardExcelAllSelectData result, HSSFWorkbook wb,int index){
    HSSFSheet sheet = wb.getSheetAt(index);
    HSSFRow row;
    HSSFCell cel;
    
    try{
      

    //現在の年月
    String viewMonth = String.format("%1$TY 年 %1$tm 月 ", result.getViewMonth().getValue());
    wb.setSheetName(index, getUserNameByList(result.getUsers(), result.getTargetUserId()), HSSFCell.ENCODING_UTF_16);
 
    // 表題設定
    row = sheet.getRow((short) 1);
    cel = row.getCell((short) 0);
    cel.setEncoding(HSSFCell.ENCODING_UTF_16);
    cel.setCellValue(" " + viewMonth + " 勤務実績");
 
    // 所属
    row = sheet.getRow((short) 3);
    cel = row.getCell((short) 2);
    cel.setEncoding(HSSFCell.ENCODING_UTF_16);
    cel.setCellValue("所属：　　 " + getGroupNameById(result.getTargetUserId()) + " ");
    
    // 業務名 （一番時間の長い作業）
    cel = row.getCell((short) 7);
    cel.setEncoding(HSSFCell.ENCODING_UTF_16);
    cel.setCellValue("業務名：　　 " + result.getJobName() + " ");
    
    // 氏名 
    row = sheet.getRow((short) 6);
    cel = row.getCell((short) 2);
    cel.setEncoding(HSSFCell.ENCODING_UTF_16);
    cel.setCellValue("氏名：　　 " + getUserNameByList(result.getUsers(), result.getTargetUserId()) + " ");
     
    //　作業場所 （作業時間の長い順に5件まで）
    cel = row.getCell((short) 7);
    cel.setEncoding(HSSFCell.ENCODING_UTF_16);
    cel.setCellValue("作業場所：　　 " + result.getPlaceNames() + " ");
    
    // 表作成
    List<ExtTimecardListResultData> rdlist = result.getDateListKeys();
    
    short baseRowNumberOfMatrix = 12;
    short baseColNumberOfMatrix;
    String value;
    
    for(Iterator<ExtTimecardListResultData> itr = rdlist.iterator();itr.hasNext();){
      ExtTimecardListResultData rdRow = itr.next();
      HSSFRow mRow = sheet.getRow(baseRowNumberOfMatrix ++);

      //標準フォーマット
      HSSFDataFormat cdf = wb.createDataFormat();
      HSSFCellStyle  ccss0 = wb.createCellStyle();
      ccss0.setDataFormat(cdf.getFormat("@"));
      ccss0.setWrapText(true);
      
      //少数フォーマット
      HSSFCellStyle  ccss1 = wb.createCellStyle();
      ccss1.setDataFormat(cdf.getFormat("0.00"));
      
      //マーク用フォーマット
      HSSFCellStyle  ccss2 = wb.createCellStyle();
      
      int kindOfHoliday = rdRow.getIsSaturdayOrSundayOrHoliday();
      setStyle(ccss0, kindOfHoliday);
      setStyle(ccss1, kindOfHoliday);
      setStyle(ccss2, kindOfHoliday);

      
      baseColNumberOfMatrix = 0;
      
      // 日付
      cel = mRow.getCell(baseColNumberOfMatrix ++);
      cel.setCellStyle(ccss0);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      cel.setCellValue(rdRow.getDateStr("d"));
      
      // 曜日
      cel = mRow.getCell(baseColNumberOfMatrix ++);
      cel.setCellStyle(ccss0);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      cel.setCellValue(rdRow.getDateStr("(EE)"));      

      
      //　勤務先
      
      // 勤務形態
      
      // 出勤

      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss0);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      if(rdRow.getIsNotNullClockInTime())cel.setCellValue(
          String.format("%1$Tk:%1$TM", rdRow.getRd().getClockInTime().getValue()));

      // 退勤
      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss0);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      cel.setCellValue(rdRow.getComputedClockOutTimeSimple());
      
      // 作業名
      cel = mRow.getCell(baseColNumberOfMatrix);
      cel.setCellStyle(ccss0);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      cel.setCellValue(rdRow.getJobName());
      
      baseColNumberOfMatrix += 3;

      // 休憩時間
      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss1);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      value = rdRow.getComputedBreakTime();
      if (!"".equals(rdRow.getComputedClockOutTimeSimple())) {
          if (value == "") {
            cel.setCellValue(value);
          } else {
            cel.setCellValue(Float.parseFloat(value));
          }
      }
      
      //　所定内作業時間
      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss1);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      value = rdRow.getComputedSagyo();
      if (!"".equals(rdRow.getComputedClockOutTimeSimple())) {
          if (value == "") {
            cel.setCellValue(value);
          } else {
            cel.setCellValue(Float.parseFloat(value));
          }
      }
      
      //　時間外　普通
      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss1);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      value = rdRow.getComputedOvertime();
      if (!"".equals(rdRow.getComputedClockOutTimeSimple())) {
          if (value == "") {
            cel.setCellValue(value);
          } else {
            cel.setCellValue(Float.parseFloat(value));
          }
      }
      
      //　時間外　深夜
      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss1);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      value = rdRow.getComputedNightOvertime();
      if (!"".equals(rdRow.getComputedClockOutTimeSimple())) {
          if (value == "") {
            cel.setCellValue(value);
          } else {
            cel.setCellValue(Float.parseFloat(value));
          }
      }
      
      //　時間外　休日　普通
      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss1);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      value = rdRow.getComputedHolidayOvertime();
      if (!"".equals(rdRow.getComputedClockOutTimeSimple())) {
          if (value == "") {
            cel.setCellValue(value);
          } else {
            cel.setCellValue(Float.parseFloat(value));
          }
      }
      
      //　時間外　休日　深夜
      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss1);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      value = rdRow.getComputedHolidayNightOvertime();
      if (!"".equals(rdRow.getComputedClockOutTimeSimple())) {
          if (value == "") {
            cel.setCellValue(value);
          } else {
            cel.setCellValue(Float.parseFloat(value));
          }
      }
      
      //　時間外　法定外休日　普通
      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss1);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      value = rdRow.getComputedExtralegalOvertime();
      if (!"".equals(rdRow.getComputedClockOutTimeSimple())) {
          if (value == "") {
            cel.setCellValue(value);
          } else {
            cel.setCellValue(Float.parseFloat(value));
          }
      }
      
      //　時間外　法定外休日　深夜
      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss1);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      value = rdRow.getComputedExtralegalNightOvertime();
      if (!"".equals(rdRow.getComputedClockOutTimeSimple())) {
          if (value == "") {
            cel.setCellValue(value);
          } else {
            cel.setCellValue(Float.parseFloat(value));
          }
      }

      //　遅刻早退欠勤時間
      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss1);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      value = rdRow.getComputedChikoku();
      if(value==""){
        cel.setCellValue(value);
      }else{
        cel.setCellValue(Float.parseFloat(value));
      }
      
      //　代休
      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss1);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      value = "";
      if(rdRow.getRd()!=null)value = rdRow.getRd().getOffTime();
      if(value==""){
        cel.setCellValue(value);
      }else{
        cel.setCellValue(Float.parseFloat(value));
      }
      
      //　有給
      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss1);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      value = "";
      if(rdRow.getRd()!=null)value = getHolidayMarkById(rdRow.getRd().getPaidHolidayType());
      if(value==""){
        cel.setCellValue(value);
      }else{
        cel.setCellValue(Float.parseFloat(value));
      }
            
      //　自家用車
      cel = mRow.getCell(baseColNumberOfMatrix);
      short carDf = cel.getCellStyle().getDataFormat();
      ccss2.setDataFormat(carDf);
      cel.setCellStyle(ccss2);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      value = getCarMarkById(rdRow.getUseCarFlg());
      if(value==""){
        cel.setCellValue(value);
      }else{
        cel.setCellValue(Float.parseFloat(value));
      }
      
      baseColNumberOfMatrix += 2;
      
      //　備考
      String biko = "";
      if(rdRow.getRd()!=null){
        if(rdRow.getRd().getRemarks().getValue()!=null && rdRow.getRd().getRemarks().getValue().length()>0){
          biko = rdRow.getRd().getRemarks().getValue();
        }
        if(rdRow.getRd().getReason().getValue() != null && rdRow.getRd().getReason().getValue().length()>0){
          biko += " (修正理由：" + rdRow.getRd().getReason().getValue() + ")";
        }
      }
            
      cel = mRow.getCell(baseColNumberOfMatrix++);
      cel.setCellStyle(ccss0);
      cel.setEncoding(HSSFCell.ENCODING_UTF_16);
      cel.setCellValue(biko);

    }

    
    }catch(Exception ex){
      logger.error("POI-Error", ex);
    }
    
  }

  /**
   * 休日区分に合わせてスタイルを変更する
   * @param css
   * @param code
   */
  private static void setStyle(HSSFCellStyle css, int code){
    if (code == 2 ) {
      // 法定休日
        css.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        css.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        css.setBorderTop(HSSFCellStyle.BORDER_THIN);
        css.setTopBorderColor(HSSFColor.BLACK.index);
        css.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        css.setLeftBorderColor(HSSFColor.BLACK.index);
        css.setBorderRight(HSSFCellStyle.BORDER_THIN);
        css.setRightBorderColor(HSSFColor.BLACK.index);
        css.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        css.setBottomBorderColor(HSSFColor.BLACK.index);
        css.setFillForegroundColor(HSSFColor.YELLOW.index);
        css.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    } else if (code == 1 || code > 2) {
      // 法定外休日
        css.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        css.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        css.setBorderTop(HSSFCellStyle.BORDER_THIN);
        css.setTopBorderColor(HSSFColor.BLACK.index);
        css.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        css.setLeftBorderColor(HSSFColor.BLACK.index);
        css.setBorderRight(HSSFCellStyle.BORDER_THIN);
        css.setRightBorderColor(HSSFColor.BLACK.index);
        css.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        css.setBottomBorderColor(HSSFColor.BLACK.index);
        css.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
        css.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    } else {
      // 平日
      css.setAlignment(HSSFCellStyle.ALIGN_CENTER);
      css.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
      css.setBorderTop(HSSFCellStyle.BORDER_THIN);
      css.setTopBorderColor(HSSFColor.BLACK.index);
      css.setBorderLeft(HSSFCellStyle.BORDER_THIN);
      css.setLeftBorderColor(HSSFColor.BLACK.index);
      css.setBorderRight(HSSFCellStyle.BORDER_THIN);
      css.setRightBorderColor(HSSFColor.BLACK.index);
      css.setBorderBottom(HSSFCellStyle.BORDER_THIN);
      css.setBottomBorderColor(HSSFColor.BLACK.index);
      css.setFillForegroundColor(HSSFColor.WHITE.index);
      css.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    }  
  }
  
  
  /**
   * 有給設定は0～3などのIDで指定されるので数値表記に変更
   * @param id
   * @return
   */
  private static String getHolidayMarkById(String id){
    if(id==null)return "";
    if(id.equals("1")){
      return "1.00";
    }else if(id.equals("2")){
      return "0.50";
    }else if(id.equals("3")){
      return "0.50";
    }
    return "";
  }
  
  /**
   * 自家用車利用区分は0～3などのIDで指定されるので記号に変更
   * @param id
   * @return
   */
  private static String getCarMarkById(String id){
    if(id==null)return "";
    if(id.equals("2")){
      return "1";//プラス"○";
    }else if(id.equals("1")){
      return "-1";//マイナス"△";
    }else if(id.equals("0")){
      return "0";//ゼロ"×";
    }
    return "";//なし
  }
  
  /**
   * ユーザーリスト内の指定IDユーザーの名前を取得します。
   * 
   * TODO:TimecardUtilへ移動
   * 
   * @param ls
   * @param id
   * @return
   */
  private static String getUserNameByList(List<ALEipUser> ls, String id){
    for(Iterator<ALEipUser> itr = ls.iterator(); itr.hasNext();){
      ALEipUser u = itr.next();
      if(u.getUserId().getValueAsString().equals(id))
        return u.getAliasName().getValue();
    }

    return "";
  }
  
    /**
   * 指定IDユーザーのグループ名前を取得します。
   * @param ls
   * @param id
   * @return
   */
  private static String getGroupNameById(String id){
    DataContext dc = DatabaseOrmService.getInstance().getDataContext();
    String sql = "SELECT " +
    		" group_alias_name AS 名称 " +
    		" FROM turbine_user_group_role ug " +
    		" INNER JOIN turbine_group g ON ug.group_id = g.group_id " +
    		" WHERE g.public_flag = '1' AND ug.user_id = " + id + " LIMIT 1 OFFSET 0";
    SQLTemplate q = new SQLTemplate(EipTExtTimecardSystem.class, sql, true);
    
    List<DataRow> res;
    
    q.setFetchingDataRows(true);
    res = dc.performQuery(q);
 
    if(res.size()>0)return res.get(0).get("名称").toString();

    return "無所属";
  }
 
  /**
   * 禁止を作成
   */
  private ExtTimecardExcelAllCreate() {
  }

  /**
   * を書くシートをエクセル
   * 
   * @param testmanager
   * @param wb
   * @throws Exception
   */
   
  public static void execute(ExtTimecardResultDataNew testmanager,
      HSSFWorkbook wb) throws Exception {
    // 作成シートと名前を （シートExcelのように表される）
    int intPage = 0;
    HSSFSheet sheet = wb.getSheetAt(0);
    wb.cloneSheet(intPage);
    // シート名をセット
    wb.setSheetName(0, "月報テンプレート", HSSFCell.ENCODING_UTF_16);
    // セットスタイル
    // 選択
    wb.getSheetAt(intPage).setSelected(true);
    sheet = wb.getSheetAt(intPage);

    // 表2は、最初のセット Start
    HSSFRow rowHeader = sheet.getRow((short) 1);
    SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");
    SimpleDateFormat sdfMonth = new SimpleDateFormat("MM");
    HSSFCell cell_h = rowHeader.getCell((short) 0);
    cell_h.setEncoding(HSSFCell.ENCODING_UTF_16);
    cell_h.setCellValue(" " + sdfYear.format(testmanager.getWork_time())
        + " 年  " + sdfMonth.format(testmanager.getWork_time()) + " 月　 勤務実績");

    // 表2は、最初のセット End

    HSSFRow rowMenu1 = sheet.getRow((short) 3);
    HSSFCell cell_M = rowMenu1.getCell((short) 2);
    cell_M.setEncoding(HSSFCell.ENCODING_UTF_16);
    cell_M.setCellValue("所属     " + testmanager.getBelong());

    // 業務名
    HSSFRow rowMenu2 = sheet.getRow((short) 4);
    HSSFCell cell_M_C = rowMenu2.getCell((short) 7);
    cell_M_C.setEncoding(HSSFCell.ENCODING_UTF_16);
    cell_M_C.setCellValue("業務名     " + testmanager.getBusiness_name());
    // 氏名 作業場所
    HSSFRow nameRow = sheet.getRow((short) 6);
    HSSFCell cell_N = nameRow.getCell((short) 2);
    cell_N.setEncoding(HSSFCell.ENCODING_UTF_16);
    cell_N.setCellValue("氏名     " + testmanager.getUser_name());
    HSSFCell cell_N_C = nameRow.getCell((short) 7);
    cell_N_C.setEncoding(HSSFCell.ENCODING_UTF_16);
    cell_N_C.setCellValue("作業場所     " + testmanager.getWorking_place());

    List list = testmanager.getDay_list();
    int i = 0;
    for (i = 0; i < list.size(); i++) {
      ExtTimecardDayResultData entity = (ExtTimecardDayResultData) list.get(i);
      SimpleDateFormat sdfDay = new SimpleDateFormat("dd");
      SimpleDateFormat sdf = new SimpleDateFormat("EE");

      HSSFRow rows = sheet.getRow((short) 12 + i);
      for (int j = 0; j <= 20; j++) {
        HSSFCell cell_context = rows.getCell((short) j);
        cell_context.setEncoding(HSSFCell.ENCODING_UTF_16);
        if (entity.getIsHoliday().equals("2")) {
        	HSSFCellStyle  cellcs1 = wb.createCellStyle();
        	cellcs1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        	cellcs1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        	cellcs1.setBorderTop(HSSFCellStyle.BORDER_THIN);
        	cellcs1.setTopBorderColor(HSSFColor.BLACK.index);
        	cellcs1.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        	cellcs1.setLeftBorderColor(HSSFColor.BLACK.index);
        	cellcs1.setBorderRight(HSSFCellStyle.BORDER_THIN);
        	cellcs1.setRightBorderColor(HSSFColor.BLACK.index);
        	cellcs1.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        	cellcs1.setBottomBorderColor(HSSFColor.BLACK.index);
        	cellcs1.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
        	cellcs1.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        	cell_context.setCellStyle(cellcs1);
        	
        } else if (entity.getIsHoliday().equals("1")) {
        	HSSFCellStyle  cellcs2 = wb.createCellStyle();
        	cellcs2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        	cellcs2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        	cellcs2.setBorderTop(HSSFCellStyle.BORDER_THIN);
        	cellcs2.setTopBorderColor(HSSFColor.BLACK.index);
        	cellcs2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        	cellcs2.setLeftBorderColor(HSSFColor.BLACK.index);
        	cellcs2.setBorderRight(HSSFCellStyle.BORDER_THIN);
        	cellcs2.setRightBorderColor(HSSFColor.BLACK.index);
        	cellcs2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        	cellcs2.setBottomBorderColor(HSSFColor.BLACK.index);
        	cellcs2.setFillForegroundColor(HSSFColor.YELLOW.index);
        	cellcs2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        	cell_context.setCellStyle(cellcs2);
        	
        } 
        // 値をセット
        switch (j) {
        case 1:
        	
          cell_context.setCellValue(sdf.format(entity.getDate()));
          break;
        case 2:
          if (null != entity.getStart_time()){
            cell_context.setCellValue(entity.getStart_time());
          }
          break;
        case 3:
          if (null != entity.getEnd_time()){
            cell_context.setCellValue(entity.getEnd_time());
          }
          break;
        case 4:
        	
          if (null != entity.getProject_contents()){
            cell_context.setCellValue(entity.getProject_contents());
          }
          break;
        case 6:        	
          if (null != entity.getProject_contents()){
            cell_context.setCellValue(entity.getProject_contents());
          }
          break;
        case 7:        	
          Integer rest_time = null;
          if (entity.getRest_time() != null
              && !entity.getRest_time().toString().trim().equals("")) {
            rest_time = Integer.parseInt(entity.getRest_time());
            cell_context.setCellValue(rest_time);
          }
          break;
        case 8:
          Integer work_time = null;
          if (entity.getWork_time() != null
              && !entity.getWork_time().toString().trim().equals("")) {
            work_time = Integer.parseInt(entity.getWork_time());
            cell_context.setCellValue(work_time);
          }
          break;
        case 9:
          Integer ordinary_time = null;
          if (entity.getOrdinary_time() != null
              && !entity.getOrdinary_time().toString().trim().equals("")) {
            ordinary_time = Integer.parseInt(entity.getOrdinary_time());
            cell_context.setCellValue(ordinary_time);
          }
          break;
        case 10:
          Integer night_time = null;
          if (entity.getNight_time() != null
              && !entity.getNight_time().toString().trim().equals("")) {
            night_time = Integer.parseInt(entity.getNight_time());
            cell_context.setCellValue(night_time);
          }
          break;
        case 11:
          Integer legal_holiday_time = null;
          if (entity.getLegal_holiday_time() != null
              && !entity.getLegal_holiday_time().toString().trim().equals("")) {
            legal_holiday_time = Integer.parseInt(entity
                .getLegal_holiday_time());
            cell_context.setCellValue(legal_holiday_time);
          }
          break;
        case 12:
          Integer legal_holiday_night_time = null;
          if (entity.getLegal_holiday_night_time() != null
              && !entity.getLegal_holiday_night_time().toString().trim()
                  .equals("")) {
            legal_holiday_night_time = Integer.parseInt(entity
                .getLegal_holiday_night_time());
            cell_context.setCellValue(legal_holiday_night_time);
          }
          break;
        case 13:
          Integer holiday_time = null;
          if (entity.getHoliday_time() != null
              && !entity.getHoliday_time().toString().trim().equals("")) {
            holiday_time = Integer.parseInt(entity.getHoliday_time());
            cell_context.setCellValue(holiday_time);
          }
          break;
        case 14:
          Integer holiday_night_time = null;
          if (entity.getHoliday_night_time() != null
              && !entity.getHoliday_night_time().toString().trim().equals("")) {
            holiday_night_time = Integer.parseInt(entity
                .getHoliday_night_time());
            cell_context.setCellValue(holiday_night_time);
          }
          break;
        case 15:
          Integer late_early_time = null;
          if (entity.getLate_early_time() != null
              && !entity.getLate_early_time().toString().trim().equals("")) {
            late_early_time = Integer.parseInt(entity.getLate_early_time());
            cell_context.setCellValue(late_early_time);
          }
          break;
        case 16:
          Double paidLeave = null;
          if (entity.getPaid_leave() != null
              && !entity.getPaid_leave().toString().trim().equals("")) {
            paidLeave = Double.parseDouble(entity.getPaid_leave());
            cell_context.setCellValue(paidLeave);
          }
          break;
        case 17:
          if (null != entity.getOneself_car()) {
            cell_context.setCellValue(entity.getOneself_car());
          }
          break;
        case 18:
          if (null != entity.getTemp_note()) {
            cell_context.setCellValue(entity.getTemp_note());
          }
          break;
        case 19:
          if (null != entity.getTemp_note())
            cell_context.setCellValue(entity.getTemp_note());
          break;
        }
      }
    }
    // テンプレートページを消す
    wb.removeSheetAt(intPage + 1);
  }
}
