From b5347a0aee4636cc45796a8fa8642521b18e9700 Mon Sep 17 00:00:00 2001 From: wulin Date: Wed, 28 Oct 2020 17:32:08 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=BB=A9=E6=95=88=E8=AF=A6=E6=83=85=E6=97=B6=EF=BC=8C=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=BD=93=E5=89=8D=E6=8C=87=E6=A0=87=E6=9D=83=E9=87=8D?= =?UTF-8?q?=E4=B9=8B=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ResultRecordController.java | 58 ++++++++++++++++--- .../lz/modules/flow/model/CalculateModel.java | 5 +- .../flow/model/ResultRecordDetailDto.java | 3 + 3 files changed, 58 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java index 3bbf3ff8..74fd3224 100644 --- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java +++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java @@ -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 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 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 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 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 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; } diff --git a/src/main/java/com/lz/modules/flow/model/CalculateModel.java b/src/main/java/com/lz/modules/flow/model/CalculateModel.java index 47302e8b..f4442859 100644 --- a/src/main/java/com/lz/modules/flow/model/CalculateModel.java +++ b/src/main/java/com/lz/modules/flow/model/CalculateModel.java @@ -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;//计算方法 + - * / } diff --git a/src/main/java/com/lz/modules/flow/model/ResultRecordDetailDto.java b/src/main/java/com/lz/modules/flow/model/ResultRecordDetailDto.java index 868f7ce3..141291f6 100644 --- a/src/main/java/com/lz/modules/flow/model/ResultRecordDetailDto.java +++ b/src/main/java/com/lz/modules/flow/model/ResultRecordDetailDto.java @@ -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 recortModelDtos; + @ApiModelProperty(value = "当前指标权重之和", name = "weight") + BigDecimal weight; /** * * @return From c16808c6af0ea9f7d606db60094d08d2982d5f2e Mon Sep 17 00:00:00 2001 From: wulin Date: Wed, 28 Oct 2020 17:39:17 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lz/modules/app/controller/ResultRecordController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java index 74fd3224..1944fac0 100644 --- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java +++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java @@ -367,11 +367,11 @@ public class ResultRecordController extends AbstractController { weight = weight.add(dto.getCheckWeight()); } //下面设置计算公式 - resultRecortModelDto.setWeight(weight); + resultRecortModelDto.setDetailDtos(detailDtos); resultRecortModelDtos.add(resultRecortModelDto); } - + resultRecordDetailDto.setWeight(weight); resultRecordDetailDto.setRecortModelDtos(resultRecortModelDtos); return R.ok().put("data", resultRecordDetailDto);