/*******************************************
- JS中Ajax异步调用后台处理数据(XML返回方式)
- 并将后台查询数据拼入XML,然后返回给前端解析处理
- 前端获取查询数据,并解析取值
*******************************************/
//js处理部分 1、数据校验处理提示报错
function checkData(){
if (
(
′
:
c
h
e
c
k
e
d
′
)
.
l
e
n
g
t
h
>
1
)
a
l
e
r
t
(
"
只能选择一条记录进行保障期与缴费期定义。
"
)
;
r
e
t
u
r
n
;
e
l
s
e
i
f
(
(
(':checked').length>1) { alert("只能选择一条记录进行保障期与缴费期定义。"); return; }else if((
(′:checked′).length>1)alert("只能选择一条记录进行保障期与缴费期定义。");return;elseif(((‘:checked’).length<1)){
alert(“<StrRes:StrRes id=“MSG_6809”/>”);
return;
}
var count;
checked = document.getElementsByName("checkbox");
for(var i=0;i<checked.length;i++){
var productIds = document.getElementsByName("product_id");
if(checked[i].checked){
var productId = productIds[i+1].value;
}
}
var oXML = new ActiveXObject("Microsoft.XMLDOM");
oXML.async=false; //异步处理
var url="/life/servlet/com.ebao.life.oldage.config.bank.ProductConfigServlet?saction=CHECK_BASIC_LIFE&product_id="+productId;
oXML.load(url);
if (oXML.documentElement==null) {
return false;
}
var count = oXML.documentElement.selectSingleNode("Count").text;
var errorDetail = oXML.documentElement.selectSingleNode("ErrorDetail").text;
if(count=="0"){
window.alert(errorDetail);
return false;
}else{
$("#sAction").val('DEFI_DETAIL');
form1.submit();
}
}
//Java处理部分 1、数据校验提示错误
/* 通过后台数据处理校验,并以XML的形式返回给前端处理,进行错误提示 */
public void disposeCheckBasicLife(HttpServletRequest request,HttpServletResponse response) throws GenericException {
try {
ProductConfigDAO dao = new ProductConfigDAO();
String errorDetail = “”;
int count = 0;
Long productId = Long.valueOf(Tools.toLong(event.getData(“product_id”)));
count = dao.checkBasicLifeData(productId);
if(count==0){
errorDetail = "保障期与缴费期定义”未建立关联,请先勾选该产品,再点击保存,建立关联后再操作!";
}
StringBuffer sbXML = new StringBuffer();
sbXML.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
sbXML.append("<OutEntryError>");
sbXML.append("<Count>").append(count).append("</Count>");
sbXML.append("<ErrorDetail>").append(errorDetail).append("</ErrorDetail>");
sbXML.append("</OutEntryError>");
response.setContentType("text/xml;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println(sbXML.toString());
} catch (Exception ex) {
throw ExceptionFactory.parse(ex);
}
}
//2、获取后台处理数据并取值
function selRuleType(){
var ruleType = form1.rule_type.value;
document.getElementsByName(“start_date”)[0].value = “”;
if(ruleType == 0 || ruleType == “”){
document.getElementsByName(“start_date”)[0].disabled=true;
} else {
//根据选择规则确定起始时间
var url=“/life/servlet/com.ebao.life.oldage.config.assignconfig.AssignPremiumConfigServlet?saction=SET_START_DATE&ruleType=”+ruleType;
var oXML = ajaxOper(url);
var resultCode = oXML.documentElement.selectSingleNode(“resultCode”);
if(resultCode.text != “SUCCESS”) {
var resultMsg = oXML.documentElement.selectSingleNode(“resultMsg”);
alert(resultMsg.text);
return false;
}
var list = oXML.documentElement.getElementsByTagName(“policy”); //获取policy节点中的数据
if(list.length == 0){
document.getElementsByName(“start_date”)[0].disabled=false;
}else {
for(var j=0;j<list.length;j++){
var startDate = list[j].getElementsByTagName(“startDate”)[0].text; //获取startDate节点中的数据
document.getElementsByName(“start_date”)[0].value = startDate; //将后台获取的数据传给页面name标签为start_date的value值。
document.getElementsByName(“start_date”)[0].disabled=true;
}
}
}
}
//operation Ajax
function ajaxOper(url) {
var oXML=new ActiveXObject(“Microsoft.XMLDOM”);
oXML.async=false;
oXML.load(url);
return oXML;
}
//2、后台进行数据处理,并将数据拼入XML中
public void disposeSetStartDate(HttpServletRequest request,
HttpServletResponse response) throws GenericException, Exception {
response.setContentType(“text/xml;charset=UTF-8”);
PrintWriter out = response.getWriter();
StringBuffer sb = new StringBuffer();
String ruleType = request.getParameter("ruleType");
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
sb.append("<result>\n");
AssignPremiumConfigDao assignPremiumConfigDao = new AssignPremiumConfigDao();
List<AssignPremiumConfigForm> list = assignPremiumConfigDao.setStartDate(ruleType);
sb.append("<list>\n");
for (AssignPremiumConfigForm item : list) {
sb.append("<policy>\n");
sb.append("<startDate>").append(item.getStartDate()).append(
"</startDate>\n");
sb.append("</policy>\n");
}
sb.append("</list>\n");
sb.append("<resultCode>").append("SUCCESS").append("</resultCode>\n");
sb.append("<resultMsg>").append("").append("</resultMsg>\n");
sb.append("</result>");
out.println(sb.toString());
}
/**************************************
- Ajax异步处理json返回方式 data:{},为入参
- success: function(json) 和 error:function(json)
- 分别是成功和失败的数据处理解析
**************************************/
function doSplit(){
var feeID = form1.fee_id.value;
var policyID = form1.sel_policy_id.value;
var invoiceId = form1.sel_invoice_id.value;
var invoiceStatus = form1.sel_invoice_status.value;
var payPrintFlag = form1.pay_print_flag.value;
var returnInvoiceId =“”;
var returnFpdm= “” ;
var returnFphm= “” ;
var returnKprq= “” ;
var allInvoiceId = “”;
var returnXmlId = “”;
var returnXmlInfo = “”;
$.ajax({
type : ‘GET’,
dataType : ‘json’,
cache : false,
url : ‘<%=UrlMap.mapServletUrl(“com.ebao.life.invoiceprint.PaperInvoicePrintServlet”)%>’,
data : {
saction : ‘RENEW_PAPERINVOICEPRINT_OPEN’,
fee_id : feeID,
policy_id : policyID,
invoice_id : invoiceId,
invoice_status : invoiceStatus,
pay_print_flag : payPrintFlag
},
success: function(json) {
var count = 0;
var openFlg = false;
for(var o in json){
if (json[o].error_code == ‘ERR_39937’) {
alert(“<StrRes:StrRes id=“ERR_39937” />”);
form1.btnOpen.disabled = false;
return;
}
if (count > 0) {
if(openFlg){
returnInvoiceId=returnInvoiceId +‘,’;
returnFpdm = returnFpdm +‘,’;
returnFphm = returnFphm +‘,’;
returnKprq = returnKprq +‘,’;
}
allInvoiceId = allInvoiceId+‘,’;
returnXmlId = returnXmlId+‘,’;
returnXmlInfo = returnXmlInfo+‘,’;
}
//4.调用开具接口
var returnXml= InvoiceIssue(json[o].reqxml) ;
//获取对应节点中的数据值
var returncode = getTotalMidValue(returnXml, "<returncode>","</returncode>"); //
var returnmsg = getTotalMidValue(returnXml, "<returnmsg>","</returnmsg>"); //
var fpdm = getTotalMidValue(returnXml, "<fpdm>","</fpdm>"); //
var fphm = getTotalMidValue(returnXml, "<fphm>","</fphm>"); //
var kprq = getTotalMidValue(returnXml, "<kprq>","</kprq>"); //
allInvoiceId=allInvoiceId+json[o].invoice_id;
returnXmlId = returnXmlId + json[o].xml_id;
returnXmlInfo = returnXmlInfo + returnXml;
if(returncode==0){
alert('<StrRes:StrRes id="MSG_355314" />');
form1.btnOpen.disabled = false;
returnInvoiceId=returnInvoiceId+json[o].invoice_id;
returnFpdm=returnFpdm + fpdm ;
returnFphm=returnFphm + fphm ;
returnKprq=returnKprq + kprq ;
openFlg = true;
}else{
alert('<StrRes:StrRes id="MSG_359084" />'+returnmsg);
form1.btnOpen.disabled = false;
}
count++;
}//end for
form1.returnInvoiceId.value =returnInvoiceId;
form1.returnFpdm.value =returnFpdm;
form1.returnFphm.value =returnFphm;
form1.returnKprq.value =returnKprq;
form1.allInvoiceId.value =allInvoiceId;
form1.returnXmlInfo.value =returnXmlInfo;
form1.returnXmlId.value =returnXmlId;
//保存开具数据
form1.saction.value = "RENEW_PAPERINVOICEPRINT_OPEN_SAVE";
form1.action = "<%=UrlMap.mapServletUrl("com.ebao.life.invoiceprint.PaperInvoicePrintServlet")%>" ;
form1.submit();
},
error:function(json) {
alert('<StrRes:StrRes id="MSG_356435"/>');
}
}
);
}
public void disposePaperInvoicePrintOpen(HttpServletRequest request, HttpServletResponse response, long empID) throws GenericException {
Log.info(“======= Renew disposePaperInvoicePrintOpen start ========”);
String policyID = “”;
String feeID = “”;
String invoiceID = “”;
String invoiceStatus = “”;
try {
policyID = request.getParameter(“policy_id”);
feeID = request.getParameter(“fee_id”);
invoiceID = request.getParameter(“invoice_id”);
invoiceStatus = request.getParameter(“invoice_status”);
//***add by xxxxxxx需求–>>“是否打印非收入款项”
String payPrintFlag = event.getData(“pay_print_flag”);
response.setContentType(“application/json;charset=UTF-8”);
PrintWriter out = response.getWriter();
StringBuffer json = new StringBuffer();
//xxxx权限 modify by hedl 2017-1-18
if (PsPaperInvoicePrintDAO.getOrganIdConfig(event.getLifeUser().getOrganId(),Long.parseLong(policyID))){
json.append(" [{“);//发票信息
json.append(”‘error_code’:“).append(”‘ERR_39937’“);
json.append(”}“);
json.append(”]");
}else{
// 价税分离处理 并 获取相应的xml信息
json = bean.vatSplitInvoice(policyID, invoiceID, Long.parseLong(feeID), empID, invoiceStatus,payPrintFlag);
}
Log.info("===== Renew disposePaperInvoicePrintOpen end========");
Log.info("disposePaperInvoicePrintOpen returnXml: " + json.toString());
out.println(json.toString());
out.close();
} catch (Exception ex) {
bean.insertInvoiceXml("", getExceptionMsg(ex), invoiceID, feeID , "Renew_Do_Open_Error", "");
throw ExceptionFactory.parse(ex);
}
}
public StringBuffer vatSplitInvoice(String policyId, String invoiceId, long feeID, long empId ,String invoiceStatus, String payPrintFlag) throws
GenericException {
List<Long> invoices = new ArrayList<Long>();
StringBuffer json = new StringBuffer();
String oneInvoiceInfo = "";
long xmlId = 0;
try{
if (invoiceId.equals("")){
//调用价税分离接口
dao.vatSplitInvoice(Long.parseLong(policyId), feeID, empId, payPrintFlag);
//获取当前续期保单下的invoices
invoices = dao.getInvioceIds(feeID);
}else if("3".equals(invoiceStatus) || "4".equals(invoiceStatus) || "5".equals(invoiceStatus)){
NBPaperInvoicePrintDAO NBDao = new NBPaperInvoicePrintDAO();
invoices.add(NBDao.reOpenInvoice(Long.parseLong(invoiceId), empId));
}else{
invoices.add(Long.parseLong(invoiceId));
}
json.append(" [");
//获取发票的json
for(int i=0; i<invoices.size(); i++){
json.append("{");
json.append("'error_code':").append("''").append(",");
json.append("'invoice_id':").append("'"+invoices.get(i)+"'").append(",");
oneInvoiceInfo = dao.getInvioceInfo(invoices.get(i),feeID);
json.append("'reqxml':").append("'"+ oneInvoiceInfo +"'").append(",");
// 拼接发票操作日志的ID,调用开具后,根据日志ID保存税控返回信息。
xmlId = this.insertInvoiceXml(oneInvoiceInfo, "", String.valueOf(invoices.get(i)), String.valueOf(feeID), "Renew_Split_Invoice_Xml","");
json.append("'xml_id':").append("'"+ xmlId +"'");
json.append("}");
if(i < invoices.size()-1){
json.append(",");
}else{
json.append("");
}
}
json.append("]");
return json;
}
catch (Exception e) {
throw ExceptionFactory.parse(e);
}
}