package com.product.org.admin.controller;
|
|
|
import com.product.core.permission.PermissionService;
|
import com.product.module.sys.config.SystemErrorCode;
|
import com.product.module.sys.entity.SystemUser;
|
import org.apache.commons.lang3.StringUtils;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpSession;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.product.core.config.CoreConst;
|
import com.product.core.controller.support.AbstractBaseController;
|
import com.product.core.dao.BaseDao;
|
import com.product.core.entity.DataTableEntity;
|
import com.product.core.entity.FieldSetEntity;
|
import com.product.core.entity.RequestParameterEntity;
|
import com.product.core.exception.BaseException;
|
import com.product.core.spring.context.SpringMVCContextHolder;
|
import com.product.module.sys.service.UserService;
|
import com.product.module.sys.version.ApiVersion;
|
import com.product.org.admin.config.CmnConst;
|
import com.product.org.admin.config.SystemCode;
|
import com.product.org.admin.service.ViewTableService;
|
import com.product.org.admin.service.idel.IViewTableService;
|
import com.product.org.admin.util.ResultInfo;
|
import com.product.util.BaseUtil;
|
|
import java.util.Map;
|
|
/**
|
* Copyright © LX-BASE
|
* @Title: ViewTableController
|
* @Project: LX-BASE-SERVER
|
* @Date: 2020-05-29 11:42:06
|
* @Author: Xin.Luo
|
* @Description: 视图管理
|
*/
|
@RestController
|
@RequestMapping("/api/view")
|
public class ViewTableController extends AbstractBaseController {
|
@Autowired
|
public ViewTableService viewTableService;
|
@Autowired
|
UserService userService;
|
|
@Autowired
|
BaseDao baseDao;
|
/**
|
* 数据权限验证
|
*/
|
@Autowired
|
PermissionService permissionService;
|
|
@ResponseBody
|
@RequestMapping(value = "/saveViewInfo/{version}", method = RequestMethod.POST)
|
@ApiVersion(1)
|
public String saveViewInfo(HttpServletResponse response,HttpServletRequest request,HttpSession session){
|
try {
|
//获取参数
|
FieldSetEntity fse = null;
|
Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
|
if (bean != null) {
|
RequestParameterEntity reqp = (RequestParameterEntity) bean;
|
fse = reqp.getFormData();
|
}
|
//判断参数是否为空
|
if (fse == null) {
|
SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
|
return this.error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
|
}
|
String table_uuid = fse.getString(CmnConst.UUID);//表uuid
|
Boolean create_view_sql_status = Boolean.valueOf(fse.getString("create_view_sql_status"));//执行的sql状态
|
fse.remove("create_view_sql_status");
|
fse.setValue("table_type", 2);
|
//取出子表
|
DataTableEntity dataTable = fse.getSubDataTable(CmnConst.PRODUCT_SYS_DATAMODEL_FIELD);
|
if(!BaseUtil.dataTableIsEmpty(dataTable)) {
|
//删除子表 单独保存
|
fse.removeSubData(CmnConst.PRODUCT_SYS_DATAMODEL_FIELD);
|
}
|
//如果是子公司 将子公司单位ID添加至视图名
|
IViewTableService ser=(IViewTableService)getProxyInstance(viewTableService);
|
ser.addNameSubsidiary(fse);
|
if(StringUtils.isEmpty(table_uuid)) {
|
IViewTableService service=(IViewTableService)getProxyInstance(viewTableService);
|
fse.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());//创建人
|
fse.setValue(CmnConst.TABLE_PRIMARY_KEY, CmnConst.UUID);//指定主键为UUID
|
service.addAView(fse);
|
}else {
|
//超级管理员为1
|
SystemUser currentUser = SpringMVCContextHolder.getCurrentUser();
|
int type;
|
if(currentUser.getUserType() == 1){
|
type = CoreConst.DATA_PERMISSION_VALID_TYPE_USER;
|
}else {
|
type = CoreConst.DATA_PERMISSION_VALID_TYPE_ORG;
|
}
|
//数据操作的权限验证
|
if(!permissionService.validDataPermission(CmnConst.PRODUCT_SYS_DATAMODEL_TABLE,table_uuid,type)) {
|
SpringMVCContextHolder.getSystemLogger().error(SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getValue(), SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getText());
|
return this.error(SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getValue(), SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getText());
|
}
|
IViewTableService service=(IViewTableService)getProxyInstance(viewTableService);
|
fse.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUser().getUser_id());//修改人
|
fse.setValue(CmnConst.UUID, table_uuid);
|
service.updateTableName(fse);
|
}
|
//如果sql 已经修改,替换之前sql 并删除之前字段信息
|
if(create_view_sql_status && !StringUtils.isEmpty(table_uuid)){
|
IViewTableService service=(IViewTableService)getProxyInstance(viewTableService);
|
service.updateViewSql(fse);
|
}
|
return OK();
|
} catch (BaseException e) {
|
SpringMVCContextHolder.getSystemLogger().error(e);
|
return this.error(e);
|
}catch(Exception e) {
|
e.printStackTrace();
|
SpringMVCContextHolder.getSystemLogger().error(e);
|
return this.error(SystemCode.SYSTEM_SAVE_VIEW_FAIL.getValue(),SystemCode.SYSTEM_SAVE_VIEW_FAIL.getText());
|
}
|
}
|
@ResponseBody
|
@RequestMapping(value = "/runSql/{version}", method = RequestMethod.POST)
|
@ApiVersion(1)
|
public String testSql(HttpServletResponse response,HttpServletRequest request,HttpSession session){
|
try {
|
Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
|
RequestParameterEntity reqp = (RequestParameterEntity) bean;
|
String view_sql = reqp.getFormData().getValue(CmnConst.VIEW_SQL).toString();
|
IViewTableService service=(IViewTableService)getProxyInstance(viewTableService);
|
DataTableEntity field = service.runSql(view_sql);
|
//返回data
|
if(field.getRows()>0) {
|
return OK_List(field);
|
}
|
SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_SQL_START_FAIL.getValue(),SystemCode.SYSTEM_SQL_START_FAIL.getText());
|
return this.error(SystemCode.SYSTEM_SQL_START_FAIL.getValue(),SystemCode.SYSTEM_SQL_START_FAIL.getText());
|
} catch (BaseException e) {
|
SpringMVCContextHolder.getSystemLogger().error(e);
|
return this.error(e);
|
}catch(Exception e) {
|
e.printStackTrace();
|
SpringMVCContextHolder.getSystemLogger().error(e);
|
return this.error(SystemCode.SYSTEM_SQL_START_FAIL.getValue(),SystemCode.SYSTEM_SQL_START_FAIL.getText());
|
}
|
}
|
@ResponseBody
|
@RequestMapping(value = "/getViewTableInfo/{version}", method = RequestMethod.POST)
|
@ApiVersion(1)
|
public String getTableInfo(HttpServletResponse response,HttpServletRequest request,HttpSession session){
|
try {
|
FieldSetEntity fse = null;
|
Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
|
if (bean != null) {
|
RequestParameterEntity reqp = (RequestParameterEntity) bean;
|
fse = reqp.getFormData();
|
}
|
if (fse == null) {
|
SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
|
return this.error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
|
}
|
String arr_uuid = fse.getString(CmnConst.UUID);
|
if(StringUtils.isEmpty(arr_uuid)){
|
SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
|
return this.error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
|
}
|
//超级管理员为1
|
SystemUser currentUser = SpringMVCContextHolder.getCurrentUser();
|
int type;
|
if(currentUser.getUserType() == 1){
|
type = CoreConst.DATA_PERMISSION_VALID_TYPE_USER;
|
}else {
|
type = CoreConst.DATA_PERMISSION_VALID_TYPE_ORG;
|
}
|
//数据操作的权限验证
|
if(!permissionService.validDataPermission(CmnConst.PRODUCT_SYS_DATAMODEL_TABLE,arr_uuid,type)) {
|
SpringMVCContextHolder.getSystemLogger().error(SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getValue(), SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getText());
|
return this.error(SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getValue(), SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getText());
|
}
|
String[] split = arr_uuid.split(",");
|
FieldSetEntity field = viewTableService.getTableInfo(split[0]);
|
if(field != null){
|
Map<String, DataTableEntity> subData = field.getSubData();
|
subData.get(CmnConst.PRODUCT_SYS_DATAMODEL_FIELD);
|
return OK_List(field);
|
}else {
|
SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_GET_TABLE_FAIL.getValue(), SystemCode.SYSTEM_GET_TABLE_FAIL.getText());
|
return this.error(SystemCode.SYSTEM_GET_TABLE_FAIL.getValue(), SystemCode.SYSTEM_GET_TABLE_FAIL.getText());
|
}
|
} catch (BaseException e) {
|
SpringMVCContextHolder.getSystemLogger().error(e);
|
return this.error(e);
|
} catch(Exception e) {
|
e.printStackTrace();
|
SpringMVCContextHolder.getSystemLogger().error(e);
|
return this.error(SystemCode.SYSTEM_GET_TABLE_FAIL.getValue(),SystemCode.SYSTEM_GET_TABLE_FAIL.getText());
|
}
|
}
|
@ResponseBody
|
@RequestMapping(value = "/deleteTable/{version}", method = RequestMethod.POST)
|
@ApiVersion(1)
|
public String delTable(HttpServletResponse response,HttpServletRequest request,HttpSession session){
|
try {
|
FieldSetEntity fse = null;
|
Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
|
if (bean != null) {
|
RequestParameterEntity reqp = (RequestParameterEntity) bean;
|
fse = reqp.getFormData();
|
}
|
if (fse == null) {
|
SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
|
return this.error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
|
}
|
String uuid = fse.getString(CmnConst.UUID);
|
if(StringUtils.isEmpty(uuid)){
|
SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
|
return this.error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
|
}
|
//超级管理员为1
|
SystemUser currentUser = SpringMVCContextHolder.getCurrentUser();
|
int type;
|
if(currentUser.getUserType() == 1){
|
type = CoreConst.DATA_PERMISSION_VALID_TYPE_USER;
|
}else {
|
type = CoreConst.DATA_PERMISSION_VALID_TYPE_ORG;
|
}
|
//数据操作的权限验证
|
if(!permissionService.validDataPermission(CmnConst.PRODUCT_SYS_DATAMODEL_TABLE,uuid,type)) {
|
SpringMVCContextHolder.getSystemLogger().error(SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getValue(), SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getText());
|
return this.error(SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getValue(), SystemErrorCode.SYSTEM_NOT_OPER_PERMISSION.getText());
|
}
|
String[] split = uuid.split(",");
|
JSONObject jsonObject = new JSONObject();
|
IViewTableService service=(IViewTableService)getProxyInstance(viewTableService);
|
if(service.delTable(split)){
|
jsonObject.put("flag", "true");
|
return ResultInfo.success(jsonObject);
|
}else{
|
SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_DELETE_VIEW_FAIL.getValue(),SystemCode.SYSTEM_DELETE_VIEW_FAIL.getText());
|
return this.error(SystemCode.SYSTEM_DELETE_VIEW_FAIL.getValue(),SystemCode.SYSTEM_DELETE_VIEW_FAIL.getText());
|
}
|
|
} catch (BaseException e) {
|
SpringMVCContextHolder.getSystemLogger().error(e);
|
return this.error(e);
|
} catch(Exception e) {
|
e.printStackTrace();
|
SpringMVCContextHolder.getSystemLogger().error(e);
|
return this.error(SystemCode.SYSTEM_DELETE_VIEW_FAIL.getValue(),SystemCode.SYSTEM_DELETE_VIEW_FAIL.getText());
|
}
|
}
|
@ResponseBody
|
@RequestMapping(value = "/getViewTableAll/{version}", method = RequestMethod.POST)
|
@ApiVersion(1)
|
public String getViewTableAll(HttpServletResponse response,HttpServletRequest request,HttpSession session){
|
try {
|
//获取参数
|
FieldSetEntity fse = null;
|
Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
|
if (bean != null) {
|
RequestParameterEntity reqp = (RequestParameterEntity) bean;
|
fse = reqp.getFormData();
|
}
|
//判断参数是否为空
|
if (fse == null) {
|
SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
|
return this.error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
|
}
|
return OK_List(viewTableService.getViewTableAll(fse));
|
} catch (BaseException e) {
|
SpringMVCContextHolder.getSystemLogger().error(e);
|
return this.error(e);
|
} catch(Exception e) {
|
e.printStackTrace();
|
SpringMVCContextHolder.getSystemLogger().error(e);
|
return this.error(SystemCode.SYSTEM_GET_TABLE_FAIL.getValue(),SystemCode.SYSTEM_GET_TABLE_FAIL.getText());
|
}
|
}
|
|
}
|