Преглед изворни кода

每个小时的5分0秒,执行一次,将对应时间段0分0秒-5分0秒钟创建的消息(sys_notify_announce表),并且标题为“生产问题--xxxx”的消息,修改NOTIFYTYPE为"issuetracking",发送app推送

sucheng пре 1 година
родитељ
комит
770e4b3297

+ 8 - 0
cx-question/cx-question-common/src/main/java/com/rongwei/bscommon/sys/dao/SrmIssuesListDao.java

@@ -6,8 +6,11 @@ import com.rongwei.bsentity.domin.SrmIssuesListDo;
 import com.rongwei.bsentity.vo.SrmFormCountVo;
 import com.rongwei.rwcommon.base.BaseDao;
 import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
+import com.rongwei.rwcommonentity.commonservers.vo.SysNotifyAnnounceVo;
+import dto.SysNoticeVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 
@@ -45,4 +48,9 @@ public interface SrmIssuesListDao extends BaseDao<SrmIssuesListDo> {
     List<SrmIssuesListDo> getListByMesId(@Param("mesIds")List<String> mesIds);
 
     void insertFile(@Param("model") SysFileItemDo sysFileItemDo);
+
+    @Select("SELECT sna.*,GROUP_CONCAT(snau.RECIPIENTID) as 'recipientIds' FROM sys_notify_announce sna LEFT JOIN sys_notify_announce_user snau ON sna.ID = snau.ANNOUNCEID AND snau.DELETED = 0 where sna.DELETED = 0 AND sna.NOTIFYTITLE like CONCAT('生产问题--','%') AND sna.CREATEDATE >= DATE_FORMAT(NOW(),'%Y-%m-%d %H:00:00') AND sna.CREATEDATE <= NOW() GROUP BY sna.ID")
+    List<SysNoticeVo> selectNoticeByProduct();
+
+    void updateNoticeByProduct(@Param("idList") List<String> idList);
 }

+ 2 - 0
cx-question/cx-question-common/src/main/java/com/rongwei/bscommon/sys/service/SrmIssuesListService.java

@@ -19,4 +19,6 @@ public interface SrmIssuesListService extends IService<SrmIssuesListDo> {
     void saveFishBoneImg(SrmIssuesListDo srmIssuesListDo) throws IOException;
 
     List<SrmIssuesListDo> getListByMesId(List<String> mesIds);
+
+    void productionOverdue();
 }

+ 25 - 0
cx-question/cx-question-common/src/main/java/com/rongwei/bscommon/sys/service/impl/SrmIssuesListServiceImpl.java

@@ -9,7 +9,9 @@ import com.rongwei.commonservice.service.SysConfigService;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
+import com.rongwei.rwcommonentity.commonservers.vo.SysNotifyAnnounceVo;
 import com.rongwei.safecommon.utils.CXCommonUtils;
+import dto.SysNoticeVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import sun.misc.BASE64Decoder;
@@ -17,7 +19,9 @@ import sun.misc.BASE64Decoder;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -104,4 +108,25 @@ public class SrmIssuesListServiceImpl extends ServiceImpl<SrmIssuesListDao, SrmI
     public List<SrmIssuesListDo> getListByMesId(List<String> mesIds){
         return srmIssuesListDao.getListByMesId(mesIds);
     }
+
+    @Override
+    public void productionOverdue() {
+        //查询需要推送和修改的消息
+        List<SysNoticeVo> list = this.baseMapper.selectNoticeByProduct();
+        //没有消息,直接结束
+        if (list.size() <= 0){
+            return;
+        }
+        //有消息将消息的NOTIFYTYPE改为production_overdue
+        List<String> idList = list.stream().map(SysNotifyAnnounceVo::getId).collect(Collectors.toList());
+        this.baseMapper.updateNoticeByProduct(idList);
+        //将消息发送给app
+        for (SysNoticeVo sysNoticeVo : list) {
+            String title = sysNoticeVo.getTitle();
+            String content = sysNoticeVo.getNotifycontent();
+            List<String> userIdList = Arrays.asList(sysNoticeVo.getRecipientIds().split(","));
+            CXCommonUtils.pushApp(title,content,userIdList);
+        }
+
+    }
 }

+ 14 - 0
cx-question/cx-question-entity/src/main/java/dto/SysNoticeVo.java

@@ -0,0 +1,14 @@
+package dto;
+
+import com.rongwei.rwcommonentity.commonservers.vo.SysNotifyAnnounceVo;
+import lombok.Data;
+
+/**
+ * @author :sc
+ * @since :2024/2/6
+ */
+@Data
+public class SysNoticeVo extends SysNotifyAnnounceVo {
+    //接收人id,使用英文逗号隔开
+    private String recipientIds;
+}

+ 10 - 0
cx-question/cx-question-entity/src/main/resources/mybatis/SrmIssuesListDao.xml

@@ -118,6 +118,16 @@ VALUES
 	    #{model.modifyusername}
 	)
     </insert>
+    <update id="updateNoticeByProduct">
+        UPDATE sys_notify_announce set NOTIFYTYPE = 'issuetracking'
+        <where>
+            DELETED = 0
+            AND ID in
+            <foreach collection="idList" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </where>
+    </update>
 
     <select id="getProblemByTaskRun" resultType="com.rongwei.bsentity.domin.SrmIssuesListDo">
         SELECT

+ 9 - 0
cx-question/cx-question-server/src/main/java/com/rongwei/controller/QuestionController.java

@@ -68,4 +68,13 @@ public class QuestionController {
         return R.ok();
     }
 
+
+    /**
+     * 每个小时的5分0秒,执行一次,将对应时间段0分0秒-5分0秒钟创建的消息(sys_notify_announce表),并且标题为“生产问题--xxxx”的消息,修改NOTIFYTYPE为"issuetracking",发送app推送
+     */
+    @PostMapping("/productionOverdue")
+    public R productionOverdue(){
+        srmIssuesListService.productionOverdue();
+        return R.ok();
+    }
 }