first commit

This commit is contained in:
niuge
2021-11-29 14:06:41 +08:00
parent 9fe956e941
commit 9450445e2a
259 changed files with 27872 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
package com.risk.riskmanage.datamanage.common;
public class ExcelHeader {
public static final String[] fieldExcelHeader = { "字段编号", "字段名", "字段中文名", "字段类型", "字段值类型", "字段值范围", "是否衍生", "是否输出", "创建人" };
public static final String[] fieldExcelClass = { "id", "fieldEn", "fieldCn", "fieldType", "valueTypeName", "valueScope", "isDerivativeName", "isOutputName", "nickName" };
}

View File

@@ -0,0 +1,666 @@
package com.risk.riskmanage.datamanage.common;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
public class ExcelUtil<T> {
public static <T> void exportFieldExcel(OutputStream out ,String exlType,String[] headers,String[] classNames, List<T> list ) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{
Workbook workbook;
if (exlType.equalsIgnoreCase("xlsx")) {
// 2007以上
workbook = new SXSSFWorkbook(200);
} else {
// 97-2003
workbook = new HSSFWorkbook();
}
Sheet sheet = workbook.createSheet("title");
sheet.setColumnWidth((short)0, 10* 256);
sheet.setColumnWidth((short)1, 20* 256);
sheet.setColumnWidth((short)2, 20* 256);
sheet.setColumnWidth((short)3, 10* 256);
sheet.setColumnWidth((short)4, 10* 256);
sheet.setColumnWidth((short)5, 75* 256);
// sheet.setColumnWidth((short)6, 75* 256);
CellStyle cellStyle = workbook.createCellStyle();
CellStyle cellStyle1 = workbook.createCellStyle();
Font font = workbook.createFont();
Font font1 = workbook.createFont();
//微软雅黑,字体10,加粗,背景灰色
font.setFontName("微软雅黑");
font.setFontHeight((short) 240);
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
cellStyle.setFont(font);
cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 指定单元格居中对齐
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
cellStyle.setWrapText(true);
cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体
cellStyle.setBorderLeft(CellStyle.BORDER_THIN);
cellStyle.setBorderRight(CellStyle.BORDER_THIN);
cellStyle.setBorderTop(CellStyle.BORDER_THIN);
//微软雅黑,字体10,加粗,背景灰色
font1.setFontName("微软雅黑");
font1.setFontHeight((short) 240);
cellStyle1.setFont(font1);
cellStyle1.setAlignment(CellStyle.ALIGN_LEFT); // 指定单元格居中对齐
cellStyle1.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
cellStyle1.setWrapText(true);
cellStyle1.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体
cellStyle1.setBorderLeft(CellStyle.BORDER_THIN);
cellStyle1.setBorderRight(CellStyle.BORDER_THIN);
cellStyle1.setBorderTop(CellStyle.BORDER_THIN);
Row row = sheet.createRow(0);
row.setHeight((short) 400);
for (short i = 0; i < headers.length; i++) {
Cell cell = row.createCell(i);
cell.setCellStyle(cellStyle);
cell.setCellValue(headers[i]);
}
Iterator<T> it = list.iterator();
int index = 0;
while (it.hasNext()) {
index++;
row = sheet.createRow(index);
row.setHeight((short) 400);
T t = it.next();
if(null!=t){
for (int j = 0; j < headers.length; j++) {
Cell cell = row.createCell(j);
Field field = t.getClass().getDeclaredField(classNames[j]);
field.setAccessible(true);
Class valType = field.getType();
cell.setCellStyle(cellStyle1);
//数据转类型
if("java.lang.String".equalsIgnoreCase( valType.getName())){
cell.setCellValue((String) field.get(t));
}else if("java.lang.Integer".equalsIgnoreCase(valType.getName())||"int".equalsIgnoreCase(valType.getName())){
cell.setCellValue((Integer) field.get(t));
}else if("java.lang.Double".equalsIgnoreCase(valType.getName())||"double".equalsIgnoreCase(valType.getName())){
cell.setCellValue((Double) field.get(t)==null?0:(Double) field.get(t));
}else if("java.lang.Long".equalsIgnoreCase(valType.getName())||"long".equalsIgnoreCase(valType.getName())){
cell.setCellValue((Long) field.get(t)==null?0:(Long) field.get(t));
}else if("java.util.Date".equalsIgnoreCase(valType.getName())) {
if(null==field.get(t)){
cell.setCellValue("");
}else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
cell.setCellValue(sdf.format((Date) field.get(t)));
}
}
field.setAccessible(false);
}
}
}
try {
workbook.write(out);
out.flush();
out.close();
out = null;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (out != null)
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 导出黑白名单库里的客户列表到excel兼容黑白名单库的导入模版
*
* @param sheet
* @param row
* @param column
* @return
*/
public static <T> void exportCustListExcel(OutputStream out ,String exlType,String[] headers,String[] classNames, List<T> list ) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{
Workbook workbook;
if (exlType.equalsIgnoreCase("xlsx")) {
// 2007以上
workbook = new SXSSFWorkbook(200);
} else {
// 97-2003
workbook = new HSSFWorkbook();
}
Sheet sheet = workbook.createSheet("title");
//默认20列
sheet.setColumnWidth((short)0, 10* 256);
sheet.setColumnWidth((short)1, 10* 256);
sheet.setColumnWidth((short)2, 10* 256);
sheet.setColumnWidth((short)3, 10* 256);
sheet.setColumnWidth((short)4, 10* 256);
sheet.setColumnWidth((short)5, 10* 256);
sheet.setColumnWidth((short)6, 10* 256);
sheet.setColumnWidth((short)7, 10* 256);
sheet.setColumnWidth((short)8, 10* 256);
sheet.setColumnWidth((short)9, 10* 256);
sheet.setColumnWidth((short)10, 10* 256);
sheet.setColumnWidth((short)11, 10* 256);
sheet.setColumnWidth((short)12, 10* 256);
sheet.setColumnWidth((short)13, 10* 256);
sheet.setColumnWidth((short)14, 10* 256);
sheet.setColumnWidth((short)15, 10* 256);
sheet.setColumnWidth((short)16, 10* 256);
sheet.setColumnWidth((short)17, 10* 256);
sheet.setColumnWidth((short)18, 10* 256);
sheet.setColumnWidth((short)19, 10* 256);
CellStyle cellStyle = workbook.createCellStyle();
CellStyle cellStyle1 = workbook.createCellStyle();
Font font = workbook.createFont();
Font font1 = workbook.createFont();
//微软雅黑,字体10,加粗,背景灰色
font.setFontName("微软雅黑");
font.setFontHeight((short) 240);
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
cellStyle.setFont(font);
cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 指定单元格居中对齐
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
cellStyle.setWrapText(true);
cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体
cellStyle.setBorderLeft(CellStyle.BORDER_THIN);
cellStyle.setBorderRight(CellStyle.BORDER_THIN);
cellStyle.setBorderTop(CellStyle.BORDER_THIN);
//微软雅黑,字体10,加粗,背景灰色
font1.setFontName("微软雅黑");
font1.setFontHeight((short) 240);
cellStyle1.setFont(font1);
cellStyle1.setAlignment(CellStyle.ALIGN_LEFT); // 指定单元格居中对齐
cellStyle1.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
cellStyle1.setWrapText(true);
cellStyle1.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体
cellStyle1.setBorderLeft(CellStyle.BORDER_THIN);
cellStyle1.setBorderRight(CellStyle.BORDER_THIN);
cellStyle1.setBorderTop(CellStyle.BORDER_THIN);
Row row = sheet.createRow(0);
row.setHeight((short) 400);
for (short i = 0; i < headers.length; i++) {
Cell cell = row.createCell(i);
cell.setCellStyle(cellStyle);
cell.setCellValue(headers[i]);
}
Iterator<T> it = list.iterator();
int index = 0;
while (it.hasNext()) {
index++;
row = sheet.createRow(index);
row.setHeight((short) 400);
T t = it.next();
if(null!=t){
for (int j = 0; j < headers.length; j++) {
Cell cell = row.createCell(j);
Field field = t.getClass().getDeclaredField(classNames[j]);
field.setAccessible(true);
Class valType = field.getType();
cell.setCellStyle(cellStyle1);
//数据转类型
if("java.lang.String".equalsIgnoreCase( valType.getName())){
cell.setCellValue((String) field.get(t));
}else if("java.lang.Integer".equalsIgnoreCase(valType.getName())||"int".equalsIgnoreCase(valType.getName())){
cell.setCellValue((Integer) field.get(t));
}else if("java.lang.Double".equalsIgnoreCase(valType.getName())||"double".equalsIgnoreCase(valType.getName())){
cell.setCellValue((Double) field.get(t)==null?0:(Double) field.get(t));
}else if("java.lang.Long".equalsIgnoreCase(valType.getName())||"long".equalsIgnoreCase(valType.getName())){
cell.setCellValue((Long) field.get(t)==null?0:(Long) field.get(t));
}else if("java.util.Date".equalsIgnoreCase(valType.getName())) {
if(null==field.get(t)){
cell.setCellValue("");
}else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
cell.setCellValue(sdf.format((Date) field.get(t)));
}
}
field.setAccessible(false);
}
}
}
try {
workbook.write(out);
out.flush();
out.close();
out = null;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (out != null)
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 导出黑白名单库里的客户列表到excel兼容黑白名单库的导入模版
*
* @param sheet
* @param row
* @param column
* @return
*/
public static <T> void createCustListExcel(String path, String exlType,String[] headers,String[] classNames, List<T> list ) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{
Workbook workbook;
if (exlType.equalsIgnoreCase("xlsx")) {
// 2007以上
workbook = new SXSSFWorkbook(200);
} else {
// 97-2003
workbook = new HSSFWorkbook();
}
Sheet sheet = workbook.createSheet("title");
//默认20列
sheet.setColumnWidth((short)0, 10* 256);
sheet.setColumnWidth((short)1, 10* 256);
sheet.setColumnWidth((short)2, 10* 256);
sheet.setColumnWidth((short)3, 10* 256);
sheet.setColumnWidth((short)4, 10* 256);
sheet.setColumnWidth((short)5, 10* 256);
sheet.setColumnWidth((short)6, 10* 256);
sheet.setColumnWidth((short)7, 10* 256);
sheet.setColumnWidth((short)8, 10* 256);
sheet.setColumnWidth((short)9, 10* 256);
sheet.setColumnWidth((short)10, 10* 256);
sheet.setColumnWidth((short)11, 10* 256);
sheet.setColumnWidth((short)12, 10* 256);
sheet.setColumnWidth((short)13, 10* 256);
sheet.setColumnWidth((short)14, 10* 256);
sheet.setColumnWidth((short)15, 10* 256);
sheet.setColumnWidth((short)16, 10* 256);
sheet.setColumnWidth((short)17, 10* 256);
sheet.setColumnWidth((short)18, 10* 256);
sheet.setColumnWidth((short)19, 10* 256);
CellStyle cellStyle = workbook.createCellStyle();
CellStyle cellStyle1 = workbook.createCellStyle();
Font font = workbook.createFont();
Font font1 = workbook.createFont();
//微软雅黑,字体10,加粗,背景灰色
font.setFontName("微软雅黑");
font.setFontHeight((short) 240);
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
cellStyle.setFont(font);
cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 指定单元格居中对齐
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
cellStyle.setWrapText(true);
cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体
cellStyle.setBorderLeft(CellStyle.BORDER_THIN);
cellStyle.setBorderRight(CellStyle.BORDER_THIN);
cellStyle.setBorderTop(CellStyle.BORDER_THIN);
//微软雅黑,字体10,加粗,背景灰色
font1.setFontName("微软雅黑");
font1.setFontHeight((short) 240);
cellStyle1.setFont(font1);
cellStyle1.setAlignment(CellStyle.ALIGN_LEFT); // 指定单元格居中对齐
cellStyle1.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
cellStyle1.setWrapText(true);
cellStyle1.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体
cellStyle1.setBorderLeft(CellStyle.BORDER_THIN);
cellStyle1.setBorderRight(CellStyle.BORDER_THIN);
cellStyle1.setBorderTop(CellStyle.BORDER_THIN);
Row row = sheet.createRow(0);
row.setHeight((short) 400);
for (short i = 0; i < headers.length; i++) {
Cell cell = row.createCell(i);
cell.setCellStyle(cellStyle);
cell.setCellValue(headers[i]);
}
Iterator<T> it = list.iterator();
int index = 0;
while (it.hasNext()) {
index++;
row = sheet.createRow(index);
row.setHeight((short) 400);
T t = it.next();
if(null!=t){
for (int j = 0; j < headers.length; j++) {
Cell cell = row.createCell(j);
Field field = t.getClass().getDeclaredField(classNames[j]);
field.setAccessible(true);
Class valType = field.getType();
cell.setCellStyle(cellStyle1);
//数据转类型
if("java.lang.String".equalsIgnoreCase( valType.getName())){
cell.setCellValue((String) field.get(t));
}else if("java.lang.Integer".equalsIgnoreCase(valType.getName())||"int".equalsIgnoreCase(valType.getName())){
cell.setCellValue((Integer) field.get(t));
}else if("java.lang.Double".equalsIgnoreCase(valType.getName())||"double".equalsIgnoreCase(valType.getName())){
cell.setCellValue((Double) field.get(t)==null?0:(Double) field.get(t));
}else if("java.lang.Long".equalsIgnoreCase(valType.getName())||"long".equalsIgnoreCase(valType.getName())){
cell.setCellValue((Long) field.get(t)==null?0:(Long) field.get(t));
}else if("java.util.Date".equalsIgnoreCase(valType.getName())) {
if(null==field.get(t)){
cell.setCellValue("");
}else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
cell.setCellValue(sdf.format((Date) field.get(t)));
}
}
field.setAccessible(false);
}
}
}
try {
FileOutputStream output=new FileOutputStream(path);
workbook.write(output);
output.close();
output = null;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
}
/**
* 导出引擎批量测试结果到excel
*
* @param sheet
* @param row
* @param column
* @return
*/
public static <T> void exportEngineTestResultExcel(OutputStream out ,String exlType,String[] headers,String[] classNames, List<T> list ) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{
Workbook workbook;
if (exlType.equalsIgnoreCase("xlsx")) {
// 2007以上
workbook = new SXSSFWorkbook(200);
} else {
// 97-2003
workbook = new HSSFWorkbook();
}
Sheet sheet = workbook.createSheet("title");
sheet.setColumnWidth((short)0, 10* 256);
sheet.setColumnWidth((short)1, 15* 256);
sheet.setColumnWidth((short)2, 15* 256);
sheet.setColumnWidth((short)3, 15* 256);
sheet.setColumnWidth((short)4, 15* 256);
sheet.setColumnWidth((short)5, 15* 256);
sheet.setColumnWidth((short)6, 20* 256);
sheet.setColumnWidth((short)7, 20* 256);
CellStyle cellStyle = workbook.createCellStyle();
CellStyle cellStyle1 = workbook.createCellStyle();
Font font = workbook.createFont();
Font font1 = workbook.createFont();
//微软雅黑,字体10,加粗,背景灰色
font.setFontName("微软雅黑");
font.setFontHeight((short) 240);
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
cellStyle.setFont(font);
cellStyle.setAlignment(CellStyle.ALIGN_CENTER); // 指定单元格居中对齐
cellStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
cellStyle.setWrapText(true);
cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体
cellStyle.setBorderLeft(CellStyle.BORDER_THIN);
cellStyle.setBorderRight(CellStyle.BORDER_THIN);
cellStyle.setBorderTop(CellStyle.BORDER_THIN);
//微软雅黑,字体10,加粗,背景灰色
font1.setFontName("微软雅黑");
font1.setFontHeight((short) 240);
cellStyle1.setFont(font1);
cellStyle1.setAlignment(CellStyle.ALIGN_LEFT); // 指定单元格居中对齐
cellStyle1.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
cellStyle1.setWrapText(true);
cellStyle1.setBorderBottom(CellStyle.BORDER_THIN); // 设置单无格的边框为粗体
cellStyle1.setBorderLeft(CellStyle.BORDER_THIN);
cellStyle1.setBorderRight(CellStyle.BORDER_THIN);
cellStyle1.setBorderTop(CellStyle.BORDER_THIN);
Row row = sheet.createRow(0);
row.setHeight((short) 400);
for (short i = 0; i < headers.length; i++) {
Cell cell = row.createCell(i);
cell.setCellStyle(cellStyle);
cell.setCellValue(headers[i]);
}
Iterator<T> it = list.iterator();
int index = 0;
while (it.hasNext()) {
index++;
row = sheet.createRow(index);
row.setHeight((short) 400);
T t = it.next();
if(null!=t){
for (int j = 0; j < headers.length; j++) {
Cell cell = row.createCell(j);
Field field = t.getClass().getDeclaredField(classNames[j]);
field.setAccessible(true);
Class valType = field.getType();
cell.setCellStyle(cellStyle1);
//数据转类型
if("java.lang.String".equalsIgnoreCase( valType.getName())){
cell.setCellValue((String) field.get(t));
}else if("java.lang.Integer".equalsIgnoreCase(valType.getName())||"int".equalsIgnoreCase(valType.getName())){
cell.setCellValue((Integer) field.get(t));
}else if("java.lang.Double".equalsIgnoreCase(valType.getName())||"double".equalsIgnoreCase(valType.getName())){
cell.setCellValue((Double) field.get(t)==null?0:(Double) field.get(t));
}else if("java.lang.Long".equalsIgnoreCase(valType.getName())||"long".equalsIgnoreCase(valType.getName())){
cell.setCellValue((Long) field.get(t)==null?0:(Long) field.get(t));
}else if("java.util.Date".equalsIgnoreCase(valType.getName())) {
if(null==field.get(t)){
cell.setCellValue("");
}else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
cell.setCellValue(sdf.format((Date) field.get(t)));
}
}
field.setAccessible(false);
}
}
}
try {
workbook.write(out);
out.flush();
out.close();
out = null;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (out != null)
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 获取合并单元格的值
*
* @param sheet
* @param row
* @param column
* @return
*/
public static String getMergedRegionValue(Sheet sheet, int row, int column) {
int sheetMergeCount = sheet.getNumMergedRegions();
for (int i = 0; i < sheetMergeCount; i++) {
CellRangeAddress ca = sheet.getMergedRegion(i);
int firstColumn = ca.getFirstColumn();
int lastColumn = ca.getLastColumn();
int firstRow = ca.getFirstRow();
int lastRow = ca.getLastRow();
if (row >= firstRow && row <= lastRow) {
if (column >= firstColumn && column <= lastColumn) {
Row fRow = sheet.getRow(firstRow);
Cell fCell = fRow.getCell(firstColumn);
return getCellValue(fCell);
}
}
}
return null;
}
/**
* 判断合并行
*
* @param sheet
* @param row
* @param column
* @return
*/
public static boolean isMergedRow(Sheet sheet, int row, int column) {
int sheetMergeCount = sheet.getNumMergedRegions();
for (int i = 0; i < sheetMergeCount; i++) {
CellRangeAddress range = sheet.getMergedRegion(i);
int firstColumn = range.getFirstColumn();
int lastColumn = range.getLastColumn();
int firstRow = range.getFirstRow();
int lastRow = range.getLastRow();
if (row == firstRow && row == lastRow) {
if (column >= firstColumn && column <= lastColumn) {
return true;
}
}
}
return false;
}
/**
* 判断合并列
*
* @param sheet
* @param row
* @param column
* @return
*/
public static boolean isMergedCol(Sheet sheet, int row, int column) {
int sheetMergeCount = sheet.getNumMergedRegions();
for (int i = 0; i < sheetMergeCount; i++) {
CellRangeAddress range = sheet.getMergedRegion(i);
int firstColumn = range.getFirstColumn();
int lastColumn = range.getLastColumn();
int firstRow = range.getFirstRow();
int lastRow = range.getLastRow();
if(column== firstColumn && column==lastColumn){
if (row>=firstRow&& row<=lastRow){
return true;
}
}
}
return false;
}
/**
* 判断指定的单元格是否是合并单元格
*
* @param sheet
* @param row
* 行下标
* @param column
* 列下标
* @return
*/
public static boolean isMergedRegion(Sheet sheet, int row, int column) {
int sheetMergeCount = sheet.getNumMergedRegions();
for (int i = 0; i < sheetMergeCount; i++) {
CellRangeAddress range = sheet.getMergedRegion(i);
int firstColumn = range.getFirstColumn();
int lastColumn = range.getLastColumn();
int firstRow = range.getFirstRow();
int lastRow = range.getLastRow();
if (row >= firstRow && row <= lastRow) {
if (column >= firstColumn && column <= lastColumn) {
return true;
}
}
}
return false;
}
/**
* 获取单元格的值
*
* @param cell
* @return
*/
public static String getCellValue(Cell cell) {
if (cell == null)
return "";
if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
return cell.getStringCellValue();
} else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
return String.valueOf(cell.getBooleanCellValue());
} else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
return cell.getCellFormula();
} else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
return String.valueOf(cell.getNumericCellValue());
}
return "";
}
}

View File

@@ -0,0 +1,11 @@
package com.risk.riskmanage.datamanage.common;
public enum Status {
enable(1), disable(0), delete(-1), yes(1), no(0);
public final int value;
private Status(int value) {
this.value = value;
}
}

View File

@@ -0,0 +1,17 @@
package com.risk.riskmanage.datamanage.common;
public enum ValueType {
// 待选:0, 数值型:1, 字符型:2, 枚举型:3, 小数型:4, 数组型:5
Unknown(0), Num(1), Char(2), Enum(3), Dec(4), Array(5);
public final int value;
private ValueType(int value) {
this.value = value;
}
public int getValue(){
return value;
}
}

View File

@@ -0,0 +1,870 @@
package com.risk.riskmanage.datamanage.controller.v2;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.risk.riskmanage.common.basefactory.BaseController;
import com.risk.riskmanage.common.constants.CommonConst;
import com.risk.riskmanage.common.constants.OpTypeConst;
import com.risk.riskmanage.common.enums.ErrorCodeEnum;
import com.risk.riskmanage.common.exception.ApiException;
import com.risk.riskmanage.common.model.ResponseEntityDto;
import com.risk.riskmanage.common.utils.ResponseEntityBuilder;
import com.risk.riskmanage.datamanage.common.ValueType;
import com.risk.riskmanage.datamanage.model.Field;
import com.risk.riskmanage.datamanage.model.FieldCond;
import com.risk.riskmanage.datamanage.model.FieldType;
import com.risk.riskmanage.datamanage.model.request.FieldSaveParam;
import com.risk.riskmanage.datamanage.model.request.FieldTreeParam;
import com.risk.riskmanage.datamanage.vo.FieldEnumVo;
import com.risk.riskmanage.datamanage.vo.FieldFormulaVo;
import com.risk.riskmanage.datamanage.vo.FieldSubCondVo;
import com.risk.riskmanage.logger.ArchivesLog;
import com.risk.riskmanage.system.model.User;
import com.risk.riskmanage.util.CollectionUtil;
import com.risk.riskmanage.util.SessionManager;
import com.risk.riskmanage.util.StringUtil;
import com.risk.riskmanage.common.model.requestParam.UpdateFolderParam;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.util.regex.Pattern;
/**
* 提供field相关接口
*
* @apiDefine field 2.指标管理
*/
@Controller("fieldControllerV2")
@RequestMapping("/v2/datamanage/field")
@ResponseBody
public class FieldController extends BaseController {
/**
* @api {POST} /v2/datamanage/field/listTree 2.01. 获取节点树
* @apiGroup field
* @apiVersion 2.0.0
* @apiParam {Integer} parentId parentId, 值为 0或 空字符串都行(此时获取的是所有文件夹目录)
* @apiParamExample {json} 请求示例:
* {}
* @apiSuccessExample {json} Success-Response:
* {"data":[{"userId":135,"organId":46,"status":1,"isCommon":1,"parentId":303,"children":[{"children":[{"children":[],"fieldType":"信用卡","icon":"../resource/images/authority/folder.png","id":306,"isCommon":1,"isParent":"true","page":0,"parentId":305,"rows":0}],"fieldType":"银行","icon":"../resource/images/authority/folder.png","id":305,"isCommon":1,"isParent":"true","page":0,"parentId":0,"rows":0},{"children":[{"children":[],"fieldType":"网点余额不足风险","icon":"../resource/images/authority/folder.png","id":304,"isCommon":1,"isParent":"true","page":0,"parentId":302,"rows":0},{"children":[],"fieldType":"代收货款与到付","icon":"../resource/images/authority/folder.png","id":303,"isCommon":1,"isParent":"true","page":0,"parentId":302,"rows":0}],"fieldType":"物流","icon":"../resource/images/authority/folder.png","id":302,"isCommon":1,"isParent":"true","page":0,"parentId":0,"rows":0}],"fieldType":"通用字段","id":99999999}],"error":"00000000","status":"1"}
*/
@RequestMapping(value = "/listTree", method = RequestMethod.POST)
public ResponseEntityDto<Object> listTree(@RequestBody Map<String, Object> paramMap) {
User loginAccount = SessionManager.getLoginAccount();
paramMap.put("userId", loginAccount.getUserId());
paramMap.put("organId", loginAccount.getOrganId());
paramMap.put("status", 1);
Integer isCommon = 1;
Integer engineId = null;
if (paramMap.containsKey("engineId") && !paramMap.get("engineId").equals("")) {
isCommon = null;
engineId = Integer.valueOf((String) paramMap.get("engineId")).intValue();
paramMap.put("engineId", engineId);
} else {
paramMap.put("engineId", null);
}
paramMap.put("isCommon", isCommon);
List<FieldType> klist = s.fieldTypeService.getFieldTypeList(paramMap);
for (FieldType fieldTypeVo : klist) {
if (engineId != null && fieldTypeVo.getIsCommon() == 1) {
String fieldType = fieldTypeVo.getFieldType();
fieldTypeVo.setFieldType(fieldType + "(通用)");
}
paramMap.put("parentId", fieldTypeVo.getId());
fieldTypeVo.setChildren(getChildren(paramMap));
}
FieldType[] kArray = new FieldType[klist.size()];
kArray = klist.toArray(kArray);
paramMap.put("children", kArray);
paramMap.put("fieldType", "通用字段");
paramMap.put("id", 99999999);
ArrayList<Map> list = new ArrayList<>();
list.add(paramMap);
return ResponseEntityBuilder.buildNormalResponse(list);
}
@RequestMapping(value = "/newListTree", method = RequestMethod.POST)
public ResponseEntityDto<Object> newListTree(@RequestBody FieldTreeParam param) {
if (param==null||param.getType()==null){
throw new ApiException(ErrorCodeEnum.PARAMS_EXCEPTION.getCode(),ErrorCodeEnum.PARAMS_EXCEPTION.getMessage());
}
List<FieldType> list = s.fieldTypeService.getTreeList(param);
Map paramMap=new HashMap<>();
paramMap.put("children", list);
paramMap.put("fieldType", "通用字段");
paramMap.put("id", 99999999);
List response= new ArrayList<>();
response.add(paramMap);
return ResponseEntityBuilder.buildNormalResponse(response);
}
/**
* getChildren:(获取树形节点的子节点信息)
*
* @param paramMap
* @return
*/
private FieldType[] getChildren(Map<String, Object> paramMap) {
List<FieldType> klist = s.fieldTypeService.getFieldTypeList(paramMap);
for (FieldType fieldTreeVo : klist) {
paramMap.put("parentId", fieldTreeVo.getId());
fieldTreeVo.setChildren(getChildren(paramMap));
}
FieldType[] kArray = new FieldType[klist.size()];
kArray = klist.toArray(kArray);
return kArray;
}
/**
* @api {POST} /v2/datamanage/field/addTree 2.02. 添加树节点
* @apiGroup field
* @apiVersion 2.0.0
* @apiParam {String} fieldType 文件夹的名字
* @apiParam {String} parentId parentId
* @apiParam {Integer} [id] id可传可不传无实际意义
* @apiParamExample {json} Request:
* {
* "parentId": "302",
* "fieldType": "测试类型"
* }
* @apiSuccessExample {json} Success-Response:
* {"status":"1","error":"00000000","msg":null,"data":{"parentId":"302","fieldType":"测试类型","userId":135,"organId":46,"engineId":null,"isCommon":1,"fieldTypeId":365,"id":2810,"result":1}}
*/
@RequestMapping(value = "/addTree", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.SAVE_FILED_TREE)
public ResponseEntityDto<Object> addTree(@RequestBody Map<String, Object> paramMap) {
// fieldTypeId, parentId, id
User loginAccount = SessionManager.getLoginAccount();
paramMap.put("userId", loginAccount.getUserId());
paramMap.put("organId", loginAccount.getOrganId());
Integer isCommon = 1;
Integer engineId = null;
if (paramMap.containsKey("engineId") && !paramMap.get("engineId").equals("")) {
isCommon = 0;
engineId = Integer.valueOf((String) paramMap.get("engineId")).intValue();
paramMap.put("engineId", engineId);
} else {
isCommon = 1;
paramMap.put("engineId", null);
}
paramMap.put("isCommon", isCommon);
FieldType fieldTypeVo = new FieldType();
fieldTypeVo.setIsCommon(isCommon);
fieldTypeVo.setParentId(Integer.valueOf( paramMap.get("parentId").toString()));
fieldTypeVo.setFieldType((String) paramMap.get("fieldType"));
fieldTypeVo.setType(Integer.valueOf(paramMap.get("type").toString()));
boolean flag = s.fieldTypeService.createFieldType(fieldTypeVo, paramMap);
if (flag) {
paramMap.put("result", 1);
} else {
paramMap.put("result", -1);
}
return ResponseEntityBuilder.buildNormalResponse(paramMap);
}
/**
* @api {POST} /v2/datamanage/field/updateTree 2.03. 修改树节点
* @apiGroup field
* @apiVersion 2.0.0
* @apiParam {Integer} id id
* @apiParam {String} fieldType 文件夹的名称
* @apiParam {Integer} fieldType 文件夹的名称
* @apiParam {String} [status] -1表示删除
* @apiParamExample {json} Request:
* {
* "parentId":302,
* "fieldType": "测试哈哈类型",
* "id": 365,
* "status": 1
* }
* @apiSuccessExample {json} Success-Response:
* {"status":"1","error":"00000000","msg":null,"data":{"parentId":302,"fieldType":"测试哈哈类型","id":365,"status":1,"userId":135,"engineId":null,"organId":46,"isCommon":1,"result":1}}
*/
@RequestMapping(value = "/updateTree", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_FILED_TREE)
public ResponseEntityDto<Object> updateTree(@RequestBody FieldTreeParam param) {
Integer status = param.getStatus();
boolean b = s.fieldTypeService.updateFieldType(param);
if (b){
return ResponseEntityBuilder.buildNormalResponse();
}
return ResponseEntityBuilder.buildErrorResponse("修改指标文件夹错误","修改指标文件夹错误");
// int num = this.fieldTypeAjaxValidate(paramMap);
// if (num > 0) {
// throw new ApiException(ErrorCodeEnum.FIELD_TYPE_REPEAT.getVersionCode(), ErrorCodeEnum.FIELD_TYPE_REPEAT.getMessage());
// }
// User loginAccount = SessionManager.getLoginAccount();
// paramMap.put("userId", loginAccount.getUserId());
// paramMap.put("organId", loginAccount.getOrganId());
//
// Integer isCommon = 1;
// Integer engineId = null;
// if (paramMap.containsKey("engineId") && paramMap.get("engineId") != null && !paramMap.get("engineId").equals("")) {
// isCommon = 0;
// engineId = Integer.valueOf((String) paramMap.get("engineId")).intValue();
// paramMap.put("engineId", engineId);
// } else {
// isCommon = 1;
// paramMap.put("engineId", null);
// }
//
// paramMap.put("isCommon", isCommon);
//
// boolean flag = s.fieldTypeService.updateFieldType(paramMap);
// if (flag) {
// paramMap.put("result", 1);
// } else {
// paramMap.put("result", -1);
// }
}
private int fieldTypeAjaxValidate(Map<String, Object> paramMap) {
Long userId = SessionManager.getLoginAccount().getUserId();
paramMap.put("userId", userId);
if (!paramMap.containsKey("engineId")) {
paramMap.put("engineId", null);
}
return s.fieldService.isExistsFieldType(paramMap);
}
/**
* @api {POST} /v2/datamanage/field/list 2.04. 获取指标列表
* @apiGroup field
* @apiVersion 2.0.0
* @apiParam {Integer} isCommon isCommon 值为1时查询通用字段 数据库管理不用传isCommon
* @apiParam {String} [fieldTypeId] 指标类型id当fieldTypeId为空或不传时查询的时整个通用字段下面的所有指标
* @apiParam {Integer} pageNo 第几页,默认为 1
* @apiParam {Integer} [pageSize] 每页的条数,默认为 10
* @apiParamExample {json} Request:
* {
* "isCommon": 1,
* "fieldTypeId": 99999999,
* "pageNo": 1,
* "pageSize": 2
* }
* @apiSuccessExample {json} Success-Response:
* {"status":"1","error":"00000000","msg":null,"data":{"fieldVos":[{"page":0,"rows":0,"total":null,"id":876,"fieldEn":"network_real_amount_derive","fieldCn":"网点余额衍生字段","fieldTypeId":302,"fieldType":"物流","valueType":1,"valueTypeName":null,"valueScope":"[-1,9999999)","isDerivative":1,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":135,"nickName":"管理员","created":1615535468000,"engineId":null,"engineName":null,"status":"1","fieldCondList":null,"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":null},{"page":0,"rows":0,"total":null,"id":873,"fieldEn":"ziduan111733","fieldCn":"字段111733","fieldTypeId":327,"fieldType":"ddd","valueType":2,"valueTypeName":null,"valueScope":"qwer","isDerivative":0,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":135,"nickName":"管理员","created":1615455268000,"engineId":null,"engineName":null,"status":"1","fieldCondList":null,"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":null}],"pager":{"pageNum":1,"pageSize":2,"size":2,"startRow":1,"endRow":2,"total":261,"pages":131,"list":[{"page":0,"rows":0,"total":null,"id":876,"fieldEn":"network_real_amount_derive","fieldCn":"网点余额衍生字段","fieldTypeId":302,"fieldType":"物流","valueType":1,"valueTypeName":null,"valueScope":"[-1,9999999)","isDerivative":1,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":135,"nickName":"管理员","created":1615535468000,"engineId":null,"engineName":null,"status":"1","fieldCondList":null,"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":null},{"page":0,"rows":0,"total":null,"id":873,"fieldEn":"ziduan111733","fieldCn":"字段111733","fieldTypeId":327,"fieldType":"ddd","valueType":2,"valueTypeName":null,"valueScope":"qwer","isDerivative":0,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":null,"origFieldId":null,"author":135,"nickName":"管理员","created":1615455268000,"engineId":null,"engineName":null,"status":"1","fieldCondList":null,"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":null}],"prePage":0,"nextPage":2,"isFirstPage":true,"isLastPage":false,"hasPreviousPage":false,"hasNextPage":true,"navigatePages":8,"navigatepageNums":[1,2,3,4,5,6,7,8],"navigateFirstPage":1,"navigateLastPage":8,"firstPage":1,"lastPage":8},"searchKey":null,"fieldTypeId":null,"engineId":null}}
*/
@RequestMapping(value = "/list", method = RequestMethod.POST)
public ResponseEntityDto<Object> list(@RequestBody HashMap<String, Object> paramMap) {
if (paramMap.get("fieldTypeId") != null && paramMap.get("fieldTypeId").toString().equals("99999999")) {
paramMap.put("fieldTypeId", null);
}
Integer pageNo = paramMap.get("pageNo") == null ? 1 : Integer.valueOf(paramMap.get("pageNo").toString());
Integer pageSize = paramMap.get("pageSize") == null ? 10 : Integer.valueOf(paramMap.get("pageSize").toString());
User loginAccount = SessionManager.getLoginAccount();
paramMap.put("userId", loginAccount.getUserId());
paramMap.put("organId", loginAccount.getOrganId());
String searchKey = (String) paramMap.get("searchKey");
paramMap.put("searchKey", null);
if (!paramMap.containsKey("status"))
paramMap.put("status", null);
if (!paramMap.containsKey("engineId"))
paramMap.put("engineId", null);
PageHelper.startPage(pageNo, pageSize);
List<Field> fieldList = s.fieldService.findByFieldType(paramMap);
PageInfo<Field> pageInfo = new PageInfo<>(fieldList);
if (fieldList == null) {
return ResponseEntityBuilder.buildNormalResponse(null);
}
HashMap<String, Object> modelMap = new HashMap<>();
modelMap.put("pager", pageInfo);
modelMap.put("engineId", null);
modelMap.put("klist",pageInfo.getList());
modelMap.put("searchKey", searchKey);
return ResponseEntityBuilder.buildNormalResponse(modelMap);
}
/**
* @api {POST} /v2/datamanage/field/updateStatus 2.05. 指标停用、启用、删除
* @apiGroup field
* @apiVersion 2.0.0
* @apiParam {Integer} status 0表示停用 1表示启用 -1表示删除
* @apiParam {String} ids id组成的字符串用逗号分隔
* @apiParam {Integer} fieldTypeId fieldTypeId 文件夹的id
* @apiParamExample {json} 请求示例:
* {"status":0,"ids":"820,819,818","fieldTypeId":303}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":{"status":0,"ids":"820,819,818","fieldTypeId":"303","userId":135,"organId":46,"engineId":null,"Ids":[820,819,818],"fieldId":818,"fieldIds":[818],"fieldList":[],"listDbList":[],"ruleList":[],"scorecardList":[],"nodelistDbList":[],"beUsed":false,"result":true}}
*/
@RequestMapping(value = "/updateStatus", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_FILED_STATUS)
public ResponseEntityDto<Object> updateStatus(@RequestBody Map<String, Object> param) {
User loginAccount = SessionManager.getLoginAccount();
param.put("userId", loginAccount.getUserId());
param.put("organId", loginAccount.getOrganId());
param.put("engineId", null);
String idsStr = (String) param.get("ids");
List<Long> Ids = StringUtil.toLongList(idsStr);
param.put("Ids", Ids);
String strFieldTypeId = String.valueOf(param.get("fieldTypeId"));
if (strFieldTypeId == null) {
strFieldTypeId = "";
}
//Long fieldTypeId = s.fieldService.findFieldTypeId(param);
s.fieldService.updateStatus(param);
param.put("fieldTypeId", strFieldTypeId);
return ResponseEntityBuilder.buildNormalResponse(param);
}
/**
* @api {POST} /v2/datamanage/field/save 2.06. 添加指标
* @apiGroup field
* @apiVersion 2.0.0
* @apiParam {String} searchKey searchKey
* @apiParam {Long} [id] 指标ID
* @apiParam {String} formula 衍生字段公式
* @apiParam {String} formulaShow 衍生字段公式回显信息
* @apiParam {Long} engineId 归属的引擎ID
* @apiParam {String} fieldEn 指标英文名:拼接前缀"f_"
* @apiParam {String} fieldCn 指标中文名
* @apiParam {Long} fieldTypeId 字段类型编号
* @apiParam {Integer} valueType 字段存值类型,待选(0),数值型(1),字符型(2),枚举型(3),小数型(4)
* @apiParam {Integer} isDerivative 是否衍生字段0代表不是1代表是
* @apiParam {Integer} isOutput 是否输出字段0代表不是1代表是
* @apiParam {String} valueScope 字段约束范围
* @apiParam {JSONArray} fieldCondList 条件区域内容(传字符串)
* @apiParam (fieldCondList) {String} conditionValue 字段条件值
* @apiParam (fieldCondList) {JSONArray} fieldSubCond 字段列表
* @apiParam (fieldSubCond) {String} fieldId 条件字段编号
* @apiParam (fieldSubCond) {String} operator 条件字段的运算符
* @apiParam (fieldSubCond) {String} fieldValue 条件字段的条件设置值
* @apiParam (fieldSubCond) {String} logical 条件字段间的逻辑符
* @apiParam {JSONArray} formulaHidden 公式编辑、groovy脚本内容传字符串
* @apiParam (formulaHidden) {String} formula 衍生字段公式
* @apiParam (formulaHidden) {String} idx 下标
* @apiParam (formulaHidden) {JSONArray} farr 字段列表
* @apiParam (farr) {String} fieldCN 字段中文名
* @apiParam (farr) {String} fieldCond 字段条件区域
* @apiParam {Boolean} isUseSql 是否使用sql获取指标
* @apiParam {Integer} dataSourceId 使用sql获取指标时对应的数据源
* @apiParam {String} sqlStatement 使用sql获取指标时对应的sql语句
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {"searchKey":"","fieldTypeId":"302","id":"","formula":"","formulaShow":"","engineId":"","fieldEn":"f_f_f_network_real_amount_derive","fieldCn":"网点余额衍生字段","valueType":"1","isDerivative":"1","isOutput":"0","valueScope":"[-1,9999999)","fieldCondList":[{"fieldSubCond":[{"fieldId":"824","operator":">","fieldValue":"2000","logical":"&&"},{"fieldId":"826","operator":"<","fieldValue":"5000"}],"conditionValue":"666"},{"fieldSubCond":[{"fieldId":"824","operator":"<=","fieldValue":"2000","logical":"&&"},{"fieldId":"826","operator":"<","fieldValue":"5000"}],"conditionValue":"888"}],"formulaHidden":[{"fvalue":"","formula":"@同盾_评分@ - @第三方分值@ ","idx":"0","farr":[{"fieldCN":"同盾_评分","fieldCond":""},{"fieldCN":"第三方分值 ","fieldCond":""}]}],"isUseSql":"0","dataSourceId":null,"sqlStatement":""}
* @apiSuccessExample {json} 成功返回数据示例:
* {}
*/
@RequestMapping(value = "/save", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.SAVE_FILED)
public ResponseEntityDto<Object> save(@RequestBody FieldSaveParam fieldSaveParam) {
Field fieldVo = new Field();
BeanUtils.copyProperties(fieldSaveParam, fieldVo);
fieldVo.setUseSql(fieldSaveParam.getIsUseSql());
fieldVo.setInterface(fieldSaveParam.getIsInterface());//是否使用接口
Map param = JSONObject.parseObject(JSONObject.toJSONString(fieldSaveParam), Map.class);
s.fieldService.sqlFieldCheck(param);
// 校验
HashMap<String, Object> fieldEnValidateMap = new HashMap<>();
fieldEnValidateMap.put("fieldEn", param.get("fieldEn"));
fieldEnValidateMap.put("engineId", param.get("engineId"));
fieldEnValidateMap.put("Id", param.get("id"));
int fieldEnNum = fieldEnAjaxValidate(fieldEnValidateMap);
if (fieldEnNum > 0) {
throw new ApiException(ErrorCodeEnum.FIELD_EN_REPEAT.getCode(), ErrorCodeEnum.FIELD_EN_REPEAT.getMessage());
}
HashMap<String, Object> fieldCnValidateMap = new HashMap<>();
fieldCnValidateMap.put("fieldCn", param.get("fieldCn"));
fieldCnValidateMap.put("engineId", param.get("engineId"));
fieldCnValidateMap.put("Id", param.get("id"));
int fieldCnNum = fieldCnAjaxValidate(fieldCnValidateMap);
if (fieldCnNum > 0) {
throw new ApiException(ErrorCodeEnum.FIELD_CN_REPEAT.getCode(), ErrorCodeEnum.FIELD_CN_REPEAT.getMessage());
}
Long userId = SessionManager.getLoginAccount().getUserId();
Long organId = SessionManager.getLoginAccount().getOrganId();
param.put("userId", userId);
fieldVo.setAuthor(userId);
fieldVo.setOrganId(organId);
//校验字段英文名命名
String fieldEn = fieldVo.getFieldEn();
Pattern.matches("\\[A-z]|_|d+", fieldEn);
param.put("fieldEn", fieldVo.getFieldEn());
param.put("fieldCn", fieldVo.getFieldCn());
param.put("organId", organId);
param.put("engineId", null);
//组织通用字段
Integer isCommon = 1;
fieldVo.setIsCommon(isCommon);
// String formulaFields = "1,2,3,4";
// param.put("formulaFields", formulaFields);
s.fieldService.createField(fieldVo, param);
// model.addAttribute("engineId", null);
// model.addAttribute("fieldTypeId", Long.valueOf(fieldVo.getFieldTypeId()));
// model.addAttribute("isCommon", 1);
HashMap<String, Object> modelMap = new HashMap<>();
modelMap.put("engineId", null);
modelMap.put("fieldTypeId", Long.valueOf(fieldVo.getFieldTypeId()));
modelMap.put("isCommon", 1);
return ResponseEntityBuilder.buildNormalResponse(modelMap);
}
/**
* @api {POST} /v2/datamanage/field/getFieldInfo/{id} 2.07. 获取指标详情
* @apiGroup field
* @apiVersion 2.0.0
* @apiParam {Integer} id 路径参数{id}指标的id
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":{"hasGroovy":null,"fieldFormulaList":[],"fieldVo":{"page":0,"rows":0,"total":null,"id":876,"fieldEn":"network_real_amount_derive","fieldCn":"网点余额衍生字段","fieldTypeId":302,"fieldType":"物流","valueType":1,"valueTypeName":null,"valueScope":"[-1,9999999)","isDerivative":1,"isDerivativeName":null,"isOutput":0,"isOutputName":null,"isCommon":1,"formula":"","formulaShow":"","usedFieldId":"824,826","origFieldId":"824,826","author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":[{"page":0,"rows":0,"total":null,"id":null,"fieldId":876,"conditionValue":"777","content":"[{\"fieldId\":\"824\",\"operator\":\">\",\"fieldValue\":\"2000\",\"logical\":\"&&\"},{\"fieldId\":\"826\",\"operator\":\"<\",\"fieldValue\":\"5000\"}]","condFieldId":null,"condFieldOperator":null,"condFieldValue":null,"condFieldLogical":null,"created":null,"fieldSubCond":[{"fieldId":824,"operator":">","fieldValue":"2000","logical":"&&","valueType":1,"valueScope":"[-1,9999999)","values":["[-1,9999999)"],"fieldCn":"网点实际余额"},{"fieldId":826,"operator":"<","fieldValue":"5000","logical":null,"valueType":1,"valueScope":"[-1,9999999)","values":["[-1,9999999)"],"fieldCn":"网点关闭余额"}]},{"page":0,"rows":0,"total":null,"id":null,"fieldId":876,"conditionValue":"999","content":"[{\"fieldId\":\"824\",\"operator\":\"<=\",\"fieldValue\":\"2000\",\"logical\":\"&&\"},{\"fieldId\":\"826\",\"operator\":\"<\",\"fieldValue\":\"5000\"}]","condFieldId":null,"condFieldOperator":null,"condFieldValue":null,"condFieldLogical":null,"created":null,"fieldSubCond":[{"fieldId":824,"operator":"<=","fieldValue":"2000","logical":"&&","valueType":1,"valueScope":"[-1,9999999)","values":["[-1,9999999)"],"fieldCn":"网点实际余额"},{"fieldId":826,"operator":"<","fieldValue":"5000","logical":null,"valueType":1,"valueScope":"[-1,9999999)","values":["[-1,9999999)"],"fieldCn":"网点关闭余额"}]}],"fieldRelId":null,"dataSourceId":null,"sqlStatement":null,"useSql":null},"scopeList":["[-1","9999999)"],"searchKey":null,"fieldTypeId":302,"hasFormula":null,"engineId":null}}
*/
@RequestMapping(value = "/getFieldInfo/{id}", method = RequestMethod.POST)
public ResponseEntityDto<Object> getFieldInfo(@PathVariable long id, @RequestBody Map<String, Object> param) {
Map<String, Object> paramMap = new HashMap<>();
Long userId = SessionManager.getLoginAccount().getUserId();
Long organId = SessionManager.getLoginAccount().getOrganId();
paramMap.put("userId", userId);
paramMap.put("organId", organId);
paramMap.put("engineId", null);
paramMap.put("id", id);
paramMap.put("searchKey", param.get("searchKey"));
Field fieldVo = s.fieldService.findByFieldId(paramMap);
String fieldEn = fieldVo.getFieldEn();
if (!fieldEn.equals("") && fieldEn != null) {
// fieldEn = fieldEn.replace("f_", "");
fieldVo.setFieldEn(fieldEn);
}
for (FieldCond f : fieldVo.getFieldCondList()) {
List<FieldSubCondVo> fieldSubCondList = JSONObject.parseArray(f.getContent(), FieldSubCondVo.class);
for (FieldSubCondVo fs : fieldSubCondList) {
Map<String, Object> paramMap2 = new HashMap<String, Object>();
paramMap2.put("userId", userId);
paramMap2.put("organId", organId);
paramMap2.put("id", fs.getFieldId());
Field subField = s.fieldService.findByFieldId(paramMap2);
fs.setValueType(subField.getValueType());
fs.setValueScope(subField.getValueScope());
fs.setFieldCn(subField.getFieldCn());
}
f.setFieldSubCond(fieldSubCondList);
}
//编辑页面返回字段列表时去掉自己
paramMap.put("fieldId", id);
// List<Field> flist = s.fieldService.findByUser(paramMap);
String valueScope = fieldVo.getValueScope();
List<String> scopeList = null;
if(StringUtils.isNotBlank(valueScope)){
scopeList = Arrays.asList(valueScope.split(","));
}
List<FieldFormulaVo> fieldFormulaList = new ArrayList<FieldFormulaVo>();
String hasGroovy = null;
if (fieldVo.getFormulaShow() != null && !fieldVo.getFormulaShow().equals("")) {
fieldFormulaList = JSONObject.parseArray(fieldVo.getFormulaShow(), FieldFormulaVo.class);
for (FieldFormulaVo fieldFormulaVo : fieldFormulaList) {
if (fieldFormulaVo.getFormula() != null && fieldFormulaVo.getFormula().contains("def main")) {
hasGroovy = "y";
}
}
}
String hasFormula = null;
if (StringUtils.isNotBlank(fieldVo.getFormula())) {
hasFormula = "y";
}
// model.addAttribute("fieldVo", fieldVo);
// model.addAttribute("hasFormula", hasFormula);
// model.addAttribute("hasGroovy", hasGroovy);
// model.addAttribute("engineId", null);
// model.addAttribute("fieldTypeId", Long.valueOf(fieldVo.getFieldTypeId()));
// model.addAttribute("searchKey", param.get("searchKey"));
// model.addAttribute("flist", flist);
// model.addAttribute("scopeList", scopeList);
// model.addAttribute("fieldFormulaList", fieldFormulaList);
HashMap<String, Object> modelMap = new HashMap<>();
modelMap.put("fieldVo", fieldVo);
modelMap.put("hasFormula", hasFormula);
modelMap.put("hasGroovy", hasGroovy);
modelMap.put("engineId", null);
modelMap.put("fieldTypeId", Long.valueOf(fieldVo.getFieldTypeId()));
modelMap.put("searchKey", param.get("searchKey"));
// modelMap.put("flist", flist);
modelMap.put("scopeList", scopeList);
modelMap.put("fieldFormulaList", fieldFormulaList);
return ResponseEntityBuilder.buildNormalResponse(modelMap);
}
/**
* @api {POST} /v2/datamanage/field/update 2.08. 编辑指标
* @apiGroup field
* @apiVersion 2.0.0
* @apiParam {String} searchKey searchKey
* @apiParam {Long} id 指标ID
* @apiParam {String} formula 衍生字段公式
* @apiParam {String} formulaShow 衍生字段公式回显信息
* @apiParam {Long} engineId 归属的引擎ID
* @apiParam {String} fieldEn 指标英文名:拼接前缀"f_"
* @apiParam {String} fieldCn 指标中文名
* @apiParam {Long} fieldTypeId 字段类型编号
* @apiParam {Integer} valueType 字段存值类型,待选(0),数值型(1),字符型(2),枚举型(3),小数型(4)
* @apiParam {Integer} isDerivative 是否衍生字段0代表不是1代表是
* @apiParam {Integer} isOutput 是否输出字段0代表不是1代表是
* @apiParam {String} valueScope 字段约束范围
* @apiParam {JSONArray} fieldCondList 条件区域内容(传字符串)
* @apiParam (fieldCondList) {String} conditionValue 字段条件值
* @apiParam (fieldCondList) {JSONArray} fieldSubCond 字段列表
* @apiParam (fieldSubCond) {String} fieldId 条件字段编号
* @apiParam (fieldSubCond) {String} operator 条件字段的运算符
* @apiParam (fieldSubCond) {String} fieldValue 条件字段的条件设置值
* @apiParam (fieldSubCond) {String} logical 条件字段间的逻辑符
* @apiParam {JSONArray} formulaHidden 公式编辑、groovy脚本内容传字符串
* @apiParam (formulaHidden) {String} formula 衍生字段公式
* @apiParam (formulaHidden) {String} idx 下标
* @apiParam (formulaHidden) {JSONArray} farr 字段列表
* @apiParam (farr) {String} fieldCN 字段中文名
* @apiParam (farr) {String} fieldCond 字段条件区域
* @apiParam {Boolean} isUseSql 是否使用sql获取指标
* @apiParam {Integer} dataSourceId 使用sql获取指标时对应的数据源
* @apiParam {String} sqlStatement 使用sql获取指标时对应的sql语句
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {"searchKey":"","fieldTypeId":"302","id":876,"formula":"","formulaShow":"","engineId":"","fieldEn":"f_f_f_network_real_amount_derive","fieldCn":"网点余额衍生字段","valueType":"1","isDerivative":"1","isOutput":"0","valueScope":"[-1,9999999)","fieldCondList":[{"fieldSubCond":[{"fieldId":"824","operator":">","fieldValue":"2000","logical":"&&"},{"fieldId":"826","operator":"<","fieldValue":"5000"}],"conditionValue":"666"},{"fieldSubCond":[{"fieldId":"824","operator":"<=","fieldValue":"2000","logical":"&&"},{"fieldId":"826","operator":"<","fieldValue":"5000"}],"conditionValue":"888"}],"formulaHidden":[{"fvalue":"","formula":"@同盾_评分@ - @第三方分值@ ","idx":"0","farr":[{"fieldCN":"同盾_评分","fieldCond":""},{"fieldCN":"第三方分值 ","fieldCond":""}]}],"isUseSql":"0","dataSourceId":null,"sqlStatement":""}
* @apiSuccessExample {json} 成功返回数据示例:
* {}
*/
@RequestMapping(value = "/update", method = RequestMethod.POST)
@ArchivesLog(operationType = OpTypeConst.UPDATE_FILED)
public ResponseEntityDto<Object> update(@RequestBody FieldSaveParam fieldSaveParam) {
Map paramMap = JSONObject.parseObject(JSONObject.toJSONString(fieldSaveParam), Map.class);
// 校验
HashMap<String, Object> fieldEnValidateMap = new HashMap<>();
fieldEnValidateMap.put("fieldEn", paramMap.get("fieldEn"));
fieldEnValidateMap.put("engineId", paramMap.get("engineId"));
fieldEnValidateMap.put("Id", paramMap.get("id"));
int fieldEnNum = fieldEnAjaxValidate(fieldEnValidateMap);
if (fieldEnNum > 0) {
throw new ApiException(ErrorCodeEnum.FIELD_EN_REPEAT.getCode(), ErrorCodeEnum.FIELD_EN_REPEAT.getMessage());
}
s.fieldService.sqlFieldCheck(paramMap);
HashMap<String, Object> fieldCnValidateMap = new HashMap<>();
fieldCnValidateMap.put("fieldCn", paramMap.get("fieldCn"));
fieldCnValidateMap.put("engineId", paramMap.get("engineId"));
fieldCnValidateMap.put("Id", paramMap.get("id"));
int fieldCnNum = fieldCnAjaxValidate(fieldCnValidateMap);
if (fieldCnNum > 0) {
throw new ApiException(ErrorCodeEnum.FIELD_CN_REPEAT.getCode(), ErrorCodeEnum.FIELD_CN_REPEAT.getMessage());
}
HashMap<String, Object> checkFieldMap = new HashMap<>();
checkFieldMap.put("fieldId", paramMap.get("id").toString());
Map<String, Object> checkFieldresult = checkField(checkFieldMap);
boolean beUsed = (boolean) checkFieldresult.get("beUsed");
if (beUsed) {
throw new ApiException(ErrorCodeEnum.FIELD_BE_USERD.getCode(), ErrorCodeEnum.FIELD_BE_USERD.getMessage());
}
Long userId = SessionManager.getLoginAccount().getUserId();
Long organId = SessionManager.getLoginAccount().getOrganId();
paramMap.put("userId", userId);
paramMap.put("organId", organId);
paramMap.put("engineId", null);
//组织通用字段
Integer isCommon = 1;
paramMap.put("isCommon", isCommon);
// String formulaFields = "50,70,90";
// paramMap.put("formulaFields", formulaFields);
s.fieldService.updateField(paramMap);
// model.addAttribute("engineId", null);
// model.addAttribute("fieldTypeId", fieldTypeId);
// model.addAttribute("searchKey", paramMap.get("searchKey"));
// model.addAttribute("isCommon", 1);
HashMap<String, Object> modelMap = new HashMap<>();
modelMap.put("engineId", null);
//modelMap.put("fieldTypeId",fieldTypeId);
modelMap.put("searchKey", paramMap.get("searchKey"));
modelMap.put("isCommon", 1);
return ResponseEntityBuilder.buildNormalResponse(modelMap);
}
/**
* @api {POST} /v2/datamanage/field/findFieldByUser 2.09. 获当前用户的所有指标
* @apiGroup field
* @apiVersion 2.0.0
* @apiParam {String} [searchKey] searchKey
* @apiParam {String} [engineId] engineId
* @apiParam {String} [fieldId] fieldId
* @apiSuccess {String} status 状态: 1成功, 0失败
* @apiParamExample {json} 请求示例:
* {}
* @apiSuccessExample {json} 成功返回数据示例:
* {"status":"1","error":"00000000","msg":null,"data":{"organId":46,"isCommon":1,"searchKey":"","userId":135,"fieldList":[{"page":0,"rows":0,"total":null,"id":587,"fieldEn":"f_hr_age","fieldCn":"年龄准入","fieldTypeId":270,"fieldType":"准入","valueType":1,"valueTypeName":null,"valueScope":"(-1,999999]","isDerivative":null,"isDerivativeName":null,"isOutput":null,"isOutputName":null,"isCommon":null,"formula":null,"formulaShow":null,"usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":null,"fieldRelId":8739,"dataSourceId":null,"sqlStatement":null,"useSql":null},{"page":0,"rows":0,"total":null,"id":871,"fieldEn":"f_ziduan111428","fieldCn":"字段111428","fieldTypeId":362,"fieldType":"3月11日测试","valueType":2,"valueTypeName":null,"valueScope":"qwer","isDerivative":null,"isDerivativeName":null,"isOutput":null,"isOutputName":null,"isCommon":null,"formula":null,"formulaShow":null,"usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":null,"fieldRelId":10294,"dataSourceId":null,"sqlStatement":null,"useSql":null},{"page":0,"rows":0,"total":null,"id":872,"fieldEn":"f_ziduan111518","fieldCn":"字段111518","fieldTypeId":327,"fieldType":"ddd","valueType":2,"valueTypeName":null,"valueScope":"qwer","isDerivative":null,"isDerivativeName":null,"isOutput":null,"isOutputName":null,"isCommon":null,"formula":null,"formulaShow":null,"usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":null,"fieldRelId":10295,"dataSourceId":null,"sqlStatement":null,"useSql":null},{"page":0,"rows":0,"total":null,"id":873,"fieldEn":"f_ziduan111733","fieldCn":"字段111733","fieldTypeId":327,"fieldType":"ddd","valueType":2,"valueTypeName":null,"valueScope":"qwer","isDerivative":null,"isDerivativeName":null,"isOutput":null,"isOutputName":null,"isCommon":null,"formula":null,"formulaShow":null,"usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":null,"fieldRelId":10296,"dataSourceId":null,"sqlStatement":null,"useSql":null},{"page":0,"rows":0,"total":null,"id":876,"fieldEn":"f_f_f_network_real_amount_derive","fieldCn":"网点余额衍生字段","fieldTypeId":302,"fieldType":"物流","valueType":1,"valueTypeName":null,"valueScope":"[-1,9999999)","isDerivative":null,"isDerivativeName":null,"isOutput":null,"isOutputName":null,"isCommon":null,"formula":null,"formulaShow":null,"usedFieldId":null,"origFieldId":null,"author":null,"nickName":null,"created":null,"engineId":null,"engineName":null,"status":null,"fieldCondList":null,"fieldRelId":10299,"dataSourceId":null,"sqlStatement":null,"useSql":null}],"engineId":null,"fieldId":""}}
*/
@RequestMapping(value = "/findFieldByUser", method = RequestMethod.POST)
public ResponseEntityDto<Object> findFieldByUser(@RequestBody HashMap<String, Object> paramMap) {
Long userId = SessionManager.getLoginAccount().getUserId();
Long organId = SessionManager.getLoginAccount().getOrganId();
paramMap.put("userId", userId);
paramMap.put("organId", organId);
Integer isCommon = 1;
Integer engineId = null;
if (paramMap.containsKey("engineId") && !paramMap.get("engineId").equals("")) {
isCommon = 0;
engineId = Integer.valueOf((String) paramMap.get("engineId")).intValue();
paramMap.put("engineId", engineId);
} else {
isCommon = 1;
paramMap.put("engineId", null);
}
paramMap.put("isCommon", isCommon);
if (!paramMap.containsKey("fieldId")) {
paramMap.put("fieldId", null);
}
List<Field> fieldList = s.fieldService.findByUser(paramMap);
paramMap.put("fieldList", fieldList);
return ResponseEntityBuilder.buildNormalResponse(paramMap);
}
private Map<String, Object> checkField(Map<String, Object> param) {
Long userId = SessionManager.getLoginAccount().getUserId();
Long organId = SessionManager.getLoginAccount().getOrganId();
param.put("userId", userId);
param.put("organId", organId);
param.put("engineId", null);
return s.fieldService.checkField(param);
}
public int fieldEnAjaxValidate(HashMap<String, Object> paramMap) {
Long userId = SessionManager.getLoginAccount().getUserId();
paramMap.put("userId", userId);
if ("".equals(paramMap.get("engineId"))) {
paramMap.put("engineId", null);
}
if ("".equals(paramMap.get("Id"))) {
paramMap.put("Id", null);
}
paramMap.put("fieldCn", null);
return s.fieldService.isExists(paramMap);
}
public int fieldCnAjaxValidate(HashMap<String, Object> paramMap) {
Long userId = SessionManager.getLoginAccount().getUserId();
paramMap.put("userId", userId);
if ("".equals(paramMap.get("engineId"))) {
paramMap.put("engineId", null);
}
if ("".equals(paramMap.get("Id"))) {
paramMap.put("Id", null);
}
paramMap.put("fieldEn", null);
return s.fieldService.isExists(paramMap);
}
/**
* @api {POST} /v2/datamanage/field/downTemplate 2.10. 指标导入模板下载
* @apiGroup field
* @apiVersion 2.0.0
*/
@RequestMapping("downTemplate")
public ResponseEntity<byte[]> downExcelTemplate() throws IOException {
ClassPathResource classPathResource = new ClassPathResource("excleTemplate/field.xlsx");
InputStream inputStream = classPathResource.getInputStream();
HttpHeaders headers = new HttpHeaders();
String fileName = new String("基础指标导入模板.xlsx".getBytes("UTF-8"), "iso-8859-1");//为了解决中文名称乱码问题
headers.setContentDispositionFormData("attachment", fileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(IOUtils.toByteArray(inputStream), headers, HttpStatus.CREATED);
}
/**
* @api {POST} /v2/datamanage/field/upload 2.11. 批量导入指标
* @apiGroup field
* @apiVersion 2.0.0
*/
@RequestMapping(value = "upload", method = RequestMethod.POST)
public ResponseEntityDto<Object> upload(HttpServletRequest request) throws Exception {
//将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//检查form中是否有enctype="multipart/form-data"
String accessUrl = "";
String fileName = "";
if (multipartResolver.isMultipart(request)) {
//将request变成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
//获取multiRequest 中所有的文件名
Iterator iter = multiRequest.getFileNames();
while (iter.hasNext()) {
//一次遍历所有文件
MultipartFile file = multiRequest.getFile(iter.next().toString());
if (file != null) {
String uploadDir = request.getSession().getServletContext().getRealPath("/") + "upload/fieldUpload/";
if (!new File(uploadDir).exists()) {
File dir = new File(uploadDir);
dir.mkdirs();
}
fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
String path = uploadDir + fileName;
//上传
file.transferTo(new File(path));
accessUrl = path;
}
}
}
Long userId = SessionManager.getLoginAccount().getUserId();
Long organId = SessionManager.getLoginAccount().getOrganId();
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("userId", userId);
paramMap.put("author", userId);
paramMap.put("organId", organId);
Integer isCommon = 0;
if (paramMap.get("engineId") == null) {
isCommon = 1;
} else {
isCommon = 0;
}
paramMap.put("isCommon", isCommon);
Map<String, Object> resultMap = s.fieldService.importExcel(accessUrl, paramMap);
return ResponseEntityBuilder.buildNormalResponse(resultMap);
}
/**
* @api {POST} /v2/datamanage/field/getEngineFields 2.xx. 获取引擎可用字段
* @apiGroup zzzzz01
* @apiVersion 2.0.0
* @apiParam {Integer} isOutput 是否输出字段0代表不是1代表是默认不是(0)
* @apiParam {Integer} [engineId] 引擎id
* @apiSuccess {String} status 状态1成功0失败
* @apiParamExample {json} 请求示例:
* {"isOutput":0}
* {"isOutput":1}
* {"isOutput":0,"engineId":211}
* {"isOutput":1,"engineId":211}
* @apiSuccessExample {json} 成功返回数据示例:
* {待完善}
*/
@RequestMapping(value = "/getEngineFields", method = RequestMethod.POST)
public ResponseEntityDto<Object> getEngineFields(@RequestBody Map<String, Object> paramMap) {
//通过引擎编号查询可用字段,后面可以放到缓存中
User user = SessionManager.getLoginAccount();
paramMap.put("userId", user.getUserId());
paramMap.put("organId", user.getOrganId());
List<Field> fields = s.fieldService.getFieldList(paramMap);
if (CollectionUtil.isNotNullOrEmpty(fields)) {
List<FieldEnumVo> fieldEnumVos = new ArrayList<FieldEnumVo>();
FieldEnumVo fieldEnumVo = null;
for (Field field : fields) {
fieldEnumVo = new FieldEnumVo();
fieldEnumVo.setField(field);
if (field.getValueType() == ValueType.Enum.getValue()) {
//如果是枚举
String valueScope = field.getValueScope();
if (StringUtil.isValidStr(valueScope)) {
//获取枚举值
fieldEnumVo.setEnums(Arrays.asList(valueScope.split(CommonConst.SYMBOL_COMMA)));
}
}
fieldEnumVos.add(fieldEnumVo);
}
return ResponseEntityBuilder.buildNormalResponse(fieldEnumVos);
}
return ResponseEntityBuilder.buildNormalResponse(new ArrayList<FieldEnumVo>());
}
@PostMapping(value = "/updateFieldFolder")
@ArchivesLog(operationType = OpTypeConst.UPDATE_FIELD_FOLDER)
public ResponseEntityDto<Object> updateFieldFolder(@RequestBody UpdateFolderParam param){
UpdateFolderParam.checkNotNull(param);
int result = s.fieldService.updateFieldFolder(param);
if (result>0){
return ResponseEntityBuilder.buildNormalResponse("成功移动"+result+"条数据");
}
return ResponseEntityBuilder.buildErrorResponse("移动失败","");
}
}

View File

@@ -0,0 +1,36 @@
package com.risk.riskmanage.datamanage.mapper;
import java.util.List;
import com.risk.riskmanage.datamanage.model.FieldCond;
import com.risk.riskmanage.common.mapper.BaseMapper;
public interface FieldCondMapper extends BaseMapper<FieldCond> {
/**
* createFieldCond:(生成条件关系). <br/>
*
* @param
* @return 字段列表
*/
public boolean createFieldCond(List<FieldCond> fieldCondVoList);
/**
* getFieldCondList:(找出字段条件设置(去重)). <br/>
*
* @param
* @return 字段列表
*/
public List<FieldCond> getFieldCondList(Long fieldId);
/**
* deleteFieldCondById:(删除字段的条件设置). <br/>
*
* @param
* @return 是否删除成功
*/
public boolean deleteFieldCondById(Long id);
}

View File

@@ -0,0 +1,270 @@
package com.risk.riskmanage.datamanage.mapper;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.risk.riskmanage.common.mapper.BaseMapper;
import com.risk.riskmanage.datamanage.model.Field;
import com.risk.riskmanage.common.model.requestParam.UpdateFolderParam;
import org.apache.ibatis.annotations.Param;
public interface FieldMapper extends BaseMapper<Field> {
/**
* findByFieldType:(根据字段类型名找出该用户可用的字段列表). <br/>
*
* @param paramMap 参数集合
* @return 字段列表
*/
public List<Field> findByFieldType(Map<String,Object> paramMap);
/**
* checkField:(查找引用该字段的所有字段). <br/>
*
* @param paramMap 参数集合
* @return 字段id逗号分隔字符串
*/
public String checkField(Map<String,Object> paramMap);
/**
* getSourceField:(查找构成该字段的子字段及原生字段). <br/>
*
* @param paramMap 参数集合
* @return
*/
public String getSourceField(Map<String,Object> paramMap);
/**
* findFieldByIds:(找出一批字段id对应的字段列表). <br/>
*
* @param paramMap 参数集合
* @return 字段列表
*/
public List<Field> findFieldByIds(Map<String,Object> paramMap);
/**
* findFieldByIds:(找出一批字段id对应的字段列表). <br/>
* @author caowenyu
* @param paramMap 参数集合
* @return 字段列表
*/
public List<Field> findFieldByIdsbyorganId(Map<String,Object> paramMap);
/**
* findFieldIdsByTypeIds:(找出一批字段类型id对应的字段id列表). <br/>
*
* @param paramMap 参数集合
* @return 字段id逗号分隔字符串
*/
public String findFieldIdsByTypeIds(Map<String,Object> paramMap);
/**
* findFieldTypeIdsByFieldId:(在引擎里找出一批字段id对应的唯一字段类型id串). <br/>
*
* @param paramMap 参数集合
* @return 字段类型id逗号分隔字符串
*/
public String findFieldTypeIdsByFieldId(Map<String,Object> paramMap);
/**
* findOrgFieldTypeIdsByIds:(在通用字段里找出一批字段id对应的唯一字段类型id串). <br/>
*
* @param paramMap 参数集合
* @return 字段类型id逗号分隔字符串
*/
public String findOrgFieldTypeIdsByIds(Map<String,Object> paramMap);
/**
* findFieldByIdsForCheckField:(找出一批字段id的字段列表包含引擎引用的通用字段engineId为空是不加engineId=null条件). <br/>
*
* @param paramMap 参数集合
* @return 字段列表
*/
public List<Field> findFieldByIdsForCheckField(Map<String,Object> paramMap);
/**
* findOrgFieldIdsByTypeIds:(在通用字段里找出一批字段类型id的字段id列表). <br/>
*
* @param paramMap 参数集合
* @return 字段列表
*/
public String findOrgFieldIdsByTypeIds(Map<String,Object> paramMap);
/**
* findByFieldName:(根据字段英文或中文名找出字段对象). <br/>
*
* @param paramMap 参数集合
* @return 字段对象
*/
public Field findByFieldName(Map<String,Object> paramMap);
/**
* findByFieldEn:(根据引擎和字段英文名找出引擎所用字段对象). <br/>
*
* @param paramMap 参数集合
* @return 字段对象
*/
public Field findByFieldEn(Map<String,Object> paramMap);
/**
* findByFieldEn:(根据引擎和字段英文名找出引擎所用字段对象). <br/>
*
* @param paramMap 参数集合
* @return 字段对象
*/
public Field findByFieldEnbyorganId(Map<String,Object> paramMap);
/**
* findByFieldCn:(根据字段中文名找出字段对象). <br/>
*
* @param paramMap 参数集合
* @return 字段对象
*/
public Field findByFieldCn(Map<String,Object> paramMap);
/**
* findByFieldCn:(根据字段中文名找出字段对象). <br/>
*
* @param paramMap 参数集合
* @return 字段对象
*/
public Field findByFieldCnbyorganId(Map<String,Object> paramMap);
/**
* findByFieldCn:(按中文名查找通用字段). <br/>
*
* @param paramMap 参数集合
* @return 字段对象
*/
public Field findByFieldCnNoEngineId(Map<String,Object> paramMap);
/**
* findByFieldCn:(按中文名查找通用字段). <br/>
*
* @param paramMap 参数集合
* @return 字段对象
*/
public Field findByFieldCnNoEngineIdbyorganId(Map<String,Object> paramMap);
/**
* findByUser:(找出该用户可用字段列表). <br/>
*
* @param paramMap 参数集合
* @return 字段类型列表
*/
public List<Field> findByUser(Map<String,Object> paramMap);
/**
* searchByName:(模糊查找该用户可用字段列表). <br/>
*
* @param paramMap 参数集合
* @return 字段类型列表
*/
public List<Field> searchByName(Map<String,Object> paramMap);
/**
* findFieldTypeId:(根据批量选择的字段ID查找出它们的字段类型ID). <br/>
*
* @param paramMap 参数集合
* @return fieldTypeId
* */
public Long findFieldTypeId(Map<String,Object> paramMap);
/**
* countByParams:(字段列表记录数). <br/>
*
* @param paramMap 参数集合
* @return 字段列表记录条数
*/
public int countByParams(Map<String, Object> paramMap);
/**
* findByFieldId:(根据字段Id查找字段对象). <br/>
*
* @param paramMap 参数集合
* @return 字段对象
*/
public Field findByFieldId(Map<String,Object> paramMap);
/**
* findByFieldId:(根据字段Id查找字段对象). <br/>
* @author caowenyu
* @param paramMap 参数集合
* @return 字段对象
*/
public Field findByFieldIdbyorganId(Map<String,Object> paramMap);
/**
* findByFieldIdNoEngineId:(根据字段Id查找组织通用字段对象). <br/>
*
* @param paramMap 参数集合
* @return 字段对象
*/
public Field findByFieldIdNoEngineId(Map<String,Object> paramMap);
/**
* createField:(添加字段). <br/>
*
* @param fieldVo 字段实体对象
* @return 插入是否成功
*/
public boolean createField(Field fieldVo);
/**
* batchCreateField:(批量添加字段). <br/>
*
* @param fieldVoList 字段实体对象list集合
* @return 字段类型列表
*/
public boolean batchCreateField(List<Field > fieldVoList);
/**
* updateField:(修改字段). <br/>
*
* @param paramMap 参数集合
* @return 更新是否成功
*/
public boolean updateField(Map<String,Object> paramMap);
/**
* isExists:(根据字段英文或中文名查找字段是否存在). <br/>
*
* @param paramMap 参数集合
* @return 存在的记录条数
*/
public int isExists(Map<String,Object> paramMap);
/**
* getFieldList:(获取组织的所有字段). <br/>
*
* @param paramMap 参数集合
* @return
*/
public List<Field> getFieldList(Map<String,Object> paramMap);
/**
* findFieldByIds:(找出一批字段id对应的字段,并且为衍生字段列表). <br/>
* @author caowenyu
* @param paramMap 参数集合
* @return 字段列表
*/
public List<Field> findFieldByIdsAndIsderivative(Map<String,Object> paramMap);
/**
* findExcelByFieldType:(获取导出Excel需要的字段信息). <br/>
*
* @param paramMap 参数集合
* @return
*/
public List<Field> findExcelByFieldType(Map<String,Object> paramMap);
public String findFieldNameById(Long fieldId);
int updateFieldFolder(UpdateFolderParam param);
List<Field> selectByIds(@Param("ids") Collection<Long> ids);
List<Field> selectByEns(@Param("ens") Collection<String> ens);
List<Field> selectByOrganCns(@Param("cns")Collection<String> cns,@Param("organId")Long organId);
}

View File

@@ -0,0 +1,126 @@
package com.risk.riskmanage.datamanage.mapper;
import java.util.List;
import java.util.Map;
import com.risk.riskmanage.common.mapper.BaseMapper;
import com.risk.riskmanage.datamanage.model.FieldType;
import com.risk.riskmanage.datamanage.model.request.FieldTreeParam;
public interface FieldTypeMapper extends BaseMapper<FieldType> {
/**
* getFieldTypeList:(查找用户的字段类型列表). <br/>
*
* @param paramMap 参数集合
* @return 字段类型列表
*/
public List<FieldType> getFieldTypeList(Map<String,Object> paramMap);
/**
* getSubFieldTypeList:(根据传入的字段父类型查找子类型列表). <br/>
*
* @param paramMap 参数集合
* @return 字段类型列表
*/
public List<FieldType> getSubFieldTypeList(Map<String,Object> paramMap);
/**
* findFieldTypeById:(根据传入的字段类型ID查找字段类型名). <br/>
*
* @param paramMap 参数集合
* @return 字段类型列表
*/
public FieldType findFieldTypeById(Map<String,Object> paramMap);
/**
* findTypeIdByParentId:(根据传入的字段类型父ID查找子类型ID). <br/>
*
* @param paramMap 参数集合
* @return 子字段类型ID
*/
public String findTypeIdByParentId(Map<String,Object> paramMap);
/**
* findTypeIdByParentId:(根据传入的字段类型类型ID查找父ID). <br/>
*
* @param paramMap 参数集合
* @return 子字段类型ID
*/
public String findParentIdByTypeId(Map<String,Object> paramMap);
/**
* findFieldType:(查找用户可用的字段类型列表,通用组织所有,引擎只有自定义). <br/>
*
* @param paramMap 参数集合
* @return 字段类型列表
*/
public List<FieldType> findFieldType(Map<String,Object> paramMap);
/**
* createFieldType:(新增字段类型). <br/>
*
* @param fieldTypeVo 字段类型实体类
* @return 插入成功
*/
public boolean createFieldType(FieldType fieldTypeVo);
/**
* findIdByFieldType:(新增字段类型). <br/>
*
* @param paramMap paramMap
* @return 字段类型编号
*/
public long findIdByFieldType(Map<String,Object> paramMap);
/**
* updateFieldType:(更新字段类型名). <br/>
*
* @param paramMap 参数集合
* @return 更新成功
*/
public boolean updateFieldType(FieldTreeParam param);
/**
* updateFieldTypeByTypeIds:(更新字段类型为删除状态(-1)). <br/>
*
* @param paramMap 参数集合
* @return 更新成功
*/
public boolean updateFieldTypeByTypeIds(Map<String, Object> paramMap);
/**
* deleteFieldTypeByTypeIds:(删除字段类型下没有字段的空节点)). <br/>
*
* @param paramMap 参数集合
* @return 更新成功
*/
public boolean deleteFieldTypeByTypeIds(Map<String, Object> paramMap);
/**
* backFieldTypeByTypeIds:(更新字段类型状态为启用状态(1)). <br/>
*
* @param paramMap 参数集合
* @return 更新成功
*/
public boolean backFieldTypeByTypeIds(Map<String, Object> paramMap);
/**
* isExists:(查找字段名是否存在). <br/>
*
* @param paramMap 参数集合
* @return 存在的记录条数
*/
public int isExists(Map<String,Object> paramMap);
/**
* isExistsDefaultTreeName:(查找默认节点名是否存在). <br/>
*
* @param paramMap 参数集合
* @return 存在的记录条数
*/
public int isExistsDefaultTreeName(Map<String,Object> paramMap);
List<FieldType> selectFieldTypeList(FieldTreeParam param);
}

View File

@@ -0,0 +1,52 @@
package com.risk.riskmanage.datamanage.mapper;
import java.util.Map;
import com.risk.riskmanage.common.mapper.BaseMapper;
import com.risk.riskmanage.datamanage.model.FieldTypeUser;
import com.risk.riskmanage.datamanage.model.request.FieldTreeParam;
public interface FieldTypeUserMapper extends BaseMapper<FieldTypeUser> {
/**
* createFieldTypeUserRel:(新增字段类型). <br/>
*
* @param paramMap 参数集合
* @return 插入成功
*/
public boolean createFieldTypeUserRel(Map<String,Object> paramMap);
/**
* batchBindEngineFieldTypeUserRel:(把一批通用字段类型id中不存在的类型id批量绑定到引擎). <br/>
*
* @param paramMap 参数集合
* @return 插入成功
*/
public boolean batchBindEngineFieldTypeUserRel(Map<String,Object> paramMap);
/**
* deleteFieldTypeUserRel:(取消字段类型). <br/>
*
* @param paramMap 参数集合
* @return 删除成功
*/
public boolean deleteFieldTypeUserRel(Map<String,Object> paramMap);
/**
* updateFieldTypeUserRel:(更新字段类型名). <br/>
*
* @param paramMap 参数集合
* @return 更新成功
*/
public boolean updateFieldTypeUserRel(FieldTreeParam param);
/**
* findNodeIds:(查找引擎在用的节点集合). <br/>
*
* @param paramMap 参数集合
* @return
*/
public String findNodeIds(Map<String, Object> paramMap);
}

View File

@@ -0,0 +1,74 @@
package com.risk.riskmanage.datamanage.mapper;
import java.util.Map;
import com.risk.riskmanage.datamanage.model.FieldUser;
import com.risk.riskmanage.common.mapper.BaseMapper;
public interface FieldUserMapper extends BaseMapper<FieldUser> {
/**
* createFieldUserRel:(绑定字段和用户关系). <br/>
*
* @param fieldUser 用户字段实体类
* @return 插入成功
* */
public boolean createFieldUserRel(FieldUser fieldUserVo);
/**
* batchCreateFieldUserRel:(批量导入字段信息后批量绑定字段和用户关系). <br/>
*
* @param paramMap 参数集合
* @return 插入成功
* */
public boolean batchCreateFieldUserRel(Map<String,Object> paramMap);
/**
* batchBindEngineFieldUserRel:(把一批通用字段id中未绑定的字段id批量绑定到引擎). <br/>
*
* @param paramMap 参数集合
* @return 插入成功
* */
public boolean batchBindEngineFieldUserRel(Map<String,Object> paramMap);
/**
* batchCreateEngineFieldUserRel:(把id、英文名、中文名不重复的组织字段批量绑定到引擎). <br/>
*
* @param paramMap 参数集合
* @return 插入成功
* */
public boolean batchCreateEngineFieldUserRel(Map<String,Object> paramMap);
/**
* updateFieldUserRel:(更新字段). <br/>
*
* @param paramMap 参数集合
* @return 更新成功
* */
public boolean updateFieldUserRel(Map<String,Object> paramMap);
/**
* updateStatus:(单个或批量更新用户字段关系). <br/>
*
* @param paramMap 参数集合
* @return 更新成功
* */
public boolean updateStatus(Map<String,Object> paramMap);
/**
* deleteFieldByIds:(批量修改字段启用状态为删除状态(-1)). <br/>
*
* @param paramMap 参数集合
* @return 更新是否成功
*/
public boolean deleteFieldByIds(Map<String,Object> paramMap);
/**
* deleteFieldByIds:(批量修改字段删除状态为启用状态(1)). <br/>
*
* @param paramMap 参数集合
* @return 更新是否成功
*/
public boolean backFieldByIds(Map<String,Object> paramMap);
}

View File

@@ -0,0 +1,456 @@
package com.risk.riskmanage.datamanage.model;
import com.risk.riskmanage.common.model.BasePage;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
public class Field extends BasePage implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
* */
private Long id;
/**
* 字段英文名
* */
private String fieldEn;
/**
* 字段中文名
* */
private String fieldCn;
/**
* 字段类型编号
* */
private Long fieldTypeId;
/**
* 字段类型名
* */
private String fieldType;
/**
* 字段存值类型
* */
private Integer valueType;
/**
* 字段存值类型中文
* */
private String valueTypeName;
/**
* 字段约束范围
* */
private String valueScope;
/**
* 是否衍生字段
* */
private Integer isDerivative;
/**
* 是否衍生字段
* */
private String isDerivativeName;
/**
* 是否输出字段
* */
private Integer isOutput;
/**
* 是否输出字段
* */
private String isOutputName;
/**
* 是否组织定义的通用字段
* */
private Integer isCommon;
/**
* 衍生字段公式
* */
private String formula;
/**
* 衍生字段公式回显信息
* */
private String formulaShow;
/**
* 衍生字段引用的字段id
* */
private String usedFieldId;
/**
* 衍生字段引用的原生字段id
* */
private String origFieldId;
/**
* 创建人
* */
private Long author;
/**
* 创建人昵称
* */
private String nickName;
/**
* 创建时间
* */
private Date created;
/**
* 归属的引擎ID
* */
private Long engineId;
/**
* 归属的引擎名称
* */
private String engineName;
/**
* 字段状态(启用、停用、删除、未知)
* */
private String status;
/**
* 字段条件设置集合
* */
private List<FieldCond> fieldCondList;
/**
* 字段用户关系编号
* */
private Long fieldRelId;
/**
* 是否使用sql获取指标
*/
private Boolean isUseSql;
/**
* 使用sql获取指标时对应的数据源
*/
private Integer dataSourceId;
/**
* 使用sql获取指标时对应的sql语句
*/
private String sqlStatement;
/**
* sql变量配置
*/
private String sqlVariable;
//是否使用接口
private Boolean isInterface;
//接口id
private Integer interfaceId;
//接口解析指标
private String interfaceParseField;
//json类型对应的json值
private String jsonValue;
//字典变量如:日期字符串
private String dictVariable;
public String getDictVariable() {
return dictVariable;
}
public void setDictVariable(String dicVariable) {
this.dictVariable = dicVariable;
}
/**
* 该字段归属的组织编号
* */
private Long organId;
public String getInterfaceParseField() {
return interfaceParseField;
}
public void setInterfaceParseField(String interfaceParseField) {
this.interfaceParseField = interfaceParseField;
}
public String getJsonValue() {
return jsonValue;
}
public void setJsonValue(String jsonValue) {
this.jsonValue = jsonValue;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFieldEn() {
return fieldEn;
}
public void setFieldEn(String fieldEn) {
this.fieldEn = fieldEn;
}
public String getFieldCn() {
return fieldCn;
}
public void setFieldCn(String fieldCn) {
this.fieldCn = fieldCn;
}
public Long getFieldTypeId() {
return fieldTypeId;
}
public void setFieldTypeId(Long fieldTypeId) {
this.fieldTypeId = fieldTypeId;
}
public Integer getValueType() {
return valueType;
}
public void setValueType(Integer valueType) {
this.valueType = valueType;
}
public String getValueScope() {
return valueScope;
}
public void setValueScope(String valueScope) {
this.valueScope = valueScope;
}
public Integer getIsDerivative() {
return isDerivative;
}
public void setIsDerivative(Integer isDerivative) {
this.isDerivative = isDerivative;
}
public Integer getIsOutput() {
return isOutput;
}
public void setIsOutput(Integer isOutput) {
this.isOutput = isOutput;
}
public Integer getIsCommon() {
return isCommon;
}
public void setIsCommon(Integer isCommon) {
this.isCommon = isCommon;
}
public String getFormula() {
return formula;
}
public void setFormula(String formula) {
this.formula = formula;
}
public String getFormulaShow() {
return formulaShow;
}
public void setFormulaShow(String formulaShow) {
this.formulaShow = formulaShow;
}
public String getUsedFieldId() {
return usedFieldId;
}
public void setUsedFieldId(String usedFieldId) {
this.usedFieldId = usedFieldId;
}
public String getOrigFieldId() {
return origFieldId;
}
public void setOrigFieldId(String origFieldId) {
this.origFieldId = origFieldId;
}
public Long getAuthor() {
return author;
}
public void setAuthor(Long author) {
this.author = author;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Long getEngineId() {
return engineId;
}
public void setEngineId(Long engineId) {
this.engineId = engineId;
}
public String getFieldType() {
return fieldType;
}
public void setFieldType(String fieldType) {
this.fieldType = fieldType;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Long getFieldRelId() {
return fieldRelId;
}
public void setFieldRelId(Long fieldRelId) {
this.fieldRelId = fieldRelId;
}
public List<FieldCond> getFieldCondList() {
return fieldCondList;
}
public void setFieldCondList(List<FieldCond> fieldCondList) {
this.fieldCondList = fieldCondList;
}
public String getEngineName() {
return engineName;
}
public void setEngineName(String engineName) {
this.engineName = engineName;
}
public String getValueTypeName() {
return valueTypeName;
}
public void setValueTypeName(String valueTypeName) {
this.valueTypeName = valueTypeName;
}
public String getIsDerivativeName() {
return isDerivativeName;
}
public void setIsDerivativeName(String isDerivativeName) {
this.isDerivativeName = isDerivativeName;
}
public String getIsOutputName() {
return isOutputName;
}
public void setIsOutputName(String isOutputName) {
this.isOutputName = isOutputName;
}
public Boolean getUseSql() {
return isUseSql;
}
public void setUseSql(Boolean useSql) {
isUseSql = useSql;
}
public Integer getDataSourceId() {
return dataSourceId;
}
public void setDataSourceId(Integer dataSourceId) {
this.dataSourceId = dataSourceId;
}
public String getSqlStatement() {
return sqlStatement;
}
public void setSqlStatement(String sqlStatement) {
this.sqlStatement = sqlStatement;
}
@Override
public String toString() {
return "Field{" +
"id=" + id +
", fieldEn='" + fieldEn + '\'' +
", fieldCn='" + fieldCn + '\'' +
", fieldTypeId=" + fieldTypeId +
", fieldType='" + fieldType + '\'' +
", valueType=" + valueType +
", valueTypeName='" + valueTypeName + '\'' +
", valueScope='" + valueScope + '\'' +
", isDerivative=" + isDerivative +
", isDerivativeName='" + isDerivativeName + '\'' +
", isOutput=" + isOutput +
", isOutputName='" + isOutputName + '\'' +
", isCommon=" + isCommon +
", formula='" + formula + '\'' +
", formulaShow='" + formulaShow + '\'' +
", usedFieldId='" + usedFieldId + '\'' +
", origFieldId='" + origFieldId + '\'' +
", author=" + author +
", nickName='" + nickName + '\'' +
", created=" + created +
", engineId=" + engineId +
", engineName='" + engineName + '\'' +
", status='" + status + '\'' +
", fieldCondList=" + fieldCondList +
", fieldRelId=" + fieldRelId +
", isUseSql=" + isUseSql +
", dataSourceId=" + dataSourceId +
", sqlStatement='" + sqlStatement + '\'' +
", isInterface=" + isInterface +
", interfaceId=" + interfaceId +
'}';
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public Boolean getInterface() {
return isInterface;
}
public void setInterface(Boolean anInterface) {
isInterface = anInterface;
}
public Integer getInterfaceId() {
return interfaceId;
}
public void setInterfaceId(Integer interfaceId) {
this.interfaceId = interfaceId;
}
public String getSqlVariable() {
return sqlVariable;
}
public void setSqlVariable(String sqlVariable) {
this.sqlVariable = sqlVariable;
}
public Long getOrganId() {
return organId;
}
public void setOrganId(Long organId) {
this.organId = organId;
}
}

View File

@@ -0,0 +1,141 @@
package com.risk.riskmanage.datamanage.model;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import com.risk.riskmanage.common.model.BasePage;
import com.risk.riskmanage.datamanage.vo.FieldSubCondVo;
public class FieldCond extends BasePage implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 条件编号
* */
private Long id;
/**
* 字段编号
* */
private Long fieldId;
/**
* 字段条件值
* */
private String conditionValue;
/**
* 字段条件区域设置json格式
* */
private String content;
/**
* 条件字段编号
* */
private Long condFieldId;
/**
* 条件字段的运算符
* */
private String condFieldOperator;
/**
* 条件字段的条件设置值
* */
private String condFieldValue;
/**
* 条件字段间的逻辑符
* */
private String condFieldLogical;
/**
* 创建时间
* */
private Date created;
private List<FieldSubCondVo> fieldSubCond;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getFieldId() {
return fieldId;
}
public void setFieldId(Long fieldId) {
this.fieldId = fieldId;
}
public String getConditionValue() {
return conditionValue;
}
public void setConditionValue(String conditionValue) {
this.conditionValue = conditionValue;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Long getCondFieldId() {
return condFieldId;
}
public void setCondFieldId(Long condFieldId) {
this.condFieldId = condFieldId;
}
public String getCondFieldOperator() {
return condFieldOperator;
}
public void setCondFieldOperator(String condFieldOperator) {
this.condFieldOperator = condFieldOperator;
}
public String getCondFieldValue() {
return condFieldValue;
}
public void setCondFieldValue(String condFieldValue) {
this.condFieldValue = condFieldValue;
}
public String getCondFieldLogical() {
return condFieldLogical;
}
public void setCondFieldLogical(String condFieldLogical) {
this.condFieldLogical = condFieldLogical;
}
public List<FieldSubCondVo> getFieldSubCond() {
return fieldSubCond;
}
public void setFieldSubCond(List<FieldSubCondVo> fieldSubCond) {
this.fieldSubCond = fieldSubCond;
}
}

View File

@@ -0,0 +1,130 @@
package com.risk.riskmanage.datamanage.model;
import com.risk.riskmanage.common.model.BasePage;
import java.io.Serializable;
public class FieldType extends BasePage implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private Integer id;
/**
* 字段类型名
*/
private String fieldType;
/**
* 父节点编号
*/
private Integer parentId;
/**
* 是否组织定义的通用字段类型
*/
private Integer isCommon;
private Integer type;
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
/**
* 字段类型的子类集合
*/
private FieldType[] children;
/**
* 是否为父类
*/
private String isParent = "true";
/**
* 引擎编号
*/
private Integer engineId;
/**
* 文件夹图片路径
*/
private String icon;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFieldType() {
return fieldType;
}
public void setFieldType(String fieldType) {
this.fieldType = fieldType;
}
public Integer getParentId() {
return parentId;
}
public void setParentId(Integer parentId) {
this.parentId = parentId;
}
public Integer getIsCommon() {
return isCommon;
}
public void setIsCommon(Integer isCommon) {
this.isCommon = isCommon;
}
public FieldType[] getChildren() {
return children;
}
public void setChildren(FieldType[] children) {
this.children = children;
}
public String getIsParent() {
return isParent;
}
public void setIsParent(String isParent) {
this.isParent = isParent;
}
public Integer getEngineId() {
return engineId;
}
public void setEngineId(Integer engineId) {
this.engineId = engineId;
}
public String getIcon() {
// if(engineId!=null)
// icon = "../../resource/images/authority/folder.png";
// else
icon = "../resource/images/authority/folder.png";
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
}

View File

@@ -0,0 +1,79 @@
package com.risk.riskmanage.datamanage.model;
import java.io.Serializable;
import java.util.Date;
import com.risk.riskmanage.common.model.BasePage;
public class FieldTypeUser extends BasePage implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
* */
private Integer id;
/**
* 字段类型编号(表主键)
* */
private Integer fieldTypeId;
/**
* 该字段类型归属的组织编号
* */
private Long organId;
/**
* 该字段类型归属的引擎id表主键
* */
private Integer engineId;
/**
* 创建或修改该字段的用户编号
* */
private Long userId;
/**
* 创建时间
* */
private Date created;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getFieldTypeId() {
return fieldTypeId;
}
public void setFieldTypeId(Integer fieldTypeId) {
this.fieldTypeId = fieldTypeId;
}
public Long getOrganId() {
return organId;
}
public void setOrganId(Long organId) {
this.organId = organId;
}
public Integer getEngineId() {
return engineId;
}
public void setEngineId(Integer engineId) {
this.engineId = engineId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
}

View File

@@ -0,0 +1,101 @@
package com.risk.riskmanage.datamanage.model;
import java.io.Serializable;
import java.util.Date;
import com.risk.riskmanage.common.model.BasePage;
public class FieldUser extends BasePage implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
* */
private Long id;
/**
* 字段编号(表主键)
* */
private Long fieldId;
/**
* 该字段归属的组织编号
* */
private Long organId;
/**
* 该字段归属的引擎id表主键
* */
private Long engineId;
/**
* 创建或修改该字段的用户编号
* */
private Long userId;
/**
* 启用停用删除标志
* */
private int status;
/**
* 创建时间
* */
private Date created;
/**
* 更新时间
* */
private Date updated;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getFieldId() {
return fieldId;
}
public void setFieldId(Long fieldId) {
this.fieldId = fieldId;
}
public Long getOrganId() {
return organId;
}
public void setOrganId(Long organId) {
this.organId = organId;
}
public Long getEngineId() {
return engineId;
}
public void setEngineId(Long engineId) {
this.engineId = engineId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Date getUpdated() {
return updated;
}
public void setUpdated(Date updated) {
this.updated = updated;
}
}

View File

@@ -0,0 +1,44 @@
package com.risk.riskmanage.datamanage.model;
import java.io.Serializable;
import com.risk.riskmanage.common.model.BasePage;
public class FormulaField extends BasePage implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
* */
private Long id;
/**
* 字段编号(表主键)
* */
private Long fieldId;
/**
* 公式用到的字段编号(表主键)
* */
private Long formulaFieldId;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getFieldId() {
return fieldId;
}
public void setFieldId(Long fieldId) {
this.fieldId = fieldId;
}
public Long getFormulaFieldId() {
return formulaFieldId;
}
public void setFormulaFieldId(Long formulaFieldId) {
this.formulaFieldId = formulaFieldId;
}
}

View File

@@ -0,0 +1,97 @@
package com.risk.riskmanage.datamanage.model.request;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class FieldSaveParam implements Serializable {
private static final long serialVersionUID = 1L;
// http://47.102.125.25/apidoc/index.html#api-field-PostV2DatamanageFieldSave
private String searchKey; //
private Long id;
private String formula;
private String formulaShow;
private Long engineId;
private String fieldEn;
private String fieldCn;
private Long fieldTypeId;
private Integer valueType;
private Integer isDerivative;
private Integer isOutput;
private String valueScope;
private String fieldCondList; //
private String formulaHidden; //
private Boolean isUseSql;
private Integer dataSourceId;
private String sqlStatement;
private String sqlVariable;
private Boolean isInterface;
private Integer interfaceId;
private String interfaceParseField;
private String jsonValue;
private String dictVariable;
//
// public Field toField() {
// Field field = new Field();
//
// field.setId(this.getId());
// field.setFormula(this.getFormula());
// field.setFormulaShow(this.getFormulaShow());
// field.setEngineId(this.getEngineId());
// field.setFieldEn(this.getFieldEn());
// field.setFieldCn(this.getFieldCn());
// field.setFieldTypeId(this.getFieldTypeId());
// field.setValueType(this.getValueType());
// field.setIsDerivative(this.getIsDerivative());
// field.setIsOutput(this.getIsOutput());
// field.setValueScope(this.getValueScope());
//
// field.setUseSql(this.getIsUseSql());
// field.setDataSourceId(this.getDataSourceId());
// field.setSqlStatement(this.getSqlStatement());
//
// return field;
// }
//
// public Map toMap() {
// HashMap<String, Object> hashMap = new HashMap<>();
// hashMap.put("searchKey", this.getSearchKey());
// hashMap.put("id", this.getId());
// hashMap.put("formula", this.getFormula());
// hashMap.put("formulaShow", this.getFormulaShow());
// hashMap.put("engineId", this.getEngineId());
// hashMap.put("formulaFields", this.getFormulaFields());
// hashMap.put("fieldEn", this.getFieldEn());
// hashMap.put("fieldCn", this.getFieldCn());
// hashMap.put("fieldTypeId", this.getFieldId());
// hashMap.put("valueType", this.getValueType());
// hashMap.put("isDerivative", this.getIsDerivative());
// hashMap.put("isOutput", this.getIsOutput());
// hashMap.put("valueScope", this.getValueScope());
// hashMap.put("fieldContent", this.getFieldContent());
// hashMap.put("formulaHidden", this.getFormulaHidden());
// hashMap.put("derType", this.getDerType());
// hashMap.put("fieldContent2", this.getFieldContent2());
// hashMap.put("conditionValue", this.getConditionValue());
// hashMap.put("fieldId", this.getFieldId());
// hashMap.put("operator", this.getOperator());
// hashMap.put("fieldValue", this.getFieldValue());
// hashMap.put("idx", this.getIdx());
//
// hashMap.put("isUseSql", this.getIsUseSql());
// hashMap.put("dataSourceId", this.getDataSourceId());
// hashMap.put("sqlStatement", this.getSqlStatement());
//
// return hashMap;
// }
//
}

View File

@@ -0,0 +1,23 @@
package com.risk.riskmanage.datamanage.model.request;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class FieldTreeParam {
//获取需要
private Integer type;
//删除需要
private Long id;//文件夹的id
private String fieldType;//文件夹名字
private Integer status;//状态 -1 删除
//新建时需要
private String parentId;//上层文件夹id
private Integer isCommon;//
private Long organId;//指标相关的组织id
private Long userId;//用户id
}

View File

@@ -0,0 +1,274 @@
package com.risk.riskmanage.datamanage.service;
import com.risk.riskmanage.datamanage.model.Field;
import com.risk.riskmanage.common.model.requestParam.UpdateFolderParam;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public interface FieldService {
/**
* createField:(插入新字段). <br/>
*
*
* @param fieldVo
* 字段实体类
* @return 字段插入成功
* */
public boolean createField(Field fieldVo, Map<String, Object> paramMap);
/**
* isExists:(查找字段是否存在). <br/>
*
*
* @param paramMap
* 参数集合
* @return 存在的记录条数
*/
public int isExists(Map<String, Object> paramMap);
/**
* isExistsFieldType:(查找字段类型是否存在). <br/>
*
* @param paramMap 参数集合
* @return 存在的记录条数
*/
public int isExistsFieldType(Map<String,Object> paramMap);
/**
* isExistsDefaultTreeName:(查找默认节点名是否存在). <br/>
*
* @param paramMap 参数集合
* @return 存在的记录条数
*/
public int isExistsDefaultTreeName(Map<String,Object> paramMap);
/**
* updateField:(修改字段内容). <br/>
*
*
* @param fieldVo
* 字段实体类
* @return 更新成功
*/
public boolean updateField(Map<String, Object> paramMap);
/**
* findByFieldType:(按照字段类型查找字段列表). <br/>
*
*
* @param paramMap
* 参数集合
* @return 更新成功
*/
public List<Field> findByFieldType(Map<String, Object> paramMap);
/**
* findFieldByIds:(找出一批字段id对应的字段列表). <br/>
*
* @param paramMap 参数集合
* @return 字段列表
*/
public List<Field> findFieldByIds(Map<String,Object> paramMap);
/**
* searchByName:(模糊查找该用户可用字段列表). <br/>
*
* @param paramMap 参数集合
* @return 字段类型列表
*/
public List<Field> searchByName(Map<String,Object> paramMap);
/**
* findExcelByFieldType:(获取导出Excel需要的字段信息). <br/>
*
* @param paramMap 参数集合
* @return
*/
public List<Field> findExcelByFieldType(Map<String,Object> paramMap);
/**
* findByFieldId:(根据Id查找字段). <br/>
*
* @param paramMap 参数集合
* @return 字段列表
*/
public Field findByFieldId(Map<String,Object> paramMap);
/**
* findByFieldEn:(根据引擎和字段英文名找出引擎所用字段对象). <br/>
*
* @param paramMap 参数集合
* @return 字段对象
*/
public Field findByFieldEn(Map<String,Object> paramMap);
/**
* findFieldTypeId:(根据传入参数查找字段类型ID). <br/>
*
* @param paramMap 参数集合
* @return 更新成功
* */
public Long findFieldTypeId(Map<String,Object> paramMap);
/**
* findByUser:(查找用户可用字段). <br/>
*
* @param paramMap 参数集合
* @return 字段类型列表
*/
public List<Field> findByUser(Map<String,Object> paramMap);
/**
* updateStatus:(单个或批量更新用户字段关系). <br/>
*
*
* @param paramMap
* 参数集合
* @return 插入成功
* */
//public boolean updateStatus(Map<String, Object> paramMap);
public Map<String, Object> updateStatus(Map<String, Object> paramMap);
/**
* checkField:(公共方法:检查字段是否被引用). <br/>
*
*
* @param paramMap
* 参数集合
* @return 结果集合
* */
public Map<String, Object> checkField(Map<String, Object> paramMap);
/**
* getSourceField:(公共方法:检查字段的所有构成字段). <br/>
*
*
* @param paramMap
* 参数集合
* @return
* */
public String getSourceField(String fieldIds,String fieldId);
/**
* checkFieldType:(公共方法:检查字段类型及其下所有子类型的所有字段是否被引用). <br/>
*
*
* @param paramMap
* 参数集合
* @return 结果集合
* */
public Map<String, Object> checkFieldType(Map<String, Object> paramMap);
/**
* findFieldIdsByTypeIds:(找出一批字段类型id对应的字段id列表). <br/>
*
* @param paramMap 参数集合
* @return 字段id逗号分隔字符串
*/
public String findFieldIdsByTypeIds(Map<String,Object> paramMap);
/**
* findOrgFieldIdsByTypeIds:(在通用字段里找出一批字段类型id的字段id列表). <br/>
*
* @param paramMap 参数集合
* @return 字段列表
*/
public String findOrgFieldIdsByTypeIds(Map<String,Object> paramMap);
/**
* importExcel:(导入excel). <br/>
*
*
* @param url
* @param paramMap
* 参数集合
* @return 导入成功
* */
Map<String, Object> importExcel(String url,Map<String, Object> paramMap);
/**
* getFieldList:(获取组织的所有字段). <br/>
*
* @param paramMap 参数集合
* @return
*/
public List<Field> getFieldList(Map<String,Object> paramMap);
/**
* createEngineField:(批量拷贝组织通用字段到引擎字段). <br/>
*
* @param paramMap 参数集合
* @return 是否创建成功
*/
public boolean createEngineField(Map<String,Object> paramMap);
/**
* bindEngineField:(根据传入的engineId和字段id找到一连串的字段并绑定关系). <br/>
*
* @param paramMap 参数集合
* @return 是否创建成功
*/
public boolean bindEngineField(Map<String, Object> paramMap);
/**
* findByFieldEn:(根据引擎和字段中文名找出引擎所用字段对象). <br/>
*
* @param paramMap 参数集合
* @return 字段对象
*/
public Field findByFieldCn(Map<String,Object> paramMap);
/**
* getField:(根据引擎和字段中文名找出引擎所用字段对象). <br/>
*
* @param
* @return 字段对象
*/
public String getField(String fieldIds,String usedFieldId,String engineId);
/**
* 查找某字段被引用的字段id并拼成逗号分隔的字符串
*
* @return
*/
public String getAllFieldTypeId(String ids,String pid,String engineId);
/**
* 查找某字段类型所有的<父类型>拼成逗号分隔的字符串
*
* @return
*/
public String getAllParentFieldTypeId(String ids,String id,String engineId);
/**
* 删除指定字段类型节点
*
* @return
*/
public Map<String,Object> deleteNode(@RequestParam Map<String,Object> paramMap);
/**
* 测试用:构造数据填写样本数据
*
* @return
*/
public String createEngineTestData(@RequestParam Map<String,Object> paramMap);
// public String createEngineTestResultPdf(@RequestParam Map<String,Object> paramMap);
int fieldValidate(String fieldEn, String fieldCn, String engineId, Long fieldId);
int updateFieldFolder(UpdateFolderParam param);
String getFieldEnById(Long id);
List<Field> queryByIds(Collection<Long> ids );
List<Field> queryByEns(Collection<String> ens );
List<Field> queryByOrganAndCns(Collection<String> cns ,Long organId);
void sqlFieldCheck(Map map);
}

View File

@@ -0,0 +1,60 @@
package com.risk.riskmanage.datamanage.service;
import java.util.List;
import java.util.Map;
import com.risk.riskmanage.datamanage.model.FieldType;
import com.risk.riskmanage.datamanage.model.request.FieldTreeParam;
public interface FieldTypeService {
/**
* getFieldTypeList:(查找用户的字段类型列表). 支持查询组织通用字段类型、子类型 支持查询引擎自定义字段类型、子类型 <br/>
*
* @param paramMap 参数集合
* @return 字段类型列表
*/
public List<FieldType> getFieldTypeList(Map<String,Object> paramMap);
/**
* findFieldTypeById:(根据传入的字段类型ID查找字段类型名). <br/>
*
* @param paramMap 参数集合
* @return 字段类型列表
*/
public FieldType findFieldTypeById(Map<String,Object> paramMap);
/**
* findFieldType:(查找用户可用的字段类型列表,通用组织所有,引擎只有自定义). <br/>
*
* @param paramMap 参数集合
* @return 字段类型列表
*/
public List<FieldType> findFieldType(Map<String,Object> paramMap);
/**
* createFieldType:(新增字段类型). <br/>
*
* @param paramMap 参数集合
* @return 插入成功
*/
public boolean createFieldType(FieldType fieldTypeVo,Map<String, Object> paramMap);
/**
* updateFieldType:(更新字段类型名). <br/>
*
* @param paramMap 参数集合
* @return 更新成功
*/
public boolean updateFieldType(FieldTreeParam param);
/**
* findNodeIds:(查找引擎在用的节点集合). <br/>
*
* @param paramMap 参数集合
* @return
*/
public String findNodeIds(Map<String, Object> paramMap);
List<FieldType> getTreeList(FieldTreeParam param);
}

View File

@@ -0,0 +1,94 @@
package com.risk.riskmanage.datamanage.service.imp;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.risk.riskmanage.datamanage.model.FieldType;
import com.risk.riskmanage.datamanage.model.request.FieldTreeParam;
import com.risk.riskmanage.util.SessionManager;
import org.springframework.stereotype.Service;
import com.risk.riskmanage.common.basefactory.BaseService;
import com.risk.riskmanage.datamanage.service.FieldTypeService;
import javax.annotation.Resource;
@Service
public class FieldTypeServiceImp extends BaseService implements
FieldTypeService {
@Resource
@Override
public List<FieldType> getFieldTypeList(Map<String, Object> paramMap) {
return fieldTypeMapper.getFieldTypeList(paramMap);
}
@Override
public boolean createFieldType(FieldType fieldTypeVo,
Map<String, Object> paramMap) {
// 检查字段类型是否存在
//if (fieldTypeMapper.findIdByFieldType(paramMap) == 0) {
if (fieldTypeMapper.createFieldType(fieldTypeVo)) {
paramMap.put("fieldTypeId", fieldTypeVo.getId());
if (fieldTypeUserMapper.createFieldTypeUserRel(paramMap)) {
return true;
} else
return false;
} else
return false;
// } else
// return false;
}
@Override
public boolean updateFieldType(FieldTreeParam param) {
param.setOrganId(SessionManager.getLoginAccount().getOrganId());
param.setUserId(SessionManager.getLoginAccount().getUserId());
fieldTypeMapper.updateFieldType(param);
fieldTypeUserMapper.updateFieldTypeUserRel(param);
return true;
}
@Override
public FieldType findFieldTypeById(Map<String, Object> paramMap) {
return fieldTypeMapper.findFieldTypeById(paramMap);
}
@Override
public String findNodeIds(Map<String, Object> paramMap) {
return fieldTypeUserMapper.findNodeIds(paramMap);
}
@Override
public List<FieldType> findFieldType(Map<String, Object> paramMap) {
return fieldTypeMapper.findFieldType(paramMap);
}
@Override
public List<FieldType> getTreeList(FieldTreeParam param) {
param.setOrganId(SessionManager.getLoginAccount().getOrganId());
param.setUserId(SessionManager.getLoginAccount().getUserId());
List<FieldType> fieldTypes = fieldTypeMapper.selectFieldTypeList(param);
List<FieldType> collect = fieldTypes.stream().filter(fieldType -> fieldType.getParentId() == 0).collect(Collectors.toList());
for (FieldType fieldType : collect) {
fieldType.setChildren(this.assembleTreeList(fieldTypes,fieldType));
}
return collect;
}
private FieldType[] assembleTreeList(List<FieldType> fieldTypes,FieldType root){
List<FieldType> children = new ArrayList();
for (FieldType fieldType : fieldTypes) {
if (fieldType.getParentId().equals(root.getId())){
fieldType.setChildren(this.assembleTreeList(fieldTypes,fieldType));
children.add(fieldType);
}
}
if (children.size()==0){
return new FieldType[0];
}
return children.toArray( new FieldType[children.size()]);
}
}

View File

@@ -0,0 +1,32 @@
package com.risk.riskmanage.datamanage.vo;
import java.util.List;
import com.risk.riskmanage.datamanage.model.Field;
/**
* 字段枚举包装类
* 主要用于决策选项中,选择字段要加载字段对应的枚举值(如果字段是枚举的话)
*/
public class FieldEnumVo {
private Field field;
private List<String> enums;
public Field getField() {
return field;
}
public void setField(Field field) {
this.field = field;
}
public List<String> getEnums() {
return enums;
}
public void setEnums(List<String> enums) {
this.enums = enums;
}
}

View File

@@ -0,0 +1,150 @@
package com.risk.riskmanage.datamanage.vo;
import java.util.Date;
public class FieldExcelVo {
/**
* 主键
* */
private Integer id;
/**
* 字段英文名
* */
private String fieldEn;
/**
* 字段中文名
* */
private String fieldCn;
/**
* 字段类型名称
* */
private String fieldType;
/**
* 字段存值类型
* */
private String valueType;
/**
* 字段约束范围
* */
private String valueScope;
/**
* 是否衍生字段
* */
private String isDerivative;
/**
* 是否输出字段
* */
private String isOutput;
/**
* 衍生字段公式
* */
private String formula;
/**
* 创建人
* */
private String author;
/**
* 创建时间
* */
private Date created;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFieldEn() {
return fieldEn;
}
public void setFieldEn(String fieldEn) {
this.fieldEn = fieldEn;
}
public String getFieldCn() {
return fieldCn;
}
public void setFieldCn(String fieldCn) {
this.fieldCn = fieldCn;
}
public String getFieldType() {
return fieldType;
}
public void setFieldType(String fieldType) {
this.fieldType = fieldType;
}
public String getValueType() {
return valueType;
}
public void setValueType(String valueType) {
this.valueType = valueType;
}
public String getValueScope() {
return valueScope;
}
public void setValueScope(String valueScope) {
this.valueScope = valueScope;
}
public String getIsDerivative() {
return isDerivative;
}
public void setIsDerivative(String isDerivative) {
this.isDerivative = isDerivative;
}
public String getIsOutput() {
return isOutput;
}
public void setIsOutput(String isOutput) {
this.isOutput = isOutput;
}
public String getFormula() {
return formula;
}
public void setFormula(String formula) {
this.formula = formula;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
}

View File

@@ -0,0 +1,89 @@
package com.risk.riskmanage.datamanage.vo;
import java.io.Serializable;
public class FieldFormulaVo implements Serializable {
private static final long serialVersionUID = 1L;
// [{fvalue: "0",formula: "a",farr: [{fieldCN:"引擎字段1-1",fieldCond:[{"inputOne":"c","inputThree":"5"},{"inputOne":"b","inputThree":"12"}]},{fieldCN:"通用字段2贷前",fieldCond:[{"inputOne":"(30,40]","inputThree":"5"},{"inputOne":"[45,51)","inputThree":"12"}]}]}];
/**
* 衍生字段公式设置对应的值
* */
private String fvalue;
/**
* 衍生字段公式
* */
private String formula;
/**
* 衍生字段公式里字段的条件区域设置
* */
private Integer idx;
/**
* 衍生字段公式里字段的条件区域设置
* */
private String farr;
/**
* 衍生字段公式里条件区域设置的某个字段中文名
* */
private String fieldCN;
/**
* 衍生字段公式里条件区域设置的某个字段的具体设置
* */
private String fieldCond;
public String getFvalue() {
return fvalue;
}
public void setFvalue(String fvalue) {
this.fvalue = fvalue;
}
public String getFormula() {
return formula;
}
public void setFormula(String formula) {
this.formula = formula;
}
public Integer getIdx() {
return idx;
}
public void setIdx(Integer idx) {
this.idx = idx;
}
public String getFarr() {
return farr;
}
public void setFarr(String farr) {
this.farr = farr;
}
public String getFieldCN() {
return fieldCN;
}
public void setFieldCN(String fieldCN) {
this.fieldCN = fieldCN;
}
public String getFieldCond() {
return fieldCond;
}
public void setFieldCond(String fieldCond) {
this.fieldCond = fieldCond;
}
}

View File

@@ -0,0 +1,108 @@
package com.risk.riskmanage.datamanage.vo;
import java.io.Serializable;
public class FieldSubCondVo implements Serializable{
private static final long serialVersionUID = 1L;
//[{"fieldId":"43","operator":"in","fieldValue":"b","logical":"and"}]
/**
* 条件字段编号
* */
private Integer fieldId;
/**
* 条件字段的运算符
* */
private String operator;
/**
* 条件字段的条件设置值
* */
private String fieldValue;
/**
* 条件字段间的逻辑符
* */
private String logical;
/**
* 条件字段的值类型
* */
private Integer valueType;
/**
* 条件字段的取值范围
* */
private String valueScope;
/**
* 条件字段的取值范围拆解后的数组
* */
private String[] values;
/**
* 条件字段的字段名
*/
private String fieldCn;
public Integer getFieldId() {
return fieldId;
}
public void setFieldId(Integer fieldId) {
this.fieldId = fieldId;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public String getFieldValue() {
return fieldValue;
}
public void setFieldValue(String fieldValue) {
this.fieldValue = fieldValue;
}
public String getLogical() {
return logical;
}
public void setLogical(String logical) {
this.logical = logical;
}
public Integer getValueType() {
return valueType;
}
public void setValueType(Integer valueType) {
this.valueType = valueType;
}
public String getValueScope() {
return valueScope;
}
public void setValueScope(String valueScope) {
this.valueScope = valueScope;
}
public String[] getValues() {
if(valueType == 3){
values = valueScope.split(",");
}else{
values = new String[]{valueScope};
}
return values;
}
public void setValues(String[] values) {
this.values = values;
}
public String getFieldCn() {
return fieldCn;
}
public void setFieldCn(String fieldCn) {
this.fieldCn = fieldCn;
}
}