Java業務層優先對快過期數據進行處理

兌換學時,優先從快過期的進行處理

過期時間 學時數 已用學時 是否過期
2018-11-28 30 10
2018-11-30 30 0
2018-11-30 30 0

可用學時: 30+30+30=90
剩餘學時: 30-10+30-0+30-0=80

假設今天第一個過期了

過期時間 學時數 已用學時 是否過期
2018-11-28 30 10
2018-11-30 30 0
2018-11-30 30 0

可用學時: 30+30=60
剩餘學時: 30-0+30-0=60

使用學時(僞代碼)

	if 前臺判斷總學時是否夠用{
		後臺先根據時間排序查出可兌換學時的 List  計算出總學時  
		if 總學時>使用學時{
			 for(list){
				if 學時-已用-使用>0  {
					執行修改操作  update-->已用
					break; //如果夠減 直接結束循環
				}else{
					使用-=(學時-已用)
					已用=學時
					update-->已用,有效設置爲無效(因爲已用完 下次計算不在查出)
				}
			}
		}		
	}

部分邏輯代碼實現

--代碼實現	
int get;//獲得的學時
int used;//已使用的學時
for (Object obj : list) {
	if(obj instanceof ConvertCourseHours){
		cch = (ConvertCourseHours) obj;
		get = cch.getRuleScore();
		used = cch.getUsedScore();
		//學時-已用-使用>0
		if(get-used-convertScore>0){
			//執行修改操作  update-->已用
			//已用加上使用的值	
			cch.setUsedScore(used+convertScore);
			//更新
			convertCourseHoursDao.updateConvertCourseHours(cch);
			
			return "success"; //如果夠減 直接結束循環 返回成功
		}else if(get-used-convertScore==0){
			cch.setUsedScore(get);//使用完 已用=總共獲得的學時
			cch.setAvailability(0);//使用完設置爲失效
			convertCourseHoursDao.updateConvertCourseHours(cch);
			return "success";//剛好使用完 返回成功
		}else{
			convertScore-=(get-used);//把快過期的先用完,在進行下一輪循環
			cch.setUsedScore(get);//使用完 已用=總共獲得的學時
			cch.setAvailability(0);//使用完設置爲失效
			convertCourseHoursDao.updateConvertCourseHours(cch);
		}
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章