diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/SSEController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/SSEController.java index 0f9a27a5..10e5e210 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/SSEController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/SSEController.java @@ -29,14 +29,6 @@ public class SSEController extends ControllerBase { @GetMapping(value = "connect", produces = MediaType.TEXT_EVENT_STREAM_VALUE) @ApiMark(moduleName = "连接", apiName = "SSE", isPublic = true) public SseEmitter connect(@RequestParam String userId) { - SseEmitter sse = sseManagerService.connect(Integer.valueOf(userId)); -// try { -// sse.send("您已连接"); -// } catch (IOException e) { -// log.error("sse发送数据出错", e); -// sse.complete(); -// throw new NflgException(STATE.BusinessError, "sse发送数据出错"); -// } - return sse; + return sseManagerService.connect(Integer.valueOf(userId)); } } \ No newline at end of file diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java index 5b1a4879..d34ad7df 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java @@ -527,7 +527,7 @@ public class TicketController extends ControllerBase { } } if (CollectionUtil.isNotEmpty(notReadeds)) { - redisTemplate.opsForSet().add(key, notReadeds.toArray(String[]::new)); + redisTemplate.opsForSet().add(key, notReadeds.stream().toArray(String[]::new)); vo.setNotReadCount(notReadeds.size()); vo.setFirstMessageId(notReadeds.iterator().next()); } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/BaseDepartmentVO.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/BaseDepartmentVO.java index fe16bc2c..8fd643ba 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/BaseDepartmentVO.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/BaseDepartmentVO.java @@ -4,6 +4,7 @@ import com.nflg.mobilebroken.repository.entity.TBaseDepartment; import lombok.Data; import java.util.List; +import java.util.Objects; @Data public class BaseDepartmentVO extends TBaseDepartment { @@ -12,4 +13,17 @@ public class BaseDepartmentVO extends TBaseDepartment { * 子级 */ private List children; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + BaseDepartmentVO that = (BaseDepartmentVO) o; + return Objects.equals(getId(), that.getId()); + } + + @Override + public int hashCode() { + return Objects.hash(getId()); + } } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminDepartmentService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminDepartmentService.java index 0c12a969..88bee1d2 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminDepartmentService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/AdminDepartmentService.java @@ -7,15 +7,13 @@ import com.nflg.mobilebroken.admin.pojo.query.DepartmentQuery; import com.nflg.mobilebroken.admin.pojo.vo.BaseDepartmentVO; import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.PageData; +import com.nflg.mobilebroken.common.util.PageUtil; import com.nflg.mobilebroken.repository.entity.TBaseDepartment; import com.nflg.mobilebroken.repository.service.ITBaseDepartmentService; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -26,29 +24,68 @@ public class AdminDepartmentService { ITBaseDepartmentService departmentService; public ApiResult> getList(DepartmentQuery query){ Page result = departmentService.selectListByPage(query); +// List dataResult = Convert.toList(BaseDepartmentVO.class, result.getRecords()); +//// if(StrUtil.isNotBlank(query.getDeptCodeOrName())){ +//// List alldept = Convert.toList(BaseDepartmentVO.class,departmentService.lambdaQuery().eq(TBaseDepartment::getDataValidStatus,1).list()) ; +//// Map collect = alldept.stream().collect(Collectors.toMap(BaseDepartmentVO::getId, Function.identity())); +//// List allParents=new ArrayList<>(); +//// for (BaseDepartmentVO data:dataResult){ +//// allParents.addAll(getAllParents(data, collect)) ; +//// } +//// allParents.addAll(dataResult); +//// return ApiResult.success(buildTree(allParents),query,result.getTotal()); +//// } +//// else { +//// for (BaseDepartmentVO data:dataResult){ +//// initNodeChildren(data); +//// } +//// } +//// return ApiResult.success(dataResult,query,result.getTotal()); List dataResult = Convert.toList(BaseDepartmentVO.class, result.getRecords()); - if(StrUtil.isNotBlank(query.getDeptCodeOrName())){ - List alldept = Convert.toList(BaseDepartmentVO.class,departmentService.lambdaQuery().eq(TBaseDepartment::getDataValidStatus,1).list()) ; - Map collect = alldept.stream().collect(Collectors.toMap(BaseDepartmentVO::getId, Function.identity())); + if(StrUtil.isNotBlank(query.getDeptCodeOrName()) || Objects.nonNull(query.getDeptStatus())){ + List allList = Convert.toList(BaseDepartmentVO.class,departmentService.lambdaQuery() + .eq(TBaseDepartment::getDataValidStatus,1) + .list()) ; + Map collect = allList.stream().collect(Collectors.toMap(BaseDepartmentVO::getId, Function.identity())); List allParents=new ArrayList<>(); for (BaseDepartmentVO data:dataResult){ - allParents.addAll(getAllParents(data, collect)) ; + allParents.addAll(getAllParents(data, collect)); + } allParents.addAll(dataResult); + allParents=allParents.stream().distinct().collect(Collectors.toList()); return ApiResult.success(buildTree(allParents),query,result.getTotal()); } else { for (BaseDepartmentVO data:dataResult){ - initNodeChildren(data); + initNodeChildren(data,query); } } return ApiResult.success(dataResult,query,result.getTotal()); - - - } - public List getAllChildIds(TBaseDepartment vo ,List ids){ +// public ApiResult> getList(DepartmentQuery query){ +// if (StrUtil.isBlank(query.getDeptCodeOrName()) && Objects.isNull(query.getDeptStatus())){ +// return ApiResult.success(getNonQuery(query)); +// } +// else { +// return ApiResult.success(null); +// } +// } + + private PageData getNonQuery(DepartmentQuery query) { + Page page = departmentService.lambdaQuery() + .eq(TBaseDepartment::getDataValidStatus, 1) + .eq(TBaseDepartment::getDeptParentId, 0) + .page(new Page<>(query.getPage(), query.getPageSize())); + return PageUtil.convert(page, d -> { + BaseDepartmentVO vo = Convert.convert(BaseDepartmentVO.class, d); + initNodeChildren(vo); + return vo; + }); + } + + public List getAllChildIds(TBaseDepartment vo, List ids) { List immediateChildren = findChildDepartmentsByParentId(vo.getId()); ids.addAll(immediateChildren.stream().map(u->u.getId()).collect(Collectors.toSet())); for (BaseDepartmentVO child : immediateChildren) { @@ -68,10 +105,20 @@ public class AdminDepartmentService { } } + private void initNodeChildren(BaseDepartmentVO node, DepartmentQuery query) { + List immediateChildren = findChildDepartmentsByParentId(node.getId()); + if(query!=null && query.getDeptStatus()!=null){ + immediateChildren=immediateChildren.stream().filter(u->query.getDeptStatus().equals(u.getDeptStatus())).collect(Collectors.toList()); + } + node.setChildren(immediateChildren); + for (BaseDepartmentVO child : immediateChildren) { + initNodeChildren(child,query); + } + } + private List findChildDepartmentsByParentId(Long parentId) { List depts = departmentService.lambdaQuery().eq(TBaseDepartment::getDeptParentId, parentId).eq(TBaseDepartment::getDataValidStatus,1).list(); return Convert.toList(BaseDepartmentVO.class,depts); - } private List getAllParents(BaseDepartmentVO node, Map idToNodeMap) { @@ -83,6 +130,7 @@ public class AdminDepartmentService { parents.add(parentNode); parentId = parentNode.getDeptParentId(); // 移动到上一级 } + Collections.reverse(parents); // 如果需要从根节点开始排序,则反转列表 return parents; } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/SSEController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/SSEController.java index bad07801..5c2ec40e 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/SSEController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/SSEController.java @@ -31,14 +31,6 @@ public class SSEController extends ControllerBase { */ @GetMapping(value = "connect",produces = MediaType.TEXT_EVENT_STREAM_VALUE) public SseEmitter connect(@RequestParam Integer userId) { - SseEmitter sse = adminSSEManagerService.connect(userId); -// try { -// sse.send("您已连接"); -// } catch (IOException e) { -// log.error("sse发送数据出错",e); -// sse.complete(); -// throw new NflgException(STATE.BusinessError,"sse发送数据出错"); -// } - return sse; + return adminSSEManagerService.connect(userId); } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java index 5a58fc88..818f794f 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java @@ -51,6 +51,7 @@ public class AdminMessageServiceImpl extends ServiceImpl() .eq(AdminMessage::getIsRead, false) .eq(AdminMessage::getSubType, message.getSubType()) + .eq(AdminMessage::getSourceId, message.getSourceId()) .eq(AdminMessage::getUserId, message.getUserId())); save(message); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserServiceImpl.java index 56e289ec..c7fa691d 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserServiceImpl.java @@ -265,12 +265,14 @@ public class AppUserServiceImpl extends ServiceImpl impl private void bindChildren1(AreaSimpleVO vo) { List datas = appAreaService.lambdaQuery().eq(AppArea::getParentId, vo.getId()).eq(AppArea::getEnable, true).list(); List vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getName())).collect(Collectors.toList()); + vo.setChildren(vos); vos.forEach(this::bindChildren1); } private void bindChildren(AreaSimpleVO vo) { List datas = adminAreaService.lambdaQuery().eq(TBaseArea::getParentAreaRowId, vo.getId()).eq(TBaseArea::getAreaState, 1).list(); List vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getAreaName())).collect(Collectors.toList()); + vo.setChildren(vos); vos.forEach(this::bindChildren); } diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseDepartmentMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseDepartmentMapper.xml index 109e7769..c5beb7ac 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseDepartmentMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/TBaseDepartmentMapper.xml @@ -3,7 +3,7 @@ - and (dept_code=#{query.deptCodeOrName} or dept_name=#{query.deptCodeOrName}) + and (dept_code like concat('%', #{query.deptCodeOrName},'%') or dept_name like concat('%', #{query.deptCodeOrName},'%')) and dept_status=#{query.deptStatus} @@ -13,10 +13,6 @@ select * from t_base_department where data_valid_status=1 - - and dept_parent_id=0 - - diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/SSEManagerBase.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/SSEManagerBase.java index 9a833d36..6c96401b 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/SSEManagerBase.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/service/SSEManagerBase.java @@ -42,6 +42,7 @@ public class SSEManagerBase { if (Objects.nonNull(old)){ log.warn("停止旧连接:"+userId); try { + old.send(SseEmitter.event().name("被踢下线").data("你已在其他地方连接")); old.complete(); } catch (Exception e) { old.completeWithError(e);