Commit 963ed3f7 by 陶光胜

配置表

parent 20978507
package com.gic.enterprise.constant;
public enum FieldTypeEnum {
INT("int", "int"),
STRING("string", "string"),
DATE("date", "date"),
LONG("long", "long");
private String type;
private String message;
FieldTypeEnum(String type, String message){
this.type = type;
this.message = message;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
package com.gic.enterprise.service;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import java.util.Map;
public interface CustomSettingApiService {
/**
* save
* @Title: save
* @Description: 保存
* @author taogs
* @param tableName
* @param params
* @return com.gic.api.base.commons.ServiceResponse<java.lang.String>
* @throws
*/
ServiceResponse<String> save(String tableName, String params);
/**
* getDetail
* @Title: getDetail
* @Description: 查询详情
* @author taogs
* @param tableName
* @param searchParams
* @return com.gic.api.base.commons.ServiceResponse<java.util.Map<java.lang.String,java.lang.Object>>
* @throws
*/
ServiceResponse<Map<String, Object>> getDetail(String tableName, String searchParams);
/**
* page
* @Title: page
* @Description:
* @author taogs
* @param tableName
* @param searchParams
* @param currentPage
* @param pageSize
* @return com.gic.api.base.commons.ServiceResponse<com.gic.api.base.commons.Page<java.util.Map<java.lang.String,java.lang.Object>>>
* @throws
*/
ServiceResponse<Page<Map>> page(String tableName, String searchParams, Integer currentPage, Integer pageSize);
/**
* delete
* @Title: delete
* @Description: 删除
* @author taogs
* @param tableName
* @param id
* @return com.gic.api.base.commons.ServiceResponse<java.lang.Integer>
* @throws
*/
ServiceResponse<Integer> delete(String tableName, String id);
}
package com.gic.enterprise.service.outer.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.ToolUtil;
import com.gic.dsmongo.api.constant.enums.MongoOperTypeEnum;
......@@ -9,6 +11,9 @@ import com.gic.dsmongo.api.dto.MongoQueryDTO;
import com.gic.dsmongo.api.dto.MongoSaveDTO;
import com.gic.dsmongo.api.dto.MongoUpdateDTO;
import com.gic.dsmongo.api.service.MongoOperApiService;
import com.gic.enterprise.constant.FieldTypeEnum;
import com.gic.enterprise.dto.TableSettingDTO;
import com.gic.enterprise.dto.TableSettingFieldDTO;
import com.gic.enterprise.entity.CustomSettingData;
import com.gic.enterprise.entity.TabTableSetting;
import com.gic.enterprise.error.ErrorCode;
......@@ -16,6 +21,7 @@ import com.gic.enterprise.service.CustomSettingApiService;
import com.gic.enterprise.service.TableSettingFieldService;
import com.gic.enterprise.service.TableSettingService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
......@@ -23,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service("customSettingApiService")
public class CustomSettingApiServiceImpl implements CustomSettingApiService {
......@@ -82,16 +89,121 @@ public class CustomSettingApiServiceImpl implements CustomSettingApiService {
mongoUpdateDTO.setData(map);
ServiceResponse<Integer> update = mongoOperApiService.update(mongoUpdateDTO);
log.info("update:{},{}", JSON.toJSONString(map), JSON.toJSONString(update));
if(update.isSuccess()){
return ServiceResponse.success();
} else {
return ServiceResponse.failure(update.getCode(), update.getMessage());
}
} else {
map.put("update_time", date);
map.put("create_time", date);
map.put("delete_flag", 0);
MongoSaveDTO mongoSaveDTO = new MongoSaveDTO();
map.put(PRIMARYKEY, ToolUtil.randomUUID());
mongoSaveDTO.setDataBaseAndCollectionName(DATABASENAME, tableName, PRIMARYKEY);
mongoSaveDTO.setData(map);
ServiceResponse<String> save = mongoOperApiService.save(mongoSaveDTO);
log.info("save:{}", JSON.toJSONString(save));
if(save.isSuccess()){
return ServiceResponse.success();
} else {
return ServiceResponse.failure(save.getCode(), save.getMessage());
}
}
}
@Override
public ServiceResponse<Map<String, Object>> getDetail(String tableName, String searchParams) {
Map<String, Object> map = JSON.parseObject(searchParams, Map.class);
MongoQueryDTO queryDTO = new MongoQueryDTO();
if(MapUtils.isNotEmpty(map)){
TabTableSetting tableSetting = tableSettingService.getTableSetting(tableName);
if(tableSetting == null){
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), tableName + "不存在");
}
List<Criteria> criteriaList = getCriteriaList(map, tableSetting);
queryDTO.setCriteria(criteriaList);
}
return ServiceResponse.success();
queryDTO.setDataBaseName(DATABASENAME);
queryDTO.setConllectionName(tableName);
ServiceResponse<List<Map>> query = mongoOperApiService.query(queryDTO);
if(query.isSuccess()){
if(CollectionUtils.isNotEmpty(query.getResult())){
return ServiceResponse.success(query.getResult().get(0));
} else {
return ServiceResponse.success();
}
} else {
return ServiceResponse.failure(query.getCode(), query.getMessage());
}
}
@Override
public ServiceResponse<Page<Map>> page(String tableName, String searchParams, Integer currentPage, Integer pageSize) {
Map<String, Object> map = JSON.parseObject(searchParams, Map.class);
MongoQueryDTO queryDTO = new MongoQueryDTO();
if(MapUtils.isNotEmpty(map)){
TabTableSetting tableSetting = tableSettingService.getTableSetting(tableName);
if(tableSetting == null){
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), tableName + "不存在");
}
List<Criteria> criteriaList = getCriteriaList(map, tableSetting);
queryDTO.setCriteria(criteriaList);
}
queryDTO.setDataBaseName(DATABASENAME);
queryDTO.setConllectionName(tableName);
queryDTO.setCurrentPage(currentPage);
queryDTO.setPageSize(pageSize);
ServiceResponse<Page<Map>> pageServiceResponse = mongoOperApiService.queryByPage(queryDTO);
return pageServiceResponse;
}
@Override
public ServiceResponse<Integer> delete(String tableName, String id) {
ServiceResponse<Map<String, Object>> detail = getDetail(tableName, "{\"id\":\"" + id + "\"}");
Map<String, Object> map = detail.getResult();
map.put("update_time", new Date());
map.put("delete_flag", 1);
MongoUpdateDTO mongoUpdateDTO = new MongoUpdateDTO();
mongoUpdateDTO.setDataBaseAndCollectionName(DATABASENAME, tableName, PRIMARYKEY);
mongoUpdateDTO.setData(map);
ServiceResponse<Integer> update = mongoOperApiService.update(mongoUpdateDTO);
return update;
}
private List<Criteria> getCriteriaList(Map<String, Object> map, TabTableSetting tableSetting){
List<TableSettingFieldDTO> fieldDTOS = tableSettingFieldService.listTableField(tableSetting.getTableId());
Map<String, TableSettingFieldDTO> fieldDTOMap = fieldDTOS.stream().collect(Collectors.toMap(TableSettingFieldDTO::getFieldKey, TableSettingFieldDTO -> TableSettingFieldDTO));
List<Criteria> criteriaList = new ArrayList<>();
map.forEach((k, v) -> {
Criteria criteria = null;
if(k.equals(PRIMARYKEY)){
criteria = new Criteria(k, MongoOperTypeEnum.EQ, v);
} else {
if(fieldDTOMap.get(k).getFieldType().equals(FieldTypeEnum.STRING.getType())){
criteria = new Criteria(k, MongoOperTypeEnum.REGEX, v);
} else if(fieldDTOMap.get(k).getFieldType().equals(FieldTypeEnum.DATE.getType())){
String s = v+"";
if(StringUtils.isNotBlank(s)){
String[] split = s.split("-");
if(split.length == 2){
JSONObject json = new JSONObject();
json.put("start", split[0]);
json.put("end", split[1]);
criteria = new Criteria(k, MongoOperTypeEnum.BETWEEN, json);
}
}
} else {
criteria = new Criteria(k, MongoOperTypeEnum.EQ, v);
}
}
if(criteria != null){
criteriaList.add(criteria);
}
});
Criteria criteria = new Criteria("delete_flag", MongoOperTypeEnum.EQ, 1);
criteriaList.add(criteria);
return criteriaList;
}
}
package com.gic.operation.web.controller;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.response.EnterpriseRestResponse;
......@@ -7,13 +8,26 @@ import com.gic.enterprise.service.CustomSettingApiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Map;
@Controller
public class CustomSettingController {
@Autowired
CustomSettingApiService customSettingApiService;
/**
* save
* @Title: save
* @Description:
* @author taogs
* @param tableName
* @param param {"enterpriseId":1166,"ttt":3}
* @return com.gic.commons.webapi.reponse.RestResponse
* @throws
*/
@RequestMapping("save")
@ResponseBody
public RestResponse save(String tableName, String param){
......@@ -23,4 +37,44 @@ public class CustomSettingController {
}
return EnterpriseRestResponse.failure(save);
}
/**
* getDetail
* @Title: getDetail
* @Description:
* @author taogs
* @param tableName
* @param searchParams {"id":1}
* @return com.gic.commons.webapi.reponse.RestResponse
* @throws
*/
@RequestMapping("get-detail")
@ResponseBody
public RestResponse getDetail(String tableName, String searchParams){
ServiceResponse<Map<String, Object>> detail = customSettingApiService.getDetail(tableName, searchParams);
if(detail.isSuccess()){
return RestResponse.success(detail.getResult());
}
return EnterpriseRestResponse.failure(detail);
}
@RequestMapping("page")
@ResponseBody
public RestResponse page(String tableName, String searchParams, @RequestParam(defaultValue = "1") Integer currentPage, @RequestParam(defaultValue = "20") Integer pageSize){
ServiceResponse<Page<Map>> page = customSettingApiService.page(tableName, searchParams, currentPage, pageSize);
if(page.isSuccess()){
return RestResponse.success(page.getResult());
}
return EnterpriseRestResponse.failure(page);
}
@RequestMapping("delete")
@ResponseBody
public RestResponse delete(String tableName, String id){
ServiceResponse<Integer> delete = customSettingApiService.delete(tableName, id);
if(delete.isSuccess()){
return RestResponse.success();
}
return EnterpriseRestResponse.failure(delete);
}
}
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