package com.highdatas.mdm.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.highdatas.mdm.entity.Maintain; import com.highdatas.mdm.entity.MenuMapping; import com.highdatas.mdm.entity.SysMenu; import com.highdatas.mdm.entity.TUser; import com.highdatas.mdm.mapper.MenuMappingMapper; import com.highdatas.mdm.mapper.TableInfoMapper; import com.highdatas.mdm.pojo.CodeMsg; import com.highdatas.mdm.pojo.Result; import com.highdatas.mdm.service.*; import com.highdatas.mdm.util.Constant; import com.highdatas.mdm.util.DbUtils; import com.highdatas.mdm.util.WorkflowUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpSession; import java.io.UnsupportedEncodingException; import java.util.Date; import java.util.Map; /** *

* 服务实现类 *

* * @author kimi * @since 2019-12-16 */ @Service public class MenuMappingServiceImpl extends ServiceImpl implements IMenuMappingService { @Autowired TableInfoMapper tableInfoMapper; @Autowired MenuMappingMapper menuMappingMapper; @Autowired IMaintainService maintainService; @Autowired ActivitiService activitiService; @Autowired ISysMenuService menuService; @Autowired IMaintainFieldService maintainFieldService; @Autowired IMasterAuthorService masterAuthorService; public static final String key = "process"; @Override public MenuMapping create(String json, HttpSession session) { JSONObject jsonObject = JSONObject.parseObject(json); // //1 // Flows flows = activitiService.start(key, session); // if (flows == null) { // return false; // } // //2 // String flowsId = flows.getId(); TUser user = (TUser)session.getAttribute(Constant.USER); String userId = user.getUserId(); //Maintain maintain = createMaintain(userId, jsonObject, null); /*if (maintain == null) { return false; }*/ //String maintainId = maintain.getId(); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); MenuMapping menuMapping = null; try { menuMapping = objectMapper.readValue(json, MenuMapping.class); } catch (JsonProcessingException e) { e.printStackTrace(); return null; } String menuId = menuMapping.getMenuId(); if (StringUtils.isEmpty(menuId)) { return null; } int cnt = selectCount(new EntityWrapper().eq("menu_id", menuId)); if (cnt != 0) { return null; } //menuMapping.setMaintainFieldId(maintainId); return create(menuMapping); } private Maintain createMaintain(String userId, JSONObject jsonObject, String flowsId) { Maintain maintain = new Maintain(); maintain.setCreateTime(new Date()); maintain.setChargeId(userId); // maintain.setFlowId(flowsId); maintain.setVersion(Constant.VERSION_Default); maintain.setId(DbUtils.getUUID()); String desp = jsonObject.getString("desp"); String tableName = jsonObject.getString("tableName"); if(StringUtils.isEmpty(tableName)) { return null; } maintain.setDesp(desp); maintain.setTableName(tableName); boolean insert = maintainService.insert(maintain); if (insert) { return maintain; } return null; } @Override public MenuMapping create(MenuMapping menuMapping) { menuMapping.setCreateTime(new Date()); menuMapping.setId(DbUtils.getUUID()); String name = menuMapping.getName(); name = DbUtils.getChineseOrEnglishOrNumber(name); String tableName = WorkflowUtils.toFirstChar(name.toLowerCase()); tableName = Constant.MD + tableName; String tableByName = tableInfoMapper.selectTableByName(tableName); if (!StringUtils.isEmpty(tableByName)){ int sameCount = selectCount(new EntityWrapper().eq("table_name", tableName)); if (sameCount > 0) { tableName = tableName + "_" + DbUtils.getUUID(5); } } int length = 0; try { length = tableName.getBytes("UTF-8").length; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } if (length > 18) { tableName = Constant.MD + DbUtils.getUUID(10); } menuMapping.setTableName(tableName); boolean insert = this.insert(menuMapping); if (insert) { return menuMapping; } else { return null; } } @Override public boolean update(String json) { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); MenuMapping menuMapping = null; try { menuMapping = objectMapper.readValue(json, MenuMapping.class); } catch (JsonProcessingException e) { e.printStackTrace(); return false; } //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); } @Override public Result getMapping(HttpSession session, String id) { SysMenu sysMenu = menuService.selectById(id); if (sysMenu == null) { return Result.error(CodeMsg.SELECT_ERROR); } String menuType = sysMenu.getMenuType(); if (StringUtils.isEmpty(menuType)) { return Result.error(CodeMsg.SELECT_ERROR); } if (menuType.equalsIgnoreCase("StructureMenu")) { return Result.success(null); } Map mapping = menuMappingMapper.getMapping(id); Wrapper menuWrapper = new EntityWrapper().eq("menu_id", sysMenu.getId()); MenuMapping menuMapping = selectOne(menuWrapper); if (menuMapping == null) { return Result.error(new CodeMsg(10008,"当前主题无版本数据")); } String tableName = menuMapping.getTableName(); String chargeId = menuMapping.getChargeId(); TUser userByChargeId = DbUtils.getUserById(chargeId); TUser user = (TUser) session.getAttribute(Constant.USER); Maintain resultMaintain = masterAuthorService.getMaxVersionMaintain(user, tableName); Maintain nowVersion = maintainService.getNowVersion(tableName); if (resultMaintain != null) { if (nowVersion.getOrderNo().equals(resultMaintain.getOrderNo())) { mapping.put("maintainType", 0); }else { mapping.put("maintainType", 1); } mapping.put("version", resultMaintain.getVersion()); mapping.put("maintainId", resultMaintain.getId()); } if (userByChargeId != null) { mapping.put("userName", userByChargeId.getUserName()); } if (nowVersion != null) { mapping.put("hasData", true); }else { mapping.put("hasData", false); } return Result.success(mapping); } @Override public SysMenu getMenuByTableName(String tableName) { MenuMapping menuMapping = selectOne(new EntityWrapper().eq("table_name", tableName).orderBy("create_time desc")); if (menuMapping == null) { return null; } String menuId = menuMapping.getMenuId(); SysMenu sysMenu = menuService.selectById(menuId); return sysMenu; } @Override public MenuMapping getMenuMappingByTableName(String tableName) { MenuMapping menuMapping = selectOne(new EntityWrapper().eq("table_name", tableName).orderBy("create_time desc")); if (menuMapping == null) { return null; } return menuMapping; } @Override public String getTableNameByMenu(String menuId) { MenuMapping menuMapping = selectOne(new EntityWrapper().eq("menu_id", menuId).orderBy("create_time desc")); if (menuMapping == null) { return null; } return menuMapping.getTableName(); } }