package com.vci.web.service;
|
|
import com.vci.corba.omd.data.BusinessObject;
|
import com.vci.starter.web.pagemodel.BaseQueryObject;
|
import com.vci.starter.web.pagemodel.DataGrid;
|
import com.vci.starter.web.pagemodel.PageHelper;
|
import com.vci.starter.web.util.ApplicationContextProvider;
|
import com.vci.starter.web.util.VciBaseUtil;
|
import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
|
import com.vci.web.other.OsMapToObjFunction;
|
import com.vci.web.util.WebUtil;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.util.CollectionUtils;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 对象建模部分的基础接口
|
* @author weidy
|
*/
|
public interface OsBaseServiceI {
|
|
/**
|
* 清除缓存
|
*/
|
void clearCache();
|
|
/**
|
* 使用sql查询平台建模里的内容.注意这个不包含内容
|
* @param conditionMap 查询条件
|
* @param pageHelper 分页
|
* @param tableName 表名
|
* @param mapToObjFunction 对象转换的函数
|
* @return 业务类型内容
|
*/
|
default <T> DataGrid<T> queryObjectServiceInfoBySql(Map<String, String> conditionMap, PageHelper pageHelper, String tableName, Class<T> doClass,OsMapToObjFunction<T> mapToObjFunction){
|
List<String> conditionSqlList = new ArrayList<String>();
|
if(!CollectionUtils.isEmpty(conditionMap)){
|
for(String key : conditionMap.keySet()){
|
String value = conditionMap.get(key);
|
if("id".equalsIgnoreCase(key) && !"".equalsIgnoreCase(value)){
|
conditionSqlList.add(" name like '" + conditionMap.get(key).replace("*","%") + "' ");
|
}
|
if("name".equalsIgnoreCase(key) && !"".equalsIgnoreCase(value)){
|
conditionSqlList.add(" label like '" + conditionMap.get(key).replace("*","%") + "' ");
|
}
|
}
|
}
|
String pageSql = "";
|
if(pageHelper!=null && pageHelper.getLimit()>-1){
|
pageSql = ") A where rownum < " + (pageHelper.getLimit()*pageHelper.getPage() + 1) + " ) where RN >= " + (pageHelper.getLimit()*(pageHelper.getPage()-1) + 1);
|
}
|
String whereSql = "";
|
if(!CollectionUtils.isEmpty(conditionSqlList)){
|
for(int i = 0 ; i < conditionSqlList.size() ; i++){
|
whereSql += conditionSqlList.get(i);
|
if(i != conditionSqlList.size()-1){
|
whereSql += " and ";
|
}
|
}
|
}
|
String baseSql = "select oid,to_char(ts,'yyyy-mm-dd hh24:mi:ss') as ts,creator,to_char(createTime,'yyyy-mm-dd hh24:mi:ss') as createTime,modifier,to_char(modifyTime,'yyyy-mm-dd hh24:mi:ss') as modifyTime,name,label," +
|
("plenum".equalsIgnoreCase(tableName)?" '' as " :"") + "description from " + tableName
|
+ (StringUtils.isNotBlank(whereSql)?(" where " + whereSql):"");
|
baseSql += " order by lower(name) asc ";
|
String sql = (StringUtils.isNotBlank(pageSql)?" select oid,ts,creator,createTime,modifier,modifyTime,name,label,description from (select A.* , rownum RN from (":"")
|
+ baseSql+ pageSql ;
|
WebBoServiceI boService = ApplicationContextProvider.getApplicationContext().getBean(WebBoServiceI.class);
|
List<BusinessObject> dataMap = boService.queryBySql(sql, null);
|
DataGrid<T> dataGrid = new DataGrid<>();
|
if(!CollectionUtils.isEmpty(dataMap)){
|
List<T> dataList = new ArrayList<>();
|
dataMap.stream().forEach(cbo -> {
|
T obj = null;
|
try {
|
obj = doClass.newInstance();
|
} catch (InstantiationException e) {
|
e.printStackTrace();
|
} catch (IllegalAccessException e) {
|
e.printStackTrace();
|
}
|
Map<String/**cbo**/,String/**field**/> fieldMap = new HashMap<>();
|
fieldMap.put("oid","oid");
|
fieldMap.put("name","id");
|
fieldMap.put("label","name");
|
fieldMap.put("description","description");
|
fieldMap.put("creator","creator");
|
fieldMap.put("modifier","lastModifier");
|
fieldMap.put("createtime","createTime");
|
fieldMap.put("modifyTime","lastModifyTime");
|
fieldMap.put("ts","ts");
|
WebUtil.copyValueToObjectFromCbos(cbo,obj,fieldMap);
|
if(mapToObjFunction!=null) {
|
mapToObjFunction.convert(cbo, obj);
|
}
|
dataList.add(obj);
|
});
|
dataGrid.setData(dataList);
|
List<Map> maps = boService.queryBySqlForMap("select count(oid) as total from plbtmtype " + (StringUtils.isNotBlank(whereSql)?(" where " + whereSql):""), null);
|
dataGrid.setTotal(VciBaseUtil.getInt(maps.get(0).get("total").toString()));
|
}
|
return dataGrid;
|
}
|
|
/**
|
* 查询对象建模里的列表
|
* @param baseQueryObject 基础查询对象,包含分页,排序,查询条件
|
* @param tClass 目标的类
|
* @param voMap 显示对象的映射
|
* @param voClass 显示对象的类
|
* @return 列表的内容
|
*/
|
default DataGrid gridObject(BaseQueryObject baseQueryObject,Class<?> tClass,Map<String,?> voMap,Class<?> voClass){
|
if(baseQueryObject == null){
|
baseQueryObject = new BaseQueryObject();
|
}
|
PageHelper pageHelper = baseQueryObject.getPageHelper();
|
if (pageHelper == null) {
|
pageHelper = new PageHelper(-1);
|
}
|
//有需要转换的属性
|
pageHelper.addDefaultAsc("name");
|
VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(baseQueryObject.getConditionMap(), tClass,pageHelper);
|
queryWrapperForDO.setConditionMap(queryWrapperForDO.switchConditionMap());
|
queryWrapperForDO.wrapperSql();
|
WebBoServiceI boService = ApplicationContextProvider.getBean(WebBoServiceI.class);
|
List<?> doList = boService.selectByQueryWrapper(queryWrapperForDO,tClass);
|
DataGrid dataGrid=new DataGrid();
|
if (!CollectionUtils.isEmpty(doList)) {
|
List voList = new ArrayList<>();
|
doList.stream().forEach(obj->{
|
String id = VciBaseUtil.getStringValueFromObject(VciBaseUtil.getValueFromField("id", obj));
|
if(voMap.containsKey(id)){
|
voList.add(voMap.get(id));
|
}
|
});
|
dataGrid.setData(voList);
|
dataGrid.setTotal(VciBaseUtil.getInt(String.valueOf(boService.countByQueryWrapper(queryWrapperForDO,tClass))));
|
}
|
return dataGrid;
|
}
|
|
|
}
|