Commit 85f80b2b by hzc

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

parent 3710b5da
......@@ -82,4 +82,12 @@ public interface TaskIndValueMapper extends BaseMapper<TaskIndValue> {
* @Author hzc
**/
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;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.Multimaps;
import com.googlecode.aviator.AviatorEvaluator;
import com.keymobile.indicators.constant.Constants;
import com.keymobile.indicators.model.entity.AuthModel;
import com.keymobile.indicators.model.entity.ConfigInfo;
......@@ -37,6 +38,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Service
@Slf4j
......@@ -468,6 +471,7 @@ public class TaskServiceImpl implements TaskService {
*/
private List<IndicatorsData> createCountIndValues(Task task) {
List<TaskIndicator> inds = taskIndicatorMapper.getByTaskId(task.getId());
List<TaskIndValue> values = taskIndValueMapper.getByTaskId(task.getId());
String valueTime = task.getValueTime().replaceAll("-", "");
Integer vt = Integer.parseInt(valueTime);
......@@ -483,8 +487,9 @@ public class TaskServiceImpl implements TaskService {
//本期值Map
Map<String, String> dataMap = new HashMap<>();
for (TaskIndValue value : values) {
lastDataMap.put(value.getIndId(), value.getIndLastValue());
dataMap.put(value.getIndId(), value.getIndValue());
lastDataMap.put(value.getIndId()+value.getObjId(), value.getIndLastValue());
dataMap.put(value.getIndId()+value.getObjId(), value.getIndValue());
generateIndData(task, vt, lastVt, value, needLast, datas);
}
TaskRuleGroupObj groupObj = taskRuleObjMapper.getById(task.getGroupId());
......@@ -546,9 +551,21 @@ public class TaskServiceImpl implements TaskService {
value.setObjName(model.getName());
value.setObjType(groupObj.getObjType());
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) {
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);
} catch (Exception e) {
log.error("错误的同期值计算indId={}, indName={}, formula={}, valueTime={}",
......@@ -557,7 +574,11 @@ public class TaskServiceImpl implements TaskService {
}
}
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);
} catch (Exception e) {
log.error("错误的本期值计算indId={}, indName={}, formula={}, valueTime={}",
......@@ -570,6 +591,9 @@ public class TaskServiceImpl implements TaskService {
}
}
if (!newValues.isEmpty()) {
//防止重复填报
taskIndValueMapper.batchDelete(newValues);
taskIndValueMapper.batchInsert(newValues);
}
} else {
......@@ -606,8 +630,11 @@ public class TaskServiceImpl implements TaskService {
data.setUnit(value.getIndUnit());
data.setDim1Desc(value.getObjName());
data.setDateMark(valueTime);
datas.add(data);
if(checkDatas(datas,data)){
datas.add(data);
}
if (needLast) {
IndicatorsData last = new IndicatorsData();
last.setBatchNo(task.getId());
last.setCode(task.getOrgNo());
......@@ -621,11 +648,25 @@ public class TaskServiceImpl implements TaskService {
last.setUnit(value.getIndUnit());
last.setDim1Desc(value.getObjName());
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
public List<AuditRecord> findAuditRecordByTaskId(String taskId) {
return taskAuditRecordMapper.getByTaskId(taskId);
......
......@@ -169,7 +169,8 @@ public class IndScorecardService {
while(it.hasNext()){
DriveIndCalResultDef driveCalResult = it.next();
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();
}
}
......@@ -192,7 +193,8 @@ public class IndScorecardService {
if(!"NaN".equals(value) && !"Infinite".equals(value)) {
//综合评价
if("0".equals(scoreCard.getScoreType())
&& !"0.0000".equals(value) && !"0".equals(value)) {//定义
//&& !"0.0000".equals(value)
&& !"0".equals(value)) {//定义
baseScoreValue = scoreCard.getIndBaseScore();//基础分
//如果是反向指标(越小越好)
......@@ -551,6 +553,7 @@ public class IndScorecardService {
}
if(tmp==0){
endIndex=i;
break;
}
}
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