diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogSystemService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogSystemService.java index 29dfa2f..9313c1a 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogSystemService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysLogSystemService.java @@ -20,6 +20,9 @@ public interface ISysLogSystemService { @ApiOperation(value = "添加系统日志",notes = "添加系统日志") void insertSysLogSystem(SysLogSystem logSystem); + @ApiOperation(value = "造数据系统日志",notes = "造数据") + void insertSysLogBatch(int num,int waitTime); + @ApiOperation(value = "删除日志",notes = "删除日志") void deleteSysLogSystemById(Long id); @@ -31,4 +34,7 @@ public interface ISysLogSystemService { @ApiOperation(value = "系统日志分页复杂查询",notes = "系统日志分页复杂查询") ListPager querySysLogSystemByPager(SysLogSystem logSystem, Pager pager); + + @ApiOperation(value = "系统日志批量删除",notes = "系统日志批量删除") + void deleteSysLogSystemByIds(Long[] ids); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysRoleService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysRoleService.java index db5e921..5897e45 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysRoleService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysRoleService.java @@ -105,6 +105,9 @@ public interface ISysRoleService { @ApiOperation(value = "查信角色信息",notes = "查询指定角色信息") List findSysRoleByInId(Long[] ids); + @ApiOperation(value = "查信用户的所有角色信息",notes = "查信用户的所有角色信息") + List findSysRoleByUser(SysUser user); + /** * 根据id 数据 * diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysToolService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysToolService.java index 5f21c4a..572e371 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysToolService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysToolService.java @@ -32,6 +32,12 @@ public interface ISysToolService { void updateSysTool(SysTool tool); /** + * 修改硬件 + */ + @ApiOperation(value = "造数据") + void insertBatch(int num,int waitTime); + + /** * 查找全部硬件 * @return */ @@ -84,4 +90,10 @@ public interface ISysToolService { */ @ApiOperation(value = "更新设备信息",notes = "根据 ID 批量修改硬件状态信息") void updateSysToolStatusByIds(Long[] ids,Integer status); + + /** + * 查询指定数量设备信息 + */ + @ApiOperation(value = "查询指定数量设备信息",notes = "查询指定数量设备信息") + List findSysToolByTop(int topNum); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ITestService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ITestService.java new file mode 100644 index 0000000..6af881d --- /dev/null +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ITestService.java @@ -0,0 +1,19 @@ +package cn.estsh.i3plus.core.api.iservice.busi; + +import cn.estsh.i3plus.pojo.base.common.Pager; +import io.swagger.annotations.ApiOperation; + +import java.util.List; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2019-02-20 21:23 + * @Modify: + **/ +public interface ITestService { + + @ApiOperation(value = "多表查询") + List queryToolAndToolType(Pager pager); +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java index a0be167..e1a743a 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/AuthController.java @@ -119,12 +119,12 @@ public class AuthController extends CoreBaseController { if(menus != null){ // 封装模块信息 for (SysMenu menu : menus) { - if(menu.getMenuType().equals(CommonEnumUtil.METHOD_LEVEL.MODULE.getValue()) + if(menu != null && menu.getMenuType().equals(CommonEnumUtil.METHOD_LEVEL.MODULE.getValue()) && parentId.equals(menu.getParentId().toString())){ // 封装 功能信息 for (SysMenu sysMenu : menus) { - if(sysMenu.getMenuType().equals(CommonEnumUtil.METHOD_LEVEL.METHOD.getValue()) + if (sysMenu != null && sysMenu.getMenuType().equals(CommonEnumUtil.METHOD_LEVEL.METHOD.getValue()) && menu.getId().longValue() == sysMenu.getParentId().longValue()){ if(!menu.getChildList().contains(sysMenu)){ menu.getChildList().add(sysMenu); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index e3d1a07..f1a3902 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -104,7 +104,7 @@ public class WhiteController extends CoreBaseController { e.printStackTrace(); } - SessionUser user = userService.queryUserLogin(loginName,loginPwd,languageCode); + SessionUser user = userService.queryUserLogin(loginName,loginPwd.trim(),languageCode); String redisKey = CommonConstWords.USER_LOGIN_ERROR + "_" + user.getUser().getId(); redisCore.deleteKey(redisKey); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ComputePi.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ComputePi.java new file mode 100644 index 0000000..b757e75 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/ComputePi.java @@ -0,0 +1,101 @@ +package cn.estsh.i3plus.core.apiservice.controller.busi; + +import java.math.BigDecimal; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2019-02-22 17:40 + * @Modify: + **/ +public class ComputePi { + /** + * 较著名的表示π的级数有莱布尼茨级数   π/4=1-1/3+1/5-1/7+1/9…… + * 以及威廉姆斯无穷乘积式   π/2=2*2/3*4/3*4/5*6/5*6/7*8/7*8/9…… + */ + + /** + * constants used in pi computation + */ + private static final BigDecimal FOUR = BigDecimal.valueOf(4); + + /** + * rounding mode to use during pi computation + */ + private static final int roundingMode = BigDecimal.ROUND_HALF_EVEN; + + /** + * Compute the value of pi to the specified number of + * digits after the decimal point. The value is + * computed using Machin's formula: + *

+ * pi/4 = 4*arctan(1/5) - arctan(1/239) + *

+ * and a power series expansion of arctan(x) to + * sufficient precision. + */ + + public static void main(String[] args) { + int digits = 8; //精度10万位 + String pi = computePi(digits).toString(); + System.out.println("length: " + pi.length()); + System.out.println(pi); + + } + + public static void computePiByLBNZ() { + + } + + public static void computePiByWLMS() { + + } + + public static BigDecimal computePi(int digits) { + int scale = digits + 5; + BigDecimal arctan1_5 = arctan(5, scale); + BigDecimal arctan1_239 = arctan(239, scale); + BigDecimal pi = arctan1_5.multiply(FOUR).subtract(arctan1_239).multiply(FOUR); + return pi.setScale(digits, BigDecimal.ROUND_HALF_UP); + } + + + /** + * Compute the value, in radians, of the arctangent of + * the inverse of the supplied integer to the specified + * number of digits after the decimal point. The value + * is computed using the power series expansion for the + * arc tangent: + *

+ * arctan(x) = x - (x^3)/3 + (x^5)/5 - (x^7)/7 + + * (x^9)/9 ... + */ + public static BigDecimal arctan(int inverseX, int scale) { + BigDecimal result, numer, term; + BigDecimal invX = BigDecimal.valueOf(inverseX); + BigDecimal invX2 = BigDecimal.valueOf(inverseX * inverseX); + + numer = BigDecimal.ONE.divide(invX, scale, roundingMode); + + result = numer; + int i = 1; + do { + numer = + numer.divide(invX2, scale, roundingMode); + int denom = 2 * i + 1; + term = + numer.divide(BigDecimal.valueOf(denom), + scale, roundingMode); + if ((i % 2) != 0) { + result = result.subtract(term); + } else { + result = result.add(term); + } + i++; + } while (term.compareTo(BigDecimal.ZERO) != 0); + + return result; + } + +} \ No newline at end of file diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java index a5b8d2f..0a04177 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java @@ -51,7 +51,6 @@ public class PersonnelController extends CoreBaseController { @Autowired private ISysFileService fileService; - @PostMapping(value="/user-detail/insert") @ApiOperation(value="添加用户信息",notes="返回内容添加用户信息") public ResultBean insertUserDetailModel(UserDetailModel model) { @@ -470,7 +469,7 @@ public class PersonnelController extends CoreBaseController { * @param isCheckId * @throws Exception */ - private void checkUserDetailModel(UserDetailModel model,boolean isCheckId)throws Exception{ + public void checkUserDetailModel(UserDetailModel model,boolean isCheckId)throws Exception{ if(isCheckId){ ValidatorBean.beginValid(model) .notNull("userInfoId", model.getUserInfoId()) @@ -495,7 +494,7 @@ public class PersonnelController extends CoreBaseController { * @param model * @throws Exception */ - private void checkUserModel(UserDetailModel model)throws Exception{ + public void checkUserModel(UserDetailModel model)throws Exception{ ValidatorBean.beginValid(model) .notNull("userInfoId", model.getUserInfoId()) .notNull("userId", model.getUserId()) @@ -513,7 +512,7 @@ public class PersonnelController extends CoreBaseController { * @param user * @throws Exception */ - private void initUser(UserDetailModel model ,SysUser user)throws Exception{ + public void initUser(UserDetailModel model ,SysUser user)throws Exception{ if(user != null && model != null){ user.setUserLoginName(model.getUserLoginName()); user.setDepartmentId(Long.parseLong(model.getUserDepartmentId())); @@ -532,7 +531,7 @@ public class PersonnelController extends CoreBaseController { * @param info * @param model */ - private void refreshRef(SysUser user,SysUserInfo info,UserDetailModel model){ + public void refreshRef(SysUser user,SysUserInfo info,UserDetailModel model){ if(user != null){ // 刷新账号 部门关系 personnelService.refreshRefSysUserDepartment(user.getId(), StringTool.getArrayLong(model.getUserDepartmentIdList())); @@ -552,17 +551,17 @@ public class PersonnelController extends CoreBaseController { * 更新用户密码 * @param user */ - private void refreshSysUserPassword(SysUser user)throws Exception{ + public void refreshSysUserPassword(SysUser user)throws Exception{ if(user != null){ if(user.getId() != null){ // 更新密码 if(!StringUtils.isAnyBlank(user.getUserLoginPassword())){ // 使用新密码 - user.setUserLoginPassword(EncryptTool.hexMD5(user.getUserLoginPassword())); + user.setUserLoginPassword(EncryptTool.hexMD5(user.getUserLoginPassword().trim())); }else{ //使用旧密码 SysUser sysUser = personnelService.getSysUserById(user.getId()); user.setUserLoginPassword(sysUser.getUserLoginPassword()); } }else { // 创建密码 - user.setUserLoginPassword(EncryptTool.hexMD5(user.getUserLoginPassword())); + user.setUserLoginPassword(EncryptTool.hexMD5(user.getUserLoginPassword().trim())); } } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDashboardController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDashboardController.java index 2c9e4a6..a5d6e83 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDashboardController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDashboardController.java @@ -145,7 +145,7 @@ public class SysDashboardController extends CoreBaseController { LOGGER.info("getLevelLogNum:{}",redisCore); try { // 保持时间,key统一 - String redisKey = PlatformConstWords.REDIS_DASHBOARD_LOG_NUM + "_" + TimeTool.getNowTime("yyyyMMddhhmmss"); + String redisKey = PlatformConstWords.REDIS_DASHBOARD_LOG_NUM + "_" + TimeTool.getNowTime("yyyyMMddhhmms"); Map dashboardData = redisCore.getHashMap(redisKey); LOGGER.info("getLevelLogNumredisKey:{},dashboardData:{}",redisKey,dashboardData); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrganizeController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrganizeController.java index 94ac971..b9be58b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrganizeController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrganizeController.java @@ -102,7 +102,7 @@ public class SysOrganizeController extends CoreBaseController{ ValidatorBean.checkIsNumber(idStr.toString(), "您要删除的组织不存在"); organizeService.deleteSysOrganizeById(Long.parseLong(idStr)); - return ResultBean.success().setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); } catch (Exception e) { diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index 42b02bb..e898673 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -225,7 +225,7 @@ public class SysUserController extends CoreBaseController{ personnelService.checkSysUserPassword(newPwd); - sysUserService.updateSysUserPassword(sessionUser.getUser().getId(),password,newPwd); + sysUserService.updateSysUserPassword(sessionUser.getUser().getId(),password,newPwd.trim()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch(ImppBusiException busExcep){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java new file mode 100644 index 0000000..ec75d0f --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestController.java @@ -0,0 +1,1052 @@ +package cn.estsh.i3plus.core.apiservice.controller.busi; + +import cn.estsh.i3plus.core.api.iservice.busi.*; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.model.platform.UserDetailModel; +import cn.estsh.i3plus.pojo.platform.bean.*; +import cn.estsh.i3plus.pojo.platform.platbean.SysLogSystem; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.eureka.EurekaClientHealthCheck; +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 io.swagger.annotations.ApiParam; +import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.persistence.EntityManager; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; +import java.util.*; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2019-02-19 11:29 + * @Modify: + **/ +@RestController +@Api(description = "IMPP性能测试") +@RequestMapping("/impp/white/sys-test") +public class TestController { + public static final Logger LOGGER = LoggerFactory.getLogger(TestController.class); + + String TEXT = "飓风黑兹尔是1954年大西洋飓风季期间造成死亡人数最多、经济损失最惨重的飓风。这场风暴夺走了海地多达1000人的生命,然后又以四级飓风强度从南、北卡罗莱纳州边境附近袭击美国,造成95人丧生。之后黑兹尔转变成温带风暴,但仍然致使81人遇难,其中大部分来自多伦多。由于风暴造成了重大人员伤亡和财产损失,其名称“黑兹尔”因此从大西洋风暴命名名单上退役。黑兹尔摧毁了海地40%的咖啡树和50%的可可作物,对当地经济的影响持续了数年之久。飓风在南、北卡罗莱纳州登陆,冲击点附近的大部分海滨住宅被毁。气旋从北卡罗莱纳州沿大西洋海岸北上,先后影响了弗吉尼亚州、西弗吉尼亚州、马里兰州、特拉华州、新泽西州、宾夕法尼亚州和纽约州,产生的阵风时速有近160公里,造成的经济损失高达3.08亿美元。多伦多市内及周边有许多溪流溢出,导致严重的洪涝灾害。加拿大遭受的损失达到1.35亿加拿大元。由于缺少应对热带气旋的经验,加上风暴强度的保持时间异常之长,多伦多所受影响的严重程度是前所未有的"; + + SnowflakeIdMaker snowflakeIdMaker = new SnowflakeIdMaker(); + + @Autowired + private PersonnelController personnelController; + + @Autowired + private IPersonnelService personnelService; + + @Autowired + private ISysLogSystemService syslogSystemService; + + @Autowired + private ISysToolService sysToolService; + + @Autowired + private EntityManager entityManager; + + @Autowired + public ISystemResourceService systemResourceService; + + @Autowired + private ITestService testService; + + @Autowired + private EurekaClientHealthCheck healthCheck; + + @Autowired + private ISysPositionService positionService; + + @Autowired + private ISysOrganizeService organizeService; + + @Autowired + private ISysDepartmentService departmentService; + + @Autowired + private ISysMenuService menuService; + + @Autowired + private ISysRoleService roleService; + + @Resource(name = "redisRes") + private ImppRedis redisRes; + + /** + * 压力测试 + * + * @param num 对象生成数量/π计算线程数 + * @param cpu 是否进行cpu测试 + * @param piLength π精确位数 + * @param piLength π精确位数 + * @param ram 是否进行内存测试 + * @return + */ + @GetMapping(value = "/test-pressure") + @ApiOperation(value = "压力测试", notes = "压力测试") + public ResultBean testPressure(int num, boolean cpu, int piLength, boolean ram) { + try { + long time = System.currentTimeMillis(); + //测试内存 + if (ram) { + SysUser user; + SysDepartment sysDepartment; + List userList = new ArrayList(); + List deptList = new ArrayList(); + + for (int i = 0; i < num; i++) { + // 生成部门计划 + for (int j = 0; j < 10; j++) { + sysDepartment = new SysDepartment(); + sysDepartment.setName("部门名称"); + sysDepartment.setDepartmentCode("code"); + sysDepartment.setDepartmentSort(j); + deptList.add(sysDepartment); + } + + user = new SysUser(); + user.setDepartmentList(deptList); + userList.add(user); + } + } + + // 测试cpu性能 + if (cpu) { + for (int i = 0; i < num; i++) { + TestThread th1 = new TestThread(piLength); + th1.start(); + } + } + + return ResultBean.success("查询成功").setResultObject("耗时:" + (System.currentTimeMillis() - time)) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + /** + * 数据库操作测试 + * + * @param num 操作数量 + * @param insert 是否进行新增测试 + * @param update 是否进行修改测试 + * @param batchUpdate 是否批量修改 + * @param delete 是否进行删除测试 + * @param batchDelete 是否批量删除 + * @return + */ + @GetMapping(value = "/test-db") + @ApiOperation(value = "数据库操作测试", notes = "数据库操作测试") + public ResultBean testDBCRUD(int num, boolean mongo, boolean insert, boolean update, boolean batchUpdate, boolean delete, boolean batchDelete, int waitTime) { + try { + long time = System.currentTimeMillis(); + Pager page = new Pager(); + page.setCurrentPage(1); + page.setPageSize(num); + List list; + SysTool sysTool; + SysLogSystem sysLogSystem; + + long t1 = System.currentTimeMillis(); + + // 新增数据 + if (insert) { + for (int i = 0; i < num * 1000; i++) { + t1 = System.currentTimeMillis(); + if (!mongo) { + sysTool = new SysTool(); + sysTool.setName("新增测试"); + sysTool.setToolTypeId(1073140662133723136L); + sysTool.setToolIp("192.168.1.35"); + sysTool.setToolPort(8888); + sysTool.setToolDescription("描述新增测试"); + + sysToolService.insertSysTool(sysTool); + + this.wait(waitTime); + } else { + sysLogSystem = new SysLogSystem(); + sysLogSystem.setLogClass("新增测试class"); + sysLogSystem.setLogMethod("新增测试method"); + sysLogSystem.setLogArgs("新增测试参数"); + sysLogSystem.setExecuteTime(0L); + sysLogSystem.setArgsCount(1); + sysLogSystem.setLogDetail("2333"); + sysLogSystem.setLogLevel(ImppEnumUtil.LOG_LEVEL.DEBUG.getValue()); + sysLogSystem.setLogModuleId(CommonEnumUtil.SOFT_TYPE.CORE.getValue()); + sysLogSystem.setLogTitle("新增测试"); + + syslogSystemService.insertSysLogSystem(sysLogSystem); + + this.wait(waitTime); + } + + LOGGER.info("插入耗时:" + (System.currentTimeMillis() - t1) + ",idx:" + i); + } + } + + if (update || delete) { + // 查询批量修改或删除的数据 + if (mongo) { + list = syslogSystemService.querySysLogSystemByPager(null, page).getObjectList(); + } else { + list = sysToolService.findSysToolByTop(num); + } + + // 是否进行修改测试,并判断进行批量或逐次修改 + if (!mongo && update && batchUpdate) { + Long[] ids = new Long[num]; + for (int i = 0; i < num; i++) { + ids[i] = ((SysTool) list.get(i)).getId(); + } + sysToolService.updateSysToolStatusByIds(ids, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + } else if (!mongo && update) { + for (Object obj : list) { + sysTool = (SysTool) obj; + sysTool.setName("修改测试" + System.currentTimeMillis()); + sysTool.setToolTypeId(1073140662133723136L); + sysTool.setToolIp("192.168.1.35"); + sysTool.setToolPort(8888); + sysTool.setToolDescription("描述修改测试" + System.currentTimeMillis()); + + sysToolService.updateSysTool(sysTool); + } + } + + // 是否进行删除测试,并判断进行批量或逐次删除 + if (delete && batchDelete) { + Long[] ids = new Long[num]; + for (int i = 0; i < num; i++) { + if (mongo) { + ids[i] = ((SysLogSystem) list.get(i)).getId(); + } else { + ids[i] = ((SysTool) list.get(i)).getId(); + } + } + if (mongo) { + syslogSystemService.deleteSysLogSystemByIds(ids); + } else { + sysToolService.deleteSysToolByIds(ids); + } + } else if (delete) { + for (Object obj : list) { + if (mongo) { + sysLogSystem = (SysLogSystem) obj; + syslogSystemService.deleteSysLogSystemById(sysLogSystem.getId()); + } else { + sysTool = (SysTool) obj; + sysToolService.deleteSysToolById(sysTool.getId()); + } + } + } + } + + return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time) + ",数据量:" + num) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + + /** + * 数据库操作测试 + * + * @param num 操作数量 + * @return + */ + @GetMapping(value = "/data-insert") + @ApiOperation(value = "数据库造数据", notes = "数据库造数据") + public ResultBean dateInsert(int num, boolean mongo, int waitTime) { + try { + long time = System.currentTimeMillis(); + SysTool sysTool; + SysLogSystem sysLogSystem; + long t1 = System.currentTimeMillis(); + + // 新增数据 + if (!mongo) { + sysToolService.insertBatch(num, waitTime); + } else { + syslogSystemService.insertSysLogBatch(num, waitTime); + } + + return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time) + ",数据量:" + num) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + /** + * 缓存操作效率 + * + * @param redisKey 缓存key + * @param num 操作数量 + * @param batchPutCache 是否批量操作缓存 + * @param putCache 是否进行放入缓存操作 + * @param db 是否从数据库查询数据 + * @param mongo 是否从mongodb查询数据 + * @param cacheTime 缓存时间 + * @param deleteCache 是否进行缓存删除操作 + * @return + */ + @GetMapping(value = "/test-db-redis") + @ApiOperation(value = "缓存操作测试", notes = "数据库操作测试") + public ResultBean testDBRedis(String redisKey, int num, boolean batchPutCache, boolean putCache, boolean db, boolean mongo, int cacheTime, boolean deleteCache) { + try { + long time = System.currentTimeMillis(); + List list = null; + + // 是否放入缓存 + if (putCache) { + // 是否需要从数据库中查询 + if (db) { + Pager page = new Pager(); + page.setCurrentPage(1); + page.setPageSize(num); + + //是否对mongodb操作 + if (mongo) { + list = sysToolService.findSysToolByTop(num); + } else { + list = syslogSystemService.querySysLogSystemByPager(null, page).getObjectList(); + } + } else { + // 缓存测试 + list = new ArrayList(); + SysTool sysTool; + for (int i = 0; i < num; i++) { + sysTool = new SysTool(); + sysTool.setName("缓存对象"); + sysTool.setToolTypeId(1073141149285355520L); + sysTool.setToolIp("192.168.1.1"); + sysTool.setToolPort(8080); + sysTool.setToolStatus(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + sysTool.setToolConnType(ImppEnumUtil.TOOL_CONN_TYPE.USB.getValue()); + sysTool.setToolDataType(ImppEnumUtil.TOOL_DATA_TYPE.STRING.getValue()); + sysTool.setToolDescription("描述"); + + list.add(sysTool); + } + } + + // 批量或是逐次放入缓存 + if (batchPutCache) { + redisRes.putList(redisKey, list, cacheTime); + } else { + for (int i = 0; i < list.size(); i++) { + redisRes.putObject(redisKey + i, list.get(i), cacheTime); + } + } + } + + if (deleteCache && batchPutCache) { + redisRes.deleteKey(redisKey); + } else if (deleteCache) { + for (int i = 0; i < list.size(); i++) { + redisRes.putObject(redisKey + i, list.get(i), cacheTime); + } + } + + return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time) + ",数据量:" + list.size()) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + /** + * 数据库查询测试 + * + * @param num 操作数据量 + * @param mongo 是否使用mongodb + * @param needCache 是否使用缓存 + * @param cacheTime 缓存时间 + * @return + */ + @GetMapping(value = "/test-db-query") + @ApiOperation(value = "数据库查询测试", notes = "数据库查询测试") + public ResultBean testDBQuery(int num, boolean mongo, boolean needCache, int cacheTime) { + try { + long time = System.currentTimeMillis(); + Pager page = new Pager(); + page.setCurrentPage(1); + page.setPageSize(num); + List list; + + // 是否放入缓存 + if (needCache) { + // 是否使用mongodb + if (mongo) { + list = redisRes.getList(SysLogSystem.class.getSimpleName() + num, 0, num); + if (list == null || list.size() == 0) { + list = syslogSystemService.querySysLogSystemByPager(null, page).getObjectList(); + redisRes.putList(SysLogSystem.class.getSimpleName() + num, list, cacheTime); + } + } else { + list = redisRes.getList(SysTool.class.getSimpleName() + num, 0, num); + if (list == null || list.size() == 0) { + list = sysToolService.findSysToolByTop(num); + redisRes.putList(SysTool.class.getSimpleName() + num, list, cacheTime); + } + } + } else { + // 是否使用mongodb + if (mongo) { + list = syslogSystemService.querySysLogSystemByPager(null, page).getObjectList(); + } else { + list = sysToolService.findSysToolByTop(num); + } + } + + return ResultBean.success("调用完成 耗时:" + (System.currentTimeMillis() - time) + ",数据量:" + list.size()) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + /** + * 吞吐量测试 + * + * @param num 对象数量 + * @param objectLevel 对象等级 1.单对象,2.大对象,3.复杂对象 + * @return + */ + @GetMapping(value = "/test-throughput") + @ApiOperation(value = "吞吐量测试", notes = "吞吐量测试") + public ResultBean testThroughput(int num, int objectLevel) { + try { + long time = System.currentTimeMillis(); + List list = new ArrayList(); + + SysTool sysTool; + SessionUser sessionUser; + SysUser sysUser; + SysUserInfo sysUserInfo; + SysDepartment sysDept; + List deptList; + + for (int i = 0; i < num; i++) { + switch (objectLevel) { + // 单对象 + case 1: + sysTool = new SysTool(); + sysTool.setName("单对象测试"); + sysTool.setToolTypeId(1073141149285355520L); + sysTool.setToolIp("192.168.1.1"); + sysTool.setToolPort(8080); + sysTool.setToolStatus(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + sysTool.setToolConnType(ImppEnumUtil.TOOL_CONN_TYPE.USB.getValue()); + sysTool.setToolDataType(ImppEnumUtil.TOOL_DATA_TYPE.STRING.getValue()); + sysTool.setToolDescription("描述"); + + list.add(sysTool); + break; + // 大对象 + case 2: + deptList = new ArrayList<>(); + + for (int j = 0; j < 300; j++) { + sysDept = new SysDepartment(); + sysDept.setName("部门名称"); + sysDept.setDepartmentCode("部门code"); + sysDept.setParentNameRdd("上级部门名称"); + + deptList.add(sysDept); + } + + sysUser = new SysUser(); + sysUser.setUserName("用户名"); + sysUser.setUserStatus(CommonEnumUtil.USER_STATUS.ENABLE.getValue()); + sysUser.setUserLoginPassword("123456"); + sysUser.setDepartmentId(1L); + sysUser.setOrganizeId(1L); + sysUser.setDepartmentNameRdd("部门名称"); + sysUser.setOrganizeNameRdd("组织名称"); + sysUser.setUserLoginNum(1); + sysUser.setDepartmentList(deptList); + + list.add(sysUser); + break; + // 复杂对象 + case 3: + deptList = new ArrayList<>(); + sysDept = new SysDepartment(); + sysDept.setName("部门名称"); + sysDept.setDepartmentCode("部门code"); + sysDept.setParentNameRdd("上级部门名称"); + deptList.add(sysDept); + + sysDept.setChildList(deptList); + + sysUser = new SysUser(); + sysUser.setUserName("用户名"); + sysUser.setUserStatus(CommonEnumUtil.USER_STATUS.ENABLE.getValue()); + sysUser.setUserLoginPassword("123456"); + sysUser.setDepartmentId(1L); + sysUser.setOrganizeId(1L); + sysUser.setDepartmentNameRdd("部门名称"); + sysUser.setOrganizeNameRdd("组织名称"); + sysUser.setUserLoginNum(1); + sysUser.setDepartment(sysDept); + sysUser.setDepartmentList(deptList); + + sysUserInfo = new SysUserInfo(); + sysUserInfo.setName("yonghuming"); + sysUserInfo.setOrganizeId(1L); + sysUserInfo.setPositionId(1L); + sysUserInfo.setDepartmentNameRdd("部门名称"); + sysUserInfo.setOrganizeNameRdd("组织名称"); + + sessionUser = new SessionUser(); + sessionUser.setUserName("用户名"); + sessionUser.setLanguageCode("zh/CN"); + sessionUser.setUserCode("10086"); + sessionUser.setUserType("测试用户"); + sessionUser.setUserId(1L); + sessionUser.setUser(sysUser); + sessionUser.setUserInfo(sysUserInfo); + + list.add(sessionUser); + break; + } + } + + return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time) + ",数量:" + list.size()) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + + /** + * 可靠性测试 + * + * @param needChangeHealth 是否需要修改健康状态 + * @param serverHealth 设置微服务健康状态 + * @param needSleep 是否需要线程睡眠 + * @param sleepTime 睡眠时间ms + * @return + */ + @GetMapping(value = "/test-network") + @ApiOperation(value = "网络测试", notes = "网络测试") + public ResultBean testNetwork(boolean needChangeHealth, boolean serverHealth, boolean needSleep, int sleepTime) { + try { + long time = System.currentTimeMillis(); + + if (needChangeHealth) { + healthCheck.setHealth(serverHealth); + } + + if (needSleep) { + Thread.sleep(sleepTime); + } + + return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time)) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + /** + * 多表查询 + * + * @param num 查询数量 + * @param needCache 是否使用缓存 + * @param cacheTime 缓存时间 + * @return + */ + @GetMapping(value = "/test-complex-query") + @ApiOperation(value = "多表查询", notes = "多表查询") + public ResultBean testComplexQuery(int num, boolean needCache, int cacheTime) { + try { + long time = System.currentTimeMillis(); + Pager page = new Pager(); + page.setCurrentPage(1); + page.setPageSize(num); + List list; + + if (needCache) { + list = redisRes.getList(Object.class.getSimpleName() + num, 0, num); + if (list == null || list.size() == 0) { + list = testService.queryToolAndToolType(page); + redisRes.putList(SysTool.class.getSimpleName() + num, list, cacheTime); + } + } else { + list = testService.queryToolAndToolType(page); + } + + return ResultBean.success("调用完成-耗时:" + (System.currentTimeMillis() - time) + ",数量:" + list.size()) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @GetMapping(value = "/test-gc") + @ApiOperation(value = "垃圾回收", notes = "垃圾回收") + public ResultBean gc() { + try { + System.gc(); + return ResultBean.success("调用完成").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @GetMapping(value = "/test-user-detail-model") + @ApiOperation(value = "用户数据", notes = "用户数据") + public void testUserDetailModel() { + List roleList = roleService.findSysRoleAll(); + List positionList = positionService.listSysPosition(); + List departmentList = departmentService.listSysDepartment(); + for (int l = 0; l < 100; l++) { + + UserDetailModel model = new UserDetailModel(); + List roleIds = new ArrayList<>(); + List positionIds = new ArrayList<>(); + List departmentIds = new ArrayList<>(); + + for (int i = 0; i < new Random().nextInt(10); i++) { + SysRole role = roleList.get(new Random().nextInt(roleList.size() - 1)); + roleIds.add(role.getId().toString()); + } + + for (int i = 0; i < new Random().nextInt(10); i++) { + SysPosition position = positionList.get(new Random().nextInt(positionList.size() - 1)); + positionIds.add(position.getId().toString()); + } + + for (int i = 0; i < new Random().nextInt(10); i++) { + SysDepartment department = departmentList.get(new Random().nextInt(departmentList.size() - 1)); + departmentIds.add(department.getId().toString()); + } + + + model.setUserInfoId(System.currentTimeMillis() + snowflakeIdMaker.nextId() + ""); + model.setUserId(System.currentTimeMillis() + snowflakeIdMaker.nextId() + ""); + model.setInfoName(RandomStringUtils.random(5, TEXT)); + model.setUserPhone(RandomStringUtils.random(11, false, true)); + model.setUserEmail(RandomStringUtils.random(15, true, true)); + model.setInfoEmpNo(RandomStringUtils.random(10, true, true)); + model.setUserLoginName(RandomStringUtils.random(20, true, true)); + model.setUserLoginPassword("123456"); + model.setInfoPositionId(positionList.get(0).getId().toString()); + model.setInfoDepartmentId(departmentList.get(0).getId().toString()); + model.setUserDepartmentId(departmentList.get(0).getId().toString()); + model.setUserRoleIdList(roleIds); + model.setUserDepartmentIdList(departmentIds); + model.setInfoPositionIdList(positionIds); + model.setInfoDepartmentIdList(departmentIds); + + + try { + SysUser user = model.getSysUser(); + SysUserInfo info = model.getSysUserInfo(); + + init(user); + init(info); + + if (StringUtils.isBlank(info.getUserJoinDate())) { + info.setUserJoinDate(TimeTool.getToday()); + } + + info.setUserInfoStatus(CommonEnumUtil.USER_INFO_STATUS.INCUMBENT.getValue()); + info.setUserLoginNum(0); + info.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); + + user.setUserType(CommonEnumUtil.USER_TYPE.USER.getValue()); + user.setUserStatus(CommonEnumUtil.USER_STATUS.ENABLE.getValue()); + user.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); + user.setUserLoginNum(0); + + SysDepartment infoDepartment = personnelService.getSysDepartmentById(Long.parseLong(model.getInfoDepartmentId())); + if (infoDepartment == null) { + ValidatorBean.checkNotNull(infoDepartment, "用户主部门不存在"); + } + SysOrganize infoOrganize = personnelService.getSysOrganizeById(infoDepartment.getOrganizeId()); + SysPosition position = personnelService.getSysPositionById(Long.parseLong(model.getInfoPositionId())); + if (infoDepartment == null) { + ValidatorBean.checkNotNull(position, "用户主岗位存在"); + } + + SysDepartment userDepartment = personnelService.getSysDepartmentById(Long.parseLong(model.getUserDepartmentId())); + if (userDepartment == null) { + ValidatorBean.checkNotNull(userDepartment, "账号主部门不存在"); + } + SysOrganize userOrganize = personnelService.getSysOrganizeById(userDepartment.getOrganizeId()); + + info.setDepartmentId(infoDepartment.getId()); + info.setDepartmentNameRdd(infoDepartment.getName()); + info.setOrganizeId(infoOrganize.getId()); + info.setOrganizeNameRdd(infoOrganize.getName()); + info.setOrganizeCode(infoOrganize.getOrganizeCode()); + info.setPositionId(position.getId()); + info.setPositionNameRdd(position.getName()); + personnelService.saveSysUserInfo(info); + + user.setDepartmentId(userDepartment.getId()); + user.setDepartmentNameRdd(userDepartment.getName()); + user.setOrganizeId(userOrganize.getId()); + user.setOrganizeNameRdd(userOrganize.getName()); + user.setOrganizeCode(userOrganize.getOrganizeCode()); + user.setUserInfoId(info.getId()); + personnelController.refreshSysUserPassword(user); + personnelService.saveSysUser(user); + + info.setUserId(user.getId()); + personnelService.saveSysUserInfo(info); + + // 关系 刷新 + personnelController.refreshRef(user, info, model); + + } catch (ImppBusiException busExcep) { + } catch (Exception e) { + } + } + } + + @GetMapping(value = "/test-user-detail") + @ApiOperation(value = "用户数据", notes = "用户数据") + public void testUserInfo() throws Exception { + String PATH = new String(File.separator + "C:\\test\\user"); + List roleList = roleService.findSysRoleAll(); + List positionList = positionService.listSysPosition(); + List departmentList = departmentService.listSysDepartment(); + + List userList = new ArrayList<>(); + List userInfoList = new ArrayList<>(); + List refUserRoleList = new ArrayList<>(); + List refUserDepartmentList = new ArrayList<>(); + List refUserInfoDepartmentList = new ArrayList<>(); + List refUserPositionList = new ArrayList<>(); + + List refUserRoleNameList ; + List refUserPositionNameList ; + List refUserDepartmentNameList ; + + SysUser user; + SysUserInfo userInfo; + SysRefUserRole refUserRole; + SysRefUserDepartment refUserDepartment; + SysRefUserInfoDepartment refUserInfoDepartment; + SysRefUserPosition refUserPosition; + SysDepartment department = null; + SysPosition position = null; + + for (int i = 0; i < 1000000; i++) { + System.out.println("造数据 ->" + i); + user = new SysUser(); + userInfo = new SysUserInfo(); + refUserRoleNameList = new ArrayList<>(); + refUserPositionNameList = new ArrayList<>(); + refUserDepartmentNameList = new ArrayList<>(); + + init(user); + init(userInfo); + + for (int j = 0; j < 2; j++) { + SysRole role = roleList.get(new Random().nextInt(roleList.size() - 1)); + if(role != null){ + refUserRole = new SysRefUserRole(); + init(refUserRole); + + refUserRole.setRoleId(role.getId()); + refUserRole.setRoleNameRdd(role.getName()); + refUserRole.setUserId(user.getId()); + refUserRole.setUserNameRdd(user.getUserName()); + + refUserRoleNameList.add(role.getName()); + refUserRoleList.add(refUserRole); + } + } + + for (int j = 0; j < 3; j++) { + position = positionList.get(new Random().nextInt(positionList.size() - 1)); + if(position != null){ + refUserPosition = new SysRefUserPosition(); + init(refUserPosition); + + refUserPosition.setUserId(userInfo.getId()); + refUserPosition.setUserNameRdd(userInfo.getName()); + refUserPosition.setPositionId(position.getId()); + refUserPosition.setPositionNameRdd(position.getName()); + + refUserPositionNameList.add(position.getName()); + + refUserPositionList.add(refUserPosition); + } + } + + for (int j = 0; j < 3; j++) { + department = departmentList.get(new Random().nextInt(departmentList.size() - 1)); + + if(department != null){ + refUserDepartment= new SysRefUserDepartment(); + refUserInfoDepartment = new SysRefUserInfoDepartment(); + + init(refUserDepartment); + init(refUserInfoDepartment); + + refUserDepartment.setDepartmentId(department.getId()); + refUserDepartment.setDepartmentNameRdd(department.getName()); + refUserDepartment.setOrganizeNameRdd(department.getOrganizeNameRdd()); + refUserDepartment.setOrganizeId(department.getOrganizeId()); + refUserDepartment.setOrganizeCode(department.getOrganizeCode()); + refUserDepartment.setUserId(user.getId()); + refUserDepartment.setUserNameRdd(user.getUserName()); + + refUserInfoDepartment.setDepartmentId(department.getId()); + refUserInfoDepartment.setDepartmentNameRdd(department.getName()); + refUserInfoDepartment.setOrganizeNameRdd(department.getOrganizeNameRdd()); + refUserInfoDepartment.setOrganizeId(department.getOrganizeId()); + refUserInfoDepartment.setOrganizeCode(department.getOrganizeCode()); + refUserInfoDepartment.setUserId(user.getId()); + refUserInfoDepartment.setUserNameRdd(user.getUserName()); + + refUserDepartmentNameList.add(department.getName()); + + refUserDepartmentList.add(refUserDepartment); + refUserInfoDepartmentList.add(refUserInfoDepartment); + } + } + + userInfo.setDepartmentNamesRdd(StringUtils.join(refUserDepartmentNameList)); + userInfo.setDepartmentId(department.getId()); + userInfo.setDepartmentNameRdd(department.getName()); + userInfo.setOrganizeId(department.getOrganizeId()); + userInfo.setOrganizeNameRdd(department.getOrganizeNameRdd()); + userInfo.setOrganizeCode(department.getOrganizeCode()); + userInfo.setPositionId(position.getId()); + userInfo.setPositionNameRdd(position.getName()); + userInfo.setPositionNamesRdd(StringUtils.join(refUserPositionNameList,",")); + userInfo.setName(RandomStringUtils.random(5, TEXT)); + userInfo.setUserEmpNo(RandomStringUtils.random(10, true, true)); + userInfo.setUserInfoStatus(CommonEnumUtil.USER_INFO_STATUS.INCUMBENT.getValue()); + userInfo.setUserLoginNum(0); + userInfo.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); + userInfo.setUserId(user.getId()); + + user.setUserType(CommonEnumUtil.USER_TYPE.USER.getValue()); + user.setUserStatus(CommonEnumUtil.USER_STATUS.ENABLE.getValue()); + user.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); + user.setUserLoginNum(0); + user.setDepartmentNamesRdd(StringUtils.join(refUserDepartmentNameList,",")); + user.setDepartmentId(department.getId()); + user.setDepartmentNameRdd(department.getName()); + user.setUserPhone(RandomStringUtils.random(11, false, true)); + user.setUserEmail(RandomStringUtils.random(15, true, true)); + user.setUserLoginName(RandomStringUtils.random(20, true, true)); + user.setUserLoginPassword("123456"); + user.setUserEmpNo(userInfo.getUserEmpNo()); + + userList.add(user); + userInfoList.add(userInfo); + } + + System.out.println("写文件 sys_ref_user_position->" ); + new Thread(new Runnable() { + @Override + public void run() { + try { + FileWriter writer = new FileWriter(PATH+"/SysRefUserPosition.sql", true); + for (SysRefUserPosition ref : refUserPositionList) { + String txt = new String("INSERT INTO sys_ref_user_position (id, create_date, create_user, is_deleted," + + " is_valid, modify_date, modify_user, position_id, position_name_rdd, user_id, user_name_rdd) VALUES (" + + " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+"," + + " "+ref.getIsValid()+", '"+ref.getModifyUser()+"', '"+ref.getModifyDatetime()+"', "+ref.getPositionId()+"," + + " '"+ref.getPositionNameRdd()+"', "+ref.getUserId()+", '"+ref.getUserNameRdd()+"');"); + fileWriter(writer,txt); + } + writer.close(); + }catch (Exception e){ + } + } + }).start(); + + System.out.println("写文件 sys_ref_user_role->" ); + new Thread(new Runnable() { + @Override + public void run() { + try { + FileWriter writer = new FileWriter(PATH+"/SysRefUserRole.sql", true); + for (SysRefUserRole ref : refUserRoleList) { + String txt = new String("INSERT INTO sys_ref_user_role (id, create_date, create_user, is_deleted," + + " is_valid, modify_date, modify_user, role_id, role_name_rdd, user_id, user_name_rdd) VALUES (" + + " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+"," + + " "+ref.getIsValid()+", '"+ref.getModifyDatetime()+"', '"+ref.getModifyUser()+"', "+ref.getRoleId()+"," + + " '"+ref.getRoleNameRdd()+"', "+ref.getUserId()+", '"+ref.getUserNameRdd()+"');"); + fileWriter(writer,txt); + } + writer.close(); + }catch (Exception e){ + } + } + }).start(); + + System.out.println("写文件 sys_ref_user_department->" ); + new Thread(new Runnable() { + @Override + public void run() { + try { + FileWriter writer = new FileWriter(PATH+"/SysRefUserDepartment.sql", true); + for (SysRefUserDepartment ref : refUserDepartmentList) { + String txt = new String("INSERT INTO sys_ref_user_department (id, create_date, create_user, is_deleted," + + " is_valid, modify_date, modify_user, department_id, department_name_rdd, organize_id, organize_name_rdd, user_id, user_name) VALUES (" + + " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+"," + + " "+ref.getIsValid()+", '"+ref.getModifyDatetime()+"', '"+ref.getModifyUser()+"', "+ref.getDepartmentId()+"," + + " '"+ref.getDepartmentNameRdd()+"', "+ref.getOrganizeId()+", '"+ref.getOrganizeNameRdd()+"'," + + " "+ref.getUserId()+", '"+ref.getUserNameRdd()+"');"); + fileWriter(writer,txt); + } + writer.close(); + }catch (Exception e){ + } + } + }).start(); + + System.out.println("写文件 sys_ref_user_info_department->" ); + new Thread(new Runnable() { + @Override + public void run() { + try { + FileWriter writer = new FileWriter(PATH+"/SysRefUserInfoDepartment.sql", true); + for (SysRefUserInfoDepartment ref : refUserInfoDepartmentList) { + String txt = new String("INSERT INTO sys_ref_user_info_department (id, create_date, create_user, is_deleted," + + " is_valid, modify_date, modify_user, department_id, department_name_rdd, organize_id, organize_name_rdd, user_id, user_name) VALUES (" + + " "+ref.getId()+", '"+ref.getCreateDatetime()+"', '"+ref.getCreateUser()+"', "+ref.getIsDeleted()+"," + + " "+ref.getIsValid()+", '"+ref.getModifyDatetime()+"', '"+ref.getModifyUser()+"', "+ref.getDepartmentId()+"," + + " '"+ref.getDepartmentNameRdd()+"', "+ref.getOrganizeId()+", '"+ref.getOrganizeNameRdd()+"'," + + " "+ref.getUserId()+", '"+ref.getUserNameRdd()+"');"); + fileWriter(writer,txt); + } + writer.close(); + }catch (Exception e){ + } + } + }).start(); + + System.out.println("写文件 sys_user->" ); + new Thread(new Runnable() { + @Override + public void run() { + try { + FileWriter writer = new FileWriter(PATH+"/SysUser.sql", true); + for (SysUser su : userList) { + String txt = new String("INSERT INTO sys_user (id, create_date, create_user, is_deleted, is_valid," + + " modify_date, modify_user, organize_code, department_id, department_name_rdd, department_names_rdd, language_code," + + " organize_id, organize_name_rdd, organize_names_rdd, role_names_rdd, user_email, user_emp_no, user_info_id," + + " user_login_last_date_time, user_login_name, user_login_num, user_login_password, user_name_rdd," + + " user_phone, user_status, user_type) VALUES (" + + " "+su.getId()+", '"+su.getCreateDatetime()+"', '"+su.getCreateUser()+"', "+su.getIsDeleted()+", "+su.getIsValid()+"," + + " '"+su.getModifyDatetime()+"', '"+su.getModifyUser()+"', '"+su.getOrganizeCode()+"', " + + " "+su.getDepartmentId()+", '"+su.getDepartmentNameRdd()+"', '"+su.getDepartmentNamesRdd()+"', ''," + + " "+su.getOrganizeId()+", '"+su.getOrganizeNameRdd()+"', null, '"+su.getRoleNamesRdd()+"', '"+su.getUserEmail()+"'," + + " '"+su.getUserEmpNo()+"', "+su.getUserInfoId()+", null, '"+su.getUserLoginName()+"', 0, '2637a5c30af69a7bad877fdb65fbd78b'," + + " '"+su.getUserName()+"', '"+su.getUserPhone()+"', 1, 1);"); + fileWriter(writer,txt); + } + writer.close(); + }catch (Exception e){ + } + } + }).start(); + + System.out.println("写文件 sys_user_info->" ); + new Thread(new Runnable() { + @Override + public void run() { + try { + FileWriter writer = new FileWriter(PATH+"/SysUserInfo.sql", true); + for (SysUserInfo ui : userInfoList) { + String txt = new String("INSERT INTO sys_user_info (id, create_date, create_user, is_deleted, is_valid," + + " modify_date, modify_user, organize_code, department_id, department_name_rdd, department_names_rdd, name," + + " organize_id, organize_name_rdd, position_id, position_name_rdd, position_names_rdd, user_emp_no, user_id," + + " user_info_status, user_join_date, user_login_last_date_time, user_login_num) VALUES (" + + " "+ui.getId()+", '"+ui.getCreateDatetime()+"', '"+ui.getCreateUser()+"', "+ui.getIsDeleted()+", "+ui.getIsValid()+"," + + " '"+ui.getModifyDatetime()+"', '"+ui.getModifyUser()+"', '"+ui.getOrganizeCode()+"'," + + " "+ui.getDepartmentId()+", '"+ui.getDepartmentNameRdd()+"', '"+ui.getDepartmentNamesRdd()+"'," + + " '"+ui.getName()+"', "+ui.getOrganizeId()+", '"+ui.getOrganizeNameRdd()+"'," + + " "+ui.getPositionId()+", '"+ui.getPositionNameRdd()+"', '"+ui.getPositionNamesRdd()+"'," + + " '"+ui.getUserEmpNo()+"', "+ui.getUserId()+", 1, '2019-02-26', null , 0);"); + fileWriter(writer,txt); + } + writer.close(); + }catch (Exception e){ + } + } + }).start(); + } + + public void init(BaseBean bean)throws Exception{ + bean.setId(System.currentTimeMillis() + snowflakeIdMaker.nextId() + UUID.randomUUID().hashCode() + new Random().nextInt(10000000)); + bean.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); + bean.setIsDeleted(CommonEnumUtil.IS_DEAL.NO.getValue()); + bean.setCreateUser("系统管理员-测试"); + bean.setModifyUser("系统管理员-测试"); + bean.setCreateDatetime(DateFormatUtils.format(System.currentTimeMillis(),"yyyy-MM-dd HH:mm:ss")); + bean.setModifyDatetime(DateFormatUtils.format(System.currentTimeMillis(),"yyyy-MM-dd HH:mm:ss")); + } + + public static void fileWriter(FileWriter writer, String content) { + try { + writer.write(content+"\r\n"); + } catch (IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestThread.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestThread.java new file mode 100644 index 0000000..54f1394 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/TestThread.java @@ -0,0 +1,31 @@ +package cn.estsh.i3plus.core.apiservice.controller.busi; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2019-02-19 18:13 + * @Modify: + **/ +public class TestThread implements Runnable { + + private Thread t; + private int piLength = 0; + + public TestThread (int piLength){ + this.piLength = piLength; + } + + @Override + public void run() { + ComputePi.computePi(piLength); + } + + public void start () { + if (t == null) { + t = new Thread (this); + t.start (); + } + } +} + diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/Text.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/Text.java new file mode 100644 index 0000000..9c1499c --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/Text.java @@ -0,0 +1,52 @@ +package cn.estsh.i3plus.core.apiservice.controller.busi; + +import java.lang.management.ManagementFactory; +import java.util.Random; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2019-02-19 11:41 + * @Modify: + **/ +public class Text { + + public static void main(String[] args) { + + String name = ManagementFactory.getRuntimeMXBean().getName(); + System.out.println(name); +// get pid + String pid = name.split("@")[0]; + System.out.println("Pid is:" + pid); + for (int i = 0; i < 1; i++) { + TestThread th1 = new TestThread(i); + th1.start(); + } + + +// System.out.println("Please input times: "); +// caculatePI(100000000); + } + + + public static void caculatePI(int countInSquarel) { + int countInCircle = 0, i, resulttimes; + double x, y; /* 坐标 */ + Random s = new Random(); + for (resulttimes = 0; resulttimes < 10; resulttimes++) { /* 输出十次结果 */ + for (i = 1; i <= countInSquarel; i++) { + x = s.nextDouble(); /* 在0~1之间产生一个随机x坐标 */ + y = s.nextDouble(); /* 在0~1之间产生一个随机y坐标 */ + if (caculateAcreage(x, y) <= 1.0) + countInCircle++; /* 统计落入单位圆中的点数 */ + } + System.out.println("The result of pai is " + (double) countInCircle / countInSquarel * 4); /* 计算出π的值 */ + countInCircle = 0; + } + } + + private static double caculateAcreage(double xPosition, double yPosition) { + return xPosition * xPosition + yPosition * yPosition; + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/report/CoreReportController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/report/CoreReportController.java index e6da766..ecab060 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/report/CoreReportController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/report/CoreReportController.java @@ -12,7 +12,9 @@ import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.model.common.ClassFieldModel; import cn.estsh.i3plus.pojo.model.common.ClassModel; import cn.estsh.i3plus.pojo.model.report.TemplateModel; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import cn.estsh.i3plus.pojo.platform.bean.SysRole; +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.util.ResultBean; @@ -35,7 +37,7 @@ import java.util.List; @RestController @RequestMapping(PlatformConstWords.BASE_URL + "/cloud/report") @Api(description="报表服务") -public class CoreReportController { +public class CoreReportController extends CoreBaseController { private static final Logger LOGGER = LoggerFactory.getLogger(CoreReportController.class); @@ -50,7 +52,7 @@ public class CoreReportController { @GetMapping(value = "/role/list") @ApiOperation(value = "查询所有角色", notes = "查询所有系统角色") - public ResultBean findAll() { + public ResultBean findRoleAll() { try { List list = roleService.findSysRoleAll(); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list); @@ -74,6 +76,23 @@ public class CoreReportController { } } + @GetMapping(value = "/role/user/list") + @ApiOperation(value = "查询登录用户所有角色") + public ResultBean findSysRoleByUser() { + try { + SessionUser sessionUser = getSessionUser(); + if(sessionUser != null && sessionUser.getUser() != null){ + List list = roleService.findSysRoleByUser(getSessionUser().getUser()); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list); + } + return ResultBean.fail("操作失败").setCode(ResourceEnumUtil.MESSAGE.FAIL.getCode()).setErrorMsg("获取用户信息失败"); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + @PostMapping(value="/template-model/run") @ApiOperation(value="查询管理后台所有类",notes = "根据核心包路径列出所有类") public ResultBean runTemplateModel(@RequestBody TemplateModel model){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/ITestDao.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/ITestDao.java new file mode 100644 index 0000000..7d148b6 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/ITestDao.java @@ -0,0 +1,33 @@ +package cn.estsh.i3plus.core.apiservice.dao; + +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.platform.bean.SysTool; +import cn.estsh.i3plus.pojo.platform.platbean.SysLogSystem; + +import java.util.List; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2019-02-20 21:15 + * @Modify: + **/ +public interface ITestDao { + + /** + * 批量新增 + * @param num + * @param waitTime + */ + void insertBatch(int num,int waitTime); + + /** + * mongodb批量新增 + * @param num + * @param waitTime + */ + void insertMongoDBBatch(int num,int waitTime); + + List queryToolAndToolType(Pager pager); +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/daoimpl/TestDaoImpl.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/daoimpl/TestDaoImpl.java new file mode 100644 index 0000000..2f9a560 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/daoimpl/TestDaoImpl.java @@ -0,0 +1,73 @@ +package cn.estsh.i3plus.core.apiservice.daoimpl; + +import cn.estsh.i3plus.core.apiservice.dao.ITestDao; +import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.platform.bean.SysTool; +import org.apache.commons.lang3.RandomStringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.persistence.EntityManager; +import java.util.List; +import java.util.Random; + +/** + * @Description : 多表测试 + * @Reference : + * @Author : yunhao + * @CreateDate : 2019-02-20 21:17 + * @Modify: + **/ +@Service +public class TestDaoImpl implements ITestDao { + public static final Logger LOGGER = LoggerFactory.getLogger(UserPermissionDaoImpl.class); + + @Autowired + private EntityManager entityManager; + + public static final String TEXT = "党的十八大提出,倡导富强、民主、文明、和谐,倡导自由、平等、公正、法治,倡导爱国、敬业、诚信、友善,积极培育和践行社会主义核心价值观。富强、民主、文明、和谐是国家层面的价值目标,自由、平等、公正、法治是社会层面的价值取向,爱国、敬业、诚信、友善是公民个人层面的价值准则,这24个字是社会主义核心价值观的基本内容。"; + + @Override + public void insertBatch(int num, int waitTime) { + long t1 = System.currentTimeMillis(); + SysTool sysTool = new SysTool(); + StringBuffer sb = new StringBuffer(); + SnowflakeIdMaker snf = new SnowflakeIdMaker(); + for (int i = 0; i < num * 1000; i++) { + sysTool = new SysTool(); + sysTool.setId(snf.nextId() + System.currentTimeMillis()); + sysTool.setName(RandomStringUtils.random(10, TEXT)); + sysTool.setToolTypeNameRdd(RandomStringUtils.random(10, TEXT)); + sysTool.setToolTypeId(System.currentTimeMillis()); + sysTool.setToolIp(RandomStringUtils.random(10, TEXT)); + sysTool.setToolPort((int) (Math.random() * i)); + sysTool.setToolDescription(RandomStringUtils.random(10, TEXT)); + + sb.append("insert into sys_tool (id,name,tool_type_name_rdd,tool_type_id,tool_ip,tool_port,tool_description) "); + sb.append(" values("+sysTool.getId()+",'"+sysTool.getName()+"','"+sysTool.getToolTypeNameRdd()+"',"+sysTool.getToolTypeId()+",'" + +sysTool.getToolIp()+"',"+sysTool.getToolPort()+",'"+sysTool.getToolDescription()+"')"); + + + } + entityManager.createNativeQuery(sb.toString()); + LOGGER.info("插入耗时:" + (System.currentTimeMillis() - t1) ); + } + + @Override + public void insertMongoDBBatch(int num, int waitTime) { + + } + + @Override + public List queryToolAndToolType(Pager pager) { + String hql = "select t,tt from SysTool as t " + + " left join SysToolType as tt on t.toolTypeId = tt.id " + + " where 1=1"; + + return entityManager.createQuery(hql).setFirstResult(pager.getStartRow()) + .setMaxResults(pager.getPageSize()).getResultList(); + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java index 026bd10..955cc57 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/ScheduleQueueReceiver.java @@ -51,44 +51,46 @@ public class ScheduleQueueReceiver { LOGGER.info("【MQ-IMPP_SCHEDULE_QUEUE】数据接收成功:{}",logTaskTime); // 跟新最后执行时间 及 任务状态 SysTaskPlan taskPlan = sysTaskPlanService.getSysTaskPlanByNameAndGroup(logTaskTime.getName(),logTaskTime.getGroupName()); - taskPlan.setLastRunDateTime(logTaskTime.getCreateDatetime()); - taskPlan.setTaskPlanExecNum(taskPlan.getTaskPlanExecNum() + 1); - taskPlan.setTaskPlanStatus(logTaskTime.getTaskStatus()); - // 更新任务状态以及最后执行时间 - sysTaskPlanService.updateSysTaskPlan(taskPlan); + if (taskPlan != null) { + taskPlan.setLastRunDateTime(logTaskTime.getCreateDatetime()); + taskPlan.setTaskPlanExecNum(taskPlan.getTaskPlanExecNum() + 1); + taskPlan.setTaskPlanStatus(logTaskTime.getTaskStatus()); + // 更新任务状态以及最后执行时间 + sysTaskPlanService.updateSysTaskPlan(taskPlan); - // 添加定时任务日志 - logTaskTime.setTaskPlanId(taskPlan.getId()); - logTaskTime.setTaskCycleNameRdd(taskPlan.getTaskCycleNameRdd()); - logTaskTime.setTaskCycleExpsRdd(taskPlan.getTaskCycleExpsRdd()); - sysTaskPlanService.logInsertSysLogTaskTime(logTaskTime); + // 添加定时任务日志 + logTaskTime.setTaskPlanId(taskPlan.getId()); + logTaskTime.setTaskCycleNameRdd(taskPlan.getTaskCycleNameRdd()); + logTaskTime.setTaskCycleExpsRdd(taskPlan.getTaskCycleExpsRdd()); + sysTaskPlanService.logInsertSysLogTaskTime(logTaskTime); - // 定时任务失败通知 - if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == logTaskTime.getTaskStatus() - && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == taskPlan.getIsNotice()) { - // 设置通知邮件内容 - SysMessage sysMessage = new SysMessage(); - sysMessage.setMessageSenderNameRdd("系统管理员"); - sysMessage.setMessageTitle("任务计划失败通知"); - sysMessage.setMessageContent( - String.format("

管理员 您好:

任务计划(Name: %s,GroupName: %s)执行失败,详细信息请查看定时任务日志(ID: %s).
", - taskPlan.getName(),taskPlan.getGroupName(),logTaskTime.getId()) - ); - sysMessage.setMessageContentType(ImppEnumUtil.MESSAGE_TYPE_CONTENT.HTML.getValue()); - sysMessage.setMessageSendTime(TimeTool.getNowTime(true)); - sysMessage.setIsSystem(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + // 定时任务失败通知 + if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == logTaskTime.getTaskStatus() + && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == taskPlan.getIsNotice()) { + // 设置通知邮件内容 + SysMessage sysMessage = new SysMessage(); + sysMessage.setMessageSenderNameRdd("系统管理员"); + sysMessage.setMessageTitle("任务计划失败通知"); + sysMessage.setMessageContent( + String.format("

管理员 您好:

任务计划(Name: %s,GroupName: %s)执行失败,详细信息请查看定时任务日志(ID: %s).
", + taskPlan.getName(),taskPlan.getGroupName(),logTaskTime.getId()) + ); + sysMessage.setMessageContentType(ImppEnumUtil.MESSAGE_TYPE_CONTENT.HTML.getValue()); + sysMessage.setMessageSendTime(TimeTool.getNowTime(true)); + sysMessage.setIsSystem(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); - // 是否内部成员 - if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == taskPlan.getIsInternalUser()) { - sysMessage.setMessageReceiversId(PlatformConstWords.EXTERNAL_MAIL); - sysMessage.setMessageReceiversNameRdd(taskPlan.getNoticeChannel()); - } + // 是否内部成员 + if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == taskPlan.getIsInternalUser()) { + sysMessage.setMessageReceiversId(PlatformConstWords.EXTERNAL_MAIL); + sysMessage.setMessageReceiversNameRdd(taskPlan.getNoticeChannel()); + } - // 发送到对应处理队列 - if(ImppEnumUtil.MESSAGE_TYPE.MAIL.getValue() == taskPlan.getNoticeMethod().intValue()){ - rabbitTemplate.convertAndSend(PlatformConstWords.IMPP_MESSAGE_MAIL_QUEUE,sysMessage); - }else{ - rabbitTemplate.convertAndSend(PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE,sysMessage); + // 发送到对应处理队列 + if(ImppEnumUtil.MESSAGE_TYPE.MAIL.getValue() == taskPlan.getNoticeMethod().intValue()){ + rabbitTemplate.convertAndSend(PlatformConstWords.IMPP_MESSAGE_MAIL_QUEUE,sysMessage); + }else{ + rabbitTemplate.convertAndSend(PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE,sysMessage); + } } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java index 047a4b7..4d3de1d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/schedulejob/DemoJob.java @@ -7,6 +7,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.platform.bean.SysMessage; import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob; import cn.estsh.impp.framework.boot.init.ApplicationProperties; +import com.alibaba.fastjson.JSON; import io.swagger.annotations.ApiOperation; import org.quartz.JobExecutionContext; import org.slf4j.Logger; diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreTreeService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreTreeService.java index 1630acd..9695b98 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreTreeService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreTreeService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ICoreTreeService; import cn.estsh.i3plus.core.apiservice.dao.ISysMenuDao; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.bean.BaseBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ModelEnumUtil; @@ -17,13 +18,16 @@ import cn.estsh.i3plus.pojo.platform.repository.SysOrganizeRepository; import cn.estsh.i3plus.pojo.platform.repository.SysPositionRepository; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; +import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -55,6 +59,12 @@ public class CoreTreeService implements ICoreTreeService { @Autowired private ISysMenuDao sysMenuDao; + /** + * 核心的缓存 + */ + @Resource(name="redisCore") + protected ImppRedis redisCore; + @Override @ApiOperation(value = "获取岗位树",notes = "根据父节点获取岗位树集合") public List findSysPositionTreeByParentId(long parentId) { @@ -216,7 +226,7 @@ public class CoreTreeService implements ICoreTreeService { StringBuffer orgHQL = new StringBuffer(); HqlPack.getNumEqualPack(parentId,"parentId",orgHQL); HqlPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"organizeSort"}, orgHQL); - List result = organizeRDao.findByHqlWhere(orgHQL.toString()); + List result = findSysOrganizeCacheByHqlWhere(orgHQL.toString()); // 循环设置子集 if(result != null && result.size() > 0){ @@ -263,7 +273,7 @@ public class CoreTreeService implements ICoreTreeService { StringBuffer orgHQL = new StringBuffer(); HqlPack.getNumEqualPack(parent.getId(),"parentId",orgHQL); HqlPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"organizeSort"}, orgHQL); - List childList = organizeRDao.findByHqlWhere(orgHQL.toString()); + List childList = findSysOrganizeCacheByHqlWhere(orgHQL.toString()); if (childList.size() > 0) { //说明有子集 for (SysOrganize child : childList) { @@ -406,7 +416,7 @@ public class CoreTreeService implements ICoreTreeService { StringBuffer hql = new StringBuffer(); HqlPack.getNumEqualPack(parentId,"parentId",hql); HqlPack.getOrderByPack(new Object[]{2}, new String[]{"organizeSort"}, hql); - List list = organizeRDao.findByHqlWhere(hql.toString()); + List list = findSysOrganizeCacheByHqlWhere(hql.toString()); // 循环设置子集 if(list != null && list.size() > 0){ @@ -455,7 +465,7 @@ public class CoreTreeService implements ICoreTreeService { StringBuffer hql = new StringBuffer(); HqlPack.getNumEqualPack(organize.getId(),"parentId",hql); HqlPack.getOrderByPack(new Object[]{2}, new String[]{"organizeSort"}, hql); - List organizeList = organizeRDao.findByHqlWhere(hql.toString()); + List organizeList = findSysOrganizeCacheByHqlWhere(hql.toString()); if(organizeList != null && organizeList.size() > 0){ for (SysOrganize org : organizeList) { @@ -472,7 +482,7 @@ public class CoreTreeService implements ICoreTreeService { StringBuffer depHQL = new StringBuffer(); HqlPack.getNumEqualPack(organize.getId(),"organizeId",depHQL); HqlPack.getOrderByPack(new Object[]{2}, new String[]{"departmentSort"}, depHQL); - List departmentList = departmentRDao.findByHqlWhere(depHQL.toString()); + List departmentList = findSysDepartmentCacheByHqlWhere(depHQL.toString()); if(departmentList != null && departmentList.size() > 0){ for (SysDepartment department : departmentList) { @@ -494,7 +504,8 @@ public class CoreTreeService implements ICoreTreeService { StringBuffer depHQL = new StringBuffer(); HqlPack.getNumEqualPack(department.getId(),"parentId",depHQL); HqlPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"departmentSort"}, depHQL); - List departmentList = departmentRDao.findByHqlWhere(depHQL.toString()); + + List departmentList = findSysDepartmentCacheByHqlWhere(depHQL.toString()); if(departmentList != null && departmentList.size() > 0){ for (SysDepartment dep : departmentList) { @@ -584,4 +595,36 @@ public class CoreTreeService implements ICoreTreeService { } } + private List findSysDepartmentCacheByHqlWhere(String hql){ + if(!StringUtils.isBlank(hql)){ + String redisKey = CommonConstWords.REDIS_PREFIX_CACHE_DEPARTMENT+ "_findCacheByHqlWhere" + "_" + hql.hashCode(); + List list = redisCore.getList(redisKey, 0, -1); + if(list == null){ + list = departmentRDao.findByHqlWhere(hql); + if(list != null){ + redisCore.putList(redisKey,list,CommonConstWords.REDIS_TIME_DAY_ONE); + } + } + return list; + }else { + return null; + } + } + + private List findSysOrganizeCacheByHqlWhere(String hql){ + if(!StringUtils.isBlank(hql)){ + String redisKey = CommonConstWords.REDIS_PREFIX_CACHE_ORGANIZE+ "_findCacheByHqlWhere" + "_" + hql.hashCode(); + List list = redisCore.getList(redisKey, 0, -1); + if(list == null){ + list = organizeRDao.findByHqlWhere(hql); + if(list != null){ + redisCore.putList(redisKey,list,CommonConstWords.REDIS_TIME_DAY_ONE); + } + } + return list; + }else { + return null; + } + } + } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java index 478e22d..0e9818c 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java @@ -544,7 +544,7 @@ public class PersonnelServiceService implements IPersonnelService { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) - .setErrorDetail("密码长度不足") + .setErrorDetail("密码长度不够"+config.getConfigValue()+"位") .setErrorSolution("请重新输入") .build(); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleLanguageService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleLanguageService.java index 14498be..2ed87eb 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleLanguageService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLocaleLanguageService.java @@ -199,6 +199,6 @@ public class SysLocaleLanguageService implements ISysLocaleLanguageService { @Override @ApiOperation(value = "根据语言状态查询语言信息") public List findSysLocaleLanguageByStatus(Integer status) { - return sysLocaleLanguageRDao.findByProperty("isDefault",status); + return sysLocaleLanguageRDao.findByProperty("languageStatus",status); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogSystemService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogSystemService.java index 53ca703..56fd50e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogSystemService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysLogSystemService.java @@ -5,6 +5,9 @@ import cn.estsh.i3plus.core.apiservice.dao.ISysLogSystemDao; 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.base.enumutil.ImppEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.SysTool; import cn.estsh.i3plus.pojo.platform.platbean.SysLogSystem; import cn.estsh.i3plus.pojo.platform.platrepositorymongo.SysLogSystemRepository; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreBsonPack; @@ -39,6 +42,33 @@ public class SysLogSystemService implements ISysLogSystemService { logSystemRDao.insert(logSystem); } + + @Override + public void insertSysLogBatch(int num,int waitTime){ + long t1 = System.currentTimeMillis(); + SysLogSystem sysLogSystem = null; + for (int i = 0; i < num * 1000; i++) { + sysLogSystem = new SysLogSystem(); + sysLogSystem.setLogClass("新增测试class"); + sysLogSystem.setLogMethod("新增测试method" +System.currentTimeMillis()); + sysLogSystem.setLogArgs("新增测试参数" + System.currentTimeMillis()); + sysLogSystem.setExecuteTime(0L); + sysLogSystem.setArgsCount(1); + sysLogSystem.setLogDetail("2333"); + sysLogSystem.setLogLevel(ImppEnumUtil.LOG_LEVEL.DEBUG.getValue()); + sysLogSystem.setLogModuleId(CommonEnumUtil.SOFT_TYPE.CORE.getValue()); + sysLogSystem.setLogTitle("新增测试"); + + logSystemRDao.insert(sysLogSystem); + try { + this.wait(waitTime); + } catch (InterruptedException e) { + e.printStackTrace(); + } + LOGGER.info("插入SysLog耗时:" + (System.currentTimeMillis() - t1) + ",idx:" + i); + } + } + @Override @ApiOperation(value = "删除日志",notes = "删除日志") public void deleteSysLogSystemById(Long id) { @@ -70,4 +100,9 @@ public class SysLogSystemService implements ISysLogSystemService { ,logSystem.getAscOrDesc()),pager); } } + + @Override + public void deleteSysLogSystemByIds(Long[] ids) { + logSystemRDao.deleteByIds(ids); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysRoleService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysRoleService.java index 0d91857..9b5050f 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysRoleService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysRoleService.java @@ -2,15 +2,13 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService; +import cn.estsh.i3plus.core.apiservice.dao.IUserPermissionDao; 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.base.tool.HqlPack; -import cn.estsh.i3plus.pojo.platform.bean.SessionUser; -import cn.estsh.i3plus.pojo.platform.bean.SysMenu; -import cn.estsh.i3plus.pojo.platform.bean.SysRefRoleMenu; -import cn.estsh.i3plus.pojo.platform.bean.SysRole; +import cn.estsh.i3plus.pojo.platform.bean.*; import cn.estsh.i3plus.pojo.platform.repository.SysMenuRepository; import cn.estsh.i3plus.pojo.platform.repository.SysRefRoleMenuRepository; import cn.estsh.i3plus.pojo.platform.repository.SysRoleRepository; @@ -51,6 +49,9 @@ public class SysRoleService implements ISysRoleService { @Autowired private IPersonnelService personnelService; + @Autowired + private IUserPermissionDao userPermissionDao; + @Override @ApiOperation(value = "更新角色信息",notes = "更新角色信息") public void updateSysRole(SysRole sysRole) { @@ -227,6 +228,13 @@ public class SysRoleService implements ISysRoleService { } @Override + @ApiOperation(value = "查信用户的所有角色信息",notes = "查信用户的所有角色信息") + public List findSysRoleByUser(SysUser user) { + LOGGER.info("系统角色 查询用户所有角色"); + return userPermissionDao.findSysRoleByUser(user); + } + + @Override @ApiOperation(value = "查信角色信息",notes = "根据 ID 查询角色信息") public SysRole getSysRoleById(Long id) { LOGGER.info("系统角色 SYS_ROLE find id:{}", id); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java index 9bdcf72..44a0cc8 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolService.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysToolService; +import cn.estsh.i3plus.core.apiservice.dao.ITestDao; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; @@ -38,6 +39,9 @@ public class SysToolService implements ISysToolService { @Autowired private SysToolTypeRepository toolTypeRDao; + @Autowired + private ITestDao testDao; + @Override @ApiOperation(value = "新增硬件信息") public SysTool insertSysTool(SysTool tool) { @@ -74,6 +78,11 @@ public class SysToolService implements ISysToolService { } @Override + public void insertBatch(int num,int waitTime){ + testDao.insertBatch(num,waitTime); + } + + @Override @ApiOperation(value = "查询设备信息",notes = "查询所有设备信息") public List listSysTool() { LOGGER.info("硬件 TOOL list"); @@ -124,4 +133,8 @@ public class SysToolService implements ISysToolService { toolRDao.updateByHqlWhere(where.toString(), "toolStatus", status); } + + public List findSysToolByTop(int topNum) { + return toolRDao.findByHqlTopWhere("",topNum); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestService.java new file mode 100644 index 0000000..b2b1b82 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestService.java @@ -0,0 +1,30 @@ +package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.core.api.iservice.busi.ITestService; +import cn.estsh.i3plus.core.apiservice.dao.ITestDao; +import cn.estsh.i3plus.pojo.base.common.Pager; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2019-02-20 21:24 + * @Modify: + **/ +@Service +public class TestService implements ITestService { + + @Autowired + ITestDao testDao; + + @Override + @ApiOperation(value = "多表查询") + public List queryToolAndToolType(Pager pager) { + return testDao.queryToolAndToolType(pager); + } +}