/**
*功能描述 获取培养方案校验结果
* @author zqq
* @date 2021/3/24 15:27
* @param:
* @return
*/
@Override
public JSONObject getVerifyResult(String schemeId) {
// 返回结果包含是否通过和各校验结果
JSONObject jsonObject =new JSONObject();
MajorScheme scheme = majorSchemeService.getSchemeById(schemeId);
String subCode = scheme.getSubCode();
// 获取该专业的校验条件以及结果,如果数目不相等表明存在异常,则设置未返回的校验结果为false
List<ConditionSub> conditionSubList = conditionSubService.getVerifyBySubCode(subCode);
List<Condition> list = conditionService.getResultByVerify(schemeId);
for (ConditionSub c:conditionSubList) {
c.setCorrect(false);
for (Condition cd:list) {
if(cd.getConditionNo().equals(c.getConditionNo())){
c.setCorrect(cd.isCorrect());
}
}
}
boolean flag = true;
// 存在一个校验失败则不通过
for (ConditionSub c:conditionSubList) {
if(c.isCorrect()==false){
flag = false;
break;
}
}
if(conditionSubList.size()>0){
jsonObject.put("success",flag);
}else{
jsonObject.put("success",false);
}
jsonObject.put("verify",conditionSubList);
return jsonObject;
}
/**
*功能描述 根据专业获取
* @author hhj
* @date 2021/3/21&9:47
*@param:null
* @return
*/
@Override
public List<Condition> getResultByVerify(String planId){
List<Condition> list = new ArrayList<>();
List<ConditionSub> conditionSubs = conditionSubService.getVerifyByPlanId(planId);
for(ConditionSub i : conditionSubs){
Condition condition = new Condition();
try{
String conditionNo = i.getConditionNo();
List<Object> obj = getResult(conditionNo,planId);
if(obj.size()==0){
break ;
}
condition.setConditionName(i.getConditionName());
condition.setConditionNo(i.getConditionNo());
condition.setCorrect((boolean)obj.get(0));
list.add(condition);
}catch (Exception e){
e.printStackTrace();
}
}
return list;
}
public List<Object> getResult(String conditionNo,String planId){
Object obj = new Object();
List<Object> objects = new ArrayList<>();
try{
ConditionServiceImpl invoke = new ConditionServiceImpl();
Class c =Class.forName("com.xysoft.project.major.scheme.condition.service.impl.ConditionServiceImpl");
MajorScheme majorScheme = new MajorScheme();
majorScheme.setId(planId);
Method med = c.getMethod(conditionNo,MajorScheme.class);
obj = med.invoke(invoke,new Object[]{majorScheme});
objects.add(obj);
}catch (Exception e){
e.printStackTrace();
}
return objects;
}
/**
*功能描述 选修课学时比例大于>=10%验证
* @author zqq
* @date 2021/6/11 9:53
* @param:
* @return
*/
@Override
public boolean ConsValidateByXxkXs(MajorScheme majorScheme){
boolean flag = true;
String schemeId = majorScheme.getId();
if(SubStringUtil.isNotEmpty(schemeId)){
IConditionSubService conditionSubService = SpringContextUtil.getBean(IConditionSubService.class);
List<SchemeCourse> courses = conditionSubService.getCourseNatureCredit(schemeId);
List<CreditPeriod> periods = conditionSubService.getCreditPreiodPercent(schemeId);
int pLimitHour = Integer.parseInt(courses.get(2).getTotalHour());
int pAnyHour = Integer.parseInt(periods.get(2).getTotalHour());
int sLimitHour = Integer.parseInt(periods.get(4).getTotalHour());
int sAnyHour = Integer.parseInt(periods.get(5).getTotalHour());
int totalHour = this.ConsValidateTotalHour(majorScheme);
int chooseHour = pLimitHour+pAnyHour+sLimitHour+sAnyHour;
double prec = 0.0;
if( totalHour != 0){
prec = chooseHour*100/totalHour;
}
if(prec >= 10){
flag = true;
}else{
flag = false;
}
}
return flag;
}
调用方法必须要生成一个bean,使用注入会报错。