Browse Source

修改ureport报表构造器

syh 5 years ago
parent
commit
647c42e78f

+ 184 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UReportFileBindUserController.java

@@ -0,0 +1,184 @@
+package org.jeecg.modules.ctop.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.ctop.entity.UReportFileBindUser;
+import org.jeecg.modules.ctop.service.IUReportFileBindUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+import java.util.Map;
+
+/**
+ * 用户绑定报表信息
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-01-16
+ */
+@Slf4j
+@Api(tags = "用户绑定报表信息")
+@RestController
+@RequestMapping("/ctop/uReportFileBindUser")
+public class UReportFileBindUserController {
+    @Autowired
+    private IUReportFileBindUserService uReportFileBindUserService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param uReportFileBindUser
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "用户绑定报表信息-分页列表查询")
+    @ApiOperation(value = "用户绑定报表信息-分页列表查询", notes = "用户绑定报表信息-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<UReportFileBindUser>> queryPageList(UReportFileBindUser uReportFileBindUser,
+                                                            @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                            @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                            HttpServletRequest req) {
+        Result<IPage<UReportFileBindUser>> result = new Result<>();
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        uReportFileBindUser.setUserId(user.getId());
+        QueryWrapper<UReportFileBindUser> queryWrapper = QueryGenerator.initQueryWrapper(uReportFileBindUser, req.getParameterMap());
+        Page<UReportFileBindUser> page = new Page<>(pageNo, pageSize);
+        IPage<UReportFileBindUser> pageList = uReportFileBindUserService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+    /**
+     * 分页列表查询
+     *
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "用户绑定报表信息-分页列表查询")
+    @ApiOperation(value = "用户绑定报表信息-分页列表查询", notes = "用户绑定报表信息-分页列表查询")
+    @PostMapping(value = "/userList")
+    public Map<String, Object> queryPageList(@RequestBody JSONObject data,
+                                             HttpServletRequest req) {
+        return uReportFileBindUserService.getListByFileId(data);
+    }
+
+    /**
+     * 添加
+     *
+     * @param uReportFileBindUser
+     * @return
+     */
+    @AutoLog(value = "用户绑定报表信息-添加")
+    @ApiOperation(value = "用户绑定报表信息-添加", notes = "用户绑定报表信息-添加")
+    @PostMapping(value = "/add")
+    public Result<UReportFileBindUser> add(@RequestBody UReportFileBindUser uReportFileBindUser) {
+        Result<UReportFileBindUser> result = new Result<>();
+        try {
+            uReportFileBindUserService.save(uReportFileBindUser);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param uReportFileBindUser
+     * @return
+     */
+    @AutoLog(value = "用户绑定报表信息-编辑")
+    @ApiOperation(value = "用户绑定报表信息-编辑", notes = "用户绑定报表信息-编辑")
+    @PutMapping(value = "/edit")
+    public Result<UReportFileBindUser> edit(@RequestBody UReportFileBindUser uReportFileBindUser) {
+        Result<UReportFileBindUser> result = new Result<>();
+        UReportFileBindUser uReportFileBindUserEntity = uReportFileBindUserService.getById(uReportFileBindUser.getId());
+        if (uReportFileBindUserEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = uReportFileBindUserService.updateById(uReportFileBindUser);
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "用户绑定报表信息-通过id删除")
+    @ApiOperation(value = "用户绑定报表信息-通过id删除", notes = "用户绑定报表信息-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            uReportFileBindUserService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "用户绑定报表信息-批量删除")
+    @ApiOperation(value = "用户绑定报表信息-批量删除", notes = "用户绑定报表信息-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<UReportFileBindUser> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<UReportFileBindUser> result = new Result<>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.uReportFileBindUserService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "用户绑定报表信息-通过id查询")
+    @ApiOperation(value = "用户绑定报表信息-通过id查询", notes = "用户绑定报表信息-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<UReportFileBindUser> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<UReportFileBindUser> result = new Result<>();
+        UReportFileBindUser uReportFileBindUser = uReportFileBindUserService.getById(id);
+        if (uReportFileBindUser == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(uReportFileBindUser);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+}

+ 20 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UReportFileController.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.ctop.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -119,6 +120,25 @@ public class UReportFileController {
     }
 
     /**
+     * 绑定用户
+     *
+     * @return
+     */
+    @AutoLog(value = "报表文件绑定用户")
+    @ApiOperation(value = "报表文件绑定用户", notes = "报表文件绑定用户")
+    @PostMapping(value = "/bindUser")
+    public Map<String, Object> bindUser(@RequestBody JSONObject data) {
+        return uReportFileService.bindUsers(data);
+    }
+
+    @AutoLog(value = "报表文件解除绑定用户")
+    @ApiOperation(value = "报表文件解除绑定用户", notes = "报表文件解除绑定用户")
+    @PostMapping(value = "/unbindUser")
+    public Map<String, Object> unbindUser(@RequestBody JSONObject data) {
+        return uReportFileService.unbindUser(data);
+    }
+
+    /**
      * 通过id删除
      *
      * @param id
@@ -244,5 +264,4 @@ public class UReportFileController {
         }
         return Result.ok("文件导入失败!");
     }
-
 }

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/UReportFile.java

@@ -44,6 +44,7 @@ public class UReportFile {
     @Excel(name = "报表内容", width = 15)
     @ApiModelProperty(value = "报表内容")
     private String content;
+
     /**
      * 创建时间
      */
@@ -56,6 +57,5 @@ public class UReportFile {
     private Date updateTime;
 
     public UReportFile() {
-        this.updateTime = new Date();
     }
 }

+ 69 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/entity/UReportFileBindUser.java

@@ -0,0 +1,69 @@
+package org.jeecg.modules.ctop.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 用户绑定报表信息
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-01-16
+ */
+@Data
+@TableName("ureport_file_bind_user")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ureport_file_bind_user对象", description = "用户绑定报表信息")
+public class UReportFileBindUser {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * fileId
+     */
+    @Excel(name = "fileId", width = 15)
+    @ApiModelProperty(value = "fileId")
+    private String fileId;
+    /**
+     * userId
+     */
+    @Excel(name = "userId", width = 15)
+    @ApiModelProperty(value = "userId")
+    private String userId;
+    /**
+     * userName
+     */
+    @Excel(name = "userName", width = 15)
+    @ApiModelProperty(value = "userName")
+    private String userName;
+    /**
+     * fileName
+     */
+    @Excel(name = "fileName", width = 15)
+    @ApiModelProperty(value = "fileName")
+    private String fileName;
+    /**
+     * createTime
+     */
+    @ApiModelProperty(value = "createTime")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 15 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/UReportFileBindUserMapper.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.ctop.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.ctop.entity.UReportFileBindUser;
+
+/**
+ * 用户绑定报表信息
+ *
+ * @author: jeecg-boot
+ * @date: 2020-01-16
+ * @cersion: V1.0
+ */
+public interface UReportFileBindUserMapper extends BaseMapper<UReportFileBindUser> {
+
+}

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/UReportFileBindUserMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.ctop.mapper.UReportFileBindUserMapper">
+
+</mapper>

+ 23 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IUReportFileBindUserService.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.ctop.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.ctop.entity.UReportFileBindUser;
+
+import java.util.Map;
+
+/**
+ * 用户绑定报表信息
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-01-16
+ */
+public interface IUReportFileBindUserService extends IService<UReportFileBindUser> {
+
+    UReportFileBindUser getByUserIdAndFileId(String id, String fileId);
+
+    void deleteByUserIdAndFileId(String userId, String fileId);
+
+    Map<String, Object> getListByFileId(JSONObject data);
+}

+ 6 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IUReportFileService.java

@@ -1,9 +1,11 @@
 package org.jeecg.modules.ctop.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.ctop.entity.UReportFile;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 报表文件存储
@@ -49,4 +51,8 @@ public interface IUReportFileService extends IService<UReportFile> {
      * 更新报表
      */
     boolean updateReportFile(UReportFile entity);
+
+    Map<String, Object> bindUsers(JSONObject data);
+
+    Map<String, Object> unbindUser(JSONObject data);
 }

+ 60 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/UReportFileBindUserServiceImpl.java

@@ -0,0 +1,60 @@
+package org.jeecg.modules.ctop.service.impl;
+
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.ctop.entity.UReportFileBindUser;
+import org.jeecg.modules.ctop.mapper.UReportFileBindUserMapper;
+import org.jeecg.modules.ctop.service.IUReportFileBindUserService;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 用户绑定报表信息
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2020-01-16
+ */
+@Service
+public class UReportFileBindUserServiceImpl extends ServiceImpl<UReportFileBindUserMapper, UReportFileBindUser> implements IUReportFileBindUserService {
+
+    @Override
+    public UReportFileBindUser getByUserIdAndFileId(String userId, String fileId) {
+        QueryWrapper<UReportFileBindUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id", userId)
+                .eq("file_id", fileId)
+                .orderByDesc("id")
+                .last("limit 1");
+        return this.getOne(queryWrapper);
+    }
+
+    @Override
+    public void deleteByUserIdAndFileId(String userId, String fileId) {
+        QueryWrapper<UReportFileBindUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id", userId)
+                .eq("file_id", fileId);
+        this.remove(queryWrapper);
+    }
+
+    @Override
+    public Map<String, Object> getListByFileId(JSONObject data) {
+        Map<String, Object> result = new HashMap<>();
+        if (null == data || null == data.getString("fileId") || data.getString("fileId").equals("")) {
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        String fileId = data.getString("fileId");
+        QueryWrapper<UReportFileBindUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("file_id", fileId);
+        List<UReportFileBindUser> bindUsers = this.list(queryWrapper);
+        result.put("data", bindUsers);
+        ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS);
+        return result;
+    }
+}

+ 92 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/UReportFileServiceImpl.java

@@ -1,13 +1,24 @@
 package org.jeecg.modules.ctop.service.impl;
 
+import cn.com.ctop.common.module.utils.ResultMapUtils;
+import cn.com.ctop.common.module.utils.StatusCode;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jeecg.modules.ctop.entity.UReportFile;
+import org.jeecg.modules.ctop.entity.UReportFileBindUser;
 import org.jeecg.modules.ctop.mapper.UReportFileMapper;
+import org.jeecg.modules.ctop.service.IUReportFileBindUserService;
 import org.jeecg.modules.ctop.service.IUReportFileService;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 报表文件存储
@@ -34,6 +45,7 @@ public class UReportFileServiceImpl extends ServiceImpl<UReportFileMapper, URepo
 
     @Override
     public List<UReportFile> listAllReportFile() {
+
         return this.list();
     }
 
@@ -46,11 +58,91 @@ public class UReportFileServiceImpl extends ServiceImpl<UReportFileMapper, URepo
 
     @Override
     public boolean saveReportFile(UReportFile entity) {
+        entity.setUpdateTime(new Date());
         return this.save(entity);
     }
 
     @Override
     public boolean updateReportFile(UReportFile entity) {
+        entity.setUpdateTime(new Date());
         return this.updateById(entity);
     }
+
+    @Autowired
+    private IUReportFileBindUserService bindUserService;
+
+    @Override
+    public Map<String, Object> bindUsers(JSONObject data) {
+        Map<String, Object> result = new HashMap<>();
+        if (null == data) {
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        String fileId = data.getString("fileId");
+        String userIds = data.getString("userIds");
+        if (null == userIds || userIds.trim().equals("") || null == fileId || fileId.trim().equals("")) {
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        UReportFile file = getById(fileId);
+        if (file == null) {
+            result.put("message", "此报表模板不存在或者已经被删除");
+            result.put("success", false);
+            result.put("code", "-1");
+            return result;
+        }
+        String[] ids = userIds.split(",");
+        for (int i = 0; i < ids.length; i++) {
+            //用户绑定报表信息
+            UReportFileBindUser bindUser = bindUserService.getByUserIdAndFileId(ids[i], fileId);
+            if (null != bindUser) {
+                continue;
+            }
+            SysUser sysUser = sysUserService.getById(ids[i]);
+            bindUser = new UReportFileBindUser();
+            bindUser.setUserId(ids[i]);
+            bindUser.setUserName(sysUser.getRealname());
+            bindUser.setFileId(fileId);
+            bindUser.setFileName(file.getName());
+            bindUser.setCreateTime(new Date());
+            bindUser.setUpdateTime(new Date());
+            bindUserService.save(bindUser);
+        }
+        result.put("message", "报表模板绑定用户成功");
+        result.put("success", true);
+        result.put("code", "0");
+        return result;
+    }
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    @Override
+    public Map<String, Object> unbindUser(JSONObject data) {
+        Map<String, Object> result = new HashMap<>();
+        if (null == data) {
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        String userId = data.getString("userId");
+        String fileId = data.getString("fileId");
+        if (null == userId || userId.trim().equals("") || null == fileId || fileId.trim().equals("")) {
+            ResultMapUtils.setResultMap(result, StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        UReportFile file = getById(fileId);
+        if (file == null) {
+            result.put("message", "此报表模板不存在或者已经被删除");
+            result.put("success", false);
+            result.put("code", "-1");
+            return result;
+        }
+
+        //用户解除绑定
+        bindUserService.deleteByUserIdAndFileId(userId, fileId);
+        result.put("message", "用户解绑成功");
+        result.put("code", "0");
+        result.put("success", true);
+        return result;
+    }
 }

+ 1 - 0
jeecg-boot-module-system/src/main/resources/application-dev.yml

@@ -1,6 +1,7 @@
 
 server:
   port: 8080
+  ip: 39.106.184.70
   servlet:
     context-path: /jeecg-boot
     compression:

+ 1 - 0
jeecg-boot-module-system/src/main/resources/application-prod.yml

@@ -1,5 +1,6 @@
 server:
   port: 8080
+  ip: 39.97.120.42
   servlet:
     context-path: /jeecg-boot
     compression:

+ 2 - 0
module-common/src/main/java/cn/com/ctop/common/module/utils/CtopAdConstant.java

@@ -13,5 +13,7 @@ public class CtopAdConstant {
     public static final String BYTEDANCE_REPORT_TYPE_DAILY = "STAT_TIME_GRANULARITY_DAILY";
     public static final String BYTEDANCE_REPORT_TYPE_HOURLY = "STAT_TIME_GRANULARITY_HOURLY";
 
+    public static final String UREPORT_PREVIEW_URL_PREFIX = "/jeecg-boot/ureport/designer?_u=mysql:";
+
 
 }

+ 6 - 0
module-common/src/main/java/cn/com/ctop/common/module/utils/ResultMapUtils.java

@@ -16,4 +16,10 @@ public class ResultMapUtils {
         map.put(MAP_MESSAGE, StatusCode.getDesc(statusCode));
         map.put(MAP_SUCCESS, StatusCode.getFlag(statusCode));
     }
+
+    public static void setResultMap(Map<String, Object> map, StatusCode statusCode) {
+        map.put(MAP_CODE, statusCode.getCode());
+        map.put(MAP_MESSAGE, statusCode.getDesc());
+        map.put(MAP_SUCCESS, statusCode.getFlag());
+    }
 }