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