調用方法打印pdf的過程中遇到的封裝問題的總結

@RequestMapping(value = "/print")  //Controller層調用Service層
public void getdmspdf(HttpServletRequest request, HttpServletResponse response)throws Exception{
    InputValue<OrderprintprecheckRequestDto>  inputValue=this.getInputValue(request,new TypeReference<InputValue<OrderprintprecheckRequestDto>>(){});
    PrintPrecheckFormBean printPrecheckFormBean = new PrintPrecheckFormBean();
    printPrecheckFormBean.setCustompage("0");
    printPrecheckFormBean.setPageindex("2");
    //調用precheckService指定打印第二聯
    ReturnValue<Picvalue> rtnvalue = new ReturnValue<>();
    Picvalue picvalue =newPrecheckService.printpdfPreOrder(request,response,DataUtil.getCurrent().getStoreid(), DataUtil.getCurrent().getStaffid(),inputValue.getReqdata().getOrderid(),printPrecheckFormBean);
    rtnvalue.setObject(picvalue);
    this.returnvalue(request,response,rtnvalue);
}

  //Service層調用打印pdf的方法
public Picvalue printpdfPreOrder(HttpServletRequest request, HttpServletResponse response, int storeid, int userid, int orderid, PrintPrecheckFormBean printPrecheckFormBean) throws Exception {
    //daying
    String pageindex = printPrecheckFormBean.getPageindex();
    String custompage = printPrecheckFormBean.getCustompage();
    CheckOrderInfoDto dto = this.getCheckOrderInfo(storeid, userid, orderid, true);
    Picvalue picvalue = pdfPreCheckService.printpreviewthesingle(request, response, dto, pageindex,custompage);
    return picvalue;
}
//獲取pdf的內容
public CheckOrderInfoDto getCheckOrderInfo(int storeid, int userid, int orderid, boolean isforpdf) {
    CheckOrderInfoDto checkOrderInfoDto = new CheckOrderInfoDto();
    //表頭信息
    WorkOrderfororder order = increaseItemDao.getWorkOrderWithCarType(orderid);
    checkOrderInfoDto.setDmsno(order.getWodmsno());     //工單號
    checkOrderInfoDto.setPlateall(order.getPlateall());    //車牌號
    checkOrderInfoDto.setVin(order.getCvincode());    //車架號
    checkOrderInfoDto.setCheckpersonname(order.getServiceadvisorname()); //服務顧問
    checkOrderInfoDto.setCheckday("");
    if(!Util.isEmpty(order.getWoenyardtime())){
        String woenyardtime=order.getWoenyardtime().substring(0,8);
        StringBuilder cdate=new StringBuilder(woenyardtime);
        cdate.insert(4,"-");
        cdate.insert(7,"-");
        checkOrderInfoDto.setCdate(cdate.toString());      //日期
    }
    checkOrderInfoDto.setCurmiles(order.getWocurmiles());//當前里程數

    HealthcheckitemRequestDto healthcheckitemRequestDto = new HealthcheckitemRequestDto();
    healthcheckitemRequestDto.setOrderid(orderid);
    HealthcheckitemResponseDto dto = healthcheckService.gethealthcheckitemlist(healthcheckitemRequestDto);
    checkOrderInfoDto.setCheckday(dto.getCheckdate());
    List<HealthcheckDto> healthchecklist = dto.getHealthchecklist();
    List<CheckItemDtoForPdf> list1 = new ArrayList<>();   //系統檢查+外觀檢查
    checkOrderInfoDto.setList1(list1);
    CheckItemDtoForPdf pdf1 = new CheckItemDtoForPdf();
    pdf1.setHciid1(2);
    pdf1.setHciid2(12);
    list1.add(pdf1);

    CheckItemDtoForPdf pdf2 = new CheckItemDtoForPdf();
    pdf2.setHciid1(3);
    pdf2.setHciid2(13);
    list1.add(pdf2);

    CheckItemDtoForPdf pdf3 = new CheckItemDtoForPdf();
    pdf3.setHciid1(4);  //雨刷器/清洗器/大燈清洗系統
    pdf3.setHciid2(14);//液位(雨刮液、冷卻液、剎車液)
    list1.add(pdf3);

    CheckItemDtoForPdf pdf4 = new CheckItemDtoForPdf();
    pdf4.setHciid1(5);  //離合器/換擋桿/手剎
    pdf4.setHciid2(15);//減震器/飾條/蓋罩密封情況/泄漏
    list1.add(pdf4);

    CheckItemDtoForPdf pdf5 = new CheckItemDtoForPdf();
    pdf5.setHciid1(6);  //PCM功能及導航更新
    pdf5.setHciid2(16);//備用輪胎 / 補胎
    list1.add(pdf5);

    CheckItemDtoForPdf pdf6 = new CheckItemDtoForPdf();
    pdf6.setHciid1(7);  //組合儀表/娛樂信息系統/開關
    pdf6.setHciid2(17);//改裝
    list1.add(pdf6);

    CheckItemDtoForPdf pdf7 = new CheckItemDtoForPdf();
    pdf7.setHciid1(8);  //機油油位
    pdf7.setHciid2(0);   //    list1.add(pdf7);

    CheckItemDtoForPdf pdf8 = new CheckItemDtoForPdf();
    pdf8.setHciid1(9);  //點菸器/電源插座
    pdf8.setHciid2(0);//    list1.add(pdf8);

    CheckItemDtoForPdf pdf9 = new CheckItemDtoForPdf();
    pdf9.setHciid1(10);  //安全帶/安全帶扣
    pdf9.setHciid2(0);//    list1.add(pdf9);

    CheckItemDtoForPdf pdf10 = new CheckItemDtoForPdf();
    pdf10.setHciid1(11);  //空調系統和設置
    pdf10.setHciid2(0);//    list1.add(pdf10);

    List<CheckItemDtoForPdf> list2 = new ArrayList<>();
    checkOrderInfoDto.setList2(list2);
    CheckItemDtoForPdf pdf11 = new CheckItemDtoForPdf();
    pdf11.setHciid1(18);  //散熱器進氣道(目測)
    pdf11.setHciid2(24);  //輪胎磨損情況、車橋定位
    list2.add(pdf11);

    CheckItemDtoForPdf pdf12 = new CheckItemDtoForPdf();
    pdf12.setHciid1(19);  //輪胎(N 標記、旋轉)
    pdf12.setHciid2(25);  //排氣系統
    list2.add(pdf12);

    CheckItemDtoForPdf pdf13 = new CheckItemDtoForPdf();
    pdf13.setHciid1(20);  //鋼圈(基本狀況)
    pdf13.setHciid2(26);  //車底防護裝置、護板、蓋板
    list2.add(pdf13);

    CheckItemDtoForPdf pdf14 = new CheckItemDtoForPdf();
    pdf14.setHciid1(21);  //制動盤(磨損、鏽蝕、損壞)
    pdf14.setHciid2(27);  //動力傳輸、萬向節/驅動軸
    list2.add(pdf14);

    CheckItemDtoForPdf pdf15 = new CheckItemDtoForPdf();
    pdf15.setHciid1(22);  //制動片(厚度)
    pdf15.setHciid2(28);  //泄漏(液體、氣體)和車底管路
    list2.add(pdf15);

    CheckItemDtoForPdf pdf16 = new CheckItemDtoForPdf();
    pdf16.setHciid1(23);  //卡鉗、軟管(目測)
    pdf16.setHciid2(29);  //懸掛和減震器(臂、接頭、防塵套、襯套)
    list2.add(pdf16);

    List<PreCheckFile> needfiles=new ArrayList<>();  //所需文件
    checkOrderInfoDto.setNeedfiles(needfiles);

    List<PreCheckPayType> paytypes=new ArrayList<>(); //付款方式
    checkOrderInfoDto.setPaytypes(paytypes);

    List<PreCheckOtherService> otherservices =new ArrayList<>(); //其他服務
    checkOrderInfoDto.setOtherservices(otherservices);
    for (HealthcheckDto healthcheckDto : healthchecklist) {
        if (healthcheckDto.getHealthitemtype() == 3) {   //油表值
            checkOrderInfoDto.setWohasfuel(new Float(healthcheckDto.getHealthitemvalue1()));
        }

        //訂單概覽
        checkOrderInfoDto.setOrderinfo(0);
        if (healthcheckDto.getHealthitemid() == 30) {
            if (healthcheckDto.getHealthitemvalue1() == 1) {
                checkOrderInfoDto.setOrderinfo(1);
            }
        }
        if (healthcheckDto.getHealthitemid() == 31) {
            if (healthcheckDto.getHealthitemvalue1() == 1) {
                checkOrderInfoDto.setOrderinfo(2);
            }
        }
        if (healthcheckDto.getHealthitemid() == 32) {
            if (healthcheckDto.getHealthitemvalue1() == 1) {
                checkOrderInfoDto.setOrderinfo(3);
            }
        }
        if (healthcheckDto.getHealthitemid() == 33) {
            if (healthcheckDto.getHealthitemvalue1() == 1) {
                checkOrderInfoDto.setOrderinfo(4);
            }
        }

            if(healthcheckDto.getHealthitemid()==34){
                PreCheckFile  file=new PreCheckFile();
                if(healthcheckDto.getHealthitemvalue1() == 1){    //行駛證
                    file.setHpcfcid(1);
                    needfiles.add(file);
                }
            }

            if(healthcheckDto.getHealthitemid()==35){
                PreCheckFile  file=new PreCheckFile();
                if(healthcheckDto.getHealthitemvalue1() == 1){    //客戶授權書
                    file.setHpcfcid(2);
                    needfiles.add(file);
                }
            }
        if(healthcheckDto.getHealthitemid()==36){
            PreCheckFile  file=new PreCheckFile();
            if(healthcheckDto.getHealthitemvalue1() == 1){    //保修和保養手冊
                file.setHpcfcid(3);
                needfiles.add(file);
            }
        }

        if(healthcheckDto.getHealthitemid()==37){
            PreCheckFile  file=new PreCheckFile();
            if(healthcheckDto.getHealthitemvalue1() == 1){    //車輪防盜螺栓套筒
                file.setHpcfcid(4);
                needfiles.add(file);
            }
        }
        if(healthcheckDto.getHealthitemid()==38){
            PreCheckFile  file=new PreCheckFile();
            if(healthcheckDto.getHealthitemvalue1() == 1){    //駕駛證
                file.setHpcfcid(5);
                needfiles.add(file);
            }
        }
        if(healthcheckDto.getHealthitemid()==39){
            PreCheckFile  file=new PreCheckFile();
            if(healthcheckDto.getHealthitemvalue1() == 1){    //延保證書
                file.setHpcfcid(6);
                needfiles.add(file);
            }
        }
        if(healthcheckDto.getHealthitemid()==40){
            PreCheckFile  file=new PreCheckFile();
            if(healthcheckDto.getHealthitemvalue1() == 1){    //交通事故認定書
                file.setHpcfcid(7);
                needfiles.add(file);
            }
        }


        if(healthcheckDto.getHealthitemid()==42){      //接收車輛時客戶是否在場
             if(healthcheckDto.getHealthitemvalue1() == 1){
                 checkOrderInfoDto.setIsinfactory(1);
             }else if(healthcheckDto.getHealthitemvalue1() == 2){
                 checkOrderInfoDto.setIsinfactory(2);
             } else {
                 checkOrderInfoDto.setIsinfactory(0);
             }

         }

        if(healthcheckDto.getHealthitemid()==44){    //是否在遇到噪音和駕駛動態問題時進行試駕
            if(healthcheckDto.getHealthitemvalue1() == 1){
                checkOrderInfoDto.setHastrycar(1);
            }else if(healthcheckDto.getHealthitemvalue1() == 2){
                checkOrderInfoDto.setHastrycar(2);
            } else {
                checkOrderInfoDto.setHastrycar(0);
            }


        }
        if(healthcheckDto.getHealthitemid()==46){  //現金
            if(healthcheckDto.getHealthitemvalue1()==1){
                PreCheckPayType type=new PreCheckPayType();
                type.setHpcpcid(1);
                paytypes.add(type);
            }
        }
        if(healthcheckDto.getHealthitemid()==47){  //借記/信用卡
            if(healthcheckDto.getHealthitemvalue1()==1){
                PreCheckPayType type=new PreCheckPayType();
                type.setHpcpcid(2);
                paytypes.add(type);
            }
        }

        if(healthcheckDto.getHealthitemid()==48){  //其他
            if(healthcheckDto.getHealthitemvalue1()==1){
                PreCheckPayType type=new PreCheckPayType();
                type.setHpcpcid(3);
                paytypes.add(type);
            }
        }


        if (healthcheckDto.getHealthitemid() == 49) {
            checkOrderInfoDto.setRemark(healthcheckDto.getHealthitemvalue2());
        }

        for (CheckItemDtoForPdf checkItemDtoForPdf : list1) {
            if (checkItemDtoForPdf.getHciid1() == healthcheckDto.getHealthitemid()) {
                checkItemDtoForPdf.setItemname1(healthcheckDto.getHealthitemname());
                checkItemDtoForPdf.setItemstate1(healthcheckDto.getHealthitemvalue1());
            }
            if (checkItemDtoForPdf.getHciid2() == healthcheckDto.getHealthitemid()) {
                checkItemDtoForPdf.setItemname2(healthcheckDto.getHealthitemname());
                checkItemDtoForPdf.setItemstate2(healthcheckDto.getHealthitemvalue1());
            }
        }

        for (CheckItemDtoForPdf checkItemDtoForPdf : list2) {
            if (checkItemDtoForPdf.getHciid1() == healthcheckDto.getHealthitemid()) {
                checkItemDtoForPdf.setItemname1(healthcheckDto.getHealthitemname());
                checkItemDtoForPdf.setItemstate1(healthcheckDto.getHealthitemvalue1());
            }
            if (checkItemDtoForPdf.getHciid2() == healthcheckDto.getHealthitemid()) {
                checkItemDtoForPdf.setItemname2(healthcheckDto.getHealthitemname());
                checkItemDtoForPdf.setItemstate2(healthcheckDto.getHealthitemvalue1());
            }
        }


        if(healthcheckDto.getHealthitemid()==50){   //加滿油液
           if(healthcheckDto.getHealthitemvalue1()==1){
               PreCheckOtherService  service=new PreCheckOtherService();
               service.setHpcscid(1);
               otherservices.add(service);
           }
        }

        if(healthcheckDto.getHealthitemid()==51){   //保留舊件
            if(healthcheckDto.getHealthitemvalue1()==1){
                PreCheckOtherService  service=new PreCheckOtherService();
                service.setHpcscid(2);
                otherservices.add(service);
            }
        }
        if(healthcheckDto.getHealthitemid()==52){   //標準清洗
            if(healthcheckDto.getHealthitemvalue1()==1){
                PreCheckOtherService  service=new PreCheckOtherService();
                service.setHpcscid(3);
                otherservices.add(service);
            }
        }
        if(healthcheckDto.getHealthitemid()==53){   //高級內飾清洗
            if(healthcheckDto.getHealthitemvalue1()==1){
                PreCheckOtherService  service=new PreCheckOtherService();
                service.setHpcscid(4);
                otherservices.add(service);
            }
        }
        if(healthcheckDto.getHealthitemid()==54){   //高級車身清洗
            if(healthcheckDto.getHealthitemvalue1()==1){
                PreCheckOtherService  service=new PreCheckOtherService();
                service.setHpcscid(5);
                otherservices.add(service);
            }
        }
    }
     checkOrderInfoDto.setNeedfiles(needfiles);
     checkOrderInfoDto.setPaytypes(paytypes);
     checkOrderInfoDto.setOtherservices(otherservices);

        HealthcheckallcarpartsproblemRequestDto healthcheckallcarpartsproblemRequestDto = new HealthcheckallcarpartsproblemRequestDto();
        healthcheckallcarpartsproblemRequestDto.setOrderid(orderid);
        HealthcheckallcarpartsproblemResponseDto healthcheckcarpartsproblemResponseDto = healthcheckService.getallcarpartsproblemlist(healthcheckallcarpartsproblemRequestDto);
        if (healthcheckcarpartsproblemResponseDto.getHasimage() > 0) {
            checkOrderInfoDto.setPhotoinfo(1);
        } else {
            checkOrderInfoDto.setPhotoinfo(2);
        }


        List<AllcarpartsproblemDto> allcarpartsproblemlist = healthcheckcarpartsproblemResponseDto.getAllcarpartsproblemlist();

        for (AllcarpartsproblemDto allcarpartsproblemDto : allcarpartsproblemlist) {
            if (allcarpartsproblemDto.getCarpartsid() == CarPartsEnum.CarParts1.getCode()) {
                checkOrderInfoDto.setTaiwen1(allcarpartsproblemDto.getCarpartstyreinfo().getWotpatterndepth() + "");
                checkOrderInfoDto.setYear1(allcarpartsproblemDto.getCarpartstyreinfo().getWotypeuseyear());
            }
            if (allcarpartsproblemDto.getCarpartsid() == CarPartsEnum.CarParts2.getCode()) {
                checkOrderInfoDto.setTaiwen2(allcarpartsproblemDto.getCarpartstyreinfo().getWotpatterndepth() + "");
                checkOrderInfoDto.setYear2(allcarpartsproblemDto.getCarpartstyreinfo().getWotypeuseyear());
            }
            if (allcarpartsproblemDto.getCarpartsid() == CarPartsEnum.CarParts3.getCode()) {
                checkOrderInfoDto.setTaiwen3(allcarpartsproblemDto.getCarpartstyreinfo().getWotpatterndepth() + "");
                checkOrderInfoDto.setYear3(allcarpartsproblemDto.getCarpartstyreinfo().getWotypeuseyear());
            }
            if (allcarpartsproblemDto.getCarpartsid() == CarPartsEnum.CarParts4.getCode()) {
                checkOrderInfoDto.setTaiwen4(allcarpartsproblemDto.getCarpartstyreinfo().getWotpatterndepth() + "");
                checkOrderInfoDto.setYear4(allcarpartsproblemDto.getCarpartstyreinfo().getWotypeuseyear());
            }
        }

    List<HcAttachmentInfo> attachmentsforsign =attachmentService.getCusSign(orderid,10); //檢測人員簽字
    List<HcAttachmentInfo> attachmentsforsigncust =attachmentService.getCusSign(orderid,4); //客戶簽字
    checkOrderInfoDto.setAttachmentsforsign(attachmentsforsign);
    checkOrderInfoDto.setAttachmentsforsigncust(attachmentsforsigncust);



    return checkOrderInfoDto;
}


總結如下:
1.獲取具體值的方式主要是調用Dao查詢數據庫得到。
2.單選框,多選框值的主要區別就是:單選框返回的值只有一個,多選框返回的值有多個,多
選框需要找到對應的選框顯示√就需要一個數據庫字段來鎖定它,比如在本項目中使用的是itemid來判斷,所有
pdf內容項都在一個表中以itemid爲主鍵被存儲。
3.多選框的顯示可以使用ArrayList來封裝,符合某個條件,就設置一個值給它,將它添加到List中,在pdf中通過
判斷該List中的具體值來顯示√
4.單選框一般用一個屬性來封裝,每次pdf顯示都直接找這個屬性就可以。
5.單選框的判斷分爲兩種,一種是多個選項中選一個的單選,另一種是是與否之間的單選。如果是後一種,可以
通過if...else...來賦值,前一種則不方便,因爲如果以if...else...來判斷,多選一的賦值是以最後一個符合條件的值爲準,如果最後一個賦值
是符合if判斷的賦值,那麼沒問題,除此之外所有的情況最後的值都是最後一個if...else...中的else判斷的賦值。那麼這就會導致這個單選
無法顯示內容√;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章