Browse Source

Merge remote-tracking branch 'origin/master'

xiahan 1 year ago
parent
commit
c05540be9a
12 changed files with 571 additions and 0 deletions
  1. 16 0
      cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspSafetyEmergencyPlanDao.java
  2. 12 0
      cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspSafetyMeetingDao.java
  3. 12 0
      cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/AspSafetyDrillProgrammeService.java
  4. 16 0
      cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/AspSafetyEmergencyPlanService.java
  5. 16 0
      cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/AspSafetyMeetingService.java
  6. 101 0
      cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspSafetyDrillProgrammeServiceImpl.java
  7. 20 0
      cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspSafetyEmergencyPlanServiceImpl.java
  8. 41 0
      cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspSafetyMeetingImpl.java
  9. 156 0
      cx-safe-check/cx-save-check-entity/src/main/java/com/rongwe/scentity/domian/AspSafetyEmergencyPlan.java
  10. 124 0
      cx-safe-check/cx-save-check-entity/src/main/java/com/rongwe/scentity/domian/AspSafetyMeeting.java
  11. 25 0
      cx-safe-check/cx-save-check-server/src/main/java/com/rongwei/savecheck/controller/AspSafetyDrillProgrammeController.java
  12. 32 0
      cx-safe-check/cx-save-check-server/src/main/java/com/rongwei/savecheck/controller/AspSafetyMeetingController.java

+ 16 - 0
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspSafetyEmergencyPlanDao.java

@@ -0,0 +1,16 @@
+package com.rongwei.sfcommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwe.scentity.domian.AspSafetyEmergencyPlan;
+
+/**
+ * <p>
+ * 安全应急-预案管理 Mapper 接口
+ * </p>
+ *
+ * @author wm
+ * @since 2023-12-27
+ */
+public interface AspSafetyEmergencyPlanDao extends BaseMapper<AspSafetyEmergencyPlan> {
+
+}

+ 12 - 0
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/dao/AspSafetyMeetingDao.java

@@ -0,0 +1,12 @@
+package com.rongwei.sfcommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwe.scentity.domian.AspSafetyMeeting;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+public interface AspSafetyMeetingDao extends BaseMapper<AspSafetyMeeting> {
+    @Select("select * from asp_safety_meeting where DELETED = 0 AND MEETINGDATE >= CURDATE() AND MEETINGDATE <= DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 1 DAY),'%Y-%m-%d 23:59:59') AND ISSTAGING = 1")
+    List<AspSafetyMeeting> selectNeedReportMessage();
+}

+ 12 - 0
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/AspSafetyDrillProgrammeService.java

@@ -19,4 +19,16 @@ public interface AspSafetyDrillProgrammeService extends IService<AspSafetyDrillP
      */
     void publish();
 
+    /**
+     * 消息发布
+     *
+     * @param id
+     */
+    void sendMsg(String id);
+
+    /**
+     * 前三天和当天提醒
+     */
+    void notify3DayAndNow();
+
 }

+ 16 - 0
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/AspSafetyEmergencyPlanService.java

@@ -0,0 +1,16 @@
+package com.rongwei.sfcommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwe.scentity.domian.AspSafetyEmergencyPlan;
+
+/**
+ * <p>
+ * 安全应急-预案管理 服务类
+ * </p>
+ *
+ * @author wm
+ * @since 2023-12-27
+ */
+public interface AspSafetyEmergencyPlanService extends IService<AspSafetyEmergencyPlan> {
+
+}

+ 16 - 0
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/AspSafetyMeetingService.java

@@ -0,0 +1,16 @@
+package com.rongwei.sfcommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwe.scentity.domian.AspSafetyMeeting;
+
+
+/**
+ * 安全会议
+ */
+public interface AspSafetyMeetingService extends IService<AspSafetyMeeting> {
+
+
+    void reportMessage();
+
+}
+

+ 101 - 0
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspSafetyDrillProgrammeServiceImpl.java

@@ -1,16 +1,27 @@
 package com.rongwei.sfcommon.sys.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwe.scentity.domian.AspSafetyDrillProgrammeDo;
+import com.rongwe.scentity.domian.AspSafetyEmergencyPlan;
+import com.rongwei.rwadmincommon.system.domain.SysDictDo;
+import com.rongwei.rwadmincommon.system.service.SysDictService;
+import com.rongwei.rwcommon.utils.StringUtils;
+import com.rongwei.safecommon.utils.CXCommonUtils;
 import com.rongwei.sfcommon.sys.dao.AspSafetyDrillProgrammeDao;
 import com.rongwei.sfcommon.sys.service.AspSafetyDrillProgrammeService;
+import com.rongwei.sfcommon.sys.service.AspSafetyEmergencyPlanService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -23,6 +34,12 @@ import java.util.List;
 @Service
 public class AspSafetyDrillProgrammeServiceImpl extends ServiceImpl<AspSafetyDrillProgrammeDao, AspSafetyDrillProgrammeDo> implements AspSafetyDrillProgrammeService {
 
+    @Autowired
+    private AspSafetyEmergencyPlanService aspSafetyEmergencyPlanService;
+
+    @Autowired
+    private SysDictService dictService;
+
     /**
      * 发布演练方案(定时处理)
      */
@@ -51,4 +68,88 @@ public class AspSafetyDrillProgrammeServiceImpl extends ServiceImpl<AspSafetyDri
 
         this.updateBatchById(updateList);
     }
+
+    /**
+     * 消息发布
+     *
+     * @param id
+     */
+    @Override
+    public void sendMsg(String id) {
+        AspSafetyDrillProgrammeDo programmeDo = getById(id);
+        AspSafetyEmergencyPlan plan = aspSafetyEmergencyPlanService.getById(programmeDo.getPlanid());
+        notifyMsg(programmeDo, plan);
+    }
+
+    /**
+     * 前三天和当天提醒
+     */
+    @Override
+    public void notify3DayAndNow() {
+        //找出所有未演练状态的演练方案
+        LambdaQueryWrapper<AspSafetyDrillProgrammeDo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(AspSafetyDrillProgrammeDo::getDrillstatus, "20");
+
+        queryWrapper.apply("(DATE_FORMAT( DRILLTIME, '%Y-%m-%d' ) = DATE_FORMAT( NOW(), '%Y-%m-%d' ) OR DATE_FORMAT( DRILLTIME, '%Y-%m-%d' ) = DATE_FORMAT( DATE_SUB( NOW(), INTERVAL 3 DAY ), '%Y-%m-%d' ))");
+
+        List<AspSafetyDrillProgrammeDo> list = list(queryWrapper);
+
+        if(ObjectUtil.isEmpty(list)) {
+            return ;
+        }
+
+        list.forEach(item -> {
+            AspSafetyEmergencyPlan plan = aspSafetyEmergencyPlanService.getById(item.getPlanid());
+            notifyMsg(item, plan);
+        });
+    }
+
+    /**
+     * 消息提醒
+     *
+     * @param programmeDo
+     * @param plan
+     */
+    private void notifyMsg(AspSafetyDrillProgrammeDo programmeDo, AspSafetyEmergencyPlan plan) {
+
+        List<SysDictDo> planPlanType = dictService.getByRedis("emergency_plan_plan_type");
+
+        if(ObjectUtil.isEmpty(plan.getPlantype())) {
+            return;
+        }
+
+        List<String> planTypeList = new ArrayList<>();
+        for(String planType : plan.getPlantype().split(",")) {
+            Optional<SysDictDo> sysDictDo = planPlanType.stream().filter(item -> item.getValue().equals(planType)).findFirst();
+            planTypeList.add(sysDictDo.get().getName());
+        }
+
+        StringBuilder sb = new StringBuilder();
+        sb.append("【");
+        sb.append(programmeDo.getPlanname());
+        sb.append("】【");
+        sb.append(StringUtils.join(planTypeList, ","));
+        sb.append("】【");
+        sb.append(DateUtil.format(programmeDo.getDrilltime(), "yyyy-MM-dd HH: mm:ss"));
+        sb.append("】【");
+        sb.append(programmeDo.getDrilllocation());
+        sb.append("】即将开始进行演练,请悉知;");
+
+        List<String> userIdList = new ArrayList<>();
+        if(!ObjectUtil.isEmpty(programmeDo.getObserverids())) {
+            userIdList.addAll(Arrays.stream(programmeDo.getObserverids().split(",")).collect(Collectors.toList()));
+        }
+
+        if(!ObjectUtil.isEmpty(programmeDo.getParticipantid())) {
+            userIdList.addAll(Arrays.stream(programmeDo.getParticipantid().split(",")).collect(Collectors.toList()));
+        }
+
+        //发送消息
+        CXCommonUtils.sendNotify("安全应急",
+                sb.toString(),
+                null,
+                userIdList,
+                programmeDo.getId(),
+                "safetyemergency");
+    }
 }

+ 20 - 0
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspSafetyEmergencyPlanServiceImpl.java

@@ -0,0 +1,20 @@
+package com.rongwei.sfcommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwe.scentity.domian.AspSafetyEmergencyPlan;
+import com.rongwei.sfcommon.sys.dao.AspSafetyEmergencyPlanDao;
+import com.rongwei.sfcommon.sys.service.AspSafetyEmergencyPlanService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 安全应急-预案管理 服务实现类
+ * </p>
+ *
+ * @author wm
+ * @since 2023-12-27
+ */
+@Service
+public class AspSafetyEmergencyPlanServiceImpl extends ServiceImpl<AspSafetyEmergencyPlanDao, AspSafetyEmergencyPlan> implements AspSafetyEmergencyPlanService {
+
+}

+ 41 - 0
cx-safe-check/cx-save-check-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/AspSafetyMeetingImpl.java

@@ -0,0 +1,41 @@
+package com.rongwei.sfcommon.sys.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ArrayUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwe.scentity.domian.AspSafetyMeeting;
+import com.rongwei.safecommon.utils.CXCommonUtils;
+import com.rongwei.sfcommon.sys.dao.AspSafetyMeetingDao;
+import com.rongwei.sfcommon.sys.service.AspSafetyMeetingService;
+import org.springframework.stereotype.Service;
+
+import java.sql.Array;
+import java.util.Arrays;
+import java.util.List;
+
+@Service
+public class AspSafetyMeetingImpl extends ServiceImpl<AspSafetyMeetingDao, AspSafetyMeeting> implements AspSafetyMeetingService {
+
+    @Override
+    public void reportMessage() {
+        //查询今天和明天需要提醒的会议
+        List<AspSafetyMeeting> list = this.baseMapper.selectNeedReportMessage();
+
+        //遍历list处理发送消息
+        list.forEach(item -> {
+            //处理需要接收消息的人
+            List<String> userIdList = Arrays.asList(item.getMeetingparticipationid().split(","));
+            //发送消息
+            CXCommonUtils.sendNotify("会议提醒",
+                    "由【" + item.getMeetingheader() + "】主持的【"
+                            + item.getMeetingtitle() + "】,将于【"
+                            + DateUtil.format(item.getMeetingdate(), "yyyy-MM-dd HH:mm:ss") + "】在【"
+                            + item.getMeetingaddress() + "】召开会议、会议说明:【"
+                            + item.getMeetingremark() + "】,请届时参加!",
+                    null,
+                    userIdList,
+                    item.getId(),
+                    "safetymeeting");
+        });
+    }
+}

+ 156 - 0
cx-safe-check/cx-save-check-entity/src/main/java/com/rongwe/scentity/domian/AspSafetyEmergencyPlan.java

@@ -0,0 +1,156 @@
+package com.rongwe.scentity.domian;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 安全应急-预案管理
+ * </p>
+ *
+ * @author wm
+ * @since 2023-12-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("asp_safety_emergency_plan")
+public class AspSafetyEmergencyPlan implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键
+     */
+    @TableId("ID")
+    private String id;
+
+    /**
+     * 租户ID
+     */
+    @TableField("TENANTID")
+    private String tenantid;
+
+    /**
+     * 扩展预留
+     */
+    @TableField("ROPTION")
+    private String roption;
+
+    /**
+     * 删除标记
+     */
+    @TableField("DELETED")
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    @TableField("REMARK")
+    private String remark;
+
+    /**
+     * 创建人ID
+     */
+    @TableField("CREATEUSERID")
+    private String createuserid;
+
+    /**
+     * 创建人姓名
+     */
+    @TableField("CREATEUSERNAME")
+    private String createusername;
+
+    /**
+     * 创建日期
+     */
+    @TableField("CREATEDATE")
+    private Date createdate;
+
+    /**
+     * 修改人ID
+     */
+    @TableField("MODIFYUSERID")
+    private String modifyuserid;
+
+    /**
+     * 修改人姓名
+     */
+    @TableField("MODIFYUSERNAME")
+    private String modifyusername;
+
+    /**
+     * 修改日期
+     */
+    @TableField("MODIFYDATE")
+    private Date modifydate;
+
+    /**
+     * 组织ID
+     */
+    @TableField("ORGID")
+    private String orgid;
+
+    /**
+     * 预案编号
+     */
+    @TableField("PLANCODE")
+    private String plancode;
+
+    /**
+     * 预案名称
+     */
+    @TableField("PLANNAME")
+    private String planname;
+
+    /**
+     * 响应等级
+     */
+    @TableField("RESPONSELEVEL")
+    private String responselevel;
+
+    /**
+     * 预案类型
+     */
+    @TableField("PLANTYPE")
+    private String plantype;
+
+    /**
+     * 适用范围
+     */
+    @TableField("SCOPEOFUSE")
+    private String scopeofuse;
+
+    /**
+     * 观摩人员ID
+     */
+    @TableField("OBSERVERIDS")
+    private String observerids;
+
+    /**
+     * 观摩人员名称
+     */
+    @TableField("OBSERVERNAMES")
+    private String observernames;
+
+    /**
+     * 准备工作
+     */
+    @TableField("PREPARATION")
+    private String preparation;
+
+    /**
+     * 附件
+     */
+    @TableField("FILES")
+    private String files;
+
+
+}

+ 124 - 0
cx-safe-check/cx-save-check-entity/src/main/java/com/rongwe/scentity/domian/AspSafetyMeeting.java

@@ -0,0 +1,124 @@
+package com.rongwe.scentity.domian;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * asp_safety_meeting
+ * @author 
+ */
+@Data
+public class AspSafetyMeeting implements Serializable {
+    /**
+     * 主键ID
+     */
+    private String id;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 是否删除Y/N
+     */
+    private String deleted;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 创建时间
+     */
+    private Date createdate;
+
+    /**
+     * 创建用户ID
+     */
+    private String createuserid;
+
+    /**
+     * 修改日期
+     */
+    private Date modifydate;
+
+    /**
+     * 修改用户ID
+     */
+    private String modifyuserid;
+
+    /**
+     * 创建人
+     */
+    private String createusername;
+
+    /**
+     * 修改人
+     */
+    private String modifyusername;
+
+    /**
+     * 部门ID
+     */
+    private String orgid;
+
+    /**
+     * 会议主题
+     */
+    private String meetingtitle;
+
+    /**
+     * 会议时间
+     */
+    private Date meetingdate;
+
+    /**
+     * 会议地点
+     */
+    private String meetingaddress;
+
+    /**
+     * 会议负责人
+     */
+    private String meetingheader;
+
+    /**
+     * 会议负责人ID
+     */
+    private String meetingheaderid;
+
+    /**
+     * 参会人员
+     */
+    private String meetingparticipation;
+
+    /**
+     * 参会人员id
+     */
+    private String meetingparticipationid;
+
+    /**
+     * 会议说明
+     */
+    private String meetingremark;
+
+    /**
+     * 附件
+     */
+    private String meetingfile;
+
+    /**
+     * 状态(0:暂存,1:已发送)
+     */
+    private String isstaging;
+
+    private static final long serialVersionUID = 1L;
+}

+ 25 - 0
cx-safe-check/cx-save-check-server/src/main/java/com/rongwei/savecheck/controller/AspSafetyDrillProgrammeController.java

@@ -4,9 +4,12 @@ import com.rongwei.rwcommon.base.R;
 import com.rongwei.sfcommon.sys.service.AspSafetyDrillProgrammeService;
 import org.springframework.beans.factory.annotation.Autowired;
 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;
 
+import java.util.Map;
+
 /**
  * <p>
  * 安全应急-演练方案 前端控制器
@@ -33,5 +36,27 @@ public class AspSafetyDrillProgrammeController {
         return R.ok();
     }
 
+    /**
+     * 发布演练方案
+     *
+     * @return
+     */
+    @PostMapping("/notify3DayAndNow")
+    public R notify3DayAndNow(){
+        aspSafetyDrillProgrammeService.notify3DayAndNow();
+        return R.ok();
+    }
+
+    /**
+     * 发布演练方案
+     *
+     * @return
+     */
+    @PostMapping("/notify")
+    public R notify(@RequestBody Map<String, String> map){
+        aspSafetyDrillProgrammeService.sendMsg(map.get("id"));
+        return R.ok();
+    }
+
 }
 

+ 32 - 0
cx-safe-check/cx-save-check-server/src/main/java/com/rongwei/savecheck/controller/AspSafetyMeetingController.java

@@ -0,0 +1,32 @@
+package com.rongwei.savecheck.controller;
+
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.sfcommon.sys.service.AspSafetyMeetingService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("aspSafetyMeeting")
+@Slf4j
+public class AspSafetyMeetingController {
+
+    @Autowired
+    private AspSafetyMeetingService aspSafetyMeetingService;
+
+    /**
+     * 安全会议定时任务提醒,定时任务每天凌晨执行一次,发送今天和明天的会议提醒
+     */
+    @PostMapping("/reportMessage")
+    public R reportMessage(){
+        try{
+            aspSafetyMeetingService.reportMessage();
+            return R.ok();
+        }catch (Exception e){
+            e.printStackTrace();
+            return R.error(e.getMessage());
+        }
+    }
+}