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>