Ver código fonte

安全应急提醒

wangming 1 ano atrás
pai
commit
b413e48b4a

+ 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/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> {
+
+}

+ 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 {
+
+}

+ 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;
+
+
+}

+ 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();
+    }
+
 }