kimi
2020-03-24 b5636e416a2fe029f96aec6ddfd3489394925b15
add 数据权限
16个文件已修改
13个文件已添加
889 ■■■■■ 已修改文件
src/main/java/com/highdatas/mdm/controller/MaintainFieldController.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/controller/MasterAuthorController.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/controller/MasterAuthorDetailController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/controller/MasterDataController.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/entity/MasterAuthor.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/entity/MasterAuthorDetail.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/mapper/MasterAuthorDetailMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/mapper/MasterAuthorMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/mapper/TableInfoMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/mapper/xml/MasterAuthorDetailMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/mapper/xml/MasterAuthorMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/pojo/MasterAuthorType.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/service/IMasterAuthorDetailService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/service/IMasterAuthorService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/service/ISysFieldService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/service/MasterDataService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/service/act/impl/IdentityServiceImpl.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/service/impl/MasterAuthorDetailServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/service/impl/MasterAuthorServiceImpl.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/service/impl/SysFieldServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/util/Constant.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/util/DbUtils.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/util/MpGenerator.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-pro.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-prod.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapping/TableInfoMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/highdatas/mdm/controller/MaintainFieldController.java
@@ -1,10 +1,25 @@
package com.highdatas.mdm.controller;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.highdatas.mdm.entity.Maintain;
import com.highdatas.mdm.entity.MaintainField;
import com.highdatas.mdm.entity.SysField;
import com.highdatas.mdm.mapper.TableInfoMapper;
import com.highdatas.mdm.pojo.Result;
import com.highdatas.mdm.service.IMaintainFieldService;
import com.highdatas.mdm.service.IMaintainService;
import com.highdatas.mdm.service.ISysFieldService;
import com.highdatas.mdm.util.Constant;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
/**
 * <p>
@@ -17,5 +32,53 @@
@RestController
@RequestMapping("/maintainField")
public class MaintainFieldController {
    @Autowired
    IMaintainService maintainService;
    @Autowired
    IMaintainFieldService maintainFieldService;
    @Autowired
    ISysFieldService fieldService;
    @Autowired
    TableInfoMapper tableInfoMapper;
    @RequestMapping(value = "/getMaintainList/{tableName}", method = RequestMethod.GET)
    public Result deleteModel(@PathVariable String tableName)  {
        List<MaintainField> maintainFieldList = maintainFieldService.selectList(new EntityWrapper<MaintainField>().eq("table_name", tableName).orderBy("order_no"));
        int preOrderNo = -1;
        HashMap<String, List<Maintain>> resultMap = new HashMap<>();
        if (maintainFieldList.size() == 0) {
            List<Maintain> maintainList = maintainService.selectList(new EntityWrapper<Maintain>().orderBy("order_no"));
            resultMap.put(Constant.Default, maintainList);
            return Result.success(resultMap);
        }
        for (MaintainField maintainField : maintainFieldList) {
            String maintainId = maintainField.getMaintainId();
            if (StringUtils.isEmpty(maintainId)) {
                continue;
            }
            Maintain maintain = maintainService.selectById(maintainId);
            if (maintain == null) {
                continue;
            }
            Integer orderNo = maintain.getOrderNo();
            List<Maintain> maintainList = maintainService.selectList(new EntityWrapper<Maintain>().ge("order_no", preOrderNo).le("order_no", orderNo));
            resultMap.put(maintainField.getId(), maintainList);
            preOrderNo = orderNo;
        }
        return Result.success(resultMap);
    }
    @RequestMapping(value = "/getFieldByMaintainFieldId/{id}", method = RequestMethod.GET)
    public Result getFieldByMaintainFieldId(@PathVariable String id)  {
        List<SysField> result;
        if (Constant.Default.equalsIgnoreCase(id)) {
            result = fieldService.getFieldByMaintainField(null);
        }
        if (Constant.All.equalsIgnoreCase(id)) {
        }
        result = fieldService.getFieldByMaintainField(id);
        return null;
    }
}
src/main/java/com/highdatas/mdm/controller/MasterAuthorController.java
New file
@@ -0,0 +1,134 @@
package com.highdatas.mdm.controller;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.highdatas.mdm.entity.MasterAuthor;
import com.highdatas.mdm.entity.MasterAuthorDetail;
import com.highdatas.mdm.entity.TUser;
import com.highdatas.mdm.entity.TUserRole;
import com.highdatas.mdm.pojo.CodeMsg;
import com.highdatas.mdm.pojo.MasterAuthorType;
import com.highdatas.mdm.pojo.Result;
import com.highdatas.mdm.service.IMasterAuthorDetailService;
import com.highdatas.mdm.service.IMasterAuthorService;
import com.highdatas.mdm.service.ITUserRoleService;
import com.highdatas.mdm.util.Constant;
import com.highdatas.mdm.util.DbUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author kimi
 * @since 2020-03-23
 */
@RestController
@RequestMapping("/masterAuthor")
public class MasterAuthorController {
    @Autowired
    IMasterAuthorService authorService;
    @Autowired
    IMasterAuthorDetailService authorDetailService;
    @Autowired
    ITUserRoleService userRoleService;
    public static final String masterAuthorType = "masterAuthorType";
    public static final String masterId = "masterId";
    public static final String characterId = "characterId";
    public static final String fields = "fields";
    private String maintainFieldId = "maintainFieldId";
    @RequestMapping(value = "/addOrUpdate", method = RequestMethod.POST)
    public Result deleteModel(@RequestBody MasterAuthor masterAuthor)  {
        if (!StringUtils.isEmpty(masterAuthor.getId())) {
            masterAuthor.setUpdateTime(new Date());
        }else {
            masterAuthor.setId(DbUtils.getUUID()).setCreateTime(new Date());
        }
        //delete pre
        boolean delete = authorDetailService.delete(new EntityWrapper<MasterAuthorDetail>().eq(Constant.PARENT_ID, masterAuthor.getId()));
        if (!delete){
            return Result.error(CodeMsg.DELETE_ERROR);
        }
        for (MasterAuthorDetail detail : masterAuthor.getFields()) {
            detail.setId(DbUtils.getUUID()).setParentId(masterAuthor.getId()).insert();
        }
        boolean b = masterAuthor.insertOrUpdate();
        if (b) {
            return Result.success(masterAuthor);
        }else {
            return Result.error(CodeMsg.UPDATE_ERROR);
        }
    }
    @RequestMapping(value = "/get/{characterId}", method = RequestMethod.GET)
    public Result get(@PathVariable String characterId, @RequestParam MasterAuthorType type, HttpServletRequest request){
        List<MasterAuthor> masterAuthorList = authorService.selectList(new EntityWrapper<MasterAuthor>().eq("type", type.name()).eq("character_id", characterId));
        if (type.equals(MasterAuthorType.role) && masterAuthorList.isEmpty()) {
            return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
        }else if (type.equals(MasterAuthorType.user) && masterAuthorList.isEmpty()){
            //user 获取角色 多脚色混合
            TUser user = DbUtils.getUser(request);
            String userId = user.getUserId();
            List<TUserRole> tUserRoles = userRoleService.selectList(new EntityWrapper<TUserRole>().eq(Constant.USERID, userId));
            List<String> roleIdList = tUserRoles.stream().map(tUserRole -> tUserRole.getRoleId()).collect(Collectors.toList());
            return authorService.merageRoleAuthor(roleIdList);
        }
        for (MasterAuthor masterAuthor : masterAuthorList) {
            List<MasterAuthorDetail> masterAuthorDetails = authorDetailService
                    .selectList(new EntityWrapper<MasterAuthorDetail>()
                            .eq(Constant.PARENT_ID, masterAuthor.getId()));
            masterAuthor.setFields(masterAuthorDetails);
        }
        return Result.success(masterAuthorList);
    }
    @RequestMapping(value = "/delete/{characterId}", method = RequestMethod.GET)
    public Result delete(@PathVariable String characterId, @RequestParam MasterAuthorType type){
        List<MasterAuthor> masterAuthorList = authorService.selectList(new EntityWrapper<MasterAuthor>()
                .eq(Constant.TYPE, type).eq(this.characterId, characterId));
        if (masterAuthorList.isEmpty()) {
            return Result.success(null);
        }
        boolean delete = false;
        for (MasterAuthor masterAuthor : masterAuthorList) {
            delete = authorDetailService.delete(new EntityWrapper<MasterAuthorDetail>().eq(Constant.PARENT_ID, masterAuthor.getId()));
            if (delete) {
                delete = masterAuthor.deleteById();
            }
        }
        if (delete) {
            return Result.success(CodeMsg.DELETE_SUCCESS);
        }else  {
            return Result.error(CodeMsg.DELETE_ERROR);
        }
    }
    @RequestMapping(value = "/addRole/{roleId}", method = RequestMethod.GET)
    public Result addRole(@PathVariable String roleId, HttpServletRequest request){
        TUser user = DbUtils.getUser(request);
        String userId = user.getUserId();
        List<TUserRole> tUserRoles = userRoleService.selectList(new EntityWrapper<TUserRole>().eq(Constant.USERID, userId));
        List<String> roleIdList = tUserRoles.stream().map(tUserRole -> tUserRole.getRoleId()).collect(Collectors.toList());
        roleIdList.add(roleId);
        return authorService.merageRoleAuthor(roleIdList);
    }
}
src/main/java/com/highdatas/mdm/controller/MasterAuthorDetailController.java
New file
@@ -0,0 +1,19 @@
package com.highdatas.mdm.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author kimi
 * @since 2020-03-23
 */
@RestController
@RequestMapping("/masterAuthor/detail")
public class MasterAuthorDetailController {
}
src/main/java/com/highdatas/mdm/controller/MasterDataController.java
@@ -13,7 +13,6 @@
import com.highdatas.mdm.util.Constant;
import com.highdatas.mdm.util.DbUtils;
import org.apache.commons.lang3.StringUtils;
import org.pentaho.reporting.libraries.formula.function.text.StringCountFunction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -21,7 +20,9 @@
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.text.MessageFormat;
import java.util.*;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
@@ -99,7 +100,11 @@
            version = String.valueOf(nowVersion.getVersion());
        }else if(version.equalsIgnoreCase(Constant.MAX)){
            findMax = true;
            version = String.valueOf(maintainService.getMaxVersion(tableName).getVersion());
            Maintain maxVersion = maintainService.getMaxVersion(tableName);
            if (maxVersion == null)  {
                return Result.success(null);
            }
            version = String.valueOf(maxVersion.getVersion());
        }
        if (StringUtils.isEmpty(fields)) {
@@ -328,4 +333,11 @@
            return masterDataService.delete(tableName, whereSegment);
        }
    }
    @RequestMapping(value = "{tableName}/getFieldVal/{field}",  method = RequestMethod.GET)
    public Result getFieldVal(@PathVariable String tableName, @PathVariable String field) {
        return masterDataService.getFieldValByTable(tableName,field);
    }
}
src/main/java/com/highdatas/mdm/entity/MasterAuthor.java
New file
@@ -0,0 +1,153 @@
package com.highdatas.mdm.entity;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.highdatas.mdm.pojo.MasterAuthorType;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
 * <p>
 *
 * </p>
 *
 * @author kimi
 * @since 2020-03-23
 */
@TableName("master_author")
public class MasterAuthor extends Model<MasterAuthor> {
    private static final long serialVersionUID = 1L;
    private String id;
    private MasterAuthorType type;
    @TableField("table_name")
    private String tableName;
    @TableField("field_auto")
    private Boolean fieldAuto;
    @TableField("character_id")
    private String characterId;
    @TableField("maintain_field_id")
    private String maintainFieldId;
    private Boolean active;
    @TableField("create_time")
    private Date createTime;
    @TableField("update_time")
    private Date updateTime;
    private transient List<MasterAuthorDetail> fields;
    public Boolean getFieldAuto() {
        return fieldAuto;
    }
    public MasterAuthor setFieldAuto(Boolean fieldAuto) {
        this.fieldAuto = fieldAuto;
        return this;
    }
    public List<MasterAuthorDetail> getFields() {
        return fields;
    }
    public MasterAuthor setFields(List<MasterAuthorDetail> fields) {
        this.fields = fields;
        return this;
    }
    public String getMaintainFieldId() {
        return maintainFieldId;
    }
    public MasterAuthor setMaintainFieldId(String maintainFieldId) {
        this.maintainFieldId = maintainFieldId;
        return this;
    }
    public String getCharacterId() {
        return characterId;
    }
    public MasterAuthor setCharacterId(String characterId) {
        this.characterId = characterId;
        return this;
    }
    public String getId() {
        return id;
    }
    public MasterAuthor setId(String id) {
        this.id = id;
        return this;
    }
    public MasterAuthorType getType() {
        return type;
    }
    public MasterAuthor setType(MasterAuthorType type) {
        this.type = type;
        return this;
    }
    public String getTableName() {
        return tableName;
    }
    public MasterAuthor setTableName(String tableName) {
        this.tableName = tableName;
        return this;
    }
    public Boolean getActive() {
        return active;
    }
    public MasterAuthor setActive(Boolean active) {
        this.active = active;
        return this;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public MasterAuthor setCreateTime(Date createTime) {
        this.createTime = createTime;
        return this;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public MasterAuthor setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
        return this;
    }
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
    @Override
    public String toString() {
        return "MasterAuthor{" +
        "id=" + id +
        ", type=" + type +
        ", tableName=" + tableName +
        ", active=" + active +
        ", createTime=" + createTime +
        ", updateTime=" + updateTime +
        "}";
    }
}
src/main/java/com/highdatas/mdm/entity/MasterAuthorDetail.java
New file
@@ -0,0 +1,89 @@
package com.highdatas.mdm.entity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
/**
 * <p>
 *
 * </p>
 *
 * @author kimi
 * @since 2020-03-23
 */
@TableName("master_author_detail")
public class MasterAuthorDetail extends Model<MasterAuthorDetail> {
    private static final long serialVersionUID = 1L;
    private String id;
    @TableField("parent_id")
    private String parentId;
    @TableField("field")
    private String field;
    private String val;
    private Boolean all;
    public Boolean getAll() {
        return all;
    }
    public MasterAuthorDetail setAll(Boolean all) {
        this.all = all;
        return this;
    }
    public String getId() {
        return id;
    }
    public MasterAuthorDetail setId(String id) {
        this.id = id;
        return this;
    }
    public String getParentId() {
        return parentId;
    }
    public MasterAuthorDetail setParentId(String parentId) {
        this.parentId = parentId;
        return this;
    }
    public String getField() {
        return field;
    }
    public MasterAuthorDetail setField(String field) {
        this.field = field;
        return this;
    }
    public String getVal() {
        return val;
    }
    public MasterAuthorDetail setVal(String val) {
        this.val = val;
        return this;
    }
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
    @Override
    public String toString() {
        return "MasterAuthorDetail{" +
        "id=" + id +
        ", parentId=" + parentId +
        ", field=" + field +
        ", val=" + val +
        "}";
    }
}
src/main/java/com/highdatas/mdm/mapper/MasterAuthorDetailMapper.java
New file
@@ -0,0 +1,16 @@
package com.highdatas.mdm.mapper;
import com.highdatas.mdm.entity.MasterAuthorDetail;
import com.baomidou.mybatisplus.mapper.BaseMapper;
/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author kimi
 * @since 2020-03-23
 */
public interface MasterAuthorDetailMapper extends BaseMapper<MasterAuthorDetail> {
}
src/main/java/com/highdatas/mdm/mapper/MasterAuthorMapper.java
New file
@@ -0,0 +1,16 @@
package com.highdatas.mdm.mapper;
import com.highdatas.mdm.entity.MasterAuthor;
import com.baomidou.mybatisplus.mapper.BaseMapper;
/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author kimi
 * @since 2020-03-23
 */
public interface MasterAuthorMapper extends BaseMapper<MasterAuthor> {
}
src/main/java/com/highdatas/mdm/mapper/TableInfoMapper.java
@@ -1,7 +1,6 @@
package com.highdatas.mdm.mapper;
import com.highdatas.mdm.entity.TableSchemaResult;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -64,5 +63,7 @@
    Integer deleteRecordByMaintainId(@Param("tableTempName")String tableTempName, @Param("stdId") String stdId, @Param("maintainId")String maintainId);
    Integer insertRecordFromStandrad(@Param("tableName")String tableName, @Param("recordTableName")String recordTableName, @Param("tempFieldList")String tempFieldList);
    Map<String,String> selectActMemberShip(@Param("userId")String userId, @Param("roleId")String roleId);
}
src/main/java/com/highdatas/mdm/mapper/xml/MasterAuthorDetailMapper.xml
New file
@@ -0,0 +1,13 @@
<?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="com.highdatas.mdm.mapper.MasterAuthorDetailMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.MasterAuthorDetail">
        <id column="id" property="id" />
        <result column="parent_id" property="parentId" />
        <result column="field_id" property="field" />
        <result column="val" property="val" />
    </resultMap>
</mapper>
src/main/java/com/highdatas/mdm/mapper/xml/MasterAuthorMapper.xml
New file
@@ -0,0 +1,15 @@
<?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="com.highdatas.mdm.mapper.MasterAuthorMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.MasterAuthor">
        <id column="id" property="id" />
        <result column="type" property="type" />
        <result column="table_name" property="tableName" />
        <result column="active" property="active" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
    </resultMap>
</mapper>
src/main/java/com/highdatas/mdm/pojo/MasterAuthorType.java
New file
@@ -0,0 +1,12 @@
package com.highdatas.mdm.pojo;
/**
 * @author kimi
 * @description
 * @date 2020-02-15 22:57
 */
public enum MasterAuthorType {
    role,user
}
src/main/java/com/highdatas/mdm/service/IMasterAuthorDetailService.java
New file
@@ -0,0 +1,16 @@
package com.highdatas.mdm.service;
import com.highdatas.mdm.entity.MasterAuthorDetail;
import com.baomidou.mybatisplus.service.IService;
/**
 * <p>
 *  服务类
 * </p>
 *
 * @author kimi
 * @since 2020-03-23
 */
public interface IMasterAuthorDetailService extends IService<MasterAuthorDetail> {
}
src/main/java/com/highdatas/mdm/service/IMasterAuthorService.java
New file
@@ -0,0 +1,28 @@
package com.highdatas.mdm.service;
import com.baomidou.mybatisplus.service.IService;
import com.highdatas.mdm.entity.MasterAuthor;
import com.highdatas.mdm.entity.SysField;
import com.highdatas.mdm.entity.SysMenu;
import com.highdatas.mdm.pojo.Result;
import java.util.List;
/**
 * <p>
 *  服务类
 * </p>
 *
 * @author kimi
 * @since 2020-03-23
 */
public interface IMasterAuthorService extends IService<MasterAuthor> {
    Result merageRoleAuthor(List<String> roleIds);
    List<SysMenu> getMenu(String userId);
    List<SysField> getField(String userId);
}
src/main/java/com/highdatas/mdm/service/ISysFieldService.java
@@ -1,8 +1,7 @@
package com.highdatas.mdm.service;
import com.alibaba.fastjson.JSONObject;
import com.highdatas.mdm.entity.SysField;
import com.baomidou.mybatisplus.service.IService;
import com.highdatas.mdm.entity.SysField;
import com.highdatas.mdm.pojo.Result;
import java.util.List;
@@ -31,5 +30,9 @@
    List<SysField> getFieldByMaintainField(String maintainId);
    List<SysField> getDefaultTableField(String tableName);
    List<SysField> getTotalTableField(String tableName);
    Result getTotalFields(String tableName, Integer pageNo, Integer pageSize);
}
src/main/java/com/highdatas/mdm/service/MasterDataService.java
@@ -86,4 +86,7 @@
    Result selectListByPageByVersion(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax);
    Maintain uploadedData(String tableName, SysAssembleUpdateType uploadType, String userId);
    Result getFieldValByTable(String tableName, String field);
    Result getFieldValByMaintainField(String maintainFieldId, String field);
}
src/main/java/com/highdatas/mdm/service/act/impl/IdentityServiceImpl.java
@@ -1,6 +1,7 @@
package com.highdatas.mdm.service.act.impl;
import com.highdatas.mdm.entity.TUser;
import com.highdatas.mdm.mapper.TableInfoMapper;
import com.highdatas.mdm.pojo.CodeMsg;
import com.highdatas.mdm.pojo.Result;
import org.activiti.engine.IdentityService;
@@ -17,6 +18,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class IdentityServiceImpl extends BaseServiceImpl implements com.highdatas.mdm.service.act.IdentityService{
@@ -26,7 +28,8 @@
    RuntimeService runtimeService;
    @Autowired
    RepositoryService repositoryService;
    @Autowired
    TableInfoMapper tableInfoMapper;
    @Override
    public String startProcess(String businessId, String key) {
@@ -88,6 +91,10 @@
    @Override
    public Result addUser(String id) {
        User preUser = identityService.createUserQuery().userId(id).singleResult();
        if (preUser != null) {
            return  Result.error(new CodeMsg(6002, "已有相同id的用户存在"));
        }
        try {
            User user = identityService.newUser(id);
            identityService.saveUser(user);
@@ -101,6 +108,10 @@
    @Override
    public Result addRole(String id) {
        Group preGroup = identityService.createGroupQuery().groupId(id).singleResult();
        if (preGroup != null) {
            return  Result.error(new CodeMsg(6002, "已有相同id的角色存在"));
        }
        try {
            Group group = identityService.newGroup(id);
            identityService.saveGroup(group);
@@ -118,11 +129,12 @@
            if (user == null) {
                return Result.error(new CodeMsg(3001, "当前用户不存在,请先创建用户"));
            }
            Group group = identityService.createGroupQuery().groupId(roleId).singleResult();
            if (user == null) {
                return Result.error(new CodeMsg(3001, "当前角色不存在,请先角色用户"));
            }
            identityService.createMembership(userId,roleId);
            Map<String, String> memberShip = tableInfoMapper.selectActMemberShip(userId, roleId);
            if (memberShip != null) {
                return Result.success(null);
            }
            identityService.createMembership(userId,roleId);
            return Result.success(null);
        }
        catch (Exception e) {
@@ -174,6 +186,11 @@
            if (user == null) {
                return Result.error(new CodeMsg(3001, "当前角色不存在,请先角色用户"));
            }
            Map<String, String> memberShip = tableInfoMapper.selectActMemberShip(userId, roleId);
            if (memberShip == null) {
                return Result.success(null);
            }
            identityService.deleteMembership(userId,roleId);
            return Result.success(null);
        }
src/main/java/com/highdatas/mdm/service/impl/MasterAuthorDetailServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.highdatas.mdm.service.impl;
import com.highdatas.mdm.entity.MasterAuthorDetail;
import com.highdatas.mdm.mapper.MasterAuthorDetailMapper;
import com.highdatas.mdm.service.IMasterAuthorDetailService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author kimi
 * @since 2020-03-23
 */
@Service
public class MasterAuthorDetailServiceImpl extends ServiceImpl<MasterAuthorDetailMapper, MasterAuthorDetail> implements IMasterAuthorDetailService {
}
src/main/java/com/highdatas/mdm/service/impl/MasterAuthorServiceImpl.java
New file
@@ -0,0 +1,99 @@
package com.highdatas.mdm.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.highdatas.mdm.entity.MasterAuthor;
import com.highdatas.mdm.entity.MasterAuthorDetail;
import com.highdatas.mdm.entity.SysField;
import com.highdatas.mdm.entity.SysMenu;
import com.highdatas.mdm.mapper.MasterAuthorMapper;
import com.highdatas.mdm.pojo.MasterAuthorType;
import com.highdatas.mdm.pojo.Result;
import com.highdatas.mdm.service.IMasterAuthorDetailService;
import com.highdatas.mdm.service.IMasterAuthorService;
import com.highdatas.mdm.util.Constant;
import com.highdatas.mdm.util.DbUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author kimi
 * @since 2020-03-23
 */
@Service
public class MasterAuthorServiceImpl extends ServiceImpl<MasterAuthorMapper, MasterAuthor> implements IMasterAuthorService {
    public static final String characterId = "characterId";
    @Autowired
    IMasterAuthorDetailService authorDetailService;
    @Override
    public Result merageRoleAuthor(List<String> roleIds) {
        List<MasterAuthor> masterAuthors = selectList(new EntityWrapper<MasterAuthor>().eq(Constant.TYPE, MasterAuthorType.role).in(this.characterId, roleIds));
        HashMap<String, MasterAuthor> resultMap = new HashMap<>();
        for (MasterAuthor masterAuthor : masterAuthors) {
            List<MasterAuthorDetail> masterAuthorDetails = authorDetailService.selectList(new EntityWrapper<MasterAuthorDetail>().eq(Constant.PARENT_ID, masterAuthor.getId()));
            masterAuthor.setFields(masterAuthorDetails);
            String key = DbUtils.getFieldRedisKey(masterAuthor.getTableName(), masterAuthor.getMaintainFieldId());
            MasterAuthor preMerageMasterAuthor = resultMap.get(key);
            if (preMerageMasterAuthor == null) {
                resultMap.put(key, masterAuthor);
            }
            else {
                preMerageMasterAuthor = merage(preMerageMasterAuthor, masterAuthor);
                resultMap.put(key, preMerageMasterAuthor);
            }
        }
        return Result.success(resultMap.values());
    }
    @Override
    public List<SysMenu> getMenu(String userId) {
        return null;
    }
    @Override
    public List<SysField> getField(String userId) {
        return null;
    }
    private MasterAuthor merage(MasterAuthor preMerageMasterAuthor, MasterAuthor masterAuthor) {
        // table name  masterField 一样 只有字段不同了
        List<MasterAuthorDetail> preFields = preMerageMasterAuthor.getFields();
        Map<String, MasterAuthorDetail> fieldMap = masterAuthor.getFields().stream().collect(Collectors.toMap(MasterAuthorDetail::getField, masterAuthorDetail -> masterAuthorDetail));
        HashSet<String> valSet = new HashSet<>();
        for (MasterAuthorDetail preField : preFields) {
            valSet.clear();
            String fieldId = preField.getField();
            String val = preField.getVal();
            if (val.equalsIgnoreCase(Constant.All)) {
                continue;
            }
            MasterAuthorDetail detail = fieldMap.get(fieldId);
            if (detail == null) {
                continue;
            }
            String preAddVal = detail.getVal();
            if (preAddVal.equalsIgnoreCase(Constant.All)) {
                preField.setVal(preAddVal);
                continue;
            }
            valSet.addAll(DbUtils.split(val));
            valSet.addAll(DbUtils.split(preAddVal));
            String resultVal = valSet.stream().collect(Collectors.joining(Constant.SEMICOLON));
            preField.setVal(resultVal);
        }
        return preMerageMasterAuthor;
    }
}
src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java
@@ -11,17 +11,14 @@
import com.highdatas.mdm.util.Constant;
import com.highdatas.mdm.util.ContentBuilder;
import com.highdatas.mdm.util.DbUtils;
import com.highdatas.mdm.util.RedisClient;
import org.apache.commons.lang3.StringUtils;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.MessageFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -46,7 +43,8 @@
    IMaintainDetailService maintainDetailService;
    @Autowired
    IFlowsService flowsService;
    @Autowired
    RedisClient redisClient;
    @Resource
    protected DataSource dataSource;
@@ -559,6 +557,8 @@
        return maintain;
    }
    //bak
    public Result selectListByPage(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version) {
        Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version);
@@ -909,5 +909,35 @@
        }
    }
    @Override
    public Result getFieldValByTable(String tableName, String field) {
        //查缓存
        String key = DbUtils.getFieldRedisKey(tableName,field);
        String redisVal = redisClient.getRedisVal(key);
        if (!StringUtils.isEmpty(redisVal)) {
            List<String> valList = DbUtils.split(redisVal);
            if (valList != null)  {
                return Result.success(valList);
            }
        }
        // 读数据库
        return null;
    }
    @Override
    public Result getFieldValByMaintainField(String tableName, String field) {
        //查缓存
        String key = DbUtils.getFieldRedisKey(tableName,field);
        String redisVal = redisClient.getRedisVal(key);
        if (!StringUtils.isEmpty(redisVal)) {
            List<String> valList = DbUtils.split(redisVal);
            if (valList != null)  {
                return Result.success(valList);
            }
        }
        // 读数据库
        return null;
    }
}
src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java
@@ -135,7 +135,6 @@
        } else {
            return null;
        }
    }
    @Override
@@ -149,7 +148,16 @@
            e.printStackTrace();
            return false;
        }
        //only update no join
        //update menu name
        String menuId = menuMapping.getMenuId();
        SysMenu sysMenu = menuService.selectById(menuId);
        if (sysMenu == null) {
            return false;
        }
        sysMenu.setName(menuMapping.getName());
        sysMenu.updateById();
        return this.updateById(menuMapping);
    }
src/main/java/com/highdatas/mdm/service/impl/SysFieldServiceImpl.java
@@ -16,11 +16,13 @@
import com.highdatas.mdm.service.IMaintainFieldService;
import com.highdatas.mdm.service.IMaintainService;
import com.highdatas.mdm.service.ISysFieldService;
import com.highdatas.mdm.util.Constant;
import com.highdatas.mdm.util.DbUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -283,12 +285,37 @@
        }
        return collect.get(0);
    }
    @Override
    public List<SysField> getFieldByMaintainField(String maintainId) {
        if (StringUtils.isEmpty(maintainId)) {
            return selectList(new EntityWrapper<SysField>().isNull("maintain_field_id").orderBy("order_no"));
            return null;
        }
        return selectList(new EntityWrapper<SysField>().eq("maintain_field_id", maintainId).orderBy("order_no"));
    }
    @Override
    public List<SysField> getDefaultTableField(String tableName) {
        return selectList(new EntityWrapper<SysField>().eq("table_name", tableName).isNull("maintain_field_id").orderBy("order_no"));
    }
    @Override
    public List<SysField> getTotalTableField(String tableName) {
        List<TableSchemaResult> tableField = tableInfoMapper.getTableField(tableName);
        List<SysField> result = new ArrayList<>();
        for (TableSchemaResult tableSchemaResult : tableField) {
            String fieldName = tableSchemaResult.getFieldName();
            List<SysField> fieldList = selectList(new EntityWrapper<SysField>().eq("table_name", tableName).eq(Constant.FIELD, fieldName).orderBy("create_time"));
            if (fieldList.isEmpty()) {
                //没有中文名称的  应该属于系统自留字段 如id
                continue;
            }
            String alias = fieldList.stream().map(SysField::getAlias).collect(Collectors.joining(Constant.SEMICOLON));
            SysField sysField = new SysField().setField(fieldName).setAlias(alias);
            result.add(sysField);
        }
        return result;
    }
}
src/main/java/com/highdatas/mdm/util/Constant.java
@@ -101,4 +101,7 @@
    String varchar = "varchar";
    String varcharSize = " (255) ";
    String Text = " text ";
    String Default = "default";
    String USERID = "user_id";
    String FIELD = "field";
}
src/main/java/com/highdatas/mdm/util/DbUtils.java
@@ -4,11 +4,13 @@
import com.baomidou.mybatisplus.annotations.TableName;
import com.highdatas.mdm.entity.Maintain;
import com.highdatas.mdm.entity.MaintainField;
import com.highdatas.mdm.entity.TUser;
import com.highdatas.mdm.entity.TableSchemaResult;
import com.highdatas.mdm.pojo.Segment;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.security.MessageDigest;
@@ -315,4 +317,29 @@
        }
        return result;
    }
    public static String getFieldRedisKey(String tableName, String field) {
        if (StringUtils.isEmpty(tableName) && StringUtils.isEmpty(field)) {
            return null;
        }else if (StringUtils.isEmpty(field)){
            return tableName;
        }else if (StringUtils.isEmpty(tableName)){
            return field;
        }else {
            return tableName + Constant.UnderLine + field;
        }
    }
    public static List<String> split(String redisVal) {
        if (StringUtils.isEmpty(redisVal)) {
            return null;
        }
        String[] split = redisVal.split(Constant.SEMICOLON);
        List<String> strings = Arrays.asList(split);
        return strings;
    }
    public static TUser getUser(HttpServletRequest request) {
        return (TUser) request.getSession().getAttribute(Constant.USER);
    }
}
src/main/java/com/highdatas/mdm/util/MpGenerator.java
@@ -28,7 +28,7 @@
        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setAuthor("kimi");
        gc.setOutputDir("H://workspace/workspace_idea/mdm/src/main/java");
        gc.setOutputDir("D://workspace/workspace_idea/mdm_new/src/main/java");
        gc.setFileOverride(true);// 是否覆盖同名文件,默认是false
        gc.setActiveRecord(true);// 不需要ActiveRecord特性的请改为false
        gc.setEnableCache(false);// XML 二级缓存
@@ -65,7 +65,7 @@
        // strategy.setCapitalMode(true);// 全局大写命名 ORACLE 注意
        strategy.setTablePrefix(new String[]{""});// 此处可以修改为您的表前缀
        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
        strategy.setInclude(new String[]{"master_modified",}); // 需要生成的表
        strategy.setInclude(new String[]{"master_author","master_author_detail"}); // 需要生成的表
        // strategy.setExclude(new String[]{"test"}); // 排除生成的表
        // 自定义实体父类
        // strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");
src/main/resources/application-pro.yml
@@ -16,7 +16,7 @@
      max-lifetime: 30000
      connection-test-query: select 1
  activiti:
    database-schema-update: true
    database-schema-update: flase
  thymeleaf:
    cache: false
src/main/resources/application-prod.yml
@@ -12,15 +12,16 @@
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url:  jdbc:mysql://180.169.94.250:8306/data_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true
    url: jdbc:mysql://180.169.94.250:8306/data_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true
    username: masterdata
    password: md123!
    hikari:
      minimum-idle: 3
      max-lifetime: 30000
      connection-test-query: select 1
  activiti:
    database-schema-update: true
    database-schema-update: flase
  thymeleaf:
    cache: false
src/main/resources/application.yml
@@ -1,7 +1,7 @@
spring:
  profiles:
    active:
      pro
      dev
  main:
    allow-bean-definition-overriding: true
src/main/resources/mapping/TableInfoMapper.xml
@@ -477,7 +477,6 @@
        )
    </select>
    <update id="updateRecordByMaintainId" statementType="STATEMENT" >
         update ${tableTempName}
        INNER JOIN maintain_detail on ${tableTempName}.id = maintain_detail.pre_merge_id
@@ -487,11 +486,12 @@
    </update>
    <delete id="deleteRecordByMaintainId" statementType="STATEMENT" >
        DELETE  ${tableTempName} from  ${tableTempName}
        INNER JOIN maintain_detail on maintain_detail.pre_merge_id =  ${tableTempName}.id
        WHERE maintain_detail.parent_id = ${maintainId} and  ${tableTempName}.std_id = ${stdId}
    </delete>
    <select id="selectActMemberShip" parameterType="java.util.Map" resultType="java.util.Map">
        select * from act_id_membership where USER_ID_ = #{userId} and GROUP_ID_ = #{roleId}
    </select>
</mapper>