diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysDashboardService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysDashboardService.java new file mode 100644 index 0000000..5830338 --- /dev/null +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysDashboardService.java @@ -0,0 +1,80 @@ +package cn.estsh.i3plus.core.api.iservice.busi; + +import io.swagger.annotations.ApiOperation; + +import java.util.List; +import java.util.Map; + +/** + * @Description : Dashboard服务接口 + * @Reference : + * @Author : yunhao + * @CreateDate : 2018-12-14 15:41 + * @Modify: + **/ +public interface ISysDashboardService { + + /** + * 查询组织个数 + * @return + */ + @ApiOperation(value = "查询组织个数") + long getSysOrganizeCount(); + + /** + * 获取部门数量 + * @return + */ + @ApiOperation(value = "获取部门数量") + long getSysDepartmentCount(); + + /** + * 查询用户登录日志 + * @return + */ + @ApiOperation(value = "查询用户登录日志",notes = "查询用户登录日志") + List findSysUserLoginLog(); + + /** + * 查询最近操作日志 + * @param size + * @return + */ + @ApiOperation(value = "查询操作日志",notes = "查询最近操作日志") + List findNewSysLogOperateSize(Integer size); + + /** + * 查询最近异常日志 + * @param size + * @return + */ + @ApiOperation(value = "查询异常日志",notes = "查询最近异常日志") + List findNewSysLogExceptionSize(Integer size); + + /** + * 查询系统日志各级别占比 + * @param startTime + * @param endTime + * @return + */ + @ApiOperation(value = "查询系统日志",notes = "查询系统日志各级别占比") + Map findSysLogSystempByLevel(String startTime,String endTime); + + /** + * 查询平均耗时 + * @param startTime + * @param endTime + * @return + */ + @ApiOperation(value = "查询操作日志",notes = "查询平均响应耗时") + Map querySysLogSystemAvgExecuteTime(String startTime, String endTime); + + /** + * 查询时间段内各等级日志数量 + * @param startTime + * @param endTime + * @return + */ + @ApiOperation(value = "查询系统日志",notes = "查询各模块系统日志数量") + Map querySysLogSystemByLevel(String startTime, String endTime); +} 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 2e86efb..76fc891 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 @@ -31,13 +31,4 @@ public interface ISysLogSystemService { @ApiOperation(value = "系统日志分页复杂查询",notes = "系统日志分页复杂查询") ListPager querySysLogSystemByPager(SysLogSystem logSystem, Pager pager); - - /** - * 查询时间段内平均请求耗时 - * @param startTime - * @param endTime - * @return - */ - @ApiOperation(value = "查询时间段内平均请求耗时") - Map queryAvgExecuteTime(String startTime,String endTime); } 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 7ce95fb..9e42ca4 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 @@ -1,6 +1,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; -import cn.estsh.i3plus.core.api.iservice.busi.*; +import cn.estsh.i3plus.core.api.iservice.busi.ISysDashboardService; +import cn.estsh.i3plus.platform.common.tool.SerializeTool; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; @@ -11,6 +12,7 @@ import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -24,7 +26,7 @@ import java.util.HashMap; import java.util.Map; /** - * @Description : + * @Description : Dashboard服务 * @Reference : * @Author : yunhao * @CreateDate : 2018-12-10 17:04 @@ -33,50 +35,50 @@ import java.util.Map; @RestController @Api(description = "Dashboard服务") @RequestMapping(PlatformConstWords.BASE_URL + "/dashboard") -public class SysDashboardController { +public class SysDashboardController extends CoreBaseController { @Autowired - private ISysUserService sysUserService; - @Autowired - private ISysOrganizeService sysOrganizeService; - @Autowired - private ISysDepartmentService sysDepartmentService; - @Autowired - private ISysMessageService sysMessageService; - @Autowired - private ISysLogOperateService sysLogOperateService; - @Autowired - private ISysLogSystemService sysLogSystemService; -// @Autowired -// private EurekaServerContext eurekaServerContext; - @Resource(name="redisRes") - private ImppRedis redisRes; + private ISysDashboardService sysDashboardService; + + @Resource(name="redisCore") + private ImppRedis redisCore; + @Resource(name="imppSessionManager") + private DefaultWebSessionManager webSessionManager; @GetMapping("/get") @ApiOperation(value = "获取dashboard数据") public ResultBean getDashboardData(){ try { - Map dashboardData = (Map) redisRes.getObject(PlatformConstWords.DASHBOARD_REDIS_KEY); - if(dashboardData == null){ - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Object ds = redisCore.getObject(PlatformConstWords.DASHBOARD_REDIS_KEY + new Date().getTime()); + if(ds == null){ + // 前10分钟的日期时间 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); - String startTime = sdf.format(new Date()); - cal.add(Calendar.MINUTE,10); - String endTime = sdf.format(cal.getTime()); + String endTime = TimeTool.getNowTime(true); + cal.add(Calendar.MINUTE,-10); + String startTime = sdf.format(cal.getTime()); + + Map dashboardData = new HashMap<>(); + dashboardData.put("orgNum", sysDashboardService.getSysOrganizeCount()); + dashboardData.put("deptNum",sysDashboardService.getSysDepartmentCount()); + dashboardData.put("onlineUser",webSessionManager.getSessionDAO().getActiveSessions().size()); + dashboardData.put("logOperate",sysDashboardService.findNewSysLogOperateSize(10)); + dashboardData.put("logException",sysDashboardService.findNewSysLogExceptionSize(10)); + dashboardData.put("avgExecuteTime",sysDashboardService.querySysLogSystemAvgExecuteTime(startTime,endTime)); + dashboardData.put("levelLogNum",sysDashboardService.querySysLogSystemByLevel(startTime,endTime)); - dashboardData = new HashMap<>(); - dashboardData.put("userNum",sysUserService.getSysUserCount()); - dashboardData.put("orgNum",sysOrganizeService.getSysOrganizeCount()); - dashboardData.put("deptNum",sysDepartmentService.getSysDepartmentCount()); - dashboardData.put("logOperate",sysLogOperateService.findNewSysLogOperate(10)); - dashboardData.put("",sysLogSystemService.queryAvgExecuteTime(startTime,endTime)); + redisCore.putObject(PlatformConstWords.DASHBOARD_REDIS_KEY + new Date().getTime(), + SerializeTool.serialization(dashboardData),5); - redisRes.putHashMap(PlatformConstWords.DASHBOARD_REDIS_KEY,dashboardData,1000*60); + return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultMap(dashboardData); + }else{ + return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultMap((Map) SerializeTool.deserialization(ds.toString())); } - return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultMap(dashboardData); } catch ( ImppBusiException busExcep) { return ResultBean.fail(busExcep); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/ISysLogSystemDao.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/ISysLogSystemDao.java index c318ffd..f9922a0 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/ISysLogSystemDao.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/ISysLogSystemDao.java @@ -1,9 +1,5 @@ package cn.estsh.i3plus.core.apiservice.dao; -import io.swagger.annotations.ApiOperation; -import org.bson.Document; - -import java.util.List; import java.util.Map; /** @@ -15,14 +11,19 @@ import java.util.Map; **/ public interface ISysLogSystemDao { - /** * 查询时间段内平均请求耗时 * @param startTime * @param endTime * @return */ - @ApiOperation(value = "查询时间段内平均请求耗时") - Map querySysLogOperateAvgExecuteTime(String startTime, String endTime); + Map querySysLogSystemAvgExecuteTime(String startTime, String endTime); + /** + * 查询时间段内各等级日志数量 + * @param startTime + * @param endTime + * @return + */ + Map querySysLogSystemByLevel(String startTime, String endTime); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/daoimpl/SysLogSystemDaoImpl.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/daoimpl/SysLogSystemDaoImpl.java index 4b9da59..dbdf46f 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/daoimpl/SysLogSystemDaoImpl.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/daoimpl/SysLogSystemDaoImpl.java @@ -1,18 +1,13 @@ package cn.estsh.i3plus.core.apiservice.daoimpl; import cn.estsh.i3plus.core.apiservice.dao.ISysLogSystemDao; +import cn.estsh.i3plus.platform.common.tool.MathOperation; import cn.estsh.i3plus.platform.common.tool.StringTool; -import cn.estsh.i3plus.pojo.platform.bean.SysLogOperate; +import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.platform.bean.SysLogSystem; -import com.alibaba.fastjson.JSONObject; -import com.mongodb.Block; import com.mongodb.client.AggregateIterable; import com.mongodb.client.MongoCursor; -import io.swagger.annotations.ApiOperation; -import org.apache.jasper.tagplugins.jstl.core.ForEach; import org.bson.Document; -import org.bson.json.JsonMode; -import org.bson.json.JsonWriterSettings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -20,6 +15,7 @@ import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -39,41 +35,22 @@ public class SysLogSystemDaoImpl implements ISysLogSystemDao { private MongoDbFactory mongoDbFactory; @Override - @ApiOperation(value = "查询时间段内平均请求耗时") - public Map querySysLogOperateAvgExecuteTime(String startTime, String endTime) { - List dList = new ArrayList<>(); - Block saveBlock = new Block() { - @Override - public void apply(final Document document) { - dList.add(document.toJson()); - } - }; - + public Map querySysLogSystemAvgExecuteTime(String startTime, String endTime) { + // 筛选 Document sub_match = new Document(); - sub_match.put("leaveTime", new Document("$gte", startTime).append("$lte", endTime)); - - - Document sub_substr = new Document(); - sub_substr.put("$substr", new Object[]{"$createDatetime", 0, 16}); - - - Document sub_project = new Document(); - sub_project.put("new_time_stamp", sub_substr); - sub_project.put("executeTime", 1); - + sub_match.put("createDatetime", new Document("$gte", startTime).append("$lte", endTime)); + // 分组 Document sub_group = new Document(); - sub_group.put("_id", "createDatetime"); + sub_group.put("_id", "$createDatetime"); sub_group.put("avg", new Document("$avg", "$executeTime")); Document match = new Document("$match", sub_match); - Document project = new Document("$project", sub_project); Document group = new Document("$group", sub_group); - Document sort = new Document("$sort", new Document("_id", 1)); + Document sort = new Document("$sort", new Document("_id", -1)); List aggregateList = new ArrayList<>(); aggregateList.add(match); -// aggregateList.add(project); aggregateList.add(group); aggregateList.add(sort); @@ -81,26 +58,44 @@ public class SysLogSystemDaoImpl implements ISysLogSystemDao { .getCollection(StringTool.toLowerCaseFirstOne(SysLogSystem.class.getSimpleName())) .aggregate(aggregateList); MongoCursor cursor = findIter.iterator(); + + Map resultData = new HashMap(); while (cursor.hasNext()) { Document item_doc = cursor.next(); - int _id = item_doc.getInteger("_id", 0); - int avg = item_doc.getInteger("avg", 0); - System.out.println("_id:" + _id + "abg:" + avg); + resultData.put(item_doc.getString("_id"),MathOperation.round(item_doc.getDouble("avg"),0)); } - - return packObjectListFromDocument(dList); + return resultData; } + @Override + public Map querySysLogSystemByLevel(String startTime, String endTime){ + // 筛选 + Document sub_match = new Document(); + sub_match.put("createDatetime", new Document("$gte", startTime).append("$lte", endTime)); + // 分组 + Document sub_group = new Document(); + sub_group.put("_id", "$logLevel"); + sub_group.put("count", new Document("$sum", 1)); + + Document match = new Document("$match", sub_match); + Document group = new Document("$group", sub_group); - private Map packObjectListFromDocument(List dList) { - //将获取的document转为对象 - List resultList = new ArrayList<>(); - // 设置为宽松模式 - JsonWriterSettings jsonWriterSettings = JsonWriterSettings.builder().outputMode(JsonMode.RELAXED).build(); - for (String d : dList) { - resultList.add(JSONObject.parseObject(d, SysLogOperate.class)); + List aggregateList = new ArrayList<>(); + aggregateList.add(match); + aggregateList.add(group); + + AggregateIterable findIter = mongoDbFactory.getDb() + .getCollection(StringTool.toLowerCaseFirstOne(SysLogSystem.class.getSimpleName())) + .aggregate(aggregateList); + MongoCursor cursor = findIter.iterator(); + + Map resultData = new HashMap(); + while (cursor.hasNext()) { + Document item_doc = cursor.next(); + resultData.put(ImppEnumUtil.LOG_LEVEL.valueOfName(item_doc.getInteger("_id")),MathOperation.round(item_doc.getInteger("count"),0)); } - - return null; + + return resultData; } + } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDashboardService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDashboardService.java new file mode 100644 index 0000000..18fed9e --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDashboardService.java @@ -0,0 +1,107 @@ +package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.core.api.iservice.busi.ISysDashboardService; +import cn.estsh.i3plus.core.apiservice.dao.ISysLogSystemDao; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.SysLogOperate; +import cn.estsh.i3plus.pojo.platform.repository.SysDepartmentRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysLogUserLoginRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysOrganizeRepository; +import cn.estsh.i3plus.pojo.platform.repositorymongo.SysLogExceptionRepository; +import cn.estsh.i3plus.pojo.platform.repositorymongo.SysLogOperateRepository; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * @Description : + * @Reference : + * @Author : yunhao + * @CreateDate : 2018-12-15 15:26 + * @Modify: + **/ +@Service +public class SysDashboardService implements ISysDashboardService { + public static final Logger LOGGER = LoggerFactory.getLogger(SysConfigService.class); + + @Autowired + private SysOrganizeRepository sysOrganizeRDao; + + @Autowired + private SysDepartmentRepository sysDepartmentRDao; + + @Autowired + private SysLogOperateRepository sysLogOperateRDao; + + @Autowired + private SysLogExceptionRepository sysLogExceptionRDao; + + @Autowired + private ISysLogSystemDao sysLogSystemDao; + + @Override + @ApiOperation(value = "查询组织个数") + public long getSysOrganizeCount() { + return sysOrganizeRDao.listCount(); + } + + @Override + @ApiOperation(value = "获取部门数量") + public long getSysDepartmentCount() { + return sysDepartmentRDao.listCount(); + } + + @Override + @ApiOperation(value = "查询用户登录日志",notes = "查询用户登录日志") + public List findSysUserLoginLog() { + return null; + } + + @Override + @ApiOperation(value = "查询操作日志",notes = "查询最新的几条操作日志") + public List findNewSysLogOperateSize(Integer size) { + Pager page = new Pager(); + page.setCurrentPage(1); + page.setPageSize(size); + SysLogOperate sysLogOperate = new SysLogOperate(); + sysLogOperate.setOrderByParam("createDatetime"); + sysLogOperate.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.DESC.getValue()); + return sysLogOperateRDao.findByBsonPager(null,page,sysLogOperate.getOrderByParam(),sysLogOperate.getAscOrDesc()); + } + + @Override + @ApiOperation(value = "查询操异常日志",notes = "查询最新的几条异常日志") + public List findNewSysLogExceptionSize(Integer size) { + Pager page = new Pager(); + page.setCurrentPage(1); + page.setPageSize(size); + SysLogOperate sysLogOperate = new SysLogOperate(); + sysLogOperate.setOrderByParam("createDatetime"); + sysLogOperate.setAscOrDesc(CommonEnumUtil.ASC_OR_DESC.DESC.getValue()); + return sysLogExceptionRDao.findByBsonPager(null,page,sysLogOperate.getOrderByParam(),sysLogOperate.getAscOrDesc()); + } + + @Override + @ApiOperation(value = "查询系统日志",notes = "查询系统日志各级别占比") + public Map findSysLogSystempByLevel(String startTime, String endTime) { + return null; + } + + @Override + @ApiOperation(value = "查询系统日志",notes = "查询系统日志平均执行时间") + public Map querySysLogSystemAvgExecuteTime(String startTime, String endTime) { + return sysLogSystemDao.querySysLogSystemAvgExecuteTime(startTime,endTime); + } + + @Override + @ApiOperation(value = "查询系统日志",notes = "查询各模块系统日志数量") + public Map querySysLogSystemByLevel(String startTime, String endTime) { + return sysLogSystemDao.querySysLogSystemByLevel(startTime,endTime); + } +} 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 30245a2..ddaf2ad 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 @@ -32,8 +32,6 @@ public class SysLogSystemService implements ISysLogSystemService { @Autowired private SysLogSystemRepository logSystemRDao; - @Autowired - private ISysLogSystemDao sysLogSystemDao; @Override @ApiOperation(value = "添加系统日志",notes = "添加系统日志") @@ -72,9 +70,4 @@ public class SysLogSystemService implements ISysLogSystemService { ,logSystem.getAscOrDesc()),pager); } } - - @Override - public Map queryAvgExecuteTime(String startTime, String endTime) { - return sysLogSystemDao.querySysLogOperateAvgExecuteTime(startTime,endTime); - } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolTypeService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolTypeService.java index 2be50ef..caae1c4 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolTypeService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysToolTypeService.java @@ -5,6 +5,7 @@ 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.SysTool; import cn.estsh.i3plus.pojo.platform.bean.SysToolType; import cn.estsh.i3plus.pojo.platform.repository.SysToolRepository; import cn.estsh.i3plus.pojo.platform.repository.SysToolTypeRepository; @@ -100,12 +101,12 @@ public class SysToolTypeService implements ISysToolTypeService { @ApiOperation(value = "删除硬件类型",notes = "根据 ID 批量删除硬件类型信息") public void deleteSysToolTypeByIds(Long[] ids) { LOGGER.info("硬件类型 TOOL_TYPE ids:{}", ids.toString()); - long count = toolRDao.findByHqlWhereCount(CoreHqlPack.packHqlIds("toolTypeId",ids)); - if(count >= 1){ + List count = toolRDao.findByHqlWhere(CoreHqlPack.packHqlIds("toolTypeId",ids)); + if(count.size() > 0){ throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("存在关联硬件无法删除!") + .setErrorDetail(count.get(0).getToolTypeNameRdd() + " - 存在关联硬件无法删除!") .setErrorSolution("请重新操作") .build(); }else {