`

 
阅读更多

背景目的:

为了配合定价模型的实施,需要建立一套非定价政策的自动核保规则引擎,现有的自动核保规则系统已不能满足新理念的需求,故需重新建造。

<!--EndFragment-->

主要功能:

提供天平车险业务在承保系统、电销系统、网销系统关于非定价政策的规则设置和执行功能,包含规则匹配、非定价政策、集合维护、车辆黑名单四个模块。其中规则匹配用于指定各业务类型适用的非定价政策包(作用等同于现在自动核保引擎的口径一);非定价政策包含前置规则、新保规则(禁保、必保、限保)、续保规则、批改规则、资料审验规则、特约管理规则六大部分;集合维护提供非定价政策中决策表字段值的打包功能,包括车型包、分销商包。 

一、 业务流程

1、

2、 业务流程说明

机构核保人将所有的非定价政策以决策表的形式整理好后,导入系统,规则引擎经过一系列的定位、解析后将规则结果(保或不保,以什么条件承保)反馈给核心业务系统。

 

二、 规则流

1)系统在对每单业务进行规则判断时,始终遵循以下规则流顺序,其中某项不通过时后面的规则将不再执行。

 

 项目架构:SpringMVC,ibatis,jboss,oracle10g,poi,jbpm,json-lib,jfreechart,junit

spring相关jar(spring.jar,spring-aop-2.5.6.jar,spring-beans-2.5.6.jar,spring-context-2.5.6.jar,spring-core-2.5.6.jar,spring-jms-2.5.6.jar,spring-mock.jar,spring-modules-jbpm31.jar,spring-oxm-tiger-1.5.8.jar,spring-tx-2.5.6.jar)

项目工具:PowerDesigner,SecureCRT5.0,jboss,PLSQLDeveloper,Oracle10g,eclipse

项目中可以复用的地方:

1.动态导入jsp文件:<%@include file="../common/tag_include.jsp"%>

2.用iframe动态导入页面

<iframe id="tabIframe" name="tabIframe" src="<%=request.getContextPath()%>/decisionRuleUpdateInput2.do?ruleId=<c:out value="${calib0.forbiddenRule.ruleId}" />"  space="0" vspace="0" marginheight="0" marginwidth="0" frameborder="0" height="100%" width="100%"></iframe>

3.iframe动态导入的窗口高度随内容相应变化

3.1 calib0_view.jsp

<iframe id="tabIframe" name="tabIframe" src="<%=request.getContextPath()%>/decisionRuleUpdateInput2.do?ruleId=<c:out value="${calib0.forbiddenRule.ruleId}" />"  space="0" vspace="0" marginheight="0" marginwidth="0" frameborder="0" height="100%" width="100%"></iframe>

3.2 decisionRuleRelationCode_update2.jsp

<tr>
    <td colspan="4" align="left">
    选择版本号: <select id="versionNo1" onchange="javascript:changeVersion(this);">
             <option value="">请选择</option>
               <c:forEach var="tab" items="${decisionRule.tables}" varStatus="status">
      <option value="<c:out value="${tab.tableId}"/>" <c:if test="${tab.versionNo==decisionRule.versionNo}">selected="selected"</c:if>><c:out value="${tab.versionNo}"/></option>
     </c:forEach>
     </select>
     <input type="button" class="tpbutton"  name="btnEdit" value=" 导入实例数据 " onClick="importObject();" />
    </td>
   </tr> 

#######################################

js代码:

<script languge="javascript">

function init(){
 var changeValue = document.getElementById("versionNo1").value;
 if(tempVar != ''){
  document.getElementById(tempVar).style.display = "none";
 }
 if(changeValue != ''){
  document.getElementById(changeValue).style.display = "block";
 }
 tempVar = changeValue;

#################
changeVersion(form1.versionNo1);

###################

function SetWinHeight(obj){
   var win=obj;
   if (document.getElementById){
         if (win && !window.opera){
                   if (win.contentDocument && win.contentDocument.body.offsetHeight){
                       win.height = win.contentDocument.body.offsetHeight;    
                   }else if(win.Document && win.Document.body.scrollHeight){
                       win.height = win.Document.body.scrollHeight;
                   }
         }
     }
}

################

var tempVar = '';
function changeVersion(obj){
 var changeValue = obj.value;
 //var index  = obj.selectedIndex;
 //var changeText = obj.options[index].text;
 //document.getElementById("versionNo").value = changeText;
 if(tempVar != ''){
  document.getElementById(tempVar).style.display = "none";
 }
 if(changeValue != ''){
  document.getElementById(changeValue).style.display = "block";
 }
 tempVar = changeValue;
 SetWinHeight(parent);
}

 

</script>

#############################

项目中模板化的js文件:

###################

/**
     * 功能:select对象动态添加Options项
     * @param {} objSelectNow select对象
     * @param {} txt    显示值text
     * @param {} val    值value
     */ 
 function addOption(objSelectNow, txt, val) { 
        // / 使用W3C标准语法为SELECT添加Option 
        var objOption = document.createElement("option"); 
        objOption.text = txt; 
        objOption.value = val; 
        objSelectNow.options.add(objOption); 
    }

###################

1)动态添加table-row.

function addTableRow() {  
   var listTable = document.getElementById('mytable');
   var row = listTable.insertRow(listTable.rows.length);
   var cells = new Array(1);
   for(var i = 0,len =cells.length;i < len;i++){
     cells[i] = row.insertCell();
   }
   infoNum = infoNum + 1;
   //动态添加值开始
   var objSel = document.getElementById("cfo");
     var ops = objSel.options;
     
   //条件列
   var limitFlag0 = document.createElement("<select name='conditionInfo'>");
   var delBtn = document.createElement("<input id='"+infoNum+"' name='btnSave' value='删除 ' type='button' class='tpbutton' onclick='javasript:delTableRow(this);'>");
   addOption(limitFlag0,"请选择","");
   limitFlag0.style.width="300";
   for(var i=0; i<ops.length; i++){
     addOption(limitFlag0,ops[i].text,ops[i].value);
   cells[0].appendChild(limitFlag0);
    }
    cells[0].appendChild(delBtn);
     
 }

2)动态删除table-row.

//删除行 
function delTableRow(obj){
  var tableObj = document.getElementById("mytable");
      tableObj.deleteRow(obj.parentElement.parentElement.rowIndex);

}

3)checkbox全部选中/取消

<TR>
                    <TD colspan="15">
                        <input type="checkbox" name="cbSelectAll" id="cbSelectAll" class="checkall" onClick="selectAll_TP(form1,this);">
                        <label for="cbSelectAll">
                            全选/取消&nbsp;
                        </label>
                    </TD>
                </TR>

#######################

function selectAll_TP(formObj,obj){
 var inputArray = formObj.elements;
 for(var i = 0; i < inputArray.length; i++){
  try{   
   if(inputArray[i].type == "checkbox"){    
    inputArray[i].checked = obj.checked;    
   } 
  }catch(e){   
  } 
 }
}

4)批量删除选中的checkbox选项

function deleteObject(){ 
    var raAll = document.getElementsByName('objectId');
 if (raAll.length<1){
  alert("请先选中!");
  return;
 }
 var objectId = "";
 var k=-1;
 for (var i=0; i<raAll.length; i++) {
  if(raAll[i].checked == true ){
   k++;
   objectId = raAll[i].value;
  }
 }
 if(k<0){
  alert("请先选中!");
  return;
 }
var gnl=confirm("你真的确定要删除吗?");
if (gnl==true){
 form1.target="hiddenFrame";
 form1.action="calib0Delete.do";
    form1.submit();
    form1.btnDelete.disabled=true;
}else{
return false;
}
}

5)其他js方法:

function searchForm(){
 form1.target="_self";
 form1.action="calib0Search.do";
 form1.submit();
}

function viewDetail(objectId){
 var url = "calib0View.do?calibId="+objectId;
 window.open(url,'viewObject',"scrollbars=yes,resizable=yes,status=no,width=800,height=600");
}

function addObject(){
 var url = "calib0AddInput.do";
    window.open(url,'createObject',"scrollbars=yes,resizable=yes,status=no,width=800,height=600");
}

 function addObject(){
 var departmentCode = form1.departmentCode.value;
 var channelSourceCode = form1.channelSourceCode.value;
 var businessType = form1.businessType.value;
 var applyType = form1.applyType.value;
 var forbiddenRuleId = form1.forbiddenRuleId.value;
 var mustRuleId = form1.mustRuleId.value;
 var limitRuleId = form1.limitRuleId.value;
 if(departmentCode.trim()==""){
  alert("机构不能为空");
  form1.departmentCode.focus();
  return;
 }
 if(channelSourceCode.trim()==""){
  alert("渠道不能为空");
  form1.channelSourceCode.focus();
  return;
 }
 if(businessType.trim()==""){
  alert("业务类型不能为空");
  form1.businessType.focus();
  return;
 }
 if(applyType.trim()==""){
  alert("投保方式不能为空");
  form1.applyType.focus();
  return;
 }
 if(forbiddenRuleId.trim()==""){
  alert("禁保规则不能为空");
  form1.forbiddenRuleId.focus();
  return;
 }
 if(mustRuleId.trim()==""){
  alert("必保规则不能为空");
  form1.mustRuleId.focus();
  return;
 }
 if(limitRuleId.trim()==""){
  alert("限保规则不能为空");
  form1.limitRuleId.focus();
  return;
 }
    form1.submit();
    form1.btnSave.disabled=true;
}
6)机构二级联动

<script language="javascript" src="<%=request.getContextPath()%>/js/xmlcommon.js"></script>(导入)

function departmentCodeChange(departmentCode){
 url = "calib0GetDecisionRule.do?departmentCode="+departmentCode;
 handlerRequestURLXML( url, setFields );
}
function setFields(request) {
 setElementList(request);
}

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics