Browse Source

Merge branch 'master' into dev

24282 1 year ago
parent
commit
fbb3076ef2

+ 11 - 3
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRunningWaterServiceImpl.java

@@ -24,11 +24,13 @@ import com.fjhx.account.service.account.AccountRunningWaterService;
 import com.fjhx.account.service.tax.TaxRefundDetailsService;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.entity.corporation.po.Corporation;
+import com.fjhx.common.enums.PushBusinessTypeEnum;
 import com.fjhx.common.service.corporation.CorporationService;
 import com.fjhx.common.utils.Assert;
 import com.fjhx.common.utils.ExchangeRateUtil;
 import com.fjhx.item.util.excel.util.ExcelUtil;
-import com.fjhx.socket.service.WebSocketServer;
+import com.fjhx.socket.core.PushTypeEnum;
+import com.fjhx.socket.core.WebSocketPush;
 import com.fjhx.tenant.entity.dict.dto.DictTenantDataSelectDto;
 import com.fjhx.tenant.entity.dict.vo.DictTenantDataVo;
 import com.fjhx.tenant.service.dict.DictTenantDataService;
@@ -249,8 +251,14 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
 
         String msg = "{} - {}账户有一笔新的到账(金额:{} {}),请相应业务员进行认领。";
 
-        WebSocketServer.sendInfoGroup(0, StrUtil.format(
-                msg, corporation.getName(), accountManagement.getName(), dto.getCurrency(), dto.getAmount()));
+        // WebSocketServer.sendInfoGroup(0, StrUtil.format(
+        //         msg, corporation.getName(), accountManagement.getName(), dto.getCurrency(), dto.getAmount()));
+
+        WebSocketPush.byTenant(
+                PushTypeEnum.PUSH_NOTIFICATION,
+                StrUtil.format(msg, corporation.getName(), accountManagement.getName(), dto.getCurrency(), dto.getAmount()),
+                PushBusinessTypeEnum.TO_THE_ACCOUNT.getType()
+        );
 
     }
 

+ 79 - 79
hx-common/src/main/java/com/fjhx/common/controller/send/SendMegController.java

@@ -1,79 +1,79 @@
-package com.fjhx.common.controller.send;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.common.entity.send.dto.SendMegDto;
-import com.fjhx.common.entity.send.dto.SendMegSelectDto;
-import com.fjhx.common.entity.send.vo.SendMegVo;
-import com.fjhx.common.service.send.SendMegService;
-import com.ruoyi.common.core.domain.BaseSelectDto;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-
-/**
- * <p>
- * 前端控制器
- * </p>
- *
- * @author
- * @since 2023-05-22
- */
-@EnableScheduling
-@RestController
-@RequestMapping("/sendMeg")
-public class SendMegController {
-
-    @Autowired
-    private SendMegService sendMegService;
-
-    /**
-     * 分页
-     */
-    @PostMapping("/page")
-    public Page<SendMegVo> page(@RequestBody SendMegSelectDto dto) {
-        return sendMegService.getPage(dto);
-    }
-
-    /**
-     * 明细
-     */
-    @PostMapping("/detail")
-    public SendMegVo detail(@RequestBody BaseSelectDto dto) {
-        return sendMegService.detail(dto.getId());
-    }
-
-    /**
-     * 新增
-     */
-    @PostMapping("/add")
-    public void add(@RequestBody SendMegDto sendMegDto) {
-        sendMegService.add(sendMegDto);
-    }
-
-    /**
-     * 编辑
-     */
-    @PostMapping("/edit")
-    public void edit(@RequestBody SendMegDto sendMegDto) {
-        sendMegService.edit(sendMegDto);
-    }
-
-    /**
-     * 删除
-     */
-    @PostMapping("/delete")
-    public void delete(@RequestBody BaseSelectDto dto) {
-        sendMegService.delete(dto.getId());
-    }
-
-    @Scheduled(cron = "0 0/1 *  * * ? ")   // 每1分钟执行一次
-    public void execute() {
-        sendMegService.executeSend();
-    }
-
-}
+// package com.fjhx.common.controller.send;
+//
+// import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+// import com.fjhx.common.entity.send.dto.SendMegDto;
+// import com.fjhx.common.entity.send.dto.SendMegSelectDto;
+// import com.fjhx.common.entity.send.vo.SendMegVo;
+// import com.fjhx.common.service.send.SendMegService;
+// import com.ruoyi.common.core.domain.BaseSelectDto;
+// import org.springframework.beans.factory.annotation.Autowired;
+// import org.springframework.scheduling.annotation.EnableScheduling;
+// import org.springframework.scheduling.annotation.Scheduled;
+// import org.springframework.web.bind.annotation.PostMapping;
+// import org.springframework.web.bind.annotation.RequestBody;
+// import org.springframework.web.bind.annotation.RequestMapping;
+// import org.springframework.web.bind.annotation.RestController;
+//
+//
+// /**
+//  * <p>
+//  * 前端控制器
+//  * </p>
+//  *
+//  * @author
+//  * @since 2023-05-22
+//  */
+// @EnableScheduling
+// @RestController
+// @RequestMapping("/sendMeg")
+// public class SendMegController {
+//
+//     @Autowired
+//     private SendMegService sendMegService;
+//
+//     /**
+//      * 分页
+//      */
+//     @PostMapping("/page")
+//     public Page<SendMegVo> page(@RequestBody SendMegSelectDto dto) {
+//         return sendMegService.getPage(dto);
+//     }
+//
+//     /**
+//      * 明细
+//      */
+//     @PostMapping("/detail")
+//     public SendMegVo detail(@RequestBody BaseSelectDto dto) {
+//         return sendMegService.detail(dto.getId());
+//     }
+//
+//     /**
+//      * 新增
+//      */
+//     @PostMapping("/add")
+//     public void add(@RequestBody SendMegDto sendMegDto) {
+//         sendMegService.add(sendMegDto);
+//     }
+//
+//     /**
+//      * 编辑
+//      */
+//     @PostMapping("/edit")
+//     public void edit(@RequestBody SendMegDto sendMegDto) {
+//         sendMegService.edit(sendMegDto);
+//     }
+//
+//     /**
+//      * 删除
+//      */
+//     @PostMapping("/delete")
+//     public void delete(@RequestBody BaseSelectDto dto) {
+//         sendMegService.delete(dto.getId());
+//     }
+//
+//     @Scheduled(cron = "0 0/1 *  * * ? ")   // 每1分钟执行一次
+//     public void execute() {
+//         sendMegService.executeSend();
+//     }
+//
+// }

+ 36 - 0
hx-common/src/main/java/com/fjhx/common/enums/PushBusinessTypeEnum.java

@@ -0,0 +1,36 @@
+package com.fjhx.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum PushBusinessTypeEnum {
+    /**
+     * 未读日报
+     */
+    UNREAD_DAILY(1),
+    /**
+     * 发布日志
+     */
+    RELEASE_LOG(2),
+    /**
+     * 分享日报
+     */
+    SHARE_DAILY(3),
+    /**
+     * 日程提醒
+     */
+    SCHEDULE_REMINDER(4),
+    /**
+     * 到账
+     */
+    TO_THE_ACCOUNT(5),
+    /**
+     * 异常处理
+     */
+    EXCEPTION_HANDLING(6);
+
+    private final int type;
+
+}

+ 26 - 26
hx-common/src/main/java/com/fjhx/common/mapper/send/SendMegMapper.java

@@ -1,26 +1,26 @@
-package com.fjhx.common.mapper.send;
-
-import com.fjhx.common.entity.send.po.SendMeg;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.common.entity.send.vo.SendMegVo;
-import com.ruoyi.common.utils.wrapper.IWrapper;
-import org.apache.ibatis.annotations.Param;
-
-
-/**
- * <p>
- *  Mapper 接口
- * </p>
- *
- * @author 
- * @since 2023-05-22
- */
-public interface SendMegMapper extends BaseMapper<SendMeg> {
-
-    /**
-     * 分页
-     */
-    Page<SendMegVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<SendMeg> wrapper);
-
-}
+// package com.fjhx.common.mapper.send;
+//
+// import com.fjhx.common.entity.send.po.SendMeg;
+// import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+// import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+// import com.fjhx.common.entity.send.vo.SendMegVo;
+// import com.ruoyi.common.utils.wrapper.IWrapper;
+// import org.apache.ibatis.annotations.Param;
+//
+//
+// /**
+//  * <p>
+//  *  Mapper 接口
+//  * </p>
+//  *
+//  * @author
+//  * @since 2023-05-22
+//  */
+// public interface SendMegMapper extends BaseMapper<SendMeg> {
+//
+//     /**
+//      * 分页
+//      */
+//     Page<SendMegVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<SendMeg> wrapper);
+//
+// }

+ 55 - 55
hx-common/src/main/java/com/fjhx/common/service/send/SendMegService.java

@@ -1,55 +1,55 @@
-package com.fjhx.common.service.send;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.common.entity.send.dto.SendMegDto;
-import com.fjhx.common.entity.send.dto.SendMegSelectDto;
-import com.fjhx.common.entity.send.po.SendMeg;
-import com.fjhx.common.entity.send.vo.SendMegVo;
-import com.ruoyi.common.core.service.BaseService;
-
-
-/**
- * <p>
- * 服务类
- * </p>
- *
- * @author
- * @since 2023-05-22
- */
-public interface SendMegService extends BaseService<SendMeg> {
-
-    /**
-     * 分页
-     */
-    Page<SendMegVo> getPage(SendMegSelectDto dto);
-
-    /**
-     * 明细
-     */
-    SendMegVo detail(Long id);
-
-    /**
-     * 新增
-     */
-    void add(SendMegDto sendMegDto);
-
-    /**
-     * 编辑
-     */
-    void edit(SendMegDto sendMegDto);
-
-    /**
-     * 删除
-     */
-    void delete(Long id);
-
-    /**
-     * 推送数据
-     */
-    void send(SendMeg sendMeg);
-
-
-    void executeSend();
-
-
-}
+// package com.fjhx.common.service.send;
+//
+// import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+// import com.fjhx.common.entity.send.dto.SendMegDto;
+// import com.fjhx.common.entity.send.dto.SendMegSelectDto;
+// import com.fjhx.common.entity.send.po.SendMeg;
+// import com.fjhx.common.entity.send.vo.SendMegVo;
+// import com.ruoyi.common.core.service.BaseService;
+//
+//
+// /**
+//  * <p>
+//  * 服务类
+//  * </p>
+//  *
+//  * @author
+//  * @since 2023-05-22
+//  */
+// public interface SendMegService extends BaseService<SendMeg> {
+//
+//     /**
+//      * 分页
+//      */
+//     Page<SendMegVo> getPage(SendMegSelectDto dto);
+//
+//     /**
+//      * 明细
+//      */
+//     SendMegVo detail(Long id);
+//
+//     /**
+//      * 新增
+//      */
+//     void add(SendMegDto sendMegDto);
+//
+//     /**
+//      * 编辑
+//      */
+//     void edit(SendMegDto sendMegDto);
+//
+//     /**
+//      * 删除
+//      */
+//     void delete(Long id);
+//
+//     /**
+//      * 推送数据
+//      */
+//     void send(SendMeg sendMeg);
+//
+//
+//     void executeSend();
+//
+//
+// }

+ 166 - 166
hx-common/src/main/java/com/fjhx/common/service/send/impl/SendMegServiceImpl.java

@@ -1,166 +1,166 @@
-package com.fjhx.common.service.send.impl;
-
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.date.DateUtil;
-import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fjhx.common.constant.SourceConstant;
-import com.fjhx.common.entity.send.dto.SendMegDto;
-import com.fjhx.common.entity.send.dto.SendMegSelectDto;
-import com.fjhx.common.entity.send.po.SendMeg;
-import com.fjhx.common.entity.send.vo.SendMegVo;
-import com.fjhx.common.mapper.send.SendMegMapper;
-import com.fjhx.common.service.send.SendMegService;
-import com.fjhx.socket.entity.MessageEntity;
-import com.fjhx.socket.event.WebSocketUserOfflineEvent;
-import com.fjhx.socket.service.WebSocketServer;
-import com.ruoyi.common.constant.StatusConstant;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.redis.RedisCache;
-import com.ruoyi.common.utils.wrapper.IWrapper;
-import com.ruoyi.framework.mybatis.holder.TenantHolder;
-import com.ruoyi.system.service.ISysUserService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.event.EventListener;
-import org.springframework.stereotype.Service;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Set;
-
-
-/**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author
- * @since 2023-05-22
- */
-@Slf4j
-@Service
-public class SendMegServiceImpl extends ServiceImpl<SendMegMapper, SendMeg> implements SendMegService {
-
-    @Autowired
-    private ISysUserService sysUserService;
-
-    @Autowired
-    private RedisCache redisCache;
-
-    private static final String sendMessageKey = "sendMessage:";
-
-    @Override
-    public Page<SendMegVo> getPage(SendMegSelectDto dto) {
-        IWrapper<SendMeg> wrapper = getWrapper();
-        wrapper.eq("sm", SendMeg::getType, dto.getType());
-        wrapper.eq("sm", SendMeg::getStatus, dto.getStatus());
-        wrapper.orderByAsc("sm", SendMeg::getStatus);
-        wrapper.orderByDesc("sm", SendMeg::getId);
-        Page<SendMegVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
-        return page;
-    }
-
-    @Override
-    public SendMegVo detail(Long id) {
-        SendMeg SendMeg = this.getById(id);
-        SendMegVo result = BeanUtil.toBean(SendMeg, SendMegVo.class);
-        return result;
-    }
-
-    @Override
-    public void add(SendMegDto sendMegDto) {
-        Date sendTime = sendMegDto.getSendTime();
-        if (sendTime.before(DateUtil.endOfMinute(new Date()))) {
-            sendMegDto.setStatus(StatusConstant.YES);
-            new Thread(() -> send(sendMegDto)).start();
-        } else {
-            sendMegDto.setStatus(StatusConstant.NO);
-        }
-
-        this.save(sendMegDto);
-    }
-
-    @Override
-    public void edit(SendMegDto sendMegDto) {
-        sendMegDto.setStatus(StatusConstant.YES);
-        this.updateById(sendMegDto);
-    }
-
-    @Override
-    public void delete(Long id) {
-        this.removeById(id);
-    }
-
-    @Override
-    public synchronized void send(SendMeg sendMeg) {
-        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
-        TenantHolder.setIgnore(true);
-        List<SysUser> list = sysUserService.list();
-        DynamicDataSourceContextHolder.poll();
-
-        for (SysUser sysUser : list) {
-            WebSocketServer.sendInfo(sysUser.getUserId(), 0, sendMeg);
-        }
-
-    }
-
-    @Override
-    public void executeSend() {
-
-        Set<String> scan = redisCache.scan(sendMessageKey + "**");
-        for (String key : scan) {
-            String[] split = key.split(":");
-            if (split.length != 3) {
-                return;
-            }
-            String userIdStr = split[2];
-            Long userId = Convert.toLong(userIdStr);
-            if (userId == null) {
-                return;
-            }
-
-            try {
-                SendMeg cacheObject = redisCache.getCacheObject(key);
-                redisCache.deleteObject(key);
-                WebSocketServer.sendInfo(userId, 0, cacheObject);
-            } catch (Exception e) {
-                log.error("推送异常", e);
-            }
-
-        }
-
-
-        List<SendMeg> list = list(q -> q
-                .eq(SendMeg::getStatus, StatusConstant.NO)
-                .le(SendMeg::getSendTime, DateUtil.endOfMinute(new Date())));
-
-        for (SendMeg sendMeg : list) {
-            send(sendMeg);
-            sendMeg.setStatus(StatusConstant.YES);
-        }
-        updateBatchById(list);
-
-    }
-
-    @EventListener
-    public void userOfflineEvent(WebSocketUserOfflineEvent webSocketUserOfflineEvent) {
-        MessageEntity messageEntity = webSocketUserOfflineEvent.getMessageEntity();
-
-        Object data = messageEntity.getData();
-
-        if (messageEntity.getType() != 0 || !(data instanceof SendMeg)) {
-            return;
-        }
-
-        String key = sendMessageKey + ((SendMeg) data).getId() + ":" + messageEntity.getUserId();
-        if (((SendMeg) data).getEndTime().after(new Date())) {
-            redisCache.setCacheObject(key, data);
-        }
-
-    }
-
-
-}
+// package com.fjhx.common.service.send.impl;
+//
+// import cn.hutool.core.bean.BeanUtil;
+// import cn.hutool.core.convert.Convert;
+// import cn.hutool.core.date.DateUtil;
+// import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+// import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+// import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+// import com.fjhx.common.constant.SourceConstant;
+// import com.fjhx.common.entity.send.dto.SendMegDto;
+// import com.fjhx.common.entity.send.dto.SendMegSelectDto;
+// import com.fjhx.common.entity.send.po.SendMeg;
+// import com.fjhx.common.entity.send.vo.SendMegVo;
+// import com.fjhx.common.mapper.send.SendMegMapper;
+// import com.fjhx.common.service.send.SendMegService;
+// import com.fjhx.socket.entity.MessageEntity;
+// import com.fjhx.socket.event.WebSocketUserOfflineEvent;
+// import com.fjhx.socket.service.WebSocketServer;
+// import com.ruoyi.common.constant.StatusConstant;
+// import com.ruoyi.common.core.domain.entity.SysUser;
+// import com.ruoyi.common.core.redis.RedisCache;
+// import com.ruoyi.common.utils.wrapper.IWrapper;
+// import com.ruoyi.framework.mybatis.holder.TenantHolder;
+// import com.ruoyi.system.service.ISysUserService;
+// import lombok.extern.slf4j.Slf4j;
+// import org.springframework.beans.factory.annotation.Autowired;
+// import org.springframework.context.event.EventListener;
+// import org.springframework.stereotype.Service;
+//
+// import java.util.Date;
+// import java.util.List;
+// import java.util.Set;
+//
+//
+// /**
+//  * <p>
+//  * 服务实现类
+//  * </p>
+//  *
+//  * @author
+//  * @since 2023-05-22
+//  */
+// @Slf4j
+// @Service
+// public class SendMegServiceImpl extends ServiceImpl<SendMegMapper, SendMeg> implements SendMegService {
+//
+//     @Autowired
+//     private ISysUserService sysUserService;
+//
+//     @Autowired
+//     private RedisCache redisCache;
+//
+//     private static final String sendMessageKey = "sendMessage:";
+//
+//     @Override
+//     public Page<SendMegVo> getPage(SendMegSelectDto dto) {
+//         IWrapper<SendMeg> wrapper = getWrapper();
+//         wrapper.eq("sm", SendMeg::getType, dto.getType());
+//         wrapper.eq("sm", SendMeg::getStatus, dto.getStatus());
+//         wrapper.orderByAsc("sm", SendMeg::getStatus);
+//         wrapper.orderByDesc("sm", SendMeg::getId);
+//         Page<SendMegVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+//         return page;
+//     }
+//
+//     @Override
+//     public SendMegVo detail(Long id) {
+//         SendMeg SendMeg = this.getById(id);
+//         SendMegVo result = BeanUtil.toBean(SendMeg, SendMegVo.class);
+//         return result;
+//     }
+//
+//     @Override
+//     public void add(SendMegDto sendMegDto) {
+//         Date sendTime = sendMegDto.getSendTime();
+//         if (sendTime.before(DateUtil.endOfMinute(new Date()))) {
+//             sendMegDto.setStatus(StatusConstant.YES);
+//             new Thread(() -> send(sendMegDto)).start();
+//         } else {
+//             sendMegDto.setStatus(StatusConstant.NO);
+//         }
+//
+//         this.save(sendMegDto);
+//     }
+//
+//     @Override
+//     public void edit(SendMegDto sendMegDto) {
+//         sendMegDto.setStatus(StatusConstant.YES);
+//         this.updateById(sendMegDto);
+//     }
+//
+//     @Override
+//     public void delete(Long id) {
+//         this.removeById(id);
+//     }
+//
+//     @Override
+//     public synchronized void send(SendMeg sendMeg) {
+//         DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+//         TenantHolder.setIgnore(true);
+//         List<SysUser> list = sysUserService.list();
+//         DynamicDataSourceContextHolder.poll();
+//
+//         for (SysUser sysUser : list) {
+//             WebSocketServer.sendInfo(sysUser.getUserId(), 0, sendMeg);
+//         }
+//
+//     }
+//
+//     @Override
+//     public void executeSend() {
+//
+//         Set<String> scan = redisCache.scan(sendMessageKey + "**");
+//         for (String key : scan) {
+//             String[] split = key.split(":");
+//             if (split.length != 3) {
+//                 return;
+//             }
+//             String userIdStr = split[2];
+//             Long userId = Convert.toLong(userIdStr);
+//             if (userId == null) {
+//                 return;
+//             }
+//
+//             try {
+//                 SendMeg cacheObject = redisCache.getCacheObject(key);
+//                 redisCache.deleteObject(key);
+//                 WebSocketServer.sendInfo(userId, 0, cacheObject);
+//             } catch (Exception e) {
+//                 log.error("推送异常", e);
+//             }
+//
+//         }
+//
+//
+//         List<SendMeg> list = list(q -> q
+//                 .eq(SendMeg::getStatus, StatusConstant.NO)
+//                 .le(SendMeg::getSendTime, DateUtil.endOfMinute(new Date())));
+//
+//         for (SendMeg sendMeg : list) {
+//             send(sendMeg);
+//             sendMeg.setStatus(StatusConstant.YES);
+//         }
+//         updateBatchById(list);
+//
+//     }
+//
+//     @EventListener
+//     public void userOfflineEvent(WebSocketUserOfflineEvent webSocketUserOfflineEvent) {
+//         MessageEntity messageEntity = webSocketUserOfflineEvent.getMessageEntity();
+//
+//         Object data = messageEntity.getData();
+//
+//         if (messageEntity.getType() != 0 || !(data instanceof SendMeg)) {
+//             return;
+//         }
+//
+//         String key = sendMessageKey + ((SendMeg) data).getId() + ":" + messageEntity.getUserId();
+//         if (((SendMeg) data).getEndTime().after(new Date())) {
+//             redisCache.setCacheObject(key, data);
+//         }
+//
+//     }
+//
+//
+// }

+ 12 - 2
hx-oa/src/main/java/com/fjhx/oa/service/daily/impl/DailyReportDetailsServiceImpl.java

@@ -4,11 +4,13 @@ import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.PushBusinessTypeEnum;
 import com.fjhx.oa.entity.daily.po.DailyReportDetails;
 import com.fjhx.oa.entity.daily.vo.DailyReportDetailsVo;
 import com.fjhx.oa.mapper.daily.DailyReportDetailsMapper;
 import com.fjhx.oa.service.daily.DailyReportDetailsService;
-import com.fjhx.socket.service.WebSocketServer;
+import com.fjhx.socket.core.PushTypeEnum;
+import com.fjhx.socket.core.WebSocketPush;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.stereotype.Service;
 
@@ -44,7 +46,15 @@ public class DailyReportDetailsServiceImpl extends ServiceImpl<DailyReportDetail
         msgMap.put("businessId", id);
         msgMap.put("msg", "您有未读的日报");
         for (DailyReportDetails dailyReportDetails : list) {
-            WebSocketServer.sendInfo(dailyReportDetails.getRecipientId(), 1, msgMap);
+            // WebSocketServer.sendInfo(dailyReportDetails.getRecipientId(), 1, msgMap);
+
+            WebSocketPush.byUser(
+                    PushTypeEnum.MESSAGE,
+                    dailyReportDetails.getRecipientId(),
+                    "您有未读的日报",
+                    PushBusinessTypeEnum.UNREAD_DAILY.getType(),
+                    msgMap
+            );
         }
     }
 }

+ 22 - 3
hx-oa/src/main/java/com/fjhx/oa/service/daily/impl/DailyReportServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.enums.PushBusinessTypeEnum;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.oa.entity.daily.dto.DailyReportDto;
 import com.fjhx.oa.entity.daily.dto.DailyReportSelectDto;
@@ -17,7 +18,8 @@ import com.fjhx.oa.entity.daily.vo.DailyReportVo;
 import com.fjhx.oa.mapper.daily.DailyReportMapper;
 import com.fjhx.oa.service.daily.DailyReportDetailsService;
 import com.fjhx.oa.service.daily.DailyReportService;
-import com.fjhx.socket.service.WebSocketServer;
+import com.fjhx.socket.core.PushTypeEnum;
+import com.fjhx.socket.core.WebSocketPush;
 import com.ruoyi.common.constant.StatusConstant;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
@@ -120,7 +122,15 @@ public class DailyReportServiceImpl extends ServiceImpl<DailyReportMapper, Daily
         msgMap.put("businessId", dailyReportDto.getId());
         msgMap.put("msg", String.format("%s发布了新日志", userName));
         for (DailyReportDetails dailyReportDetails : dailyReportDetailsList) {
-            WebSocketServer.sendInfo(dailyReportDetails.getRecipientId(), 1, msgMap);
+            // WebSocketServer.sendInfo(dailyReportDetails.getRecipientId(), 1, msgMap);
+
+            WebSocketPush.byUser(
+                    PushTypeEnum.MESSAGE,
+                    dailyReportDetails.getRecipientId(),
+                    String.format("%s发布了新日志", userName),
+                    PushBusinessTypeEnum.RELEASE_LOG.getType(),
+                    msgMap
+            );
         }
     }
 
@@ -173,7 +183,16 @@ public class DailyReportServiceImpl extends ServiceImpl<DailyReportMapper, Daily
         msgMap.put("businessId", id);
         msgMap.put("msg", String.format("%s给你分享了日报", username));
         for (Long toUserId : toUserIdList) {
-            WebSocketServer.sendInfo(toUserId, 1, msgMap);
+            // WebSocketServer.sendInfo(toUserId, 1, msgMap);
+
+            WebSocketPush.byUser(
+                    PushTypeEnum.MESSAGE,
+                    toUserId,
+                    String.format("%s给你分享了日报", username),
+                    PushBusinessTypeEnum.SHARE_DAILY.getType(),
+                    msgMap
+            );
+
         }
     }
 

+ 14 - 3
hx-oa/src/main/java/com/fjhx/oa/utils/Notice.java

@@ -2,11 +2,13 @@ package com.fjhx.oa.utils;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fjhx.common.enums.PushBusinessTypeEnum;
 import com.fjhx.oa.entity.schedule.po.ScheduleDetails;
 import com.fjhx.oa.entity.schedule.po.ScheduleInfo;
 import com.fjhx.oa.service.schedule.ScheduleDetailsService;
 import com.fjhx.oa.service.schedule.ScheduleInfoService;
-import com.fjhx.socket.service.WebSocketServer;
+import com.fjhx.socket.core.PushTypeEnum;
+import com.fjhx.socket.core.WebSocketPush;
 import com.ruoyi.framework.mybatis.holder.TenantHolder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
@@ -85,14 +87,23 @@ public class Notice {
             List<Long> scheduleInfoIds = scheduleInfos.stream().map(ScheduleInfo::getId).collect(Collectors.toList());
             List<ScheduleDetails> scheduleDetailsList = scheduleDetailsService.list(q -> q.in(ScheduleDetails::getScheduleInfoId, scheduleInfoIds));
             for (ScheduleDetails scheduleDetails : scheduleDetailsList) {
-                //发送消息
+                // 发送消息
                 ScheduleInfo scheduleInfo = scheduleInfoMap1.get(scheduleDetails.getScheduleInfoId());
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                 String msg = String.format("您的日程<%s>将于%s开始。", scheduleInfo.getTitle(), sdf.format(scheduleInfo.getStartDate()));
+
                 Map<String, Object> msgMap = new HashMap<>();
                 msgMap.put("businessId", scheduleInfo.getId());
                 msgMap.put("msg", msg);
-                WebSocketServer.sendInfo(scheduleDetails.getParticipantId(), 1, msgMap);
+                // WebSocketServer.sendInfo(scheduleDetails.getParticipantId(), 1, msgMap);
+
+                WebSocketPush.byUser(
+                        PushTypeEnum.PUSH_NOTIFICATION,
+                        scheduleDetails.getParticipantId(),
+                        msg,
+                        PushBusinessTypeEnum.SCHEDULE_REMINDER.getType(),
+                        msgMap
+                );
             }
         }
         TenantHolder.clear();

+ 1 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java

@@ -83,6 +83,7 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
     public Page<ContractProductVo> getPage(ContractProductSelectDto dto) {
         IWrapper<ContractProduct> wrapper = getWrapper();
         wrapper.orderByDesc("t1", ContractProduct::getCreateTime);
+        wrapper.ne("t1",ContractProduct::getExpendQuantity,0);
         wrapper.between("t2", Contract::getStatus, FlowStatusEnum.PASS.getKey(), FlowStatusEnum.CANCELLATION.getKey() - 1);
         if(ObjectUtil.isNotEmpty(dto.getDataType())&&dto.getDataType()==0){//合同交接单
             wrapper.ne("t1", ContractProduct::getExpendQuantity, BigDecimal.ZERO);

+ 17 - 6
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/abnormal/impl/AbnormalDetailsServiceImpl.java

@@ -7,7 +7,9 @@ import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.common.constant.SourceConstant;
-import com.fjhx.socket.service.WebSocketServer;
+import com.fjhx.common.enums.PushBusinessTypeEnum;
+import com.fjhx.socket.core.PushTypeEnum;
+import com.fjhx.socket.core.WebSocketPush;
 import com.fjhx.victoriatourist.entity.abnormal.dto.AbnormalDetailsDto;
 import com.fjhx.victoriatourist.entity.abnormal.dto.AbnormalDetailsSelectDto;
 import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalDetails;
@@ -75,11 +77,20 @@ public class AbnormalDetailsServiceImpl extends ServiceImpl<AbnormalDetailsMappe
 
         //如果下一跟进人不为空 就给下一跟进人发送消息
         if (ObjectUtil.isNotEmpty(abnormalDetailsDto.getNextHandleUser())) {
-            //给下一个跟进人发消息通知
-            JSONObject meassage = new JSONObject();
-            meassage.put("msg", "有异常需要您跟进");
-            meassage.put("abnormalInfoId", abnormalDetailsDto.getAbnormalInfoId().toString());
-            WebSocketServer.sendInfo(abnormalDetailsDto.getNextHandleUser(), 1, meassage);
+            // 给下一个跟进人发消息通知
+            JSONObject message = new JSONObject();
+            message.put("msg", "有异常需要您跟进");
+            message.put("abnormalInfoId", abnormalDetailsDto.getAbnormalInfoId().toString());
+            // WebSocketServer.sendInfo(abnormalDetailsDto.getNextHandleUser(), 1, message);
+
+            WebSocketPush.byUser(
+                    PushTypeEnum.PUSH_NOTIFICATION,
+                    abnormalDetailsDto.getNextHandleUser(),
+                    "有异常需要您跟进",
+                    PushBusinessTypeEnum.EXCEPTION_HANDLING.getType(),
+                    message
+            );
+
         }
 
         this.save(abnormalDetailsDto);

+ 1 - 1
pom.xml

@@ -52,7 +52,7 @@
             <dependency>
                 <groupId>com.fjhx</groupId>
                 <artifactId>hx-base</artifactId>
-                <version>1.0.1</version>
+                <version>1.0.2</version>
             </dependency>
             <dependency>
                 <groupId>com.fjhx</groupId>