1、报表公式开发
This commit is contained in:
parent
f9747b0d90
commit
b6e3592d8d
|
@ -0,0 +1,7 @@
|
|||
package shkd.epm.servicehelper;
|
||||
|
||||
public interface FormulaOperatipnService {
|
||||
|
||||
public String dispatchDef(String formulaName,String paramJson);
|
||||
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
package shkd.epm.servicehelper;
|
||||
|
||||
public interface FormulaShowService {
|
||||
|
||||
public String getFormulaDef();
|
||||
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package shkd.epm.servicehelper;
|
||||
|
||||
import kd.bos.dataentity.TypesContainer;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class ServiceFactory {
|
||||
//存放微服务的 map
|
||||
private static Map<String, String> serviceMap = new HashMap<>();
|
||||
|
||||
static {
|
||||
//key 是接口名,value 是实现类全限定名 map.put(“接口名称”,“实现类路径”)
|
||||
serviceMap.put("FormulaOperatipnService", "shkd.epm.servicehelper.impl.FormulaOperatipnImpl");
|
||||
serviceMap.put("FormulaShowService", "shkd.epm.servicehelper.impl.FormulaShowImpl");
|
||||
}
|
||||
|
||||
|
||||
// getService()平台要求的固定写法,一般情况下无须更改
|
||||
public static Object getService(String serviceName) {
|
||||
String className = serviceMap.get(serviceName);
|
||||
if (className == null) {
|
||||
throw new IllegalArgumentException(String.format("%s 对应的服务实现未找到", serviceName));
|
||||
} else {
|
||||
return TypesContainer.getOrRegisterSingletonInstance(className);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,105 @@
|
|||
package shkd.epm.servicehelper.impl;
|
||||
|
||||
import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.util.JSONUtils;
|
||||
import kd.epm.eb.service.BgControlServiceImpl;
|
||||
import shkd.epm.servicehelper.FormulaOperatipnService;
|
||||
|
||||
public class FormulaOperatipnImpl implements FormulaOperatipnService {
|
||||
private static final Log log = LogFactory.getLog(FormulaOperatipnImpl.class);
|
||||
|
||||
public String dispatchDef(String formulaName,String param) {
|
||||
log.info("公式逻辑开始");
|
||||
|
||||
String resultStr = "";
|
||||
String key = "";
|
||||
HashSet<String> typeSet = new HashSet();
|
||||
try {
|
||||
//解析json公式参数
|
||||
HashMap cast = JSONUtils.cast(param, HashMap.class);
|
||||
Map param1 = (Map) cast.get("param");
|
||||
//公共参数--财年 组织 期间
|
||||
Map param2 = (Map) cast.get("commParam");
|
||||
|
||||
//获取指定预算体系id
|
||||
QFilter shownumber = new QFilter("shownumber", "=", "CXHB_TIXI");
|
||||
DynamicObject priceModel = BusinessDataServiceHelper.loadSingle("bcm_model","id", shownumber.toArray());
|
||||
|
||||
//遍历公式
|
||||
Iterator iterator = param1.entrySet().iterator();
|
||||
while (iterator.hasNext()){
|
||||
Map.Entry next = (Map.Entry)iterator.next();
|
||||
key = (String)next.getKey();
|
||||
//["","","1002001","QMZMYEA","0","0","",""]
|
||||
ArrayList<String> value = (ArrayList<String>) next.getValue();
|
||||
typeSet.add((String)value.get(2));
|
||||
ArrayList<Map<String, String>> maps = makeReslutMap(value);
|
||||
Long priceModelid = (Long)priceModel.getPkValue();
|
||||
if("expensebudget".equals(formulaName)){
|
||||
//获取费用预算
|
||||
BgControlServiceImpl bgControlService = new BgControlServiceImpl();
|
||||
String json = bgControlService.queryBalanceWithoutCentralized(priceModelid, maps, typeSet, false);
|
||||
// 解析 JSON 数据
|
||||
JSONObject jsonObject = new JSONObject(json);
|
||||
JSONArray dataArray = jsonObject.getJSONArray("data");
|
||||
JSONObject firstEntry = dataArray.getJSONObject(0);
|
||||
// 获取 budget 参数
|
||||
int budgetValue = firstEntry.getInt("budget");
|
||||
log.info("Budget: " + budgetValue);
|
||||
resultStr = "{\n" +
|
||||
" \"id\":"+key+"\n" +
|
||||
" {\n" +
|
||||
" \"v\":"+budgetValue+"\n" +
|
||||
" \"type\":1\n" +
|
||||
" }\n" +
|
||||
" } ";
|
||||
log.info("返回参数为:"+resultStr);
|
||||
}
|
||||
|
||||
}
|
||||
} catch (IOException e) {
|
||||
resultStr = "{\n" +
|
||||
" \"id\":"+key+"\n" +
|
||||
" {\n" +
|
||||
" \"v\":"+0+"\n" +
|
||||
" \"type\":-1\n" +
|
||||
" }\n" +
|
||||
" } ";
|
||||
log.info("返回参数为:"+resultStr);
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
return resultStr ;
|
||||
}
|
||||
}
|
||||
|
||||
//把参数组装成查询预算所需的格式
|
||||
public ArrayList<Map<String,String>> makeReslutMap(ArrayList<String> value){
|
||||
|
||||
ArrayList<Map<String,String>> resultMap = new ArrayList(){{
|
||||
add(
|
||||
new HashMap<String, String>() {{
|
||||
put("Entity", value.get(0));
|
||||
put("Account", value.get(1));
|
||||
put("Version", value.get(3));
|
||||
put("Currency", value.get(4));
|
||||
put("AuditTrail", value.get(5));
|
||||
put("ChangeType", value.get(6));
|
||||
put("DataType", value.get(7));
|
||||
put("Metric", value.get(8));
|
||||
put("BudgetPeriod", value.get(9));
|
||||
}}
|
||||
);
|
||||
}};
|
||||
return resultMap;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package shkd.epm.servicehelper.impl;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.epm.eb.common.utils.JSONUtils;
|
||||
import shkd.epm.servicehelper.FormulaShowService;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class FormulaShowImpl implements FormulaShowService {
|
||||
@Override
|
||||
public String getFormulaDef() {
|
||||
QFilter queryParam = new QFilter("number", "=", "01");
|
||||
DynamicObject formula = BusinessDataServiceHelper.loadSingle("shkd_formula", queryParam.toArray());
|
||||
HashMap<Object, Object> jsonMap = new HashMap<>();
|
||||
jsonMap.put("formula_catalog_list", formula.get("shkd_formulalag_tag"));
|
||||
jsonMap.put("formula_def_list", formula.get("shkd_formulatext_tag"));
|
||||
|
||||
return JSONUtils.toString(jsonMap) ;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue