test.txt 14.2 KB
 <plugin>
		        <groupId>org.apache.maven.plugins</groupId>
		        <artifactId>maven-surefire-plugin</artifactId>
		        <version>2.18.1</version>
		        <configuration>
		          <skipTests>true</skipTests>
		        </configuration>
		      </plugin>
		      
		      currentpolicyaddress
		      
		      ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
		      
		      

    
 
    c129f073605b4f4e800c394c1c66a20c
    e70c1c41d0d1470abf9b712acffab8ce
    
    
    7dc7b0c7853e4641958337a416e4f888
    
    
  


分单结果批量调整满足条件
1.失效件:
(1)保单进入失效月次月至失效日起两年内;
(2)失效原因满足下列其中一项:
     保全:未在规定宽限期内缴纳续期保费;
     保全:借款本金和利息和超过保单现金价值;
     保全:保单的现金价值不足以垫缴保费;
(3)保单渠道与收展服务人员岗位相匹配。
2.缓缴件
(1)保单有效状态的长险(万能险);
(2)保单渠道与收展服务人员岗位相匹配。





自定义查询保单落图:gras/falling/queryPageData----》FallingMapService.queryPageDatas()
获取分区区域列表:gras/branchGeo/getBranchGeoInfoPageByCode----》grasBranchGeoService.selectBranchGeoInfoPageByCode()
获取区域点面数据:gras/branch/getBranchGeoByBranchCode---》branchInfoService.getBranchGeoByBranchCode()
根据机构代码获取渠道:/gras/branchRegion.getBranchRegion--》grasBranchGeoService.getBranchRegion()

根据机构号查询保单:/gras/resultCheck/selectByBranchCode----》ResultCheckService.selectByBranchCode()

根据传入条件查询保单信息:/gras/resultCheck/queryPolicy--》ResultCheckService.queryPolicy()

FallingMapService.outInResult()
FallingMapService.resultput()
ElasticSearchServiceImpl类
ElasticSearchPolicyServiceImpl类

/gras/menu/updateMenus---》menuService.updateByRoleIdAndMenus()

/gras/resultCheck/getDatasExportToExcel----》ResultCheckService.selectForExcel()

批量调整:gras/resultCheck/adjustEmp----》ResultCheckService.adjustEmp






 1:目前系统中删除操作涉及的表有:GRAS_BRANCH_GEO、GRAS_BRANCH_STYLE、GRAS_AREA_STAFF、GRAS_SYS_ROLE_MENU、GRAS_SYS_MENU、GRAS_ASSIGN_FAILED_RECORD
 
 
 

 
 
 

]863605用户,调整保单号:P000000042641127,收展服务人员:H000000000005697,保单渠道为银代,收展服务人员岗位为银代收展专员



 
 
 
 
 
 
要在代码中写一个机制,连接-更新-完成数据库的一个事物时写一次用户信息,确保一次数据库操作(事务)都有写用户信息。这样触发器才能获取到正确的用户

    
    
    
    
    
    
    
    
    
    
    
    "UIWL_AN1","UIED_AN1","UIAN_DN1","UIAN_EN1","UBWL_AN1","UBEN_AN1","UBED_CN1"
    
    
    
    
四、保单离职交接规则:
1判断是否为离职交接保单前置条件:此规则定义的离职人员是指离职时间为操作离职保单交接这个动作的当月或前一个月;
例如:人员在操作批量调整的当月和上一月离职为离职交接
2.离职人员名下所有已实收及未收保单均要交接,并计入新接收人考核;
3.离职人员名下未收件交接遵循“应缴月为同一个月份的保单只能交接给同一个人,不允许分别交接给多个人员”,
注意:同一个月份保单交接,批量导入时,RN系统是从第一行开始往下校验,即“如果操作同一个月份的保单交接,
服务人员填了多个接收人员工号,系统会先校验第一行的工号,后面出现的工号不允许再交接该月的保单”。
4.不同月份的保单可以分别交接给不同的人或交接给同一个人
例如:A在2018年4月离职,A名下所有保单有2月、3月、4月、5月、6月的保单需交接。2月的单交接给B,
(2月的单不可以一部分交接给B,一部分又交接给C)、3月、4月的单可以交接给C、5月的单可以交接给D、6月的单可以交接给E、或者2月-6月的单全部交接给B。



System[gras]


void setUser(String userName);
<parameterMap id="stsReturn_param" type="java.lang.String">
          <parameter property="userName" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"></parameter>
   </parameterMap>
  <update  id="setUser" parameterMap="stsReturn_param">
         call gracde.gra_sys_package.set_user(?)
  </update>
  
  
  
 private List<Map<String, String>> quitAssign(List<String> policyNoList, List<JSONObject> policyList)
    {
        //key:应缴日(1812)年份加月份   value{现服务人员代码,服务人员代码}
        Map<String, Map> map = new HashMap<String, Map>();
        //{现服务人员代码,服务人员代码}
        Map<String, String> policyMap = new HashMap<String, String>();
        //最后符合条件的保单信息
        List<Map<String, String>> policySuccessList = new ArrayList<>();
        Map<String, String> policySuccessMap = null;
        Date nowDate = new Date();
        //获取当前年份
        int nowYear = DateUtil.getYear(nowDate);
        int nowMonth = DateUtil.getMonth(nowDate);
        Map<String,String> paramMap=new HashMap<String,String>();
        for (String item : policyNoList)
        {
            for (JSONObject policyJson : policyList)
            {
                String policyNo = policyJson.getString("policyNo");
                String servicerNo = policyJson.getString("servicerNo");
                try
                {
                    if (item.equals(policyNo))
                    {
                        policySuccessMap = new HashMap<>();
                        /**
                         * 处理离职交接规则
                         */
                        //根据保单号从数据库取现服务人员
                        RNPolicyServiceInfo rnPolicyServiceInfo = servicerInfoService.selectByPolicyNo(policyNo);
                        StaffInfo staffInfo = null;
                        if (rnPolicyServiceInfo != null)
                        {
                            staffInfo = staffInfoService.selectByPrimaryKey(rnPolicyServiceInfo.getServiceNo());
                        }
                        int month = 0;
                        int year = 0;
                        if (staffInfo != null && staffInfo.getLeaveDate() != null)
                        {
                            Date leaveDate = DateUtil.formatDate(staffInfo.getLeaveDate(), "yyyy-MM-dd");
                            month = DateUtil.getMonth(leaveDate);
                            year = DateUtil.getYear(leaveDate);
                        }
                        //1:先判断该保单的现服务人员是否在当月或者上月离职    人员离职时间:STAFF_INFO.LEAVE_DATE
                        if (quitTime(nowYear, nowMonth, year, month))
                        {
                            //2:离职人员名下所有已实收及未收保单均要交接,并计入新接收人考核;    ---这点可以不管,只是解释离职人员名下的保单都可以交接

                            //3.离职人员名下未收件交接遵循“应缴月为同一个月份的保单只能交接给同一个人,不允许分别交接给多个人员”;未收件:保单缴费状态为1的时候为未收件,即POLICY_PREM_INFO.PREM_STATUS=1
                            //例如:A人员当月离职,他12月名下有3笔保单,分别为1,2,3,分别会出现两种情况,1:A人员应缴日在12月的保单从未有过交接记录     2:A人员应缴日在12月的保单存在交接记录
                            //情况1:上传文件中,把1,2,3分别分配给B,C,D,文件格式如下:

                            //数据库获取保单应缴日,得到应缴月
                            PolicyPremInfo policyPremInfo = premInfoService.selectByPolicyNo(policyNo);
                            Date premDueDate = DateUtil.formatDate(policyPremInfo.getPremDueDate(), "yyyy-MM-dd");
                            int premDueMonth = DateUtil.getMonth(premDueDate);
                            int premDueYear = DateUtil.getYear(premDueDate);
                            //那么这种情况,1先分给了B,那根据规则同一月保单只能分配给同一人,那么2,3保单就只能B
                            //校验如下,校验保单交出服务人员是否和该保单现服务人员相同,若不相同则没有发生保单离职交接记录
                            //注:数据库获取保单服务人员交接记录表,该保单最近一次交接记录,获取交出服务人员字段   RN_POLICY_SERVICER_CHG_RECORD.EARLIER_AGENT
                            String startMonths = DateUtil.getPerFirstDayOfDate(policyPremInfo.getPremDueDate(), DateUtil.DATETIME_DEFAULT_FORMAT);
                            String endMonth = DateUtil.getPerLastDayOfDate(policyPremInfo.getPremDueDate(), DateUtil.DATETIME_DEFAULT_FORMAT);
                            
                            paramMap.put("sreceiveNo", rnPolicyServiceInfo.getServiceNo());
                            paramMap.put("startMonths", startMonths);
                            paramMap.put("endMonth", endMonth);
                            RNPolicyServicerChgRecord record = changeService.queryLastTimeServicerChg(paramMap);
                            /**保       原         接收
                             * p1  H1  H2
                             * p2  H1  H3
                             */

                            //交出服务人员代码
                            String outSer = null;
                            //接收服务人员代码
                            String receiveSer = null;

                            //现服务人员代码
                            String nowServicerNo = rnPolicyServiceInfo.getServiceNo();

                            if (record == null
                                    || DateUtil.compareToDate(staffInfo.getLeaveDate(),
                                            DateUtil.getDateFormat(record.getUpdatedDate())) != -1)
                            {

                                //情况一:没有记录,或者离职时间大于调整时间(离职之前交接的保单)      小于根据应缴月从map中取值(应缴月值应该每次去查保单的应缴日),从值中取该保单号的现服务人员,

                                Map<String, String> m = map.get(String.valueOf(premDueYear)
                                        + String.valueOf(premDueMonth));
                                //现服务人员代码
                                String nowServicer = null;
                                //准备交接的服务人员代码
                                String servicer = null;
                                /**
                                 * map  H1:H2
                                 */
                                if(m!=null){
                                    for (Map.Entry<String, String> s : m.entrySet())
                                    {
                                        if (s.getKey().equals(nowServicerNo))//H1==1
                                        {
                                            nowServicer = s.getKey();
                                            servicer = s.getValue();//H2
                                        }
    
                                    }
                                }
                                //情况1:如果没值,那就符合条件
                                //情况2:如果有值,根据同月只能分配给同一人员原则,这里就设置为map中的服务人员
                                if (nowServicer != null)
                                {
                                    servicerNo = servicer;
                                }

                            }
                            else
                            {
                                outSer = record.getEarlierAgent();
                                receiveSer = record.getNextAgent();
                                //情况二:若保单交出服务人员和该保单现服务人员相同,则说明之前有发生过保单离职交接,那根据一个月中只能分给同一个服务人员原则,那只能分配给接收服务人员
                                //grasSysTemp.setServicerNo(ReceiveSer);
                                servicerNo = receiveSer;
                            }
                            policyMap.put(nowServicerNo, servicerNo);
                            map.put(String.valueOf(premDueYear) + String.valueOf(premDueMonth), policyMap);
                        }
                        /**
                         * end
                         */

                        policySuccessMap.put("policyNo", policyNo);
                        policySuccessMap.put("servicerNo", servicerNo);
                        policySuccessList.add(policySuccessMap);
                        break;
                    }
                }

                catch (Exception e)
                {
                    e.printStackTrace();
                    policySuccessMap.put("policyNo", policyNo);
                    policySuccessMap.put("servicerNo", servicerNo);
                    policySuccessList.add(policySuccessMap);
                    break;
                }
            }
        }
        return policySuccessList;

    }

    private boolean quitTime(int nowYear, int nowMonth, int year, int month)
    {
        //同年--当月&上月
        if (nowYear == year && (nowMonth == month || nowMonth == (month - 1)))
        {
            return true;
        }

        //去年  ---上月
        if ((nowYear - year) == 1 && month == 12)
        {
            return true;
        }

        return false;
    }
RNPolicyServicerChgRecord queryLastTimeServicerChg(Map<String,String> paramMap);


 select * from (    
		select * from RN_POLICY_SERVICER_CHG_RECORD rnpscr 
		where rnpscr.policy_no in (
		select rpsi.policy_no from rn_policy_service_info rpsi,policy_prem_info ppi
		where ppi.policy_no=rpsi.policy_no
		and rpsi.service_no=#{sreceiveNo}
		and ppi.prem_due_date >= "TO_DATE"(#{startMonths},'yyyy-MM-dd hh24:mi:ss')
		and ppi.prem_due_date &lt; "TO_DATE"(#{endMonth},'yyyy-MM-dd hh24:mi:ss')
		)
	   and rnpscr.change_mode='0'
	   order by rnpscr.UPDATED_DATE DESC
	   )where rownum = 1