parent
40b4daf4cf
commit
912a3e8379
|
@ -3,6 +3,7 @@ package shkd.sys.sys.plugin.report;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import kd.bos.bill.BillShowParameter;
|
import kd.bos.bill.BillShowParameter;
|
||||||
import kd.bos.bill.OperationStatus;
|
import kd.bos.bill.OperationStatus;
|
||||||
|
import kd.bos.context.RequestContext;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
import kd.bos.dataentity.entity.LocaleString;
|
import kd.bos.dataentity.entity.LocaleString;
|
||||||
|
@ -25,9 +26,11 @@ import kd.bos.mvc.form.FormView;
|
||||||
import kd.bos.mvc.report.ReportView;
|
import kd.bos.mvc.report.ReportView;
|
||||||
import kd.bos.orm.query.QCP;
|
import kd.bos.orm.query.QCP;
|
||||||
import kd.bos.orm.query.QFilter;
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.permission.api.HasPermOrgResult;
|
||||||
import kd.bos.report.ReportList;
|
import kd.bos.report.ReportList;
|
||||||
import kd.bos.report.ReportShowParameter;
|
import kd.bos.report.ReportShowParameter;
|
||||||
import kd.bos.report.events.CreateColumnEvent;
|
import kd.bos.report.events.CreateColumnEvent;
|
||||||
|
import kd.bos.report.events.CreateFilterInfoEvent;
|
||||||
import kd.bos.report.events.SortAndFilterEvent;
|
import kd.bos.report.events.SortAndFilterEvent;
|
||||||
import kd.bos.report.filter.ReportFilter;
|
import kd.bos.report.filter.ReportFilter;
|
||||||
import kd.bos.report.plugin.AbstractReportFormPlugin;
|
import kd.bos.report.plugin.AbstractReportFormPlugin;
|
||||||
|
@ -35,18 +38,27 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
import kd.bos.servicehelper.QueryServiceHelper;
|
import kd.bos.servicehelper.QueryServiceHelper;
|
||||||
import kd.bos.servicehelper.org.OrgUnitServiceHelper;
|
import kd.bos.servicehelper.org.OrgUnitServiceHelper;
|
||||||
import kd.bos.servicehelper.org.OrgViewType;
|
import kd.bos.servicehelper.org.OrgViewType;
|
||||||
|
import kd.bos.servicehelper.permission.PermissionServiceHelper;
|
||||||
|
import org.apache.commons.lang3.time.DateUtils;
|
||||||
import shkd.sys.sys.plugin.report.domain.FinanceVarietyEnum;
|
import shkd.sys.sys.plugin.report.domain.FinanceVarietyEnum;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class FinanceReportFormPlugin extends AbstractReportFormPlugin implements HyperLinkClickListener {
|
public class FinanceReportFormPlugin extends AbstractReportFormPlugin implements HyperLinkClickListener {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void packageData(PackageDataEvent evt) {
|
public void packageData(PackageDataEvent evt) {
|
||||||
|
|
||||||
if ("shkd_org".equals(((ReportColumn)evt.getSource()).getFieldKey())){
|
if ("shkd_org".equals(((ReportColumn)evt.getSource()).getFieldKey())){
|
||||||
String formatValue = (String)evt.getFormatValue();
|
String formatValue = (String)evt.getFormatValue();
|
||||||
DynamicObject selorg = QueryServiceHelper.queryOne("bos_org", "id,name,number", (new QFilter("name", QCP.equals, formatValue)).toArray());
|
DynamicObject selorg = QueryServiceHelper.queryOne("bos_org", "id,name,number", (new QFilter("name", QCP.equals, formatValue)).toArray());
|
||||||
|
if (selorg==null){
|
||||||
|
evt.getNoLinkKey().add(((ReportColumn)evt.getSource()).getFieldKey());
|
||||||
|
return;
|
||||||
|
}
|
||||||
Long pkValue = selorg.getLong("id");
|
Long pkValue = selorg.getLong("id");
|
||||||
List<Long> orgIds = new ArrayList<>(1);
|
List<Long> orgIds = new ArrayList<>(1);
|
||||||
orgIds.add(pkValue);
|
orgIds.add(pkValue);
|
||||||
|
@ -106,6 +118,8 @@ public class FinanceReportFormPlugin extends AbstractReportFormPlugin implement
|
||||||
ReportShowParameter parameter = new ReportShowParameter();
|
ReportShowParameter parameter = new ReportShowParameter();
|
||||||
parameter.setCustomParam("shkd_selorg",single.getLong("id"));
|
parameter.setCustomParam("shkd_selorg",single.getLong("id"));
|
||||||
parameter.setCustomParam("shkd_seldate",this.getModel().getValue("shkd_seldate"));
|
parameter.setCustomParam("shkd_seldate",this.getModel().getValue("shkd_seldate"));
|
||||||
|
parameter.setCustomParam("shkd_selmoney",this.getModel().getValue("shkd_selmoney"));
|
||||||
|
parameter.setCustomParam("shkd_isone",false);
|
||||||
parameter.setFormId("shkd_financereport");
|
parameter.setFormId("shkd_financereport");
|
||||||
parameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
|
parameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
|
||||||
this.getView().showForm(parameter);
|
this.getView().showForm(parameter);
|
||||||
|
@ -113,9 +127,45 @@ public class FinanceReportFormPlugin extends AbstractReportFormPlugin implement
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeCreateFilterInfo(CreateFilterInfoEvent event) {
|
||||||
|
super.beforeCreateFilterInfo(event);
|
||||||
|
System.out.println(666);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// protected void filterContainerInit(FilterContainerInitEvent contInitEvent, ReportQueryParam queryParam) {
|
||||||
|
// FilterColumn orgFilter = contInitEvent.getFilterColumn("shkd_seluserpower");
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void filterContainerInit(FilterContainerInitEvent contInitEvent, ReportQueryParam queryParam) {
|
protected void filterContainerInit(FilterContainerInitEvent contInitEvent, ReportQueryParam queryParam) {
|
||||||
super.filterContainerInit(contInitEvent, queryParam);
|
super.filterContainerInit(contInitEvent, queryParam);
|
||||||
|
FilterColumn orgFilter = contInitEvent.getFilterColumn("shkd_seluserpower");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initDefaultQueryParam(ReportQueryParam queryParam) {
|
||||||
|
super.initDefaultQueryParam(queryParam);
|
||||||
|
Boolean shkd_isone = (Boolean) this.getModel().getValue("shkd_isone");//是否在第一层
|
||||||
|
HasPermOrgResult userHasPermOrgs = PermissionServiceHelper.getUserHasPermOrgs(Long.parseLong(RequestContext.get().getUserId()));
|
||||||
|
//有权的组织
|
||||||
|
List<Long> hasPermOrgs = userHasPermOrgs.getHasPermOrgs();
|
||||||
|
|
||||||
|
|
||||||
|
if (hasPermOrgs.size()==0){
|
||||||
|
this.getModel().setValue("shkd_seluserpower", null);
|
||||||
|
}else if (hasPermOrgs.size()!=0&&shkd_isone){//有组织权限隔离且在首层
|
||||||
|
//获取有权组织里级别高的根节点组织
|
||||||
|
List<Long> res=getSuperOrg(hasPermOrgs);
|
||||||
|
Object[] longs = res.toArray(new Long[0]);
|
||||||
|
this.getModel().setValue("shkd_seluserpower", longs);
|
||||||
|
}else if (hasPermOrgs.size()!=0&&!shkd_isone){//有组织权限隔离但不在首层
|
||||||
|
this.getModel().setValue("shkd_seluserpower", null);
|
||||||
|
}
|
||||||
|
//是否全部组织有权
|
||||||
|
boolean hasallOrg = userHasPermOrgs.hasAllOrgPerm();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -124,9 +174,14 @@ public class FinanceReportFormPlugin extends AbstractReportFormPlugin implement
|
||||||
ReportShowParameter formShowParameter = (ReportShowParameter) this.getView().getFormShowParameter();
|
ReportShowParameter formShowParameter = (ReportShowParameter) this.getView().getFormShowParameter();
|
||||||
Object shkd_selorg = formShowParameter.getCustomParam("shkd_selorg");
|
Object shkd_selorg = formShowParameter.getCustomParam("shkd_selorg");
|
||||||
Object shkd_seldate = formShowParameter.getCustomParam("shkd_seldate");
|
Object shkd_seldate = formShowParameter.getCustomParam("shkd_seldate");
|
||||||
|
Object shkd_selmoney = formShowParameter.getCustomParam("shkd_selmoney");
|
||||||
|
Object shkd_isone = formShowParameter.getCustomParam("shkd_isone");
|
||||||
if (shkd_selorg != null) {
|
if (shkd_selorg != null) {
|
||||||
this.getModel().setValue("shkd_selorg", shkd_selorg);
|
this.getModel().setValue("shkd_selorg", shkd_selorg);
|
||||||
this.getModel().setValue("shkd_seldate", shkd_seldate);
|
this.getModel().setValue("shkd_seldate", shkd_seldate);
|
||||||
|
this.getModel().setValue("shkd_selmoney", shkd_selmoney);
|
||||||
|
this.getModel().setValue("shkd_isone", shkd_isone);
|
||||||
|
this.getModel().setValue("shkd_seluserpower", null);
|
||||||
ReportFilter filter = this.getView().getControl("reportfilterap");//调用页面的自动查询
|
ReportFilter filter = this.getView().getControl("reportfilterap");//调用页面的自动查询
|
||||||
filter.search();
|
filter.search();
|
||||||
}
|
}
|
||||||
|
@ -305,17 +360,54 @@ public class FinanceReportFormPlugin extends AbstractReportFormPlugin implement
|
||||||
//按字段 组织配置 排序
|
//按字段 组织配置 排序
|
||||||
|
|
||||||
Collections.sort(rowData , new Comparator<DynamicObject>(){
|
Collections.sort(rowData , new Comparator<DynamicObject>(){
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
||||||
public int compare(DynamicObject dynamicObject1, DynamicObject dynamicObject2) {
|
public int compare(DynamicObject dynamicObject1, DynamicObject dynamicObject2) {
|
||||||
return (map.get(dynamicObject1.getString("shkd_orgnumber"))==null?100:map.get(dynamicObject1.getString("shkd_orgnumber")))-(map.get(dynamicObject2.getString("shkd_orgnumber"))==null?100:map.get(dynamicObject2.getString("shkd_orgnumber")));
|
return (map.get(dynamicObject1.getString("shkd_orgnumber"))==null?100:map.get(dynamicObject1.getString("shkd_orgnumber")))-(map.get(dynamicObject2.getString("shkd_orgnumber"))==null?100:map.get(dynamicObject2.getString("shkd_orgnumber")));
|
||||||
|
|
||||||
// return dynamicObject1.getInt("menuindex")-dynamicObject2.getInt("menuindex");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//添加“集团内债务融资未抵消“合计行
|
||||||
|
addheji(rowData);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addheji(DynamicObjectCollection rowData){
|
||||||
|
BigDecimal shkd_jtnbjkamount=new BigDecimal(0);//⑩集团内部借款金额
|
||||||
|
BigDecimal shkd_jtnbjkrzcb=new BigDecimal(0);//⑩集团内部借款融资成本(%)
|
||||||
|
BigDecimal shkd_jtnbjkqx=new BigDecimal(0);//⑩集团内部借款期限
|
||||||
|
for (DynamicObject rowDatum : rowData) {
|
||||||
|
shkd_jtnbjkamount.subtract(rowDatum.getBigDecimal("shkd_jtnbjkamount"));
|
||||||
|
shkd_jtnbjkrzcb.subtract(rowDatum.getBigDecimal("shkd_jtnbjkrzcb"));
|
||||||
|
shkd_jtnbjkqx.subtract(rowDatum.getBigDecimal("shkd_jtnbjkqx"));
|
||||||
|
}
|
||||||
|
DynamicObject dynamicObject = new DynamicObject(rowData.getDynamicObjectType());
|
||||||
|
dynamicObject.set("shkd_org","合并抵消");
|
||||||
|
dynamicObject.set("shkd_jtnbjkamount",shkd_jtnbjkamount);
|
||||||
|
dynamicObject.set("shkd_jtnbjkrzcb",shkd_jtnbjkrzcb);
|
||||||
|
dynamicObject.set("shkd_jtnbjkqx",shkd_jtnbjkqx);
|
||||||
|
rowData.add(dynamicObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Long> getSuperOrg(List<Long> org){
|
||||||
|
//组织和其对应直接上级
|
||||||
|
Map<Long, Long> map = new HashMap();
|
||||||
|
map=OrgUnitServiceHelper.getDirectSuperiorOrg(OrgViewType.OrgUnit, org);
|
||||||
|
|
||||||
|
Set<Long> existingOrgs = new HashSet<>(map.keySet());
|
||||||
|
|
||||||
|
// 2. 遍历 map,检查每个组织 a 的上级是否存在于 existingOrgs 中
|
||||||
|
List<Long> result = new ArrayList<>();
|
||||||
|
for (Long orgId : map.keySet()) {
|
||||||
|
Long superior = map.get(orgId); // 获取当前组织的上级
|
||||||
|
if (superior == null || !existingOrgs.contains(superior)) {
|
||||||
|
// 如果上级不存在(或为 null),则保留当前组织
|
||||||
|
result.add(orgId);
|
||||||
|
}
|
||||||
|
// 否则(上级存在),不加入 result(相当于删除)
|
||||||
|
}
|
||||||
|
List<Long> longs = new ArrayList<>(result);
|
||||||
|
return longs;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,11 +3,13 @@ package shkd.sys.sys.plugin.report;
|
||||||
import kd.bos.algo.DataSet;
|
import kd.bos.algo.DataSet;
|
||||||
import kd.bos.algo.JoinDataSet;
|
import kd.bos.algo.JoinDataSet;
|
||||||
import kd.bos.algo.JoinType;
|
import kd.bos.algo.JoinType;
|
||||||
|
import kd.bos.context.RequestContext;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
import kd.bos.dataentity.entity.LocaleString;
|
import kd.bos.dataentity.entity.LocaleString;
|
||||||
import kd.bos.db.DB;
|
import kd.bos.db.DB;
|
||||||
import kd.bos.db.DBRoute;
|
import kd.bos.db.DBRoute;
|
||||||
|
import kd.bos.entity.AppMetadataCache;
|
||||||
import kd.bos.entity.MainEntityType;
|
import kd.bos.entity.MainEntityType;
|
||||||
import kd.bos.entity.report.*;
|
import kd.bos.entity.report.*;
|
||||||
import kd.bos.entity.tree.TreeNode;
|
import kd.bos.entity.tree.TreeNode;
|
||||||
|
@ -18,11 +20,14 @@ import kd.bos.org.model.OrgTreeParam;
|
||||||
import kd.bos.orm.ORM;
|
import kd.bos.orm.ORM;
|
||||||
import kd.bos.orm.query.QCP;
|
import kd.bos.orm.query.QCP;
|
||||||
import kd.bos.orm.query.QFilter;
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.permission.api.HasPermOrgResult;
|
||||||
|
import kd.bos.permission.cache.constant.PermItemConst;
|
||||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
import kd.bos.servicehelper.MetadataServiceHelper;
|
import kd.bos.servicehelper.MetadataServiceHelper;
|
||||||
import kd.bos.servicehelper.QueryServiceHelper;
|
import kd.bos.servicehelper.QueryServiceHelper;
|
||||||
import kd.bos.servicehelper.org.OrgUnitServiceHelper;
|
import kd.bos.servicehelper.org.OrgUnitServiceHelper;
|
||||||
import kd.bos.servicehelper.org.OrgViewType;
|
import kd.bos.servicehelper.org.OrgViewType;
|
||||||
|
import kd.bos.servicehelper.permission.PermissionServiceHelper;
|
||||||
import kd.bos.util.CollectionUtils;
|
import kd.bos.util.CollectionUtils;
|
||||||
import shkd.sys.sys.plugin.form.PaymentProcessingBillPlugin;
|
import shkd.sys.sys.plugin.form.PaymentProcessingBillPlugin;
|
||||||
import shkd.sys.sys.plugin.report.domain.FinanceVarietyEnum;
|
import shkd.sys.sys.plugin.report.domain.FinanceVarietyEnum;
|
||||||
|
@ -66,6 +71,7 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin {
|
||||||
List<String> dateList = new ArrayList<>();
|
List<String> dateList = new ArrayList<>();
|
||||||
DynamicObject selorgDy = null;
|
DynamicObject selorgDy = null;
|
||||||
Double shkd_selmoney=0.0;
|
Double shkd_selmoney=0.0;
|
||||||
|
DynamicObjectCollection shkd_seluserpower=null;
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
for (QFilter filter : listQFilter) {
|
for (QFilter filter : listQFilter) {
|
||||||
if (filter.getProperty().contains("shkd_selorg")) {
|
if (filter.getProperty().contains("shkd_selorg")) {
|
||||||
|
@ -74,11 +80,27 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin {
|
||||||
dateList.add(sdf.format(filter.getValue()));
|
dateList.add(sdf.format(filter.getValue()));
|
||||||
} else if (filter.getProperty().contains("shkd_selmoney")) {
|
} else if (filter.getProperty().contains("shkd_selmoney")) {
|
||||||
shkd_selmoney= Double.parseDouble((String) filter.getValue());
|
shkd_selmoney= Double.parseDouble((String) filter.getValue());
|
||||||
|
}else if (filter.getProperty().contains("shkd_seluserpower")){
|
||||||
|
shkd_seluserpower=(DynamicObjectCollection) filter.getValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HashMap<Long, List<Long>> map = new HashMap<>();//组织层级关系
|
HashMap<Long, List<Long>> map = new HashMap<>();//组织层级关系
|
||||||
getOrgrelate(map, selorgDy);
|
//如果有组织则单独处理,没有则走getOrgrelate方法
|
||||||
|
if (shkd_seluserpower==null){
|
||||||
|
getOrgrelate(map, selorgDy);
|
||||||
|
}else {
|
||||||
|
for (DynamicObject dynamicObject : shkd_seluserpower) {
|
||||||
|
Long id = dynamicObject.getLong("id");//业务单元id
|
||||||
|
List<Long> orgIds = new ArrayList<>(1);
|
||||||
|
orgIds.add(id);
|
||||||
|
//获取该组织的全部下级业务单元
|
||||||
|
List<Long> allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, true);//包括自己
|
||||||
|
map.put(id,allSubordinateOrgs);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//根据组织关系配置sql
|
//根据组织关系配置sql
|
||||||
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ ");
|
StringBuilder sqlBuilder = new StringBuilder("/*dialect*/ ");
|
||||||
int size = map.size();
|
int size = map.size();
|
||||||
|
@ -102,6 +124,7 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin {
|
||||||
DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云
|
DataSet res = DB.queryDataSet(this.getClass().getSimpleName(), DBRoute.of("fi"), sqlBuilder.toString());//财务云
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//业务单元数据集
|
//业务单元数据集
|
||||||
DataSet balanceDataSet = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"bos_org","id,number as shkd_orgnumber,name as shkd_org", null, null);
|
DataSet balanceDataSet = QueryServiceHelper.queryDataSet(this.getClass().getSimpleName(),"bos_org","id,number as shkd_orgnumber,name as shkd_org", null, null);
|
||||||
|
|
||||||
|
@ -155,8 +178,8 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 拼接sql方法
|
* 拼接sql方法
|
||||||
* */
|
* */
|
||||||
public StringBuilder getSQlBuilder(List<String> dateList,List<Long> orgIds,String orgnumber,StringBuilder sqlBuilder){
|
public StringBuilder getSQlBuilder(List<String> dateList,List<Long> orgIds,String orgnumber,StringBuilder sqlBuilder){
|
||||||
String result = orgIds.toString();
|
String result = orgIds.toString();
|
||||||
result = result.substring(1, result.length() - 1);
|
result = result.substring(1, result.length() - 1);
|
||||||
|
@ -348,11 +371,6 @@ public class FinanceReportPlugin extends AbstractReportListDataPlugin {
|
||||||
orgIds.add(id);
|
orgIds.add(id);
|
||||||
//获取该组织的全部下级业务单元
|
//获取该组织的全部下级业务单元
|
||||||
List<Long> allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, true);//包括自己
|
List<Long> allSubordinateOrgs = OrgUnitServiceHelper.getAllSubordinateOrgs(OrgViewType.OrgUnit, orgIds, true);//包括自己
|
||||||
// OrgTreeParam param = new OrgTreeParam();
|
|
||||||
// param.setId(id);
|
|
||||||
// param.setOrgViewNumber(OrgViewType.OrgUnit);
|
|
||||||
// Map<String, Object> treeRootNodeMapById = OrgUnitServiceHelper.getTreeRootNodeMapById(param);
|
|
||||||
// Boolean isleaf = (Boolean) treeRootNodeMapById.get("isleaf");
|
|
||||||
map.put(id,allSubordinateOrgs);
|
map.put(id,allSubordinateOrgs);
|
||||||
}
|
}
|
||||||
return map;
|
return map;
|
||||||
|
|
Loading…
Reference in New Issue