Просмотр исходного кода

[task-5236] 恒生医院-- 一个单独的周期性消息提醒功能

xiexh 4 месяцев назад
Родитель
Сommit
1924e31118

+ 81 - 0
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/platform/plan/job/ConfigDailyJob.java

@@ -0,0 +1,81 @@
+package com.lc.ibps.platform.plan.job;
+
+import com.alibaba.fastjson.JSONObject;
+import com.lc.ibps.base.core.util.AppUtil;
+import com.lc.ibps.base.framework.table.ICommonDao;
+import com.lc.ibps.base.web.context.ContextUtil;
+import com.lc.ibps.cloud.message.util.MessageQueueProductorUtil;
+import com.lc.ibps.util.BusinessEnum;
+import org.quartz.JobExecutionContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.lc.ibps.base.core.util.BeanUtils;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+public class ConfigDailyJob extends AbstractJob{
+    private static final Logger logger = LoggerFactory.getLogger(EquipmentMaintenancePlanJob.class);
+    private ICommonDao<?> commonDao = AppUtil.getBean(ICommonDao.class);
+
+    @Override
+    public void executeJob(JobExecutionContext context) throws Exception {
+        logger.warn("-------------------executeJob.start-------------------");
+        //恒生医院 DAILYJOB1-主动咨询服务推送消息
+        periodicMessageReminder();
+
+        logger.warn("-------------------executeJob.end---------------------");
+    }
+
+    private void periodicMessageReminder() {
+        //配置了DAILYJOB1的医院实现该消息推送模块
+        if(BeanUtils.isNotEmpty(ContextUtil.getSetting())){
+            JSONObject configMap = JSONObject.parseObject(ContextUtil.getSetting());
+            String dailyJob1 = configMap.getString(BusinessEnum.DAILY_JOB_1.getCode());
+            if(BeanUtils.isNotEmpty(dailyJob1) && dailyJob1.equals(BusinessEnum.TRUE.getCode())){
+                logger.warn("-------------------DAILYJOB1.start-------------------");
+                excutePushMessagejob();
+            }
+        }
+        logger.warn("-------------------DAILYJOB1.end-------------------");
+    }
+
+    private void excutePushMessagejob() {
+        //获取当日计划
+        List<Map<String, Object>> data = (List<Map<String, Object>>) commonDao.query("select * from t_zdzxfwjhb WHERE DATE(tui_song_shi_jian) = CURDATE()");
+        if(BeanUtils.isEmpty(data))return;
+        for(Map dMap :data){
+            List<String> message = new ArrayList<>();
+            List<String> recivers = new ArrayList<>();
+            String title = BusinessEnum.EMPTY_STR.getCode();
+            String content = BusinessEnum.EMPTY_STR.getCode();
+            constructMessage(dMap,message,recivers);
+            if(BeanUtils.isNotEmpty(message)){
+                MessageQueueProductorUtil.send(BusinessEnum.MESSAGE_JOB.getCode(), BusinessEnum.SYSTEM.getCode() , BusinessEnum.MSG_TYPE_INNER.getCode(), recivers,null , title, content, null, null, null);
+            }
+        }
+    }
+
+    private void constructMessage(Map dMap, List<String> message, List<String> recivers) {
+        ArrayList<Object> constructData = new ArrayList<>();
+        String title = "主动咨询服务计划提醒";
+        String neiRong = "<br />";
+        String column1 ="咨询服务对象:"+dMap.get("fu_wu_dui_xiang_")+neiRong;
+        String column2 ="咨询服务内容:"+dMap.get("fu_wu_nei_rong_") +neiRong;
+        String column3 ="咨询服务方式:"+dMap.get("fu_wu_fang_shi_")+ neiRong;
+        String column4 ="咨询服务时间:"+dMap.get("fu_wu_shi_jian_")+ neiRong;
+        String column5 ="提供咨询人员:"+dMap.get("zi_xun_ren_yuan_")+neiRong;
+        neiRong = neiRong + column1 + column2 + column3 + column4 + column5;
+        //转换接收人ID
+        String[] parts = dMap.get("tui_song_dui_xian").toString().split(",");
+        if(BeanUtils.isEmpty(dMap.get("tui_song_dui_xian"))){
+            logger.warn("主动咨询服务计划推送数据异常,异常内容 {}id{}",dMap.get("fu_wu_nei_rong_"),dMap.get("id_"));
+            return;
+        }
+        List<String> data = Arrays.asList(parts);
+        recivers.addAll(data);
+        message.add(title);
+        message.add(neiRong);
+    }
+}

+ 57 - 0
ibps-provider-root/modules/provider-platform/src/main/java/com/lc/ibps/util/BusinessEnum.java

@@ -0,0 +1,57 @@
+package com.lc.ibps.util;
+
+public enum BusinessEnum {
+    /** configDailyJob 用 */
+    DAILY_JOB_1("DAILYJOB1", "主动咨询服务推送消息"),
+
+    EMPTY_STR("","空字符串"),
+
+    FALSE("false","FALSE",false),
+
+    TRUE("true","TRUE",true),
+
+    RECEIVER("RECEIVER","消息接收者"),
+
+    SYSTEM("system","系统"),
+
+    MESSAGE_JOB("SmpStorAndDisposalNotifiJob","消息发送类"),
+
+    /** messageType 消息类型 */
+    MSG_TYPE_INNER("inner","消息类型");
+
+    private  String code;
+    private  String description;
+    private  Boolean value;
+
+    private BusinessEnum(String code, String description) {
+        this(code, description, null);
+    }
+
+    private BusinessEnum(String code, String description,Boolean value) {
+        this.code = code;
+        this.description = description;
+        this.value = value;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public Boolean getValue() {
+        return value;
+    }
+
+    public static BusinessEnum getByCode(String code) {
+        for (BusinessEnum jobType : values()) {
+            if (jobType.getCode().equals(code)) {
+                return jobType;
+            }
+        }
+        throw new IllegalArgumentException("未知的业务代码: " + code);
+    }
+}
+