SceneAsynOperLogServiceImpl.java 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package com.fdkankan.scene.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  6. import com.fdkankan.common.constant.CommonOperStatus;
  7. import com.fdkankan.common.constant.CommonStatus;
  8. import com.fdkankan.scene.entity.SceneAsynOperLog;
  9. import com.fdkankan.scene.mapper.ISceneAsynOperLogMapper;
  10. import com.fdkankan.scene.service.ISceneAsynOperLogService;
  11. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  12. import com.fdkankan.scene.vo.SceneAsynOperLogParamVO;
  13. import com.fdkankan.web.response.ResultData;
  14. import java.util.List;
  15. import java.util.stream.Collectors;
  16. import org.springframework.stereotype.Service;
  17. /**
  18. * <p>
  19. * 服务实现类
  20. * </p>
  21. *
  22. * @author
  23. * @since 2022-12-07
  24. */
  25. @Service
  26. public class SceneAsynOperLogServiceImpl extends ServiceImpl<ISceneAsynOperLogMapper, SceneAsynOperLog> implements ISceneAsynOperLogService {
  27. @Override
  28. public ResultData getAsynOperLog(SceneAsynOperLogParamVO param) {
  29. LambdaQueryWrapper<SceneAsynOperLog> queryWrapper = new LambdaQueryWrapper<>();
  30. queryWrapper.eq(SceneAsynOperLog::getNum, param.getNum());
  31. if(StrUtil.isNotEmpty(param.getOperType())){
  32. queryWrapper.eq(SceneAsynOperLog::getOperType, param.getOperType());
  33. }
  34. if(StrUtil.isNotEmpty(param.getModule())){
  35. queryWrapper.eq(SceneAsynOperLog::getModule, param.getModule());
  36. }
  37. if(StrUtil.isNotEmpty(param.getFunc())){
  38. queryWrapper.eq(SceneAsynOperLog::getFunc, param.getFunc());
  39. }
  40. //需要弹窗的异步操作列表
  41. List<SceneAsynOperLog> list = this.list(queryWrapper);
  42. //如果列表中有需要弹窗并且处理完毕的,需要把这些数据改为不需要弹窗了,因为前端请求到之后就会弹出提示,下次不需要弹窗了
  43. if(CollUtil.isNotEmpty(list)){
  44. List<Long> idList = list.stream().filter(log -> {
  45. if(!log.getState().equals(CommonOperStatus.WAITING.code())){
  46. return true;
  47. }
  48. return false;
  49. }).map(log->log.getId()).collect(Collectors.toList());
  50. if(CollUtil.isNotEmpty(idList)){
  51. this.update(new LambdaUpdateWrapper<SceneAsynOperLog>()
  52. .set(SceneAsynOperLog::getPop, CommonStatus.NO.code())
  53. .in(SceneAsynOperLog::getId, idList));
  54. }
  55. }
  56. return ResultData.ok(list);
  57. }
  58. }