Merge branch 'test' into patch-dependency

yun-zuoyi
zhang.xw 3 years ago
commit 01644081a5

@ -1,5 +1,6 @@
package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.core.api.iservice.dto.SysMenuDTO;
import cn.estsh.i3plus.pojo.model.platform.CommonTreeModel;
import cn.estsh.i3plus.pojo.platform.bean.*;
import io.swagger.annotations.ApiOperation;
@ -160,7 +161,8 @@ public interface ICoreMemTreeService {
@ApiOperation(value = "查询功能子节点",notes = "根据用户ID 查询功能树")
List<SysMenu> packTreeSysMenuByUserId(Long userId);
@ApiOperation(value = "查询功能子节点",notes = "根据用户ID 查询功能树")
public List<SysMenu> packTreeDingSysMenuByUserId(Long userId);
/**
* ID ID
* @param userId
@ -170,12 +172,19 @@ public interface ICoreMemTreeService {
@ApiOperation(value = "查询功能子节点",notes = "根据用户ID 和 节点ID 查询功能树")
List<SysMenu> packTreeSysMenuByUserIdAndParentId(Long userId,Long parentId);
@ApiOperation(value = "查询功能子节点",notes = "根据用户ID 和 节点ID 查询功能树")
List<SysMenu> packTreeDingSysMenuByUserIdAndParentId(Long userId,Long parentId);
@ApiOperation(value = "查询功能子节点",notes = "根据父节点ID 和 菜单类型 查询功能树")
List<SysMenu> packTreeSysMenuByParentIdAndMenuType(List<SysMenu> list,Long parentId,Integer menuType);
@ApiOperation(value = "查询功能子节点",notes = "根据用户ID 查询功能树")
List<SysMenu> packTreeSysMenu();
@ApiOperation(value = "查询功能子节点",notes = "根据父节点ID 和 菜单类型 查询功能树")
List<SysMenuDTO> packTreeToDto(List<SysMenu> list);
/********************************************* End SysMenu Tree *********************************************/
}

@ -77,6 +77,9 @@ public interface ISysConfigService {
@ApiOperation(value = "查询系统配置信息项")
List findSystemInfoConfig();
@ApiOperation(value = "查询松下系统配置信息项")
List findSystemInfoConfigPanasonic(String organizeCode);
/**
*
* @param code

@ -68,4 +68,6 @@ public interface ISysMenuService extends ICrudService<SysMenu> {
@ApiOperation(value = "根据菜单代码查询菜单信息")
SysMenu getSysMenuByCode(String code);
@ApiOperation(value = "根据菜单ID删除菜单信息")
void deleteSysMenuById(Long id);
}

@ -0,0 +1,55 @@
package cn.estsh.i3plus.core.api.iservice.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description : dto
* @Reference :
* @Author : zhangxw
* @CreateDate :2022/7/23 0023
**/
@Data
public class SysMenuDTO implements Serializable {
private static final long serialVersionUID = -4365785452541938586L;
/**
* id
*/
private long id;
/**
* id
*/
private long parentId;
/**
*
*/
private String organizeCode;
/**
* code
*/
private String menuCode;
/**
*
*/
private String name;
/**
*
*/
private String parentNameRdd;
/**
* id
*/
private Integer menuSort;
/**
* url
*/
private String menuUrl;
/**
*
*/
private List<SysMenuDTO> childList;
}

@ -240,7 +240,11 @@
<artifactId>elasticsearch</artifactId>
<version>7.5.1</version>
</dependency>
<dependency>
<groupId>i3plus.ext.cdm</groupId>
<artifactId>i3plus-ext-cdm-icloud</artifactId>
<version>1.0.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>

@ -1,12 +1,13 @@
package cn.estsh.i3plus.core.apiservice.controller;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.fileservice.ImppFileService;
import cn.estsh.i3plus.pojo.base.bean.ImppFile;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -63,7 +64,7 @@ public class DemoUploadController extends CoreBaseController{
@ApiOperation(value = "文件上传",notes = "文件上传")
public ResultBean singleFileUpload(@RequestParam("file") MultipartFile file) {
try {
ImppFile dfsFile = fileService.upload(file);
SysFile dfsFile = fileService.upload(file, CommonEnumUtil.SOFT_TYPE.CORE.getValue());
return ResultBean.success("上传成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(dfsFile);
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);

@ -185,6 +185,23 @@ public class BaseMessageController extends CoreBaseController {
}
/**
* - -
* @param messagePagerModel
* @return
*/
public ResultBean<SysMessage> baseQuerySysMessageByPagerSx(@RequestBody MessagePagerModel messagePagerModel) {
try {
ListPager sysMessageListPager = sysMessageService.querySysMessageByPager(messagePagerModel.getSysMessage(),
messagePagerModel.getPager());
return ResultBean.success("操作成功").setListPager(sysMessageListPager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
* - -
*
* @param ids id

@ -4,6 +4,7 @@ import cn.estsh.i3plus.core.api.iservice.base.ISynchronizedService;
import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService;
import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginStrategyService;
import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.core.api.iservice.dto.SysMenuDTO;
import cn.estsh.i3plus.core.apiservice.controller.busi.*;
import cn.estsh.i3plus.core.apiservice.util.MailUtil;
import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil;
@ -54,7 +55,9 @@ import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiGettokenRequest;
import com.dingtalk.api.request.OapiV2UserGetbymobileRequest;
import com.dingtalk.api.response.OapiGettokenResponse;
import com.dingtalk.api.response.OapiV2UserGetResponse;
import com.dingtalk.api.response.OapiV2UserGetbymobileResponse;
import com.google.common.cache.Cache;
@ -62,13 +65,16 @@ import com.google.common.cache.CacheBuilder;
import com.taobao.api.ApiException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import jodd.util.StringUtil;
import lombok.val;
import org.apache.commons.collections.map.HashedMap;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpMethod;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
@ -79,6 +85,7 @@ import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.BiFunction;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Description :
@ -169,6 +176,13 @@ public class WhiteController extends CoreBaseController {
@Autowired
private SysFileController sysFileController;
@Autowired
private ICoreMemTreeService memTreeService;
@Value(value = "${filter.ding.menu.parent.id}")
private Long filterDingPmcParentMenuId;
private Cache<String, Integer> unsavedLocaleResSwitch = CacheBuilder.newBuilder()
.maximumSize(1)
.expireAfterWrite(1, TimeUnit.MINUTES)
@ -191,6 +205,7 @@ public class WhiteController extends CoreBaseController {
@ApiOperation(value = "查询可用语言", notes = "查询可用语言")
public ResultBean getSystemInfo() {
try {
LOGGER.info("调用了/system-info");
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(configService.findSystemInfoConfig());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
@ -199,6 +214,18 @@ public class WhiteController extends CoreBaseController {
}
}
@GetMapping(value = "/system-info-panasonic")
@ApiOperation(value = "查询可用语言", notes = "查询可用语言")
public ResultBean getSystemInfoPanasonic(String organizeCode) {
try {
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(configService.findSystemInfoConfigPanasonic(organizeCode));
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping(value = "/session-user")
@ApiOperation(value = "获取用户信息", notes = "获取当前登录用户账号详细信息")
public ResultBean getSession() {
@ -1145,6 +1172,8 @@ public class WhiteController extends CoreBaseController {
private static final Long ACCESS_TOKEN_EXPIRE_TIME = 7080L;
private static final String ACCESS_TOKEN_KEY = "ding_talk:access_token";
private static final String ACCESS_MENU_TOKEN_KEY = "ding_talk:menu_access_token";
/**
*
*
@ -1316,6 +1345,7 @@ public class WhiteController extends CoreBaseController {
}
}
/**
* accessToken
*
@ -1324,6 +1354,7 @@ public class WhiteController extends CoreBaseController {
private String getAccessToken() {
Object accessTokenCached = redisCore.getObject(ACCESS_TOKEN_KEY);
if (accessTokenCached != null) {
LOGGER.info("通过缓存获取到的钉钉token, key={},value={}", ACCESS_TOKEN_KEY, accessTokenCached);
return String.valueOf(accessTokenCached);
}
Config config = new Config();
@ -1343,6 +1374,7 @@ public class WhiteController extends CoreBaseController {
try {
GetAccessTokenResponse response = client.getAccessToken(getAccessTokenRequest);
if (!StringUtils.isEmpty(response.body.accessToken)) {
LOGGER.info("插入钉钉token缓存, key={},value={}", ACCESS_TOKEN_KEY, response.body.accessToken);
redisCore.putObject(ACCESS_TOKEN_KEY, response.body.accessToken, ACCESS_TOKEN_EXPIRE_TIME);
}
return response.body.accessToken;
@ -1361,7 +1393,6 @@ public class WhiteController extends CoreBaseController {
return "";
}
private OapiV2UserGetResponse getDingTalkUserInfo(String dingTalkTmpAuthCode) {
String dingTalkUrl = RedisCacheTool.getSysConfigStrVal(PlatformConstWords.DINGTALK_URL);
String dingTalkAppKey = RedisCacheTool.getSysConfigStrVal(PlatformConstWords.DINGTALK_APP_KEY);
@ -1395,4 +1426,142 @@ public class WhiteController extends CoreBaseController {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
*
* @param dingTalkTmpAuthCode
* @return
*/
@GetMapping(value = "/find-menu-list")
@ApiOperation(value = "获取登录用户功能权限信息", notes = "获取首页权限信息")
public ResultBean findHomeList(HttpServletRequest request,@RequestParam String dingTalkTmpAuthCode, @RequestParam(required = false)String mobile) {
try {
if (Objects.isNull(dingTalkTmpAuthCode)) {
return ResultBean.fail("操作失败").setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()).setErrorMsg("授权码不能为空");
}
// 根据dingTalkTmpAuthCode 获取 平台的用户信息
SysUser sysUser = getUserInfo(dingTalkTmpAuthCode);
if (sysUser == null && !Objects.isNull(mobile)) {
LOGGER.info("code未查询到用默认");
sysUser = userService.getSysUserByPhone(mobile);
}
if(sysUser == null) {
return ResultBean.fail("操作失败").setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()).setErrorMsg("用户信息不存在");
}
Long startTime = System.currentTimeMillis();
List<SysMenu> menuList = memTreeService.packTreeDingSysMenuByUserId(sysUser.getId());
Long menuSelectTime = System.currentTimeMillis();
LOGGER.info("第一段耗时:{}", menuSelectTime - startTime);
List<SysMenu> syslist = memTreeService.packTreeSysMenuByParentIdAndMenuType(menuList, filterDingPmcParentMenuId , CommonEnumUtil.METHOD_LEVEL.PLUGIN.getValue());
LOGGER.info("第二段耗时:{}", System.currentTimeMillis() - menuSelectTime);
List<SysMenuDTO> resList = memTreeService.packTreeToDto(syslist);
if (resList != null && resList.size() > 0) {
// 翻译第一级
resList.forEach(menu -> menu.setName(LocaleUtils.getLocaleRes("MENU_" + menu.getName())));
// 内存排序 Sort 降序 code 升序
resList.sort(Comparator.comparing(SysMenuDTO::getMenuSort).reversed().thenComparing(SysMenuDTO::getMenuCode));
}
// 获取工厂信息
List<SysOrganize> sysUserOrganizeList = personnelService.findSysUserOrganize(sysUser.getId());
// 遍历工厂信息,并且把主工厂放在首位
for (int i = 0; i < sysUserOrganizeList.size(); i++) {
if (Objects.equals(sysUserOrganizeList.get(i).getId(), sysUser.getOrganizeId())) {
Collections.swap(sysUserOrganizeList, i, 0);
break;
}
}
Map<String, Object> map = new HashedMap();
map.put("sysUserOrganizeList", sysUserOrganizeList);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(resList).setResultMap(map);
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
*
* getUserInfo
* @param dingTalkTmpAuthCode
* @return
*/
private SysUser getUserInfo(String dingTalkTmpAuthCode) {
SysUser sysUser = null;
String dingtalk_url = "DINGTALK_MENU_URL";
String dingtalk_app_key = "DINGTALK_MENU_APP_KEY";
String dingtalk_app_secret = "DINGTALK_MENU_APP_SECRET";
String dingtalk_white_list = "DINGTALK_MENU_WHITE_LIST";
String dingTalkUrl = RedisCacheTool.getSysConfigStrVal(dingtalk_url);
String dingTalkAppKey = RedisCacheTool.getSysConfigStrVal(dingtalk_app_key);
String dingTalkAppSecret = RedisCacheTool.getSysConfigStrVal(dingtalk_app_secret);
String dingTalkWhiteList = RedisCacheTool.getSysConfigStrVal(dingtalk_white_list);
if (StringUtils.isEmpty(dingTalkUrl) ||
StringUtils.isEmpty(dingTalkAppKey) ||
StringUtils.isEmpty(dingTalkAppSecret) ||
StringUtils.isEmpty(dingTalkWhiteList)) {
//todo errorcode 需要修改
ImppExceptionBuilder.newInstance().setErrorCode("0000431").setErrorDetail("访问钉钉的系统参数缺失,请在平台的系统参数中进行配置");
}
Optional<OapiV2UserGetResponse> userInfo =
dingTalkService.getUserInfo(dingTalkUrl, getMenuAccessToken(dingTalkUrl, dingTalkAppKey, dingTalkAppSecret), dingTalkTmpAuthCode);
if (userInfo.isPresent()) {
String mobile = userInfo.get().getResult().getMobile();
if (StringUtils.isEmpty(mobile)) {
ImppExceptionBuilder.newInstance().setErrorCode("0000431").setErrorDetail("用户并未在钉钉中设置手机号 或 钉钉接口权限不足无法获取到手机号");
}
if (!Arrays.asList(dingTalkWhiteList.split(",")).contains(mobile)) {
ImppExceptionBuilder.newInstance().setErrorCode("0000431").setErrorDetail("对指定手机号允许,权限不足,请联系管理员");
}
sysUser = userService.getSysUserByPhone(mobile);
if (sysUser == null) {
ImppExceptionBuilder.newInstance().setErrorCode("0000431").setErrorDetail("未根据用户手机在平台中找到相应记录 钉钉获取的手机号为\" + mobile");
}
}
return sysUser;
}
/**
* accessToken
*
* @return
*/
private String getMenuAccessToken(String dingUrl, String appKey, String appSecret) {
Object accessTokenCached = redisCore.getObject(ACCESS_MENU_TOKEN_KEY);
if (accessTokenCached != null) {
LOGGER.info("通过缓存获取到的钉钉menu_token, key={},value={}", ACCESS_MENU_TOKEN_KEY, accessTokenCached);
return String.valueOf(accessTokenCached);
}
String result = null;
DefaultDingTalkClient client = new DefaultDingTalkClient(dingUrl + "/gettoken");
OapiGettokenRequest request = new OapiGettokenRequest();
request.setAppkey(appKey);
request.setAppsecret(appSecret);
request.setHttpMethod(HttpMethod.GET.name());
try {
OapiGettokenResponse response = client.execute(request);
result = response.isSuccess() ? response.getAccessToken() : null;
if (!StringUtils.isEmpty(result)) {
LOGGER.info("插入钉钉menu_token缓存, key={},value={}", ACCESS_MENU_TOKEN_KEY, response.getAccessToken());
redisCore.putObject(ACCESS_MENU_TOKEN_KEY, response.getAccessToken(), ACCESS_TOKEN_EXPIRE_TIME);
}
} catch (ApiException e) {
LOGGER.error("获取钉钉AccessToken错误", e);
throw new ImppBusiException("获取钉钉AccessToken错误 " + e.getMessage());
}
return result;
}
}

@ -533,4 +533,18 @@ public class SysDictionaryController extends CoreBaseController{
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/flushDictionaryToRedis")
@ApiOperation(value = "刷新数据字典到redis")
public ResultBean flushDictionaryToRedis() {
try {
// 更新缓存信息
systemInitService.putAndLoadSysDictionary();
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -44,6 +44,7 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@ -375,16 +376,23 @@ public class SysMenuController extends CrudBaseController<SysMenu> {
});
list.forEach(menu -> {
menu.setIsDeleted(CommonEnumUtil.IS_DEAL.NO.getValue());
menu.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue());
if(menu.getParentId().longValue() != -1){
SysMenu mu = map.get(menu.getParentId().toString());
ValidatorBean.checkNotNull(mu, "【"+menu.getParentId()+"】不存在的父节点信息");
menu.setNameZhShortening(StringTool.getAllFirstLetter(mu.getName()));
menu.setParentNameRdd(mu.getName());
Iterator<SysMenu> it = list.iterator();
while(it.hasNext()){
SysMenu sysMenu = it.next();
sysMenu.setIsDeleted(CommonEnumUtil.IS_DEAL.NO.getValue());
sysMenu.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue());
if(sysMenu.getParentId().longValue() != -1){
SysMenu mu = map.get(sysMenu.getParentId().toString());
//ValidatorBean.checkNotNull(mu, "【"+menu.getParentId()+"】不存在的父节点信息");
if(mu == null){
LOGGER.error("{}, 不存在的父节点信息", sysMenu.getParentId());
it.remove();
}else{
sysMenu.setNameZhShortening(StringTool.getAllFirstLetter(mu.getName()));
sysMenu.setParentNameRdd(mu.getName());
}
}
});
}
return ResultBean.success("上传成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setResultList(menuService.saveBatch(list));

@ -0,0 +1,98 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService;
import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService;
import cn.estsh.i3plus.platform.common.exception.BaseImppException;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.FileContentTypeTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
import cn.estsh.impp.framework.base.controller.CrudBaseController;
import cn.estsh.impp.framework.base.service.ICrudService;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ImppRedis;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* @Description :
* @Reference :
* @Author : wei.peng
* @Date : 2018-10-22 15:18:14.982
* @Modify :
**/
@RestController
@Api(tags = "系统功能服务")
@RequestMapping(PlatformConstWords.BASE_URL + "/sys-menu-panasonic")
public class SysMenuPanasonicController extends CrudBaseController<SysMenu> {
public static final Logger LOGGER = LoggerFactory.getLogger(SysMenuPanasonicController.class);
@Autowired
private ISysMenuService menuService;
@Autowired
private EntityManager entityManager;
@Resource(name= CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes;
@Autowired
private ICoreMemTreeService memTreeService;
@Autowired
private IPersonnelService personnelService;
@Override
public ICrudService getCrudService() {
return menuService;
}
/**
* CORE -
* @param id id
* @return
*/
@DeleteMapping("/delete-panasonic/{id}")
@ApiOperation(value = "删除消息",notes = "删除消息")
public ResultBean deleteSysMenuById(@PathVariable("id") Long id){
try {
// 数据校验
ValidatorBean.checkNotNull(id, "菜单id 不能为空");
menuService.deleteSysMenuById(id);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -3,6 +3,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskService;
import cn.estsh.i3plus.ext.cdm.icloud.sdk.ICdmCommonCloud;
import cn.estsh.i3plus.ext.qms.icloud.sdk.IQmsCommonCloud;
import cn.estsh.i3plus.icloud.andon.sdk.IAndonCommonCloud;
import cn.estsh.i3plus.icloud.eam.sdk.IEamCommonCloud;
@ -39,23 +40,12 @@ import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.*;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
@ -108,6 +98,9 @@ public class SysTaskController extends CoreBaseController {
private IEamCommonCloud iEamCommonCloud;
@Autowired
private ICdmCommonCloud iCdmCommonCloud;
@Autowired
private EntityManager entityManager;
@Autowired
@ -157,6 +150,9 @@ public class SysTaskController extends CoreBaseController {
}else if (softType == CommonEnumUtil.SOFT_TYPE.EAM.getValue()) {
//eam
commonService = iEamCommonCloud;
} else if (softType == CommonEnumUtil.SOFT_TYPE.CDM.getValue()) {
//cdm
commonService = iCdmCommonCloud;
}
return commonService;
}

@ -4,6 +4,7 @@ import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskCycleService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskPlanService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysTaskService;
import cn.estsh.i3plus.ext.cdm.icloud.sdk.ICdmScheduleJobCloud;
import cn.estsh.i3plus.ext.qms.icloud.sdk.IQmsCommonCloud;
import cn.estsh.i3plus.ext.qms.icloud.sdk.IQmsScheduleJobCloud;
import cn.estsh.i3plus.icloud.andon.sdk.IAndonScheduleJobCloud;
@ -132,6 +133,8 @@ public class SysTaskPlanController extends CoreBaseController {
@Autowired
private IEamScheduleJobCloud eamScheduleJobCloud;
@Autowired
private ICdmScheduleJobCloud iCdmScheduleJobCloud;
/**
@ -170,7 +173,10 @@ public class SysTaskPlanController extends CoreBaseController {
quartzJobService = qmsScheduleJobCloud;
}else if (source == CommonEnumUtil.SOFT_TYPE.EAM.getValue()) {
quartzJobService = eamScheduleJobCloud;
} else if (source == CommonEnumUtil.SOFT_TYPE.CDM.getValue()) {
quartzJobService = iCdmScheduleJobCloud;
}
return quartzJobService;
}

@ -778,6 +778,7 @@ public class SysUserInfoController extends CoreBaseController {
//设置密码为默认值
userDetailModel.setUserLoginPassword(CommonConstWords.CONFIG_PWD_DEFAULT_PASSWORD);
userDetailModel.setPassword(CommonConstWords.CONFIG_PWD_DEFAULT_PASSWORD);
SysOrganize sysOrganize = new SysOrganize();
sysOrganize.setOrganizeCode(AuthUtil.getOrganizeCode());
// SysOrganize result = sysOrganizeService.get(sysOrganize);

@ -93,6 +93,17 @@ public class SwebMessageController extends CoreBaseController {
}
/**
* SWEB -
* @param messagePagerModel
* @return
*/
@PostMapping(value = "/sys-message/querySx")
@ApiOperation(value = "松下用-消息复杂查询,分页,排序",notes = "松下用-消息复杂查询,分页,排序")
public ResultBean<SysMessage> querySysMessageByPagerSx(@RequestBody MessagePagerModel messagePagerModel){
return baseSysMessage.baseQuerySysMessageByPagerSx(messagePagerModel);
}
/**
* SWEB -
* @param ids ids
* @return

@ -1,6 +1,7 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.core.api.iservice.dto.SysMenuDTO;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ModelEnumUtil;
import cn.estsh.i3plus.pojo.model.platform.CommonTreeModel;
@ -8,10 +9,13 @@ import cn.estsh.i3plus.pojo.platform.bean.*;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@ -40,6 +44,16 @@ public class CoreMemTreeService implements ICoreMemTreeService {
private ISysOrganizeService organizeService;
@Autowired
private ISysDepartmentService departmentService;
/**
* PMC id
*/
@Value(value = "${filter.ding.menu.id}")
private String filterDingPmcMenuIds;
/**
* PMC id
*/
@Value(value = "${filter.ding.menu.parent.id}")
private String filterDingPmcParentMenuId;
@Override
public List<SysPosition> packTreeSysPosition(List<SysPosition> list, Long parentId) {
@ -627,6 +641,11 @@ public class CoreMemTreeService implements ICoreMemTreeService {
return packTreeSysMenuByUserIdAndParentId(userId, CommonEnumUtil.PARENT.DEFAULT.getValue());
}
@Override
public List<SysMenu> packTreeDingSysMenuByUserId(Long userId) {
return packTreeDingSysMenuByUserIdAndParentId(userId, Long.parseLong(filterDingPmcParentMenuId));
}
/**
* ID ID
* @param userId
@ -648,7 +667,37 @@ public class CoreMemTreeService implements ICoreMemTreeService {
LOGGER.info("查询角色关联菜单:{}",refRoleMenuTime - roleTime);
if (refRoleMenuList != null && refRoleMenuList.size() > 0) {
List<SysMenu> menuList = menuService.findAll();
// 构建菜单树
List<SysMenu> menuRootTree = packTreeSysMenu(menuList, parentId);
//
return packTreeSysMenuBySysRefRoleMenu(menuRootTree, refRoleMenuList);
}
}
return Collections.emptyList();
}
@Override
public List<SysMenu> packTreeDingSysMenuByUserIdAndParentId(Long userId, Long parentId) {
// 查询用户关联角色
long startTime = System.currentTimeMillis();
List<SysRefUserRole> roleList = personnelService.findSysRefUserRole(userId);
long roleTime = System.currentTimeMillis();
LOGGER.info("查询用户所关联的角色信息耗时:{}",roleTime - startTime);
if (roleList != null && roleList.size() > 0) {
// 查询角色关联菜单
List<SysRefRoleMenu> refRoleMenuList = personnelService.findSysRefRoleMenuByRefUserRole(roleList);
// pdc 菜单
List<Long> includeMenuId = Arrays.asList(filterDingPmcMenuIds.split(",")).stream().map(Long :: parseLong).collect(Collectors.toList());
long refRoleMenuTime = System.currentTimeMillis();
LOGGER.info("查询角色关联菜单:{}",refRoleMenuTime - roleTime);
List<Long> menuIdList = refRoleMenuList.stream().map(SysRefRoleMenu::getMenuId).collect(Collectors.toList());
includeMenuId.retainAll(menuIdList);
if (refRoleMenuList != null && refRoleMenuList.size() > 0) {
List<SysMenu> menuList = menuService.findByIdList(includeMenuId);
// 构建菜单树
List<SysMenu> menuRootTree = packTreeSysMenu(menuList, parentId);
//
@ -682,6 +731,22 @@ public class CoreMemTreeService implements ICoreMemTreeService {
return packTreeSysMenu(menuList, CommonEnumUtil.PARENT.DEFAULT.getValue());
}
@Override
public List<SysMenuDTO> packTreeToDto(List<SysMenu> list) {
List<SysMenuDTO> sysMenuDTOList = new ArrayList<>();
list.stream().forEach(sysMenu -> {
SysMenuDTO sysMenuDTO = new SysMenuDTO();
BeanUtils.copyProperties(sysMenu, sysMenuDTO);
if (CollectionUtils.isNotEmpty(sysMenu.getChildList())) {
sysMenuDTO.setChildList(packTreeToDto(sysMenu.getChildList()));
}
sysMenuDTOList.add(sysMenuDTO);
});
return sysMenuDTOList;
}
/********************************************* End SysMenu Tree *********************************************/
}

@ -6,6 +6,7 @@ import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysConfig;
import cn.estsh.i3plus.pojo.platform.repository.SysConfigRepository;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
@ -114,6 +115,20 @@ public class SysConfigService implements ISysConfigService {
}
@Override
public List findSystemInfoConfigPanasonic(String organizeCode) {
List mailConfig = new ArrayList();
mailConfig.add(SysConfigRDao.getByProperty("configCode", PlatformConstWords.SYSTEM_HOME_LOGO));
mailConfig.add(SysConfigRDao.getByProperty("configCode", PlatformConstWords.SYSTEM_LOGO));
mailConfig.add(SysConfigRDao.getByProperty("configCode", PlatformConstWords.SYSTEM_COMPANY_NAME));
mailConfig.add(SysConfigRDao.getByProperty("configCode", PlatformConstWords.SYSTEM_NAME));
mailConfig.add(SysConfigRDao.getByProperty("configCode", PlatformConstWords.SYSTEM_TITLE_NAME));
mailConfig.add(SysConfigRDao.getByProperty(new String[]{"configCode", "organizeCode"},
new Object[]{PlatformConstWords.SYSTEM_COPYRIGHT,organizeCode}));
return mailConfig;
}
@Override
@ApiOperation(value = "根据code修改系统配置")
public void updateSysConfigByCode(String code, String value) {
SysConfigRDao.updateByProperties("configCode",code,"configValue",value);

@ -25,10 +25,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
import static cn.estsh.i3plus.platform.common.util.CommonConstWords.RESOURCE_PREFIX_MENU;
@ -329,4 +327,47 @@ public class SysMenuService extends CrudService<SysMenu> implements ISysMenuServ
return sysMenuRDao.getByProperty(packBean);
}
@Override
public void deleteSysMenuById(Long id) {
List<Long> idList = new ArrayList<>();
SysMenu sysMenu = sysMenuRDao.getById(id);
if(sysMenu != null){
idList.add(sysMenu.getId());
List<Long> oneList = getIdList(id,idList);
if(oneList != null){
sysMenuRDao.deleteByIds(idList.stream().toArray(Long[]::new));
}
}
}
private List<Long> getIdList(Long id,List<Long> idList){
List<SysMenu> sysMenuTwoList = sysMenuRDao.findByProperty("parentId",id);
if(CollectionUtils.isEmpty(sysMenuTwoList)){
return null;
}
List<Long> twoList = sysMenuTwoList.stream().map(SysMenu::getId).collect(Collectors.toList());
List<SysMenu> sysMenuThreeList = getSysMenuList(twoList);
if(CollectionUtils.isEmpty(sysMenuThreeList)){
return null;
}
List<Long> threeList = sysMenuThreeList.stream().map(SysMenu::getId).collect(Collectors.toList());
List<SysMenu> sysMenuFourList = getSysMenuList(twoList);
if(CollectionUtils.isEmpty(sysMenuFourList)){
return null;
}
List<Long> fourList = sysMenuFourList.stream().map(SysMenu::getId).collect(Collectors.toList());
idList.addAll(twoList);
idList.addAll(threeList);
idList.addAll(fourList);
return idList;
}
private List<SysMenu> getSysMenuList(List<Long> idList){
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getInPackList(idList, "parentId", ddlPackBean);
return sysMenuRDao.findByHqlWhere(ddlPackBean);
}
}

@ -175,7 +175,7 @@ public class SysUserSavePasswordService extends CrudService<SysUserPassword> imp
@Override
public List<SysUserPassword> findPasswordByPassword(String password,Long userId) {
List<SysUserPassword> passwordList = new ArrayList<>();
if(StringUtils.isBlank(password)){
if(StringUtils.isBlank(password) || userId == null){
return passwordList;
}
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();

@ -15,6 +15,7 @@ import cn.estsh.impp.framework.boot.util.*;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -498,6 +499,9 @@ public class SysUserPasswordUtil {
*/
public void checkLoginErrorNumber(String loginName, ResultBean resultBean, Exception e) {
SysUser user = userService.getSysUserByLoginName(loginName);
if (!user.getUserLoginName().equals(loginName)){
user = null;
}
if (Objects.nonNull(user)) {
checkLoginErrorNumber(user.getId(), resultBean, e);
}

@ -1,5 +1,5 @@
#\u672C\u673Aip
impp.server.ip=192.168.1.56
impp.server.ip=192.168.6.140
#\u9879\u76EE\u7AEF\u53E3
server.port=8100
#\u94FE\u8DEF\u8FFD\u8E2Azipkin\u63A7\u5236\u53F0ip\u5730\u5740
@ -60,14 +60,14 @@ spring.datasource.hikari.connection-timeout=30000
##\u4E3B\u6570\u636E\u6E90\uFF0C\u8BFB\u5199
#impp.write.datasource.type=com.zaxxer.hikari.HikariDataSource
impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.write.datasource.jdbc-url=jdbc:mysql://192.168.1.55:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8
impp.write.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8
impp.write.datasource.username=impp_i3_core_user
impp.write.datasource.password=impp_i3_core_pwd
##\u8F85\u6570\u636E\u6E90\uFF0C\u53EA\u8BFB
#impp.read.datasource.type=com.zaxxer.hikari.HikariDataSource
impp.read.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.read.datasource.jdbc-url=jdbc:mysql://192.168.1.55:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8
impp.read.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3306/impp_i3_core?autoReconnect=true&useSSL=false&characterEncoding=utf-8
impp.read.datasource.username=impp_i3_core_user
impp.read.datasource.password=impp_i3_core_pwd
@ -92,7 +92,7 @@ spring.jpa.properties.hibernate.hbm2ddl.auto=update
##############\u5B9A\u65F6\u4EFB\u52A1\u6301\u4E45\u5316##############
impp.schedule.open=true
impp.schedule.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.schedule.datasource.jdbc-url=jdbc:mysql://192.168.1.55:3306/impp_i3_schedule?autoReconnect=true&useSSL=false&characterEncoding=utf-8
impp.schedule.datasource.jdbc-url=jdbc:mysql://192.168.1.240:3306/impp_i3_schedule?autoReconnect=true&useSSL=false&characterEncoding=utf-8
impp.schedule.datasource.username=impp_i3_schedule_user
impp.schedule.datasource.password=impp_i3_schedule_pwd
impp.schedule.datasource.max-connections=20

@ -1,5 +1,7 @@
#\u4F7F\u7528\u914D\u7F6E
spring.profiles.active=test
spring.profiles.active=docker
#\u9879\u76EE\u63CF\u8FF0\u4FE1\u606F\uFF08swagger\u4E2D\u663E\u5F0F\uFF09\uFF0C\u4E2D\u6587\u4F7F\u7528uncode\u8F6C\u7801
desc.application.name=\u6838\u5FC3\u7BA1\u7406\u540E\u53F0
@ -77,3 +79,6 @@ redis.session.db=1
#\u7CFB\u7EDF\u5168\u5C40\u7F13\u5B58\u5E93\uFF0C\u5B58\u653E\u5E73\u53F0\u6838\u5FC3\u6570\u636E\u7F13\u5B58
redis.core.db=2
wms.redis.open=true
filter.ding.menu.id = 112000000,102081502,112000100,112000200,112000300,112000400,112000500,112000501,112000520,112000600,112000700,112000701,112000702,112000800,112000900,112001000,112001100,210009800,210009802,210009801,210009803,210009804,210009805,210009806,210009807
filter.ding.menu.parent.id = 100000000

@ -83,7 +83,11 @@
<artifactId>i3plus-core-icloud</artifactId>
<version>${project.dependency.version}</version>
</dependency>
<!-- <dependency>
<groupId>i3plus.ext.cdm</groupId>
<artifactId>i3plus-ext-cdm-icloud</artifactId>
<version>1.0.0.1</version>
</dependency>-->
<dependency>
<groupId>i3plus.icloud</groupId>
<artifactId>i3plus-icloud-wms</artifactId>

Loading…
Cancel
Save