⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uipremiuminvoiceprintfacade.java

📁 用java实现的套打程序.请参考一定的jsp文件.注意类的变化.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.sinosoft.visa.ui.control.facade;

import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import org.apache.struts.action.*;

import com.sinosoft.prpall.dbsvr.cb.DBPrpCitemCar;
import com.sinosoft.prpall.dbsvr.cb.DBPrpCmain;
import com.sinosoft.sff.blsvr.BLPrpJpayRefRec;
import com.sinosoft.sff.pub.*;
import com.sinosoft.sff.schema.PrpJpayRefRecSchema;
import com.sinosoft.sysframework.common.datatype.DateTime;
import com.sinosoft.sysframework.common.util.ParamUtils;
import com.sinosoft.utiall.blsvr.BLPrpDagent;
import com.sinosoft.utiall.blsvr.BLPrpDcurrency;
import com.sinosoft.utiall.blsvr.BLPrpDrisk;
import com.sinosoft.utiall.blsvr.BLPrpDuser;
import com.sinosoft.utility.error.UserException;
import com.sinosoft.utility.string.ChgDate;
import com.sinosoft.utility.string.Str;
import com.sinosoft.visa.dto.custom.*;

/**
 * 调用Jasper模板打印
 * 
 * @author GUWENSI
 * 
 */
public class UIPremiumInvoicePrintFacade extends Action {

    JasperReport jasperReport;

    JasperRunManager jasperRunManager;

    JasperPrint[] jasperPrint = new JasperPrint[3];

    List jasperPrintList = new ArrayList();

    JRPdfExporter jRPdfExporter;

    public ActionForward execute(ActionMapping actionMapping,
            ActionForm actionForm, HttpServletRequest httpServletRequest,
            HttpServletResponse httpServletResponse) throws UserException,JRException,Exception {

        // File reportFile = new File(getServlet().getServletContext()
        // .getRealPath("/template/InvoicePrint_test.jasper"));
        //SangMingqian 20070416 根据发票种类的不同,调用不同的模板
        ParamUtils paramUtils = new ParamUtils(httpServletRequest);
        String strVisaCode = paramUtils.getParameter("VisaCode");
        String path = getServlet().getServletContext().getRealPath(
                "/template/"+strVisaCode+".jasper");
        String path2 = getServlet().getServletContext()
                .getRealPath("/template");
        path2 += "/";
        HashMap emptyHashMap = new HashMap();
        emptyHashMap.put("SUBREPORT_DIR", path2);

            byte[] bytes = JasperRunManager.runReportToPdf(path, emptyHashMap,
                    new JRBeanCollectionDataSource(generatDtoList(httpServletRequest)));

            httpServletResponse.setContentType("application/pdf");
            httpServletResponse.setContentLength(bytes.length);
            ServletOutputStream ouputStream = httpServletResponse
                    .getOutputStream();
            ouputStream.write(bytes, 0, bytes.length);
            ouputStream.flush();
            ouputStream.close();
            
        

        return actionMapping.findForward("success");
    }

    /**
     * 在类中取得当前文件所在的相对路径与绝对路径
     * 
     * @return String
     */
    public String getClassPath() {
        String strClassName = getClass().getName();
        String strPackageName = "";
        if (getClass().getPackage() != null) {
            strPackageName = getClass().getPackage().getName();
        }

        String strClassFileName = "";
        if (!"".equals(strPackageName)) {
            strClassFileName = strClassName.substring(
                    strPackageName.length() + 1, strClassName.length());
        } else {
            strClassFileName = strClassName;
        }

        URL url = null;
        url = getClass().getResource(strClassFileName + ".class");
        String strURL = url.toString();
        strURL = strURL.substring(strURL.indexOf('/') + 1, strURL
                .lastIndexOf('/'));
        return strURL;
    }

    public List generatDtoList(HttpServletRequest request) throws UserException,
            Exception {
        RiskNameDto riskNameDto = null;
        List InvoicePrintDtoList = new ArrayList();
        List certiNoDtoList = new ArrayList();
        List certiNoListDtoList = new ArrayList();
        List riskNameDtoList = new ArrayList();
        ParamUtils paramUtils = new ParamUtils(request);
        BLPrpDagent blPrpDagent = new BLPrpDagent();
        BLPrpDuser blPrpDuser = new BLPrpDuser();
        BLPrpDcurrency blPrpDcurrency = new BLPrpDcurrency();
        BLPrpJpayRefRec blPrpJpayRefRec = new BLPrpJpayRefRec();
        BLPrpDrisk blPrpDrisk = new BLPrpDrisk();
        
        String[] arrCheckFlag = paramUtils.getParameterValues("checkFlag");// 选中标志
        String[] arrRiskName = paramUtils.getParameterValues("RiskCode");
        String[] arrClassCode = paramUtils.getParameterValues("ClassCode");
        String[] arrPayrefFee = paramUtils.getParameterValues("PayRefFee");
        String[] arrCertiType = paramUtils.getParameterValues("CertiType");
        String[] arrCertiNo = paramUtils.getParameterValues("CertiNo");
        String[] arrSerialNo = paramUtils.getParameterValues("SerialNo");
        String[] arrPayRefReason = paramUtils
                .getParameterValues("PayRefReason");
        String[] arrAgentCode = paramUtils.getParameterValues("AgentCode");
        String[] arrPayRefTimes = paramUtils.getParameterValues("PayRefTimes");
        String[] arrInvoiceNo = paramUtils.getParameterValues("InvoiceNo");
        String[] arrAppliName = paramUtils.getParameterValues("AppliName");
        String[] arrHandlerName = paramUtils.getParameterValues("HandlerName");
        String strVisaCode = paramUtils.getParameter("VisaCode");
        String strLost = paramUtils.getParameter("lost");
        String invoiceType = paramUtils.getParameter("InvoiceType");
        String payRefName = paramUtils.getParameter("PayRefName");
        String strRemark = paramUtils.getParameter("Remark");       
        String strVisaSerialNo = paramUtils.getParameter("VisaSerialNo");
        String strCurrency = paramUtils.getParameter("Currency");
        String strVisaName = paramUtils.getParameter("VisaName");
        String amount = paramUtils.getParameter("SumPayRefFee").replaceAll(",", "");
        String amountReal = amount; //扣除税金后的保费金额
        String amountTaxActual = "0"; //应缴税金
        String amountPreviousPay = "0"; //补缴税金
        String amountLateFee = "0"; //滞纳金
        String strVisaHandlerCode = paramUtils.getParameter("VisaHandlerCode");
        String strPayRefName = paramUtils.getParameter("PayRefName");
        //取应收币种和实收币种,应收金额
        String[] arrCurrency1 = paramUtils.getParameterValues("Currency1");//应收币种
        String[] arrCurrency2 = paramUtils.getParameterValues("Currency2");//实收币种
        String[] arrPlanFee = paramUtils.getParameterValues("PlanFee");//应收金额
        String strComCodeP = (String) request.getSession().getAttribute("ComCode");
        String strVisaHanlerName = blPrpDuser.translateCode(paramUtils
                .getParameter("VisaHandlerCode"), true);
        String strCurrencyName = blPrpDcurrency
                .translateCode(strCurrency, true);
        String amountName = Amount.toChineseMoney(Double.parseDouble(amount),
                strCurrency);
        String invoiceDate = DateTime.current().toString().substring(0, 10);
        String payeeName = (String) request.getSession().getAttribute(
                "UserName");
        String strOperatorCode = (String) request.getSession().getAttribute(
                "UserCode");
        String strComCode = (String) request.getSession().getAttribute(
                "InvoiceComCode");//发票管理单位
        String strVisaRemark = strRemark;//发票的备注项,开票后将发票的抬头(付款人)+开票金额+经办人+收付员写入备注项,以供在发票遗失或作废时候
                                  //取数显示。
        String strTaxRemark = "";
        
        DBPrpCmain dbPrpCmain = new DBPrpCmain();
        DBPrpCitemCar dbPrpCitemCar = new DBPrpCitemCar();
        String printNo="";
        String licenseNo="";       
        
        ChgDate chgDate = new ChgDate();
        List temp1 = new ArrayList();
        List temp2 = new ArrayList();
        List temp3 = new ArrayList();
        List temp4 = new ArrayList();
        List temp5 = new ArrayList();
        List temp6 = new ArrayList();
        List temp7 = new ArrayList();
        List temp8 = new ArrayList();
        List temp9 = new ArrayList();
        String strPrintDate = chgDate.getCurrentTime("yyyy-MM-dd");
        for (int i = 0; i < arrCertiNo.length; i++) {
            if (arrCheckFlag[i].equals("Y")) {
                temp1.add(arrCertiType[i]);
                temp2.add(arrCertiNo[i]);
                temp3.add(arrSerialNo[i]);
                temp4.add(arrPayRefReason[i]);
                temp5.add(arrPayRefTimes[i]);
                temp6.add(arrCurrency1[i]);
                temp7.add(arrCurrency2[i]);
                temp8.add(arrPlanFee[i]);
                temp9.add(arrAppliName[i]);
                if(arrPayRefReason[i].equals("R72")){
                    amountTaxActual = String.valueOf(Double.parseDouble(Str.chgStrZero(amountTaxActual))+Double.parseDouble(Str.chgStrZero(arrPlanFee[i])));
                    amountReal = String.valueOf(Double.parseDouble(amountReal)-Double.parseDouble(Str.chgStrZero(arrPlanFee[i])));                    
                }else if(arrPayRefReason[i].equals("R73")){
                    amountPreviousPay = String.valueOf(Double.parseDouble(Str.chgStrZero(amountPreviousPay))+Double.parseDouble(Str.chgStrZero(arrPlanFee[i])));
                    amountReal = String.valueOf(Double.parseDouble(amountReal)-Double.parseDouble(Str.chgStrZero(arrPlanFee[i])));                                        
                }else if(arrPayRefReason[i].equals("R74")){
                    amountLateFee = String.valueOf(Double.parseDouble(Str.chgStrZero(amountLateFee))+Double.parseDouble(Str.chgStrZero(arrPlanFee[i])));
                    amountReal = String.valueOf(Double.parseDouble(amountReal)-Double.parseDouble(Str.chgStrZero(arrPlanFee[i])));                                                            
                }
            }
        }
        String[] arrCertiType1 = new String[temp1.size()];
        String[] arrCertiNo1 = new String[temp1.size()];
        String[] arrSerialNo1 = new String[temp1.size()];
        String[] arrPayRefReason1 = new String[temp1.size()];
        String[] arrPayRefTimes1 = new String[temp1.size()];
        arrCurrency1 = new String[temp1.size()];
        arrCurrency2 = new String[temp1.size()];
        arrPlanFee = new String[temp1.size()];
        arrAppliName = new String[temp1.size()];

        for (int i = 0; i < temp1.size(); i++) {
            arrCertiType1[i] = (String) temp1.get(i);
            arrCertiNo1[i] = (String) temp2.get(i);
            arrSerialNo1[i] = (String) temp3.get(i);
            arrPayRefReason1[i] = (String) temp4.get(i);
            arrPayRefTimes1[i] = (String) temp5.get(i);
            arrCurrency1[i] = (String) temp6.get(i);
            arrCurrency2[i] = (String) temp7.get(i);
            arrPlanFee[i]= (String) temp8.get(i);
            arrAppliName[i] = (String) temp9.get(i);    
        }
        //归并连续保批单号
        String[] arrCertiNoMerge = PaymentCommon.arrayCertiNo(arrCertiNo1);

        PrpJpayRefRecSchema prpJpayRefRecSchema = new PrpJpayRefRecSchema();
        prpJpayRefRecSchema.setOperateDate(strPrintDate);
        prpJpayRefRecSchema.setOperatorCode(strOperatorCode);
        prpJpayRefRecSchema.setPrinterCode(strOperatorCode);
        prpJpayRefRecSchema.setOperateUnit(strComCode);
        prpJpayRefRecSchema.setCurrency2(strCurrency);
        prpJpayRefRecSchema.setVisaCode(strVisaCode);
        prpJpayRefRecSchema.setVisaName(strVisaName);
        prpJpayRefRecSchema.setVisaSerialNo(strVisaSerialNo);
        prpJpayRefRecSchema.setPrintDate(strPrintDate);
        prpJpayRefRecSchema.setVisaHandler(strVisaHandlerCode);
        prpJpayRefRecSchema.setPayRefName(strPayRefName);
        prpJpayRefRecSchema.setRemark(strRemark);
        prpJpayRefRecSchema.setPayRefFee(amount);
        
        String agentCode="";
        
        //合开发票
        if (invoiceType.equals("1")) {

            int vLength = arrCheckFlag.length;
            for (int i = 0; i < vLength; i++) {
                if (arrCheckFlag[i].equals("Y")) {
                    if(null!=arrAgentCode[i])
                    if(agentCode.equals("")){
                        agentCode=blPrpDagent.translateCode(arrAgentCode[i],true);
                    }
                    if(printNo.equals("")){
                        dbPrpCmain.getInfo(arrCertiNo[i]);
                        printNo=" \n保单流水号:"+dbPrpCmain.getPrintNo();
                    }
                    if (licenseNo.equals("")) {
                        if (arrClassCode[i].equals("05")) {
                           dbPrpCitemCar.getInfo(arrCertiNo[i], "1");
                           licenseNo="车     牌     号:"+dbPrpCitemCar.getLicenseNo();
                        }
                    }
                    riskNameDto = new RiskNameDto();
                    //不同险种不能合开,在List中只填入一个险种名
                    if(riskNameDtoList.size()==0)
                    {
                        String strRiskName = blPrpDrisk.translateCode(arrRiskName[i], true);
                        riskNameDto.setRiskName(strRiskName);
                        riskNameDtoList.add(riskNameDto);
                    }
                }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -