Commit 85f80b2b by hzc

取消指标积分过滤指标值为0.0000的指标

parent 3710b5da
...@@ -82,4 +82,12 @@ public interface TaskIndValueMapper extends BaseMapper<TaskIndValue> { ...@@ -82,4 +82,12 @@ public interface TaskIndValueMapper extends BaseMapper<TaskIndValue> {
* @Author hzc * @Author hzc
**/ **/
List<TaskIndValue> findIndLastCorrectValues(@Param("valueTime")String valueTime, @Param("ids") List<String> ids); List<TaskIndValue> findIndLastCorrectValues(@Param("valueTime")String valueTime, @Param("ids") List<String> ids);
/**
* 根据 指标id 机构编码 时间维度删除
* @Param [newValues]
* @Date 2021/1/27 9:23
* @Author hzc
**/
void batchDelete(@Param("newValues") List<TaskIndValue> newValues);
} }
...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray; ...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.ImmutableListMultimap; import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.Multimaps; import com.google.common.collect.Multimaps;
import com.googlecode.aviator.AviatorEvaluator;
import com.keymobile.indicators.constant.Constants; import com.keymobile.indicators.constant.Constants;
import com.keymobile.indicators.model.entity.AuthModel; import com.keymobile.indicators.model.entity.AuthModel;
import com.keymobile.indicators.model.entity.ConfigInfo; import com.keymobile.indicators.model.entity.ConfigInfo;
...@@ -37,6 +38,8 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -37,6 +38,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Service @Service
@Slf4j @Slf4j
...@@ -468,6 +471,7 @@ public class TaskServiceImpl implements TaskService { ...@@ -468,6 +471,7 @@ public class TaskServiceImpl implements TaskService {
*/ */
private List<IndicatorsData> createCountIndValues(Task task) { private List<IndicatorsData> createCountIndValues(Task task) {
List<TaskIndicator> inds = taskIndicatorMapper.getByTaskId(task.getId()); List<TaskIndicator> inds = taskIndicatorMapper.getByTaskId(task.getId());
List<TaskIndValue> values = taskIndValueMapper.getByTaskId(task.getId()); List<TaskIndValue> values = taskIndValueMapper.getByTaskId(task.getId());
String valueTime = task.getValueTime().replaceAll("-", ""); String valueTime = task.getValueTime().replaceAll("-", "");
Integer vt = Integer.parseInt(valueTime); Integer vt = Integer.parseInt(valueTime);
...@@ -483,8 +487,9 @@ public class TaskServiceImpl implements TaskService { ...@@ -483,8 +487,9 @@ public class TaskServiceImpl implements TaskService {
//本期值Map //本期值Map
Map<String, String> dataMap = new HashMap<>(); Map<String, String> dataMap = new HashMap<>();
for (TaskIndValue value : values) { for (TaskIndValue value : values) {
lastDataMap.put(value.getIndId(), value.getIndLastValue()); lastDataMap.put(value.getIndId()+value.getObjId(), value.getIndLastValue());
dataMap.put(value.getIndId(), value.getIndValue()); dataMap.put(value.getIndId()+value.getObjId(), value.getIndValue());
generateIndData(task, vt, lastVt, value, needLast, datas); generateIndData(task, vt, lastVt, value, needLast, datas);
} }
TaskRuleGroupObj groupObj = taskRuleObjMapper.getById(task.getGroupId()); TaskRuleGroupObj groupObj = taskRuleObjMapper.getById(task.getGroupId());
...@@ -546,9 +551,21 @@ public class TaskServiceImpl implements TaskService { ...@@ -546,9 +551,21 @@ public class TaskServiceImpl implements TaskService {
value.setObjName(model.getName()); value.setObjName(model.getName());
value.setObjType(groupObj.getObjType()); value.setObjType(groupObj.getObjType());
value.setTaskId(task.getId()); value.setTaskId(task.getId());
List<String> indIdList = new ArrayList<>();
Pattern p = Pattern.compile("(\\[[^\\]]*\\])");
Matcher m = p.matcher(indicator.getIndFormula());
while (m.find()) {
indIdList.add(m.group().substring(1, m.group().length() - 1));
}
if (needLast) { if (needLast) {
try { try {
String oldValue = CalculateUtils.calculateFormula(indicator.getIndFormula(), lastDataMap);
Map<String,String> tmp = new HashMap<>();
for (String s : indIdList) {
tmp.put(s,lastDataMap.get(s+model.getId()));
}
String oldValue = CalculateUtils.calculateFormula(indicator.getIndFormula(), tmp);
value.setIndLastValue(oldValue); value.setIndLastValue(oldValue);
} catch (Exception e) { } catch (Exception e) {
log.error("错误的同期值计算indId={}, indName={}, formula={}, valueTime={}", log.error("错误的同期值计算indId={}, indName={}, formula={}, valueTime={}",
...@@ -557,7 +574,11 @@ public class TaskServiceImpl implements TaskService { ...@@ -557,7 +574,11 @@ public class TaskServiceImpl implements TaskService {
} }
} }
try { try {
String nowValue = CalculateUtils.calculateFormula(indicator.getIndFormula(), dataMap); Map<String,String> tmp = new HashMap<>();
for (String s : indIdList) {
tmp.put(s,dataMap.get(s+model.getId()));
}
String nowValue = CalculateUtils.calculateFormula(indicator.getIndFormula(), tmp);
value.setIndValue(nowValue); value.setIndValue(nowValue);
} catch (Exception e) { } catch (Exception e) {
log.error("错误的本期值计算indId={}, indName={}, formula={}, valueTime={}", log.error("错误的本期值计算indId={}, indName={}, formula={}, valueTime={}",
...@@ -570,6 +591,9 @@ public class TaskServiceImpl implements TaskService { ...@@ -570,6 +591,9 @@ public class TaskServiceImpl implements TaskService {
} }
} }
if (!newValues.isEmpty()) { if (!newValues.isEmpty()) {
//防止重复填报
taskIndValueMapper.batchDelete(newValues);
taskIndValueMapper.batchInsert(newValues); taskIndValueMapper.batchInsert(newValues);
} }
} else { } else {
...@@ -606,8 +630,11 @@ public class TaskServiceImpl implements TaskService { ...@@ -606,8 +630,11 @@ public class TaskServiceImpl implements TaskService {
data.setUnit(value.getIndUnit()); data.setUnit(value.getIndUnit());
data.setDim1Desc(value.getObjName()); data.setDim1Desc(value.getObjName());
data.setDateMark(valueTime); data.setDateMark(valueTime);
datas.add(data); if(checkDatas(datas,data)){
datas.add(data);
}
if (needLast) { if (needLast) {
IndicatorsData last = new IndicatorsData(); IndicatorsData last = new IndicatorsData();
last.setBatchNo(task.getId()); last.setBatchNo(task.getId());
last.setCode(task.getOrgNo()); last.setCode(task.getOrgNo());
...@@ -621,11 +648,25 @@ public class TaskServiceImpl implements TaskService { ...@@ -621,11 +648,25 @@ public class TaskServiceImpl implements TaskService {
last.setUnit(value.getIndUnit()); last.setUnit(value.getIndUnit());
last.setDim1Desc(value.getObjName()); last.setDim1Desc(value.getObjName());
last.setDateMark(valueTime); last.setDateMark(valueTime);
datas.add(last); if(checkDatas(datas,last)){
datas.add(last);
}
} }
} }
private boolean checkDatas( List<IndicatorsData> datas,IndicatorsData data){
for (IndicatorsData indicatorsData : datas) {
if(indicatorsData.getDateMark().equals(data.getDateMark())&&
indicatorsData.getDim1().equals(data.getDim1())&&
indicatorsData.getIndId().equals(data.getIndId())&&
indicatorsData.getDim2().equals(data.getDim2())){
indicatorsData.setValue(data.getValue());
return false;
}
}
return true;
}
@Override @Override
public List<AuditRecord> findAuditRecordByTaskId(String taskId) { public List<AuditRecord> findAuditRecordByTaskId(String taskId) {
return taskAuditRecordMapper.getByTaskId(taskId); return taskAuditRecordMapper.getByTaskId(taskId);
......
...@@ -169,7 +169,8 @@ public class IndScorecardService { ...@@ -169,7 +169,8 @@ public class IndScorecardService {
while(it.hasNext()){ while(it.hasNext()){
DriveIndCalResultDef driveCalResult = it.next(); DriveIndCalResultDef driveCalResult = it.next();
if("NaN".equals(driveCalResult.getValue()) || "Infinite".equals(driveCalResult.getValue()) if("NaN".equals(driveCalResult.getValue()) || "Infinite".equals(driveCalResult.getValue())
||"0.0000".equals(driveCalResult.getValue())||"0".equals(driveCalResult.getValue())){ //||"0.0000".equals(driveCalResult.getValue())
||"0".equals(driveCalResult.getValue())){
it.remove(); it.remove();
} }
} }
...@@ -192,7 +193,8 @@ public class IndScorecardService { ...@@ -192,7 +193,8 @@ public class IndScorecardService {
if(!"NaN".equals(value) && !"Infinite".equals(value)) { if(!"NaN".equals(value) && !"Infinite".equals(value)) {
//综合评价 //综合评价
if("0".equals(scoreCard.getScoreType()) if("0".equals(scoreCard.getScoreType())
&& !"0.0000".equals(value) && !"0".equals(value)) {//定义 //&& !"0.0000".equals(value)
&& !"0".equals(value)) {//定义
baseScoreValue = scoreCard.getIndBaseScore();//基础分 baseScoreValue = scoreCard.getIndBaseScore();//基础分
//如果是反向指标(越小越好) //如果是反向指标(越小越好)
...@@ -551,6 +553,7 @@ public class IndScorecardService { ...@@ -551,6 +553,7 @@ public class IndScorecardService {
} }
if(tmp==0){ if(tmp==0){
endIndex=i; endIndex=i;
break;
} }
} }
return sub.substring(0,endIndex+1); return sub.substring(0,endIndex+1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment