帳票の作成

帳票の作成:

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;

import org.apache.commons.lang.time.DateFormatUtils;

import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.VerticalAlignment;
import jxl.write.DateFormat;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import com.hitachijoho.pm.models.Mdmt0010;
import com.hitachijoho.pm.models.Mdmt0020;
import com.hitachijoho.pm.util.CSVReader;
import com.hitachijoho.pm.util.CodeConstant;
import com.hitachijoho.pm.batch.common.SogoHantei;

/**
 * MPMR0010_測定結果総合処理
 *
 * @version 1.0
 * @see AbstractBatch
 * @since 01-00
 */

public class CopyOfMPMR0010 {

 // ----------------------様式定義-----------------------------------
 private final WritableFont font1 = new WritableFont(WritableFont.createFont("MS Pゴシック"), 11, WritableFont.NO_BOLD);
 /** 測定結果総合シート*/
 private WritableCellFormat cf1 = new WritableCellFormat(font1);
 private WritableCellFormat cf2 = new WritableCellFormat(font1);
 private WritableCellFormat cf3 = new WritableCellFormat(font1);
 private WritableCellFormat cf4 = new WritableCellFormat(font1);

 /**
  * 帳票出力処理
  *
  * @param kidoukeyuu
  * @param inPath
  * @param encoding
  * @param wwb
  * @param mdmt0010
  * @param mdmt0020
  * @param mdmt0030list
  * @throws Exception
  */
 public void reportWrite(boolean kidoukeyuu,String inPath,String encoding,WritableWorkbook wwb,
   Mdmt0010 mdmt0010,Mdmt0020 mdmt0020,ArrayList<String[]> mdmt0030list) throws Exception {

  // 様式設定
  cf1.setBorder(Border.RIGHT, jxl.format.BorderLineStyle.THIN);
  cf1.setBorder(Border.LEFT, jxl.format.BorderLineStyle.THIN);
  cf1.setBorder(Border.TOP, jxl.format.BorderLineStyle.THIN);
  cf1.setBorder(Border.BOTTOM, jxl.format.BorderLineStyle.THIN);
  cf1.setVerticalAlignment(VerticalAlignment.CENTRE);

  cf2.setBorder(Border.RIGHT, jxl.format.BorderLineStyle.THIN);
  cf2.setBorder(Border.LEFT, jxl.format.BorderLineStyle.THIN);
  cf2.setBorder(Border.TOP, jxl.format.BorderLineStyle.THIN);
  cf2.setBorder(Border.BOTTOM, jxl.format.BorderLineStyle.THIN);
  cf2.setVerticalAlignment(VerticalAlignment.CENTRE);
  cf2.setAlignment(Alignment.CENTRE);

  cf3.setBorder(Border.RIGHT, jxl.format.BorderLineStyle.HAIR);
  cf3.setBorder(Border.LEFT, jxl.format.BorderLineStyle.THIN); //
  cf3.setBorder(Border.BOTTOM, jxl.format.BorderLineStyle.THIN); //
  cf3.setBorder(Border.TOP, jxl.format.BorderLineStyle.THIN); //
  cf3.setVerticalAlignment(VerticalAlignment.CENTRE);
  cf3.setAlignment(Alignment.CENTRE);

  cf4.setVerticalAlignment(VerticalAlignment.CENTRE);

  //帳票の測定結果総合シート
  WritableSheet ws = wwb.getSheet(0);
  //帳票のworkシート
  WritableSheet ws1 = wwb.getSheet("work");
  //指標値リスト
  ArrayList<String[]> list = mdmt0030list;
  //判定結果が「未記入」の項目数
  int count = 0;
  //判定対象の項目数
  int count1 = 0;
  //項目名
  String itemname = CodeConstant.EMPTY;
  //略称
  String itemshort = CodeConstant.EMPTY;
  //プロダクト名
  String productName = CodeConstant.EMPTY;
  //部署名
  String productPost = CodeConstant.EMPTY;
  //測定日時
  String create = CodeConstant.EMPTY;
  if (kidoukeyuu == true) {
   // プロダクト情報
   ArrayList<String[]> filelist1 = new ArrayList<String[]>(50);
   // プロダクト情報を開く
   CSVReader csvreader1 = new CSVReader(inPath + CodeConstant.FILE_PRODUCT_CSV, encoding);
   // プロダクト情報の内容を取る
   filelist1 = csvreader1.getRowElements();


   // 測定ファイル
   ArrayList<String[]> filelist2 = new ArrayList<String[]>(50);
   // 測定ファイルを開く
   CSVReader csvreader2 = new CSVReader(inPath + CodeConstant.FILE_TOTAL_CSV, encoding);
   // 測定ファイルの内容を取る
   filelist2 = csvreader2.getRowElements();


   // 指標値
   ArrayList<String[]> filelist3 = new ArrayList<String[]>(50);
   // 指標値を開く
   CSVReader csvreader3 = new CSVReader(inPath + CodeConstant.FILE_GUIDELINE_CSV, encoding);
   // 指標値の内容を取る
   filelist3 = csvreader3.getRowElements();
   list = filelist3;

   if (!(filelist1.size() == 1 || filelist2.size() == 1)) {
    //プロダクト情報の内容を取る
    //プロダクト名を取る
    productName = filelist1.get(1)[1];
    //部署名
    productPost = filelist1.get(1)[2];
    //測定日時
    create = filelist2.get(1)[0];

   }
  } else {
   //プロダクト名を取る
   productName = mdmt0010.getProductname();
   //部署名
   productPost = mdmt0010.getProductpost();
   //測定日時
   create = DateFormatUtils.format(mdmt0020.getMeasuredate(), CodeConstant.DATE_FORMAT1);
  }


  //プロダクト名を帳票に記入
  Label r5C4 = new Label(3, 4, productName);
  ws.addCell(r5C4);
  r5C4.setCellFormat(cf1);
  //部署名を帳票に記入
  Label r6C4 = new Label(3, 5, productPost);
  ws.addCell(r6C4);
  r6C4.setCellFormat(cf2);

  //測定日時を帳票に記入
  DateFormat df = new DateFormat("yyyy/mm/dd hh:mm:ss");
  WritableCellFormat wcf = new WritableCellFormat(font1, df);
  wcf.setBorder(Border.RIGHT, jxl.format.BorderLineStyle.THIN);
  wcf.setBorder(Border.LEFT, jxl.format.BorderLineStyle.THIN);
  wcf.setBorder(Border.TOP, jxl.format.BorderLineStyle.THIN);
  wcf.setBorder(Border.BOTTOM, jxl.format.BorderLineStyle.THIN);
  wcf.setVerticalAlignment(VerticalAlignment.CENTRE);
  wcf.setAlignment(Alignment.CENTRE);
  Label r6C8 = new Label(7, 5, create);
  ws.addCell(r6C8);
  r6C8.setCellFormat(wcf);


  //判定結果が「未記入」の項目数と判定対象の項目数を統計
  for (int i = 0;i < 23;i++) {
   if (CodeConstant.EMPTY.equals(ws.getCell(8, i + 26).getContents().toString())) {
    count++;
    count1++;
   } else if (!(CodeConstant.TAISYOKAI.equals(ws.getCell(8, i + 26).getContents().toString()))) {
    count1++;
   }
  }

  //判定結果が「未記入」の項目数
  BigDecimal normal = new BigDecimal(count);
  //判定対象の項目数
  BigDecimal taisyo = new BigDecimal(count1);
  //総合判定
  String hanteikeka = CodeConstant.TAISYOKAI;
  BigDecimal sougouhantei = new BigDecimal(0);
  if (taisyo.compareTo(sougouhantei) > 0) {
   sougouhantei = normal.multiply(new BigDecimal(100)).divide(taisyo,1,BigDecimal.ROUND_HALF_UP);
   hanteikeka = sougouhantei.toString();
  }
  //総合判定結果を帳票に記入
  Label r9C4 = new Label(3, 8, hanteikeka);
  ws.addCell(r9C4);
  r9C4.setCellFormat(cf2);
 }
 /**
  * 小数を表示
  *
  * @param item
  * @return String
  */
 private static String getitem(String item) {

  // 空の場合、判定対象外とする
  if(item == null || "".equals(item)){
   return item;
  }

  // 桁区切(,)を使用する。また小数点第一位まで表示する。
  return new DecimalFormat("###,##0.#").format(Double.valueOf(item));
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值