思维逻辑程序


  /**
     * 根据发行日判断是否超过提交期限
     * @param releaseDate
     *         发行日(不能为空)
     */
    fun isPassDeadline(iwebReq: IwebReq, releaseDate: String  ): Boolean {
        if (releaseDate == null){
            AssertUtils.isTrue(false,"发行日不能为空!")
        }
        // true:期限验证通过,false:期限验证不通过
        var releaseDateCheck = false
        // 定义发行到期日  发行日+1个月
        var checkDate = this.subMonth(releaseDate)
        //定义工作日
        var workDateCount = 0
        //循环15次,总会有3次是工作日
        for (i in 1..15 step 1) {
            if (workDateCount == 3){
                break
            }
            //判断"checkDate"的日期是否在配置的法定日期配置表中:
            var isExist=this.intDal<BizAbsProfitInfoServiceDal>().isPassDeadline(iwebReq = iwebReq, releaseDate =releaseDate)
            //查询结果为空
            if (isExist == null ){
                var format1 =  SimpleDateFormat("yyyy-MM-dd")
                var bdate = format1.parse("checkDate")
                var cal = Calendar.getInstance()
                cal.setTime(bdate);
                // 判断是否是周六或周日
                if(cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY){
                    // 说明是工作日
                    workDateCount++
                }
                //加一天
                checkDate += 1

            }else{
               if("w".equals(isExist)){
                  //是工作日
                   workDateCount++
               }
                //加一天
                checkDate += 1
            }
        }
        //string 转data
        var sdf =  SimpleDateFormat("yyyy-MM-dd");
       if (Date() > sdf.parse(this.subDay(checkDate))){
           //说明超过时限
           releaseDateCheck = false
       }
       return releaseDateCheck
    }

    /****
     * 传入具体日期 ,返回具体日期增加一个月。
     * @param date 日期(2017-04-13)
     * @return 2017-05-13
     */
    fun   subMonth(date:String ) :String{
        var sdf =  SimpleDateFormat("yyyy-MM-dd");
        var dt = sdf.parse(date)
        var rightNow = Calendar.getInstance()
        rightNow.setTime(dt)
        rightNow.add(Calendar.MONTH, 1)
        var dt1 = rightNow.getTime()
        var reStr = sdf.format(dt1)
        return reStr
    }


    /****
     * 传入具体日期 ,返回具体日期减少一天
     * @param date 日期(2017-04-13)
     * @return 2017-04-12
     * @throws ParseException
     */
    fun   subDay(date:String ):String  {
        var sdf =  SimpleDateFormat("yyyy-MM-dd");
        var dt = sdf.parse(date);
        var rightNow = Calendar.getInstance();
        rightNow.setTime(dt);
        rightNow.add(Calendar.DAY_OF_MONTH, -1);
        var dt1 = rightNow.getTime();
        var reStr = sdf.format(dt1);
        return reStr;
    }
API编号                    API_R_F_008_04                                                                                                    Action                    /api/finance/biz/abs/profit/releasedate/check                                                                                                                                                                    method                    GET                    
说明                    根据发行日判断是否超过提交期限                                                                                                                                                                                                                                                                                                                                    
                        {                                                                                                                                                                                                                                                                                                                                
入参                                releaseDate                                                                        // 发行日                                                            不允许为空                                                                                                                                                                                    
                        }                                                                                                                                                                                                                                                                                                                                
                        {                                                                                                                                                                                                                                                                                                                                
出参                              "errcode": "0",                                                                                                                                                                                                                                                                                                                             
                              "errmsg": "",                                                                                                                                                                                                                                                                                                                            
                              "releaseDateCheck": ""                                                                            // true:期限验证通过,false:期限验证不通过                                                                                                                                                                                                                                                
                            }                                                                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                        
                            ◆        入参.发行日是否为空?                                                                                                                                                                                                                                                                                                                    
                                                是        ->            返回错误代码                                                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                                                        
                            定义  releaseDateCheck = true;                                                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                        
                            定义 checkDate = "入参.发行日+1个月"                                                                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                        
                            定义 workDateCount = 0;   //工作日                                                                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                        
                            for(i=1 ;i<=15; i++){                                                                                                                                                                                                                                                                                                                            
                                    if(workDateCount == 3 ){                                                                                                                                                                                                                                                                                                                    
                                            break;                                                                                                                                                                                                                                                                                                            
                                    }                                                                                                                                                                                                                                                                                                                    
                                    判断"checkDate"的日期是否在配置的法定日期配置表中:                                                                                                                                                                                                                                                                                                                    
                                    参考SQL:                                                                                                                                                                                                                                                                                                                    
                                                SELECT a.date_type FROM biz_legal_date_configure a WHERE a.legal_date = "checkDate" AND a.sys_status =1                                                                                                                                                                                                                                                                                                        
                                    ◆ 判断查询结果是否为空                                                                                                                                                                                                                                                                                                                    
                                        为空 ->                                                                                                                                                                                                                                                                                                                
                                                DateFormat format1 = new SimpleDateFormat("yyyy/MM/dd");                                                                                                                                                                                                                                                                                                        
                                                Date bdate = format1.parse("checkDate");                                                                                                                                                                                                                                                                                                        
功能                                                Calendar cal = Calendar.getInstance();                                                                                                                                                                                                                                                                                                        
逻辑                                                cal.setTime(bdate);                                                                                                                                                                                                                                                                                                        
                                                // 判断是否是周六或周日                                                                                                                                                                                                                                                                                                        
                                                if(cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY){                                                                                                                                                                                                                                                                                                        
                                                            // 说明是工作日                                                                                                                                                                                                                                                                                            
                                                            workDateCount++;                                                                                                                                                                                                                                                                                            
                                                }                                                                                                                                                                                                                                                                                                        
                                                checkDate = checkDate + 1天;                                                                                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                        
                                        不为空 ->                                                                                                                                                                                                                                                                                                                
                                                if("W".equals(record.getStr("dateType"))){                                                                                                                                                                                                                                                                                                        
                                                            // 是工作日                                                                                                                                                                                                                                                                                            
                                                            workDateCount++;                                                                                                                                                                                                                                                                                            
                                                }                                                                                                                                                                                                                                                                                                        
                                                checkDate = checkDate + 1天;                                                                                                                                                                                                                                                                                                        
                            }                                                                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                        
                            if( new date() > (checkDate -1天)) {                                                                                                                                                                                                                                                                                                                            
                                    // 说明超过时限                                                                                                                                                                                                                                                                                                                    
                                    releaseDateCheck = false;                                                                                                                                                                                                                                                                                                                    
                            }                                                                                                                                                                                                                                                                                                                            
                            ◆ 返回 releaseDateCheck                                                                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                        

 


原文地址:https://www.cnblogs.com/xiaoniuniu886/p/9987670.html