增加返回绩效详情时,返回当前指标权重之和
This commit is contained in:
parent
8587ce74fe
commit
b5347a0aee
@ -35,6 +35,8 @@ import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
@ -346,24 +348,30 @@ public class ResultRecordController extends AbstractController {
|
||||
//获取计算公式
|
||||
List<CalculateModel> calculateModels = getCalculate(resultModels.get(0).getCalculateId());
|
||||
|
||||
resultRecordDetailDto.setGradeGroupId(resultModels.get(0).getGradeGroupId());//设置评分等级
|
||||
StaffEntity staffEntity = staffService.selectStaffById(resultRecord.getStaffId());
|
||||
resultRecordDetailDto.setAvatar(staffEntity.getAvatar());
|
||||
resultRecordDetailDto.setJobNumber(staffEntity.getJobNumber());
|
||||
List<ResultRecortModelDto> resultRecortModelDtos = new ArrayList<>();
|
||||
BigDecimal weight = BigDecimal.ZERO;
|
||||
for (ResultModel model:resultModels
|
||||
) {
|
||||
resultRecordDetailDto.setGradeGroupId(model.getGradeGroupId());
|
||||
setCalculateValue(calculateModels, model);
|
||||
ResultRecortModelDto resultRecortModelDto = new ResultRecortModelDto();
|
||||
BeanUtils.copyProperties(model, resultRecortModelDto);
|
||||
List<ResultDetailDto> detailDtos =
|
||||
resultDetailService.selectDtosByRecordId(resultRecord.getId(), model.getType());
|
||||
for (ResultDetailDto dto:detailDtos
|
||||
) {
|
||||
dto.setCalculate(setCalculateValue(calculateModels, dto)) ;
|
||||
weight = weight.add(dto.getCheckWeight());
|
||||
}
|
||||
//下面设置计算公式
|
||||
resultRecortModelDto.setWeight(weight);
|
||||
resultRecortModelDto.setDetailDtos(detailDtos);
|
||||
resultRecortModelDtos.add(resultRecortModelDto);
|
||||
}
|
||||
|
||||
|
||||
|
||||
resultRecordDetailDto.setRecortModelDtos(resultRecortModelDtos);
|
||||
|
||||
return R.ok().put("data", resultRecordDetailDto);
|
||||
@ -371,6 +379,40 @@ public class ResultRecordController extends AbstractController {
|
||||
|
||||
}
|
||||
|
||||
private String setCalculateValue(List<CalculateModel> calculateModels, Object model){
|
||||
String mName = model.getClass().getName();//.replace("req", "dto");
|
||||
String cal = "";
|
||||
for (CalculateModel calculate:calculateModels
|
||||
) {
|
||||
if(mName.contains("." + calculate.getTaboleBeanName())){//支持表名生成的req和dto
|
||||
//获取值
|
||||
try {
|
||||
Class<?> clazz = model.getClass();
|
||||
Method method = clazz.getMethod("get" + calculate.getFieldBeanName());
|
||||
Object obj = method.invoke(model);
|
||||
if(obj != null){
|
||||
calculate.setFieldValue(obj.toString());
|
||||
}
|
||||
if(calculate.getFieldValue() == null){
|
||||
cal += calculate.getFieldBeanName();
|
||||
}else{
|
||||
cal += calculate.getFieldValue();
|
||||
}
|
||||
if(calculate.getOpt() != null){
|
||||
cal += calculate.getOpt();
|
||||
}
|
||||
} catch (NoSuchMethodException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
return cal;
|
||||
}
|
||||
|
||||
private List<CalculateModel> getCalculate(Long id){
|
||||
ResultCalculate resultCalculate =
|
||||
resultCalculateService.selectResultCalculateById(id);
|
||||
@ -384,7 +426,8 @@ public class ResultRecordController extends AbstractController {
|
||||
) {
|
||||
char b = chars[i];
|
||||
if(b == '*' || b == '/' || b == '+' || b == '-'){
|
||||
calculateModel.setFieldName(getBeanName(value));
|
||||
calculateModel.setFieldName(value);
|
||||
calculateModel.setFieldBeanName(getBeanName(value));
|
||||
calculateModel.setOpt(String.valueOf(b));
|
||||
calculateModels.add(calculateModel);
|
||||
calculateModel = null;
|
||||
@ -394,9 +437,9 @@ public class ResultRecordController extends AbstractController {
|
||||
|
||||
}else if(b == '>'){
|
||||
if(type == 0){
|
||||
calculateModel.setTableName(value);
|
||||
value = value.replace("lz_", "");//去掉lz_前缀
|
||||
|
||||
calculateModel.setTableName(getBeanName(value));
|
||||
calculateModel.setTaboleBeanName(getBeanName(value));
|
||||
}
|
||||
type--;
|
||||
type *= -1;
|
||||
@ -408,7 +451,8 @@ public class ResultRecordController extends AbstractController {
|
||||
}
|
||||
value += String.valueOf(b);
|
||||
if(i == chars.length - 1){
|
||||
calculateModel.setFieldName(getBeanName(value));
|
||||
calculateModel.setFieldName(value);
|
||||
calculateModel.setFieldBeanName(getBeanName(value));
|
||||
calculateModels.add(calculateModel);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -6,7 +6,10 @@ import lombok.Data;
|
||||
* */
|
||||
@Data
|
||||
public class CalculateModel {
|
||||
private String tableName;//表明,对象名称
|
||||
private String tableName;//表名
|
||||
private String taboleBeanName;//类的可能名称
|
||||
private String fieldName;//字段,属性名称
|
||||
private String fieldBeanName;//字段的名称
|
||||
private String fieldValue;//取得的字段的值
|
||||
private String opt;//计算方法 + - * /
|
||||
}
|
||||
|
||||
@ -73,7 +73,10 @@ public class ResultRecordDetailDto {
|
||||
//当前是目标确认还是评分,0,目标制定,1,目标确认,2执行中,3,结果值录入,4,评分,5考核结束
|
||||
@ApiModelProperty(value = "当前是目标确认还是评分,0,目标制定,1,目标确认,2执行中,3,结果值录入,4,评分,5考核结束", name = "flowProcess")
|
||||
private Integer flowProcess;
|
||||
@ApiModelProperty(value = "考核维度合计", name = "recortModelDtos")
|
||||
List<ResultRecortModelDto> recortModelDtos;
|
||||
@ApiModelProperty(value = "当前指标权重之和", name = "weight")
|
||||
BigDecimal weight;
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user