📄 uipremiuminvoiceprintfacade.java
字号:
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 + -