思维逻辑程序
/** * 根据发行日判断是否超过提交期限 * @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