Commit 7c9cf290 by zhangkb

去掉多余冗余代码

parent 41052a89
package com.keymobile.indicators.akka.actor;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.Maps;
import com.googlecode.aviator.AviatorEvaluator;
import com.keymobile.indicators.akka.message.DriveIndCalculateMsg;
import com.keymobile.indicators.akka.message.IndGetValueMsg;
import com.keymobile.indicators.akka.message.IndValueMsg;
import com.keymobile.indicators.akka.message.specific.DriveIndAverageAndRankMsg;
import com.keymobile.indicators.model.entity.indicators.DriveIndCalResultDef;
import com.keymobile.indicators.model.entity.indicators.DriveIndDef;
import com.keymobile.indicators.service.hytobacco.DriveIndCalResultService;
import com.keymobile.indicators.service.hytobacco.DriveIndDefService;
import com.keymobile.indicators.utils.SpringUtil;
import akka.actor.AbstractActor;
import akka.actor.ActorRef;
import akka.actor.Props;
public class DriveIndCalculateActor extends AbstractActor{
private Logger logger = LoggerFactory.getLogger(DriveIndCalculateActor.class);
private DriveIndDefService driveIndDefService = SpringUtil.getBean(DriveIndDefService.class);
private DriveIndCalResultService driveIndCalResultService = SpringUtil.getBean(DriveIndCalResultService.class);
private int numberOfConfirm = 0;//定义返回确认消息的子actor
private int indIdSize = 0;//考核指标内包含的基础指标id的个数
//定义线程安全的收集反馈确认消息list
private List<Integer> confirmList = new CopyOnWriteArrayList<>();
private String driveIndFormula;//考核指标公式
private String averageDriveIndFormula;//需要传递回去算平均值的考核指标公式
private String driveIndDataType;//考核指标数据类型
private String compareId ;
private String compareObj;
private int date;
private String unit;
private Integer markType;
private String driveIndId;
private Map<String, Object> env = Maps.newHashMap();
private String indType;//正向,反向
private String code;//编码标识
private final ActorRef driveIndCalculateRegionActor;//定义schemaActor,用于返回给schemaActor确认信息
static public Props props(ActorRef driveIndCalculateRegionActor) {
return Props.create(DriveIndCalculateActor.class,()->new DriveIndCalculateActor(driveIndCalculateRegionActor));
}
public DriveIndCalculateActor(ActorRef driveIndCalculateRegionActor) {
this.driveIndCalculateRegionActor = driveIndCalculateRegionActor;
}
@Override
public Receive createReceive() {
return receiveBuilder()
.match(DriveIndCalculateMsg.class,driveIndCalculateMsg -> {
compareId = driveIndCalculateMsg.getCompareId();
compareObj = driveIndCalculateMsg.getCompareObj();
date = driveIndCalculateMsg.getDate();
driveIndId = driveIndCalculateMsg.getDriveIndId();
List<String> indIdList = new ArrayList<>();
DriveIndDef driveIndDef = driveIndDefService.getById(driveIndId);
unit = driveIndDef.getIndUnit();//指标单位
indType = driveIndDef.getIndType();//指标类型:正向 反向
markType = driveIndDef.getIndCalScoreRule();//指标评分规则
code = driveIndDef.getCode();
//获取考核指标的公式
driveIndFormula = driveIndDef.getIndFormat();
averageDriveIndFormula = driveIndDef.getIndFormat();
Pattern p = Pattern.compile("(\\[[^\\]]*\\])");
Matcher m = p.matcher(driveIndFormula);
while(m.find()){
indIdList.add(m.group().substring(1, m.group().length()-1));
}
//获取公式中的基础指标id
indIdSize =indIdList.size();
if(!indIdList.isEmpty()) {
for(String indId : indIdList) {
//根据基础指标id获取基础指标
String indValueType = null;//基础指标值的数据类型
IndGetValueMsg indGetValueMsg = new IndGetValueMsg(indId,
driveIndCalculateMsg.getDimValues(),indValueType);
ActorRef indGetValueActor = this.getContext()
.actorOf(Props.create(IndGetValueActor.class,
()->new IndGetValueActor()));
indGetValueActor.tell(indGetValueMsg, getSelf());
}
}
})
.match(IndValueMsg.class,indValueMsg->{
if(indValueMsg.getIsFinish()==0) {
logger.info(indValueMsg.getConfirmMessage());
}else {
//判断类型,进行转换
String indValueDataType = indValueMsg.getType();
String indValue = indValueMsg.getValue();
if(StringUtils.isBlank(indValue)) {
indValue="0.0";
}
try {
driveIndFormula = driveIndFormula.replace("["+indValueMsg.getIndId()+"]",
indValue);
//替换公式中的基础指标id为确定指标值
//env.put(indValueMsg.getIndId(), Double.valueOf(indValue));
}catch(Exception e) {
e.printStackTrace();
logger.error(driveIndFormula+";"+env);
}
}
confirmList.add(indValueMsg.getIsFinish());
if (++numberOfConfirm >= indIdSize) {//子actor全部返回
if(!confirmList.contains(0)) {//取所有基础指标值没错
driveIndDataType = null;
//进行考核指标值计算
try {
String driveIndValue = AviatorEvaluator.execute(driveIndFormula).toString();
//保留四位小数
if(!driveIndValue.equals("NaN") && !driveIndValue.equals("Infinite")) {
driveIndValue = String.format("%.4f",
new BigDecimal(Double.valueOf(driveIndValue)));
}
//判断结果表中是否已存在该结果数据,存在则覆盖
DriveIndCalResultDef driveIndCalResult = driveIndCalResultService.
findCalResultDataIsExist(compareId, compareObj, driveIndId, date);
if(driveIndCalResult==null) {
driveIndCalResult = new DriveIndCalResultDef(compareId,
driveIndId,compareObj,date,driveIndValue,unit,
"1","1","admin",code,indValueMsg.getCompareObjDesc());
}else {
driveIndCalResult.setValue(driveIndValue);
}
//保存进考核指标结果表中
driveIndCalResultService.saveOrUpdate(driveIndCalResult);
//返回指标值回去算平均值和排名
DriveIndAverageAndRankMsg driveIndAverageAndRankMsg =
new DriveIndAverageAndRankMsg(driveIndCalResult.getId(),
compareId,driveIndId,compareObj,date,driveIndValue,
unit,indType,markType,averageDriveIndFormula);
driveIndCalculateRegionActor.tell(driveIndAverageAndRankMsg,ActorRef.noSender());
} catch (Exception e) {
//判断结果表中是否已存在该结果数据,存在则覆盖
DriveIndCalResultDef driveIndCalResult = driveIndCalResultService.
findCalResultDataIsExist(compareId, compareObj, driveIndId, date);
if(driveIndCalResult==null) {
driveIndCalResult = new DriveIndCalResultDef(compareId,
driveIndId,compareObj,date,"NaN",unit,
"1","0","admin",code,indValueMsg.getCompareObjDesc());
}else {
driveIndCalResult.setValue("NaN");
}
driveIndCalResultService.saveOrUpdate(driveIndCalResult);
DriveIndAverageAndRankMsg driveIndAverageAndRankMsg =
new DriveIndAverageAndRankMsg(driveIndCalResult.getId(),
compareId,driveIndId,compareObj,date,"NaN",
unit,indType,markType,averageDriveIndFormula);
driveIndCalculateRegionActor.tell(driveIndAverageAndRankMsg,ActorRef.noSender());
logger.error("env:"+env+";formula:"+driveIndFormula);
}
}else {
//返回考核指标因为考核指标公式中的数据项不存在而导致的计算错误标识
DriveIndAverageAndRankMsg driveIndAverageAndRankMsg =
new DriveIndAverageAndRankMsg(-1,
compareId,driveIndId,compareObj,date,"NaN",
unit,indType,markType,averageDriveIndFormula);
driveIndCalculateRegionActor.tell(driveIndAverageAndRankMsg,ActorRef.noSender());
}
}
})
.build();
}
}
package com.keymobile.indicators.akka.actor;
import java.util.Map;
import com.keymobile.indicators.akka.message.IndGetValueMsg;
import com.keymobile.indicators.akka.message.IndValueMsg;
import com.keymobile.indicators.service.hytobacco.IndicatorsValueService;
import com.keymobile.indicators.utils.SpringUtil;
import akka.actor.AbstractActor;
public class IndGetValueActor extends AbstractActor{
private IndicatorsValueService indicatorsValueService = SpringUtil.getBean(IndicatorsValueService.class);
@Override
public Receive createReceive() {
return receiveBuilder()
.match(IndGetValueMsg.class,indCalculateMsg -> {
//根据维度值和基础指标id获取指标值
Map<String,Object> indValueMap = indicatorsValueService.getIndicatorsValue(
indCalculateMsg.getIndId(), indCalculateMsg.getDimValue());
if(indValueMap!=null) {
//返回指标值结果
getSender().tell(new IndValueMsg(indCalculateMsg.getIndId()
,indValueMap.get("value").toString()
,indCalculateMsg.getIndValueType(),
indValueMap.get("compareObjDesc").toString(),1,""),getSelf());
}else {
//返回指标值结果
getSender().tell(new IndValueMsg(indCalculateMsg.getIndId(),null
,indCalculateMsg.getIndValueType(),null,0,"无法获取指标id:"+
indCalculateMsg.getIndId()+";维度:"+
indCalculateMsg.getDimValue().get(0).getDimvalue()+","+
indCalculateMsg.getDimValue().get(1).getDimvalue()+" 的指标值"),getSelf());
}
})
.build();
}
}
package com.keymobile.indicators.akka.actor.specific;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.keymobile.indicators.akka.actor.DriveIndCalculateActor;
import com.keymobile.indicators.akka.message.DriveIndCalculateMsg;
import com.keymobile.indicators.akka.message.specific.DriveIndAverageAndRankMsg;
import com.keymobile.indicators.akka.message.specific.DriveIndCalculateRegionMsg;
import com.keymobile.indicators.model.entity.DimValue;
import com.keymobile.indicators.model.entity.indicators.DriveIndCalResultDef;
import com.keymobile.indicators.service.hytobacco.DriveIndCalResultService;
import com.keymobile.indicators.service.hytobacco.DriveIndDefService;
import com.keymobile.indicators.service.hytobacco.IndScorecardService;
import com.keymobile.indicators.utils.CalculateUtils;
import com.keymobile.indicators.utils.SpringUtil;
import akka.actor.AbstractActor;
import akka.actor.ActorRef;
import akka.actor.Props;
public class DriveIndCalculateRegionActor extends AbstractActor{
private DriveIndCalResultService driveIndCalResultService = SpringUtil.getBean(DriveIndCalResultService.class);
private IndScorecardService indScorecardService = SpringUtil.getBean(IndScorecardService.class);
private DriveIndDefService driveIndDefService = SpringUtil.getBean(DriveIndDefService.class);
private int numberOfConfirm = 0;//定义返回确认消息的子actor
private int compareObjSize = 0;//对标对象个数
// private List<String> values = new ArrayList<>();
private Map<String,String> valueMap = new HashMap<>();
private List<String> compareObjs = new ArrayList<>();
@Override
public Receive createReceive() {
return receiveBuilder()
.match(DriveIndCalculateRegionMsg.class,driveIndCalculateRegionMsg -> {
String compareId = driveIndCalculateRegionMsg.getCompareId();
String driveIndId = driveIndCalculateRegionMsg.getDriveIndId();
List<String> compareObjs = driveIndCalculateRegionMsg.getCompareObj();
int date = driveIndCalculateRegionMsg.getDate();
compareObjSize = compareObjs.size();
for(String compareObj : compareObjs) {
List<DimValue> dimValueList = new ArrayList<>();
DimValue dimCompareObj = new DimValue("dim1",compareObj,"varchar");
DimValue dimDateObj = new DimValue("dim2",date,"number");
dimValueList.add(dimCompareObj);
dimValueList.add(dimDateObj);
DriveIndCalculateMsg driveIndCalculateMsg = new DriveIndCalculateMsg(compareId,
driveIndId,compareObj,date,dimValueList);
//启动akka
ActorRef driveIndCalculateActor = this.getContext()
.actorOf(Props.create(DriveIndCalculateActor.class,
()->new DriveIndCalculateActor(getSelf())));
driveIndCalculateActor.tell(driveIndCalculateMsg,getSelf());
}
})
.match(DriveIndAverageAndRankMsg.class,driveIndAverageAndRankMsg -> {
String value = driveIndAverageAndRankMsg.getDriveIndValue();
String id = String.valueOf(driveIndAverageAndRankMsg.getId());
String indType = driveIndAverageAndRankMsg.getIndType();
Integer markType = driveIndAverageAndRankMsg.getMarkType();//评分卡id
if(!"-1".equals(id)) {
valueMap.put(id, value);
// values.add(value);
compareObjs.add(driveIndAverageAndRankMsg.getCompareObj());
}
if (++numberOfConfirm >= compareObjSize) {//子actor全部返回
if(!valueMap.isEmpty() && !compareObjs.isEmpty()) {
//考核地区只有一个“全省”的情况下
if(!"全省".equals(driveIndAverageAndRankMsg.getCompareObj())) {
//查询有没有全省的考核指标数据
DriveIndCalResultDef provinceDriveIndCalResult = driveIndCalResultService.findCompareObjInfo(
driveIndAverageAndRankMsg.getDriveIndId(), driveIndAverageAndRankMsg.getDate(),
"全省");
String actualAverage = "0.0";
if(provinceDriveIndCalResult!=null) {
//获取实际平均分
actualAverage = provinceDriveIndCalResult.getValue();
}
//算组内平均数
//String average = CalculateUtils.averageValue(values);
String average = driveIndDefService.calGroupAverage(
driveIndAverageAndRankMsg.getIndFormula(), compareObjs,
driveIndAverageAndRankMsg.getDate());
//算组内排名
Map<String,Integer> rankValue = CalculateUtils.rankValue(valueMap, indType);
for(Entry<String,Integer> entry : rankValue.entrySet()) {
//根据id获取指标值结果
DriveIndCalResultDef driveIndCalResult = driveIndCalResultService.
findById(Integer.parseInt(entry.getKey()));
if(driveIndCalResult!=null) {
driveIndCalResult.setAverage(average);
driveIndCalResult.setRank(entry.getValue());
driveIndCalResult.setActualAverage(actualAverage);
driveIndCalResultService.saveOrUpdate(driveIndCalResult);
}
}
//根据评分卡算指标分数
for(Entry<String,Integer> entry : rankValue.entrySet()) {
//根据id获取指标值结果
DriveIndCalResultDef driveIndCalResult = driveIndCalResultService.
findById(Integer.parseInt(entry.getKey()));
if(driveIndCalResult!=null) {
//计算分数
Map<String,String> scoreMap = indScorecardService.calculateIndiScore(
driveIndCalResult.getIndId(), driveIndCalResult.getDate(),
driveIndCalResult.getCompareObj(), markType,
driveIndCalResult.getCompareId(),compareObjs);
driveIndCalResult.setScore(scoreMap.get("score"));
driveIndCalResult.setImproveScore(scoreMap.get("improveScore"));
driveIndCalResultService.saveOrUpdate(driveIndCalResult);
}
}
}
}
}
})
.build();
}
}
package com.keymobile.indicators.akka.actor.specific;
import java.util.List;
import com.keymobile.indicators.akka.message.specific.DriveIndCalculateRegionMsg;
import com.keymobile.indicators.akka.message.specific.DriveIndCompareObjMsg;
import akka.actor.AbstractActor;
import akka.actor.ActorRef;
import akka.actor.Props;
public class DriveIndCompareObjActor extends AbstractActor{
@Override
public Receive createReceive() {
return receiveBuilder()
.match(DriveIndCompareObjMsg.class,driveIndCompareObjMsg->{
String compareId = driveIndCompareObjMsg.getCompareId();
List<String> driveIndIds = driveIndCompareObjMsg.getDriveIndIds();
List<String> compareObj = driveIndCompareObjMsg.getCompareObj();
int date = driveIndCompareObjMsg.getDate();
for(String driveIndId:driveIndIds) {
DriveIndCalculateRegionMsg driveIndCalculateRegionMsg = new DriveIndCalculateRegionMsg(
compareId,driveIndId,compareObj,date);
//start akka
ActorRef driveIndCalculateRegionActor = this.getContext()
.actorOf(Props.create(DriveIndCalculateRegionActor.class,
()->new DriveIndCalculateRegionActor()));
driveIndCalculateRegionActor.tell(driveIndCalculateRegionMsg,getSelf());
}
})
.build();
}
}
package com.keymobile.indicators.akka.message;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import com.keymobile.indicators.model.entity.DimValue;
public class DriveIndCalculateMsg implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String compareId;//对标id
private String driveIndId;//考核指标id
private String compareObj;//对标对象
private int date;
private List<DimValue> dimValues = new ArrayList<>();//维度值list
public DriveIndCalculateMsg(String compareId,String driveIndId,String compareObj,int date,
List<DimValue> dimValues) {
this.compareId = compareId;
this.driveIndId = driveIndId;
this.compareObj = compareObj;
this.setDate(date);
this.dimValues.addAll(dimValues);
}
public String getCompareId() {
return compareId;
}
public void setCompareId(String compareId) {
this.compareId = compareId;
}
public String getDriveIndId() {
return driveIndId;
}
public void setDriveIndId(String driveIndId) {
this.driveIndId = driveIndId;
}
public List<DimValue> getDimValues() {
return dimValues;
}
public void setDimValues(List<DimValue> dimValues) {
this.dimValues.addAll(dimValues);
}
public String getCompareObj() {
return compareObj;
}
public void setCompareObj(String compareObj) {
this.compareObj = compareObj;
}
public int getDate() {
return date;
}
public void setDate(int date) {
this.date = date;
}
}
package com.keymobile.indicators.akka.message;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import com.keymobile.indicators.model.entity.DimValue;
public class IndGetValueMsg implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String indId;//基础指标id
private List<DimValue> dimValue = new ArrayList<>();//维度值
private String indValueType;//基础指标值类型
public IndGetValueMsg(String indId,List<DimValue> dimValue,String indValueType) {
this.indId = indId;
this.dimValue.addAll(dimValue);
this.setIndValueType(indValueType);
}
public List<DimValue> getDimValue() {
return dimValue;
}
public void setDimValue(List<DimValue> dimValue) {
this.dimValue.addAll(dimValue);
}
public String getIndId() {
return indId;
}
public void setIndId(String indId) {
this.indId = indId;
}
public String getIndValueType() {
return indValueType;
}
public void setIndValueType(String indValueType) {
this.indValueType = indValueType;
}
}
package com.keymobile.indicators.akka.message;
import java.io.Serializable;
public class IndValueMsg implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String indId;//基础指标id
private String value;//指标值
private String type;//指标值类型
private String compareObjDesc;
//是否完成标识:1.完成 0.未完成
private Integer isFinish;
//日志报告
private String confirmMessage;
public IndValueMsg(String indId,String value,String type,String compareObjDesc,
Integer isFinish,String confirmMessage) {
this.indId=indId;
this.value = value;
this.type = type;
this.setCompareObjDesc(compareObjDesc);
this.isFinish = isFinish;
this.confirmMessage = confirmMessage;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Integer getIsFinish() {
return isFinish;
}
public void setIsFinish(Integer isFinish) {
this.isFinish = isFinish;
}
public String getConfirmMessage() {
return confirmMessage;
}
public void setConfirmMessage(String confirmMessage) {
this.confirmMessage = confirmMessage;
}
public String getIndId() {
return indId;
}
public void setIndId(String indId) {
this.indId = indId;
}
public String getCompareObjDesc() {
return compareObjDesc;
}
public void setCompareObjDesc(String compareObjDesc) {
this.compareObjDesc = compareObjDesc;
}
}
package com.keymobile.indicators.akka.message.specific;
import java.io.Serializable;
public class DriveIndAverageAndRankMsg implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private Integer id;//id
private String compareId;
private String driveIndId;
private String compareObj;
private Integer date;
private String driveIndValue;
private String unit;
private String indType;
private Integer markType;
private String indFormula;
public DriveIndAverageAndRankMsg(Integer id,String compareId,String driveIndId,String compareObj,
Integer date,String driveIndValue,String unit,String indType,Integer markType,String indFormula) {
this.id = id;
this.compareId = compareId;
this.driveIndId = driveIndId;
this.compareObj = compareObj;
this.date = date;
this.driveIndValue = driveIndValue;
this.unit = unit;
this.indType = indType;
this.markType = markType;
this.indFormula = indFormula;
}
public String getCompareId() {
return compareId;
}
public void setCompareId(String compareId) {
this.compareId = compareId;
}
public String getDriveIndId() {
return driveIndId;
}
public void setDriveIndId(String driveIndId) {
this.driveIndId = driveIndId;
}
public String getCompareObj() {
return compareObj;
}
public void setCompareObj(String compareObj) {
this.compareObj = compareObj;
}
public Integer getDate() {
return date;
}
public void setDate(Integer date) {
this.date = date;
}
public String getDriveIndValue() {
return driveIndValue;
}
public void setDriveIndValue(String driveIndValue) {
this.driveIndValue = driveIndValue;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getIndType() {
return indType;
}
public void setIndType(String indType) {
this.indType = indType;
}
public Integer getMarkType() {
return markType;
}
public void setMarkType(Integer markType) {
this.markType = markType;
}
public String getIndFormula() {
return indFormula;
}
public void setIndFormula(String indFormula) {
this.indFormula = indFormula;
}
}
package com.keymobile.indicators.akka.message.specific;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class DriveIndCalculateRegionMsg implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String compareId;//对标id
private String driveIndId;//考核指标id
private List<String> compareObj = new ArrayList<>();//对标对象list
private int date;//年份
public DriveIndCalculateRegionMsg(String compareId,String driveIndId,
List<String> compareObj,int date) {
this.compareId = compareId;
this.driveIndId = driveIndId;
this.compareObj.addAll(compareObj);
this.date = date;
}
public String getCompareId() {
return compareId;
}
public void setCompareId(String compareId) {
this.compareId = compareId;
}
public String getDriveIndId() {
return driveIndId;
}
public void setDriveIndId(String driveIndId) {
this.driveIndId = driveIndId;
}
public List<String> getCompareObj() {
return compareObj;
}
public void setCompareObj(List<String> compareObj) {
this.compareObj.addAll(compareObj);
}
public int getDate() {
return date;
}
public void setDate(int date) {
this.date = date;
}
}
package com.keymobile.indicators.akka.message.specific;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class DriveIndCompareObjMsg implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String compareId;//对标id
private List<String> driveIndIds = new ArrayList<>();
private List<String> compareObj = new ArrayList<>();//对标对象list
private int date;//年份
public DriveIndCompareObjMsg(String compareId,List<String> driveIndIds,List<String> compareObj,int date) {
this.compareId = compareId;
this.driveIndIds.addAll(driveIndIds);
this.compareObj.addAll(compareObj);
this.date = date;
}
public String getCompareId() {
return compareId;
}
public void setCompareId(String compareId) {
this.compareId = compareId;
}
public List<String> getDriveIndIds() {
return driveIndIds;
}
public void setDriveIndIds(List<String> driveIndIds) {
this.driveIndIds.addAll(driveIndIds);
}
public List<String> getCompareObj() {
return compareObj;
}
public void setCompareObj(List<String> compareObj) {
this.compareObj.addAll(compareObj);
}
public int getDate() {
return date;
}
public void setDate(int date) {
this.date = date;
}
}
...@@ -27,13 +27,6 @@ public class DriveIndCalResultCtrl { ...@@ -27,13 +27,6 @@ public class DriveIndCalResultCtrl {
@Autowired @Autowired
private CompareUnitCalLogService compUnitCalLogService; private CompareUnitCalLogService compUnitCalLogService;
@ApiOperation(value = "对标计算", notes = "对标计算")
@PostMapping(value = "/calculateComp")
public void calculateComp(@RequestParam String compareId,@RequestParam String compareObjsString,
@RequestParam String driveIndIdsString,@RequestParam int date) {
driveIndCalResultService.calculateComp(compareId, compareObjsString, driveIndIdsString, date);
}
@ApiOperation(value = "对标单元综合计算", notes = "对标单元综合计算") @ApiOperation(value = "对标单元综合计算", notes = "对标单元综合计算")
@PostMapping(value = "/compareUnitListCal") @PostMapping(value = "/compareUnitListCal")
public void compareUnitListCal(@RequestBody List<CompareUnitDef> compareUnitList) { public void compareUnitListCal(@RequestBody List<CompareUnitDef> compareUnitList) {
......
...@@ -23,7 +23,8 @@ public class IndicatorReportCtrl { ...@@ -23,7 +23,8 @@ public class IndicatorReportCtrl {
@ApiOperation(value = "整合指标本期同期报表数据", notes = "整合指标本期同期报表数据") @ApiOperation(value = "整合指标本期同期报表数据", notes = "整合指标本期同期报表数据")
@PostMapping(value = "/dealReportOne") @PostMapping(value = "/dealReportOne")
public String dealReportOne(@RequestParam String code) { public String dealReportOne(@RequestParam String code) {
return indicatorsReportService.dealReportOne(code); indicatorsReportService.dealReportOne(code);
return "考核指标本期同期报表数据开始整合...";
} }
@ApiOperation(value = "整合基础项本期同期报表数据", notes = "整合基础项本期同期报表数据") @ApiOperation(value = "整合基础项本期同期报表数据", notes = "整合基础项本期同期报表数据")
......
package com.keymobile.indicators.service.hytobacco; package com.keymobile.indicators.service.hytobacco;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -11,9 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -11,9 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.keymobile.indicators.akka.actor.indicators.StartCompareUnitCalActor; import com.keymobile.indicators.akka.actor.indicators.StartCompareUnitCalActor;
import com.keymobile.indicators.akka.actor.specific.DriveIndCompareObjActor;
import com.keymobile.indicators.akka.message.indicators.StartCompareUnitCalMsg; import com.keymobile.indicators.akka.message.indicators.StartCompareUnitCalMsg;
import com.keymobile.indicators.akka.message.specific.DriveIndCompareObjMsg;
import com.keymobile.indicators.model.entity.indicators.CompareUnitDef; import com.keymobile.indicators.model.entity.indicators.CompareUnitDef;
import com.keymobile.indicators.model.entity.indicators.DriveIndCalResultDef; import com.keymobile.indicators.model.entity.indicators.DriveIndCalResultDef;
import com.keymobile.indicators.model.mapper.indmapper.DriveIndCalResultDefMapper; import com.keymobile.indicators.model.mapper.indmapper.DriveIndCalResultDefMapper;
...@@ -55,21 +50,6 @@ public class DriveIndCalResultService { ...@@ -55,21 +50,6 @@ public class DriveIndCalResultService {
return driveIndCalResultDefMapper.findByCompareIdAndDate(compareId, date); return driveIndCalResultDefMapper.findByCompareIdAndDate(compareId, date);
} }
public void calculateComp(String compareId,String compareObjsString,String driveIndIdsString,
int date) {
String[] compareObjs = compareObjsString.split(";");
String[] driveIndIds = driveIndIdsString.split(";");
//启动回流actor
final ActorSystem system = ActorSystem.create("DriveIndCompareAkka");//创建akka
DriveIndCompareObjMsg driveIndCompareObjMsg = new DriveIndCompareObjMsg(compareId,
Arrays.asList(driveIndIds),Arrays.asList(compareObjs),date);
ActorRef driveIndCompareObjActor = system.actorOf(Props.create(DriveIndCompareObjActor.class,
()->new DriveIndCompareObjActor()));
driveIndCompareObjActor.tell(driveIndCompareObjMsg, ActorRef.noSender());
logger.info("开始对标计算...");
}
public void compareUnitListCal(List<CompareUnitDef> compareUnitList) { public void compareUnitListCal(List<CompareUnitDef> compareUnitList) {
if(!compareUnitList.isEmpty()) { if(!compareUnitList.isEmpty()) {
//启动回流actor //启动回流actor
......
...@@ -82,6 +82,7 @@ public class IndicatorsReportService { ...@@ -82,6 +82,7 @@ public class IndicatorsReportService {
} }
//整合指标本期同期指标报表数据 //整合指标本期同期指标报表数据
@Async
public String dealReportOne(String code) { public String dealReportOne(String code) {
//获取所有考核指标结果 //获取所有考核指标结果
List<DriveIndCalResultDef> calDatas = driveIndCalResultDefMapper.findReportData(code); List<DriveIndCalResultDef> calDatas = driveIndCalResultDefMapper.findReportData(code);
......
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