Jelajahi Sumber

自定义表单相关

zhouyy 2 bulan lalu
induk
melakukan
77913f5c09

+ 33 - 8
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/TableColumnController.java

@@ -3,11 +3,12 @@ package com.management.platform.controller;
 import com.management.platform.entity.BusReportStore;
 import com.management.platform.entity.CusReportForm;
 import com.management.platform.entity.bo.FormStorePageBO;
-import com.management.platform.entity.bo.PageBO;
 import com.management.platform.service.CusTableColumnService;
 import com.management.platform.util.HttpRespMsg;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
@@ -19,6 +20,30 @@ public class TableColumnController {
     @Resource
     private CusTableColumnService cusTableColumnService;
 
+    /**获取所有文件夹*/
+    @PostMapping("/getAllStoresTree")
+    public HttpRespMsg getAllStoresTree(HttpServletRequest request){
+        HttpRespMsg msg = new HttpRespMsg();
+        msg = cusTableColumnService.getAllStoresTree(request);
+        return msg;
+    }
+
+    @PostMapping("/moveFormStore")
+    public HttpRespMsg moveFormStore(@RequestParam(value = "formId")Integer formId
+            ,@RequestParam(value = "targetStoreId")Integer targetStoreId
+            ,HttpServletRequest request){
+        HttpRespMsg msg = new HttpRespMsg();
+        msg = cusTableColumnService.moveFormStore(formId,targetStoreId,request);
+        return msg;
+    }
+
+    @PostMapping("/getFormResByFormId")
+    public HttpRespMsg getFormResByFormId(@RequestParam(value = "formId")Integer formId,HttpServletRequest request){
+        HttpRespMsg msg = new HttpRespMsg();
+        msg = cusTableColumnService.getFormResByFormId(formId,request);
+        return msg;
+    }
+
 
     @PostMapping("/deleteReportForm")
     public HttpRespMsg deleteReportForm(@RequestParam(value = "formId")Integer formId,HttpServletRequest request){
@@ -29,7 +54,7 @@ public class TableColumnController {
 
     /**更新报表*/
     @PostMapping("/addOrUpdateReportForm")
-    public HttpRespMsg addOrUpdateReportForm(@Validated @RequestBody CusReportForm cusReportForm, HttpServletRequest request){
+    public HttpRespMsg addOrUpdateReportForm(CusReportForm cusReportForm, HttpServletRequest request){
         HttpRespMsg msg = new HttpRespMsg();
         msg = cusTableColumnService.addOrUpdateReportForm(cusReportForm,request);
         return msg;
@@ -44,15 +69,15 @@ public class TableColumnController {
 
 
     /**更新文件夹*/
-    @PostMapping("/addOrUpdateFormStore")
-    public HttpRespMsg addOrUpdateFormStore(@Validated @RequestBody BusReportStore busReportStore, HttpServletRequest request){
+    @RequestMapping("/addOrUpdateFormStore")
+    public HttpRespMsg addOrUpdateFormStore(BusReportStore busReportStore, HttpServletRequest request){
         HttpRespMsg msg = new HttpRespMsg();
         msg = cusTableColumnService.addOrUpdateFormStore(busReportStore,request);
         return msg;
     }
 
-    @PostMapping("getFormStorePage")
-    public HttpRespMsg getFormStorePage(@RequestBody @Validated PageBO<FormStorePageBO> queryBO,HttpServletRequest request){
+    @RequestMapping("getFormStorePage")
+    public HttpRespMsg getFormStorePage(FormStorePageBO queryBO,HttpServletRequest request){
         HttpRespMsg msg = new HttpRespMsg();
         msg = cusTableColumnService.getFormStorePage(queryBO,request);
         return msg;

+ 4 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/BusReportStore.java

@@ -11,6 +11,7 @@ import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -74,4 +75,7 @@ public class BusReportStore extends Model<BusReportStore> {
     /**所属公司id*/
     @TableField("company_id")
     private Integer companyId;
+
+    @TableField(exist = false)
+    private List<BusReportStore> childStoreList;
 }

+ 9 - 4
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/Company.java

@@ -1,15 +1,16 @@
 package com.management.platform.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
-import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
 /**
  * <p>
  * 
@@ -152,6 +153,10 @@ public class Company extends Model<Company> {
     @TableField("is_exist_business")
     private Integer isExistBusiness;
 
+    /**版本控制 1专业 2旗舰*/
+    @TableField("version_control")
+    private Integer versionControl;
+
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 10 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/CusReportForm.java

@@ -50,6 +50,16 @@ public class CusReportForm extends Model<CusReportForm> {
     @TableField("company_id")
     private Integer companyId;
 
+    @TableField("form_json")
+    private String formJson;
+
+    @TableField(exist = false)
+    private List<Integer> departmentIds;
+
+
+    @TableField(exist = false)
+    private List<String> userIds;
+
     @TableField(exist = false)
     private List<ReportFormAccess> deptAccessList;
 

+ 5 - 5
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/ReportFormAccess.java

@@ -23,18 +23,18 @@ public class ReportFormAccess extends Model<ReportFormAccess> {
     private Integer accessType;
 
     /**关联报表id*/
-    @TableField("relate_from_id")
+    @TableField("relate_form_id")
     private Integer relateFormId;
 
-    /**1人员 2部门*/
+    /**人员id*/
     @TableField("user_id")
-    private Integer userId;
+    private String userId;
 
-    /**1人员 2部门*/
+    /**部门id*/
     @TableField("department_id")
     private Integer departmentId;
 
-    /**1人员 2部门*/
+    /**公司id*/
     @TableField("company_id")
     private Integer companyId;
 

+ 3 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/bo/FormStorePageBO.java

@@ -11,4 +11,7 @@ public class FormStorePageBO {
     private String userId;
     private Integer departmentId;
     private Integer companyId;
+
+    private Integer pageIndex;
+    private Integer pageSize;
 }

+ 7 - 2
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/CusTableColumnService.java

@@ -5,7 +5,6 @@ import com.management.platform.entity.BusReportStore;
 import com.management.platform.entity.CusReportForm;
 import com.management.platform.entity.CusTableColumn;
 import com.management.platform.entity.bo.FormStorePageBO;
-import com.management.platform.entity.bo.PageBO;
 import com.management.platform.util.HttpRespMsg;
 
 import javax.servlet.http.HttpServletRequest;
@@ -19,7 +18,7 @@ public interface CusTableColumnService extends IService<CusTableColumn> {
 
     HttpRespMsg getRelateBusTableByFromTable(String tableName, HttpServletRequest request);
 
-    HttpRespMsg getFormStorePage(PageBO<FormStorePageBO> queryBO,HttpServletRequest request);
+    HttpRespMsg getFormStorePage(FormStorePageBO queryBO,HttpServletRequest request);
 
     HttpRespMsg addOrUpdateFormStore(BusReportStore busReportStore, HttpServletRequest request);
 
@@ -28,4 +27,10 @@ public interface CusTableColumnService extends IService<CusTableColumn> {
     HttpRespMsg deleteFormStore(Integer storeId,HttpServletRequest request);
 
     HttpRespMsg deleteReportForm(Integer formId, HttpServletRequest request);
+
+    HttpRespMsg getFormResByFormId(Integer formId, HttpServletRequest request);
+
+    HttpRespMsg moveFormStore(Integer formId,Integer targetStoreId, HttpServletRequest request);
+
+    HttpRespMsg getAllStoresTree(HttpServletRequest request);
 }

+ 264 - 64
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/CusTableColumnServiceImpl.java

@@ -6,19 +6,25 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.entity.*;
 import com.management.platform.entity.bo.FormStorePageBO;
-import com.management.platform.entity.bo.PageBO;
 import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.mapper.*;
 import com.management.platform.service.CusTableColumnService;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import javax.sql.DataSource;
+import java.sql.*;
+import java.util.Date;
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 @Service
@@ -51,6 +57,28 @@ public class CusTableColumnServiceImpl extends ServiceImpl<CusTableColumnMapper,
     @Resource
     private SysRoleFunctionMapper sysRoleFunctionMapper;
 
+    @Resource
+    private CompanyMapper companyMapper;
+
+    @Autowired
+    private DataSource dataSource;
+
+    public static final String REGEX_MAIN_TABLE = "(?i)\\bFROM\\b\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s+(?:AS\\s+)?([a-zA-Z_][a-zA-Z0-9_]*)";
+
+    public static final Pattern MAIN_TABLE_PATTERN = Pattern.compile(REGEX_MAIN_TABLE);
+
+    public static final String REGEX_DELETE_SIGN = "(?i)\\bdelete\\b";
+
+    public static final Pattern DELETE_SGIN_PATTERN = Pattern.compile(REGEX_DELETE_SIGN);
+
+    public static final String REGEX_UPDATE_SIGN = "(?i)\\bupdate\\b";
+
+    public static final Pattern UPDATE_SIGN_PATTERN = Pattern.compile(REGEX_UPDATE_SIGN);
+
+    public static final String REGEX_INSERT_SIGN = "(?i)\\binsert\\b";
+
+    public static final Pattern INSERT_SIGN_PATTERN = Pattern.compile(REGEX_INSERT_SIGN);
+
     @Override
     public HttpRespMsg getStructByTableName(String tableName, HttpServletRequest request) {
         HttpRespMsg msg = new HttpRespMsg();
@@ -105,17 +133,16 @@ public class CusTableColumnServiceImpl extends ServiceImpl<CusTableColumnMapper,
     }
 
     @Override
-    public HttpRespMsg getFormStorePage(PageBO<FormStorePageBO> queryBO,HttpServletRequest request) {
+    public HttpRespMsg getFormStorePage(FormStorePageBO queryBO,HttpServletRequest request) {
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
         IPage<BusReportStore> page =new Page<>();
         page.setCurrent(queryBO.getPageIndex());
         page.setSize(queryBO.getPageSize());
-        FormStorePageBO pageQueryBO = queryBO.getData();
-        pageQueryBO.setUserId(user.getId());
-        pageQueryBO.setDepartmentId(user.getDepartmentId());
-        pageQueryBO.setCompanyId(user.getCompanyId());
-        page = busReportStoreMapper.getPrivilegedFormStore(page,queryBO.getData());
+        queryBO.setUserId(user.getId());
+        queryBO.setDepartmentId(user.getDepartmentId());
+        queryBO.setCompanyId(user.getCompanyId());
+        page = busReportStoreMapper.getPrivilegedFormStore(page,queryBO);
         List<BusReportStore> records = page.getRecords();
         if(CollectionUtils.isNotEmpty(records)){
             List<Integer> formIds = records.stream().filter(t -> null != t.getRelateFormId()).map(BusReportStore::getRelateFormId)
@@ -157,6 +184,13 @@ public class CusTableColumnServiceImpl extends ServiceImpl<CusTableColumnMapper,
         }
 
         if(null == busReportStore.getId()){
+            BusReportStore lastStore = busReportStoreMapper.selectOne(new LambdaQueryWrapper<BusReportStore>()
+                    .eq(BusReportStore::getCompanyId, user.getCompanyId())
+                    .eq(BusReportStore::getParentStoreId, busReportStore.getParentStoreId())
+                    .orderByDesc(BusReportStore::getOrderItem)
+                    .last(" limit 1")
+            );
+            busReportStore.setOrderItem(lastStore.getOrderItem()+1);
             busReportStore.setCreateBy(user.getId());
             busReportStore.setCompanyId(user.getCompanyId());
             busReportStoreMapper.insert(busReportStore);
@@ -171,88 +205,137 @@ public class CusTableColumnServiceImpl extends ServiceImpl<CusTableColumnMapper,
     }
 
     @Override
+    @Transactional
     public HttpRespMsg addOrUpdateReportForm(CusReportForm cusReportForm, HttpServletRequest request) {
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
-        if(null == cusReportForm.getId()){
-            BusReportStore busReportStore = new BusReportStore();
-            busReportStore.setStoreName(cusReportForm.getReportFormName());
-            busReportStore.setCreateBy(user.getId());
-            busReportStore.setStoreType(2);
-            busReportStore.setOrderItem(cusReportForm.getOrderItem());
-            busReportStore.setParentStoreId(cusReportForm.getParentStoreId());
-            busReportStore.setDescription(cusReportForm.getDescription());
-            busReportStore.setCompanyId(user.getCompanyId());
-            busReportStoreMapper.insert(busReportStore);
-
-            cusReportForm.setCreateBy(user.getId());
-            cusReportForm.setCompanyId(user.getCompanyId());
-            cusReportFormMapper.insert(cusReportForm);
-
-            List<ReportFormAccess> toAddList = new ArrayList<>();
-            List<ReportFormAccess> deptAccessList = cusReportForm.getDeptAccessList();
-            if(CollectionUtils.isNotEmpty(deptAccessList)){
-                for (ReportFormAccess reportFormAccess : deptAccessList) {
-                    reportFormAccess.setRelateFormId(cusReportForm.getId());
-                    reportFormAccess.setCompanyId(user.getCompanyId());
-                    reportFormAccess.setAccessType(2);
-                    toAddList.add(reportFormAccess);
-                }
-            }
-
-            List<ReportFormAccess> userAccessList = cusReportForm.getUserAccessList();
-            if(CollectionUtils.isNotEmpty(userAccessList)){
-                for (ReportFormAccess reportFormAccess : userAccessList) {
-                    reportFormAccess.setRelateFormId(cusReportForm.getId());
-                    reportFormAccess.setCompanyId(user.getCompanyId());
-                    reportFormAccess.setAccessType(1);
-                    toAddList.add(reportFormAccess);
+        Matcher deleteMatcher = DELETE_SGIN_PATTERN.matcher(cusReportForm.getExecuteSql());
+        Matcher updateMatcher = UPDATE_SIGN_PATTERN.matcher(cusReportForm.getExecuteSql());
+        Matcher insertMatcher = INSERT_SIGN_PATTERN.matcher(cusReportForm.getExecuteSql());
+        if (deleteMatcher.find() || updateMatcher.find() || insertMatcher.find()) {
+            msg.setError("包含非法字符,无法存储");
+            return msg;
+        }
+        Matcher mainMatcher = MAIN_TABLE_PATTERN.matcher(cusReportForm.getExecuteSql());
+        String tableName = "";
+        String tableAlias = "";
+        if (mainMatcher.find()) {
+            tableName= mainMatcher.group(1);
+            tableAlias = mainMatcher.group(2);
+        } else {
+            msg.setError("主业务表无法识别公司,请联系管理员");
+            return msg;
+        }
+        if(StringUtils.isNotBlank(tableAlias) && StringUtils.isNotBlank(tableName)){
+            String s = cusReportForm.getExecuteSql()+" and "+tableAlias+".company_id="+user.getCompanyId()+" ";
+            cusReportForm.setExecuteSql(s);
+            if(null == cusReportForm.getId()){
+
+                Company company = companyMapper.selectById(user.getId());
+                if(1 == company.getVersionControl()){
+                    Integer count = busReportStoreMapper.selectCount(new LambdaQueryWrapper<BusReportStore>()
+                            .eq(BusReportStore::getCompanyId, user.getCompanyId())
+                    );
+                    if(count >= 5){
+                        msg.setError("专业版最多可创建5张报表,请升级到旗舰版");
+                        return msg;
+                    }
                 }
-            }
-            reportFormAccessMapper.batchInsert(toAddList);
 
-        }else{
-            BusReportStore busReportStore = busReportStoreMapper.selectOne(new LambdaQueryWrapper<BusReportStore>()
-                    .eq(BusReportStore::getRelateFormId, cusReportForm.getId())
-            );
-            if(null != busReportStore){
+                BusReportStore lastStore = busReportStoreMapper.selectOne(new LambdaQueryWrapper<BusReportStore>()
+                        .eq(BusReportStore::getCompanyId, user.getCompanyId())
+                        .eq(BusReportStore::getParentStoreId, cusReportForm.getParentStoreId())
+                        .orderByDesc(BusReportStore::getOrderItem)
+                        .last(" limit 1")
+                );
+                BusReportStore busReportStore = new BusReportStore();
                 busReportStore.setStoreName(cusReportForm.getReportFormName());
-                busReportStore.setUpdateBy(user.getId());
-                busReportStore.setUpdateTime(new Date());
-                busReportStore.setOrderItem(cusReportForm.getOrderItem());
+                busReportStore.setCreateBy(user.getId());
+                busReportStore.setStoreType(2);
                 busReportStore.setParentStoreId(cusReportForm.getParentStoreId());
                 busReportStore.setDescription(cusReportForm.getDescription());
-                busReportStoreMapper.updateById(busReportStore);
+                busReportStore.setCompanyId(user.getCompanyId());
+                if(null == lastStore){
+                    busReportStore.setOrderItem(1);
+                }else{
+                    busReportStore.setOrderItem(lastStore.getOrderItem()+1);
+                }
+                busReportStoreMapper.insert(busReportStore);
 
-                cusReportFormMapper.updateById(cusReportForm);
+                cusReportForm.setCreateBy(user.getId());
+                cusReportForm.setCompanyId(user.getCompanyId());
+                cusReportFormMapper.insert(cusReportForm);
 
                 List<ReportFormAccess> toAddList = new ArrayList<>();
-                List<ReportFormAccess> deptAccessList = cusReportForm.getDeptAccessList();
-                if(CollectionUtils.isNotEmpty(deptAccessList)){
-                    for (ReportFormAccess reportFormAccess : deptAccessList) {
+//            List<ReportFormAccess> deptAccessList = cusReportForm.getDeptAccessList();
+                List<Integer> departmentIds = cusReportForm.getDepartmentIds();
+                if(CollectionUtils.isNotEmpty(departmentIds)){
+                    for (Integer deptId: departmentIds) {
+                        ReportFormAccess reportFormAccess = new ReportFormAccess();
                         reportFormAccess.setRelateFormId(cusReportForm.getId());
                         reportFormAccess.setCompanyId(user.getCompanyId());
                         reportFormAccess.setAccessType(2);
+                        reportFormAccess.setDepartmentId(deptId);
                         toAddList.add(reportFormAccess);
                     }
                 }
 
-                List<ReportFormAccess> userAccessList = cusReportForm.getUserAccessList();
-                if(CollectionUtils.isNotEmpty(userAccessList)){
-                    for (ReportFormAccess reportFormAccess : userAccessList) {
+//            List<ReportFormAccess> userAccessList = cusReportForm.getUserAccessList();
+                List<String> userIds = cusReportForm.getUserIds();
+                if(CollectionUtils.isNotEmpty(userIds)){
+                    for (String userId: userIds) {
+                        ReportFormAccess reportFormAccess = new ReportFormAccess();
                         reportFormAccess.setRelateFormId(cusReportForm.getId());
                         reportFormAccess.setCompanyId(user.getCompanyId());
                         reportFormAccess.setAccessType(1);
+                        reportFormAccess.setUserId(userId);
                         toAddList.add(reportFormAccess);
                     }
                 }
-                reportFormAccessMapper.delete(new LambdaQueryWrapper<ReportFormAccess>()
-                        .eq(ReportFormAccess::getRelateFormId, cusReportForm.getId())
-                );
                 reportFormAccessMapper.batchInsert(toAddList);
 
             }else{
-                msg.setError("未找到对应报表");
+                BusReportStore busReportStore = busReportStoreMapper.selectOne(new LambdaQueryWrapper<BusReportStore>()
+                        .eq(BusReportStore::getRelateFormId, cusReportForm.getId())
+                );
+                if(null != busReportStore){
+                    busReportStore.setStoreName(cusReportForm.getReportFormName());
+                    busReportStore.setUpdateBy(user.getId());
+                    busReportStore.setUpdateTime(new Date());
+                    busReportStore.setParentStoreId(cusReportForm.getParentStoreId());
+                    busReportStore.setDescription(cusReportForm.getDescription());
+                    busReportStoreMapper.updateById(busReportStore);
+
+                    cusReportFormMapper.updateById(cusReportForm);
+
+                    List<ReportFormAccess> toAddList = new ArrayList<>();
+                    List<ReportFormAccess> deptAccessList = cusReportForm.getDeptAccessList();
+                    if(CollectionUtils.isNotEmpty(deptAccessList)){
+                        for (ReportFormAccess reportFormAccess : deptAccessList) {
+                            reportFormAccess.setRelateFormId(cusReportForm.getId());
+                            reportFormAccess.setCompanyId(user.getCompanyId());
+                            reportFormAccess.setAccessType(2);
+                            toAddList.add(reportFormAccess);
+                        }
+                    }
+
+                    List<ReportFormAccess> userAccessList = cusReportForm.getUserAccessList();
+                    if(CollectionUtils.isNotEmpty(userAccessList)){
+                        for (ReportFormAccess reportFormAccess : userAccessList) {
+                            reportFormAccess.setRelateFormId(cusReportForm.getId());
+                            reportFormAccess.setCompanyId(user.getCompanyId());
+                            reportFormAccess.setAccessType(1);
+                            toAddList.add(reportFormAccess);
+                        }
+                    }
+                    reportFormAccessMapper.delete(new LambdaQueryWrapper<ReportFormAccess>()
+                            .eq(ReportFormAccess::getRelateFormId, cusReportForm.getId())
+                    );
+                    reportFormAccessMapper.batchInsert(toAddList);
+
+                }else{
+                    msg.setError("未找到对应报表");
+                }
             }
         }
         return msg;
@@ -269,7 +352,7 @@ public class CusTableColumnServiceImpl extends ServiceImpl<CusTableColumnMapper,
             return msg;
         }
         BusReportStore busReportStore = busReportStoreMapper.selectById(storeId);
-        if(busReportStore.getCreateBy() != user.getId()){
+        if(!busReportStore.getCreateBy().equals(user.getId())){
             msg.setError("非创建人无法删除");
             return msg;
         }
@@ -288,7 +371,7 @@ public class CusTableColumnServiceImpl extends ServiceImpl<CusTableColumnMapper,
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
         CusReportForm cusReportForm = cusReportFormMapper.selectById(formId);
-        if(cusReportForm.getCreateBy() != user.getId()){
+        if(!cusReportForm.getCreateBy().equals(user.getId())){
             msg.setError("非创建人不能删除");
         }
         cusReportFormMapper.deleteById(formId);
@@ -298,4 +381,121 @@ public class CusTableColumnServiceImpl extends ServiceImpl<CusTableColumnMapper,
         );
         return msg;
     }
+
+    @Override
+    public HttpRespMsg getFormResByFormId(Integer formId, HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        List<Map<String,Object>> columnList = new ArrayList<>();
+        CusReportForm cusReportForm = cusReportFormMapper.selectById(formId);
+        if(null == cusReportForm){
+            msg.setError("未找到该报表,请联系管理员");
+            return msg;
+        }
+        String tableColumnSql = cusReportForm.getExecuteSql();
+        try (Connection connection = dataSource.getConnection()) {
+            PreparedStatement preparedStatement = connection.prepareStatement(tableColumnSql);
+            ResultSet resultSet = preparedStatement.executeQuery();
+            columnList = this.convertList(resultSet);
+        }catch (SQLException e) {
+            e.printStackTrace();
+            msg.setError("SQL语句有误,请联系管理员");
+            return msg;
+        }
+        msg.setData(columnList);
+        return msg;
+    }
+
+    /**移动报表到文件夹*/
+    @Override
+    public HttpRespMsg moveFormStore(Integer formId,Integer targetStoreId, HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
+        BusReportStore busReportStore = busReportStoreMapper.selectOne(new LambdaQueryWrapper<BusReportStore>()
+                .eq(BusReportStore::getCompanyId, user.getCompanyId())
+                .eq(BusReportStore::getRelateFormId, formId)
+        );
+
+        BusReportStore lastOneStore = busReportStoreMapper.selectOne(new LambdaQueryWrapper<BusReportStore>()
+                .eq(BusReportStore::getCompanyId, user.getCompanyId())
+                .eq(BusReportStore::getParentStoreId, busReportStore.getParentStoreId())
+                .orderByDesc(BusReportStore::getOrderItem)
+                .last(" limit 1 ")
+        );
+        if(null == lastOneStore){
+            busReportStore.setParentStoreId(targetStoreId);
+            busReportStore.setOrderItem(1);
+            busReportStore.setUpdateBy(user.getId());
+            busReportStore.setUpdateTime(new Date());
+        }else{
+            busReportStore.setParentStoreId(targetStoreId);
+            busReportStore.setOrderItem(lastOneStore.getOrderItem()+1);
+            busReportStore.setUpdateBy(user.getId());
+            busReportStore.setUpdateTime(new Date());
+        }
+
+        busReportStoreMapper.updateById(busReportStore);
+
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg getAllStoresTree(HttpServletRequest request) {
+        HttpRespMsg msg = new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
+        List<BusReportStore> busReportStores = busReportStoreMapper.selectList(new LambdaQueryWrapper<BusReportStore>()
+                .eq(BusReportStore::getCompanyId, user.getCompanyId())
+        );
+        List<BusReportStore> listTree = this.listToTree(busReportStores);
+        msg.setData(listTree);
+        return msg;
+    }
+
+    private List<BusReportStore> listToTree(List<BusReportStore> treeNodeList){
+        if(null == treeNodeList){
+            return null;
+        }
+        List<BusReportStore> resList = new ArrayList<>();
+        Stack<BusReportStore> stack = new Stack<>();
+        resList = treeNodeList.stream().filter(ele -> 0 == ele.getParentStoreId()).collect(Collectors.toList());
+        stack.addAll(resList);
+
+        while(!stack.isEmpty()) {
+            BusReportStore store = stack.pop();
+            List<BusReportStore> child = treeNodeList.stream()
+                    .filter(ele -> store.getId().equals(ele.getParentStoreId())).collect(Collectors.toList());
+            if(!child.isEmpty()) {
+                store.setChildStoreList(child);
+            }
+            if(!child.isEmpty()) {
+                stack.addAll(child);
+            }
+        }
+        return resList;
+    }
+
+    public static List<Map<String, Object>> convertList(ResultSet rs) {
+        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
+        try {
+            ResultSetMetaData md = rs.getMetaData();
+            int columnCount = md.getColumnCount();
+            while (rs.next()) {
+                Map<String, Object> rowData = new HashMap<String, Object>();
+                for (int i = 1; i <= columnCount; i++) {
+                    rowData.put(md.getColumnName(i), rs.getObject(i));
+                }
+                list.add(rowData);
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (rs != null)
+                    rs.close();
+                rs = null;
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+        return list;
+    }
 }

+ 4 - 4
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/BusReportStoreMapper.xml

@@ -6,7 +6,7 @@
     <select id="getPrivilegedFormStore" resultType="com.management.platform.entity.BusReportStore">
         select  brs.id,brs.store_type,brs.store_name,brs.parent_store_id,brs.create_by,brs.create_time
              ,brs.update_by,brs.update_time,brs.description
-             ,brs.order_item,brs.relate_from_id,brs.company_id,u1.name as createName,u2.name as updateName
+             ,brs.order_item,brs.relate_form_id,brs.company_id,u1.name as createName,u2.name as updateName
         from bus_report_store brs
         left join user u1 on brs.create_by = u1.id
         left join user u2 on brs.update_by = u2.id
@@ -15,14 +15,14 @@
         select tmp.*,u1.name as createName,u2.name as updateName from (
                         select  brs.id,brs.store_type,brs.store_name,brs.parent_store_id,brs.create_by,brs.create_time
                              ,brs.update_by,brs.update_time,brs.description
-                             ,brs.order_item,brs.relate_from_id,brs.company_id
+                             ,brs.order_item,brs.relate_form_id,brs.company_id
                         from bus_report_store brs
-                                 left join cus_report_form crf on brs.relate_from_id = crf.id
+                                 left join cus_report_form crf on brs.relate_form_id = crf.id
                         where store_type = 2 and brs.company_id = #{queryBO.companyId} and brs.parent_store_id = #{queryBO.parentStoreId}
                           and (
                             crf.privilege = 1 or (crf.privilege = 2 and
                                                   exists(
-                                                      select 1 from report_from_access rfa where brs.relate_from_id = rfa.relate_from_id
+                                                      select 1 from report_from_access rfa where brs.relate_form_id = rfa.relate_form_id
                                                        and (rfa.user_id = #{queryBO.userId} or rfa.department_id = #{queryBO.departmentId} )
                                                   )
                                 )

+ 6 - 6
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/ReportFormAccessMapper.xml

@@ -3,32 +3,32 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.management.platform.mapper.ReportFormAccessMapper">
     <insert id="batchInsert">
-        insert into report_from_access (relate_from_id, access_type, user_id, department_id, company_id) VALUES
+        insert into report_from_access (relate_form_id, access_type, user_id, department_id, company_id) VALUES
         <foreach collection="toAddList" item="toAddItem" separator=",">
-            (#{toAddItem.accessType},#{toAddItem.relateFormId},#{toAddItem.userId}
+            (#{toAddItem.relateFormId},#{toAddItem.accessType},#{toAddItem.userId}
             ,#{toAddItem.departmentId},#{toAddItem.companyId})
         </foreach>
     </insert>
 
     <select id="getAccessesByFormIds" resultType="com.management.platform.entity.ReportFormAccess">
         select rfa.id,rfa.company_id,rfa.user_id
-             ,rfa.department_id,rfa.relate_from_id,rfa.access_type
+             ,rfa.department_id,rfa.relate_form_id,rfa.access_type
              ,u.name as finalName
         from report_from_access rfa
                  left join user u on rfa.user_id = u.id
         where rfa.company_id = #{companyId} and rfa.access_type = 1
-          and rfa.relate_from_id in
+          and rfa.relate_form_id in
         <foreach collection="formIds" item="formId" open="(" close=")"  separator=",">
             #{formId}
         </foreach>
         union
         select rfa.id,rfa.company_id,rfa.user_id
-             ,rfa.department_id,rfa.relate_from_id,rfa.access_type
+             ,rfa.department_id,rfa.relate_form_id,rfa.access_type
              ,d.department_name  as finalName
         from report_from_access rfa
                  left join department d on rfa.department_id = d.department_id
         where rfa.company_id = #{companyId}  and rfa.access_type = 2
-          and rfa.relate_from_id in
+          and rfa.relate_form_id in
         <foreach collection="formIds" item="formId" open="(" close=")"  separator=",">
             #{formId}
         </foreach>