doum
2025-09-11 7298d5354963a88643a543b51b90192dc9fc934c
server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatNotice.java
@@ -1,26 +1,21 @@
package com.doumee.core.wx.wxPlat;
import cn.emay.sdk.util.json.gson.JsonObject;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Http;
import com.doumee.core.utils.HttpsUtil;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.VisitsMapper;
import com.doumee.dao.business.WxNoticeConfigMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.service.business.third.model.ApiResponse;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
@@ -75,6 +70,20 @@
        }
    }
    public String getToken (SystemDictDataBiz systemDictDataBiz){
        String token = null;
        BaseResponse<String> result = HKService.wxAccessToken(systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_WXTOKEN_CONFIGID).getCode(),
                systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_WXTOKEN_TAGID).getCode());
        log.warn("获取海康微信token信息", JSONObject.toJSONString(result));
        if(StringUtils.equals(result.getCode(), HKConstants.RESPONSE_SUCCEE) ){
            token= result.getData();
        }
        return token;
    }
    /**
     * 访客申请/报备业务通知
     * @param wxNoticeConfigMapper
@@ -82,7 +91,11 @@
     * @param objCode  visitUpload,visitAuditSuccess,visitWaitAudit,visitWaitAudit,visitReportUpload,visitReportAuditSuccess,visitReportAuditFail, visitReportAuditSuccess
     * @param openIds
     */
    public void  sendVisitTemplateNotice(SystemDictDataBiz systemDictDataBiz,WxNoticeConfigMapper wxNoticeConfigMapper, Visits visits, String objCode, String token, List<String> openIds){
    public void  sendVisitTemplateNotice(SystemDictDataBiz systemDictDataBiz,WxNoticeConfigMapper wxNoticeConfigMapper, Visits visits, String objCode, List<String> openIds){
        String token = this.getToken(systemDictDataBiz);
        if(StringUtils.isBlank(token)){
            return;
        }
        try{
            if(CollectionUtils.isNotEmpty(openIds)){
                WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda()
@@ -120,7 +133,7 @@
                car_number7.put("value",StringUtils.isNotBlank(visits.getCarNos())?visits.getCarNos():"无");
                dataMap.put("car_number7",car_number7);
                Map<String, Object> character_string6 = new HashMap<String,Object>();
                character_string6.put("value","1");
                character_string6.put("value",Constants.equalsInteger(visits.getType(),Constants.TWO)?visits.getMemberNum()+"":"1");
                Map<String, Object> thing4 = new HashMap<String,Object>();
                thing4.put("value",visits.getReason());
                dataMap.put("const9",const9);
@@ -158,6 +171,10 @@
     * @param openIds
     */
    public void  sendHiddenDangerUploadTemplateNotice(SystemDictDataBiz systemDictDataBiz,WxNoticeConfigMapper wxNoticeConfigMapper, HiddenDanger hiddenDanger, String objCode,String token, List<String> openIds){
        token = this.getToken(systemDictDataBiz);
        if(StringUtils.isBlank(token)){
            return;
        }
        try{
            if(CollectionUtils.isNotEmpty(openIds)){
                WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.hiddenDanger)
@@ -225,6 +242,10 @@
     * @param openIds
     */
    public void  sendHiddenDangerDealTemplateNotice(SystemDictDataBiz systemDictDataBiz,WxNoticeConfigMapper wxNoticeConfigMapper, HiddenDanger hiddenDanger, String objCode,String token, List<String> openIds){
        token = this.getToken(systemDictDataBiz);
        if(StringUtils.isBlank(token)){
            return;
        }
        try{
            if(CollectionUtils.isNotEmpty(openIds)){
                WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.hiddenDanger)
@@ -294,8 +315,12 @@
     * @param openIds
     * @param sendType 0=申请人;1=审批人
     */
    public void  sendCarUseBookTemplateNotice(SystemDictDataBiz systemDictDataBiz,WxNoticeConfigMapper wxNoticeConfigMapper, CarUseBook carUseBook, String objCode,String token,
    public void  sendCarUseBookTemplateNotice(SystemDictDataBiz systemDictDataBiz,WxNoticeConfigMapper wxNoticeConfigMapper, CarUseBook carUseBook, String objCode,
                                              List<String> openIds,Integer sendType){
        String token = this.getToken(systemDictDataBiz);
        if(StringUtils.isBlank(token)){
            return;
        }
        try {
            if(CollectionUtils.isNotEmpty(openIds)){
                WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.carUse)
@@ -378,8 +403,12 @@
     * @param openIds
     * @param sendType 0=申请人;1=审批人
     */
    public void  sendPlatformBookTemplateNotice(SystemDictDataBiz systemDictDataBiz, WxNoticeConfigMapper wxNoticeConfigMapper, PlatformBooks platformBooks, String objCode, String token,
    public void  sendPlatformBookTemplateNotice(SystemDictDataBiz systemDictDataBiz, WxNoticeConfigMapper wxNoticeConfigMapper, PlatformBooks platformBooks, String objCode,
                                                List<String> openIds, Integer sendType){
        String token = this.getToken(systemDictDataBiz);
        if(StringUtils.isBlank(token)){
            return;
        }
        try{
            if(CollectionUtils.isNotEmpty(openIds)){
                WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.platformBook)
@@ -461,8 +490,12 @@
     * @param objCode   platformJobNewJob
     * @param openIds
     */
    public void  sendWmsTemplateNotice(SystemDictDataBiz systemDictDataBiz, WxNoticeConfigMapper wxNoticeConfigMapper, PlatformJob platformJob, String objCode,String token,
    public void  sendWmsTemplateNotice(SystemDictDataBiz systemDictDataBiz, WxNoticeConfigMapper wxNoticeConfigMapper, PlatformJob platformJob, String objCode,
                                               List<String> openIds){
        String token = this.getToken(systemDictDataBiz);
        if(StringUtils.isBlank(token)){
            return;
        }
        try{
            if(CollectionUtils.isNotEmpty(openIds)){
                WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.visit)
@@ -523,11 +556,15 @@
     * @param objCode   platformJobNewJob
     * @param openIds
     */
    public void  sendWmsCancelTemplateNotice(SystemDictDataBiz systemDictDataBiz,WxNoticeConfigMapper wxNoticeConfigMapper, PlatformJob platformJob, String objCode,String token,
    public void  sendWmsCancelTemplateNotice(SystemDictDataBiz systemDictDataBiz,WxNoticeConfigMapper wxNoticeConfigMapper, PlatformJob platformJob, String objCode,
                                       List<String> openIds){
        String token = this.getToken(systemDictDataBiz);
        if(StringUtils.isBlank(token)){
            return;
        }
        try{
            if(CollectionUtils.isNotEmpty(openIds)){
                WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.visit)
                WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.platformJob)
                        .eq(WxNoticeConfig::getObjCode,objCode)
                        .eq(WxNoticeConfig::getStatus, Constants.ZERO)
                        .last(" limit 1")
@@ -583,8 +620,12 @@
     * @param token
     * @param openIds
     */
    public void  sendPlatformJobTemplateNotice(SystemDictDataBiz systemDictDataBiz,WxNoticeConfigMapper wxNoticeConfigMapper, PlatformJob platformJob, String objCode,String token,
    public void  sendPlatformJobTemplateNotice(SystemDictDataBiz systemDictDataBiz,WxNoticeConfigMapper wxNoticeConfigMapper, PlatformJob platformJob, String objCode,
                                       List<String> openIds){
        String token = this.getToken(systemDictDataBiz);
        if(StringUtils.isBlank(token)){
            return;
        }
        try{
            if(CollectionUtils.isNotEmpty(openIds)){
                WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.platformJob)
@@ -627,23 +668,196 @@
                    paramMap.put("touser", openId);
                    paramMap.put("data", dataMap);
                    String response = HttpsUtil.postJson(postUrL, JSONObject.toJSONString(paramMap));
                    log.warn("·==++--·推送微信模板信息内容:{}", JSONObject.toJSONString(paramMap));
                    log.error("·==++--·推送微信模板信息内容:{}", JSONObject.toJSONString(paramMap));
                    if(StringUtils.isBlank(response)){
                        log.warn("·==++--·推送微信模板信息:{}·--++==·", "失败");
                        log.error("·==++--·推送微信模板信息:{}·--++==·", "失败");
                    }else{
                        JSONObject json = JSONObject.parseObject(response);
                        log.warn("·==++--·推送微信模板信息:{}·--++==·", Constants.equalsInteger(json.getInteger("errcode"),Constants.ZERO)?"成功":"失败"+json.getString("errmsg"));
                        log.error("·==++--·推送微信模板信息:{}·--++==·", Constants.equalsInteger(json.getInteger("errcode"),Constants.ZERO)?"成功":"失败"+json.getString("errmsg"));
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    /**
     * 月台签到通知
     * @param wxNoticeConfigMapper
     * @param platformJob
     * @param objCode
     * @param token
     * @param openIds
     */
    public void  sendPlatformJobSignNotice(SystemDictDataBiz systemDictDataBiz,WxNoticeConfigMapper wxNoticeConfigMapper, PlatformJob platformJob, String objCode,
                                               List<String> openIds){
        String token = this.getToken(systemDictDataBiz);
        if(StringUtils.isBlank(token)){
            return;
        }
        try{
            if(CollectionUtils.isNotEmpty(openIds)){
                WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.platformJob)
                        .eq(WxNoticeConfig::getObjCode,objCode)
                        .eq(WxNoticeConfig::getStatus, Constants.ZERO)
                        .last(" limit 1")
                );
                if(Objects.isNull(wxNoticeConfig)){
                    return;
                }
                String postUrL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token;
                //整体参数map
                Map<String, Object> paramMap = new HashMap<String, Object>();
                //消息主题显示相关map
                Map<String, Object> dataMap = new HashMap<String, Object>();
                //车牌号
                Map<String, Object> car_number1 = new HashMap<String,Object>();
                car_number1.put("value",platformJob.getCarCodeFront());
                //司机姓名
                Map<String, Object> thing2 = new HashMap<String,Object>();
                thing2.put("value",platformJob.getDriverName());
                //签到时间
                Map<String, Object> time5 = new HashMap<String,Object>();
                time5.put("value", DateUtil.getFomartDate(new Date(),"yyyy年MM月dd日 HH:mm:ss"));
                dataMap.put("car_number1",car_number1);
                dataMap.put("thing2",thing2);
                dataMap.put("time5",time5);
                for (String openId:openIds) {
                    paramMap.clear();
                    paramMap.put("template_id", wxNoticeConfig.getTempId());
                    paramMap.put("touser", openId);
                    paramMap.put("data", dataMap);
                    String response = HttpsUtil.postJson(postUrL, JSONObject.toJSONString(paramMap));
                    log.error("·==++--·推送微信模板信息内容:{}", JSONObject.toJSONString(paramMap));
                    if(StringUtils.isBlank(response)){
                        log.error("·==++--·推送微信模板信息:{}·--++==·", "失败");
                    }else{
                        JSONObject json = JSONObject.parseObject(response);
                        log.error("·==++--·推送微信模板信息:{}·--++==·", Constants.equalsInteger(json.getInteger("errcode"),Constants.ZERO)?"成功":"失败"+json.getString("errmsg"));
                    }
                }
            }
        }catch (Exception e){
        }
    }
    public static void main(String[] args) {
        String postUrL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=90_8_a3QDclSc8HTcbgXhSVnijiQdRf4dG5wme29riDIyt3UIi7FpZ_HJyqyEIY-_e2A29jH2fLBKgtuBKtq-cy7DteFg5l9EawoxAwiRis8BMnEl-u01ITtCUVU90XCIjADASXD";
        //整体参数map
        Map<String, Object> paramMap = new HashMap<String, Object>();
        //消息主题显示相关map
        Map<String, Object> dataMap = new HashMap<String, Object>();
        //车牌号
        Map<String, Object> car_number1 = new HashMap<String,Object>();
        car_number1.put("value","皖A12345");
        //司机姓名
        Map<String, Object> thing2 = new HashMap<String,Object>();
        thing2.put("value","小阿武");
        //签到时间
        Map<String, Object> time5 = new HashMap<String,Object>();
        time5.put("value", DateUtil.getFomartDate(new Date(),"yyyy年MM月dd日 HH:mm:ss"));
        dataMap.put("car_number1",car_number1);
        dataMap.put("thing2",thing2);
        dataMap.put("time5",time5);
        paramMap.clear();
        paramMap.put("template_id", "ZYhHg5eJJim0LR3FLVaqKcVqW3p8GQk8qrTO40ffHXI");
        paramMap.put("touser", "ovmre6RUJJZCDtCyLxWYKSMgt7u8");
        paramMap.put("data", dataMap);
        String response = HttpsUtil.postJson(postUrL, JSONObject.toJSONString(paramMap));
        log.error("·==++--·推送微信模板信息内容:{}", JSONObject.toJSONString(paramMap));
        if(StringUtils.isBlank(response)){
            log.error("·==++--·推送微信模板信息:{}·--++==·", "失败");
        }else{
            JSONObject json = JSONObject.parseObject(response);
            log.error("·==++--·推送微信模板信息:{}·--++==·", Constants.equalsInteger(json.getInteger("errcode"),Constants.ZERO)?"成功":"失败"+json.getString("errmsg"));
        }
    }
    public void  sendUnFinishNotice(SystemDictDataBiz systemDictDataBiz,WxNoticeConfigMapper wxNoticeConfigMapper,Integer unFinishNum,String objCode,
                                           List<String> openIds){
        String token = this.getToken(systemDictDataBiz);
        if(StringUtils.isBlank(token)||Constants.equalsInteger(unFinishNum,Constants.ZERO)){
            return;
        }
        try{
            if(CollectionUtils.isNotEmpty(openIds)){
                WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.platformJob)
                        .eq(WxNoticeConfig::getObjCode,objCode)
                        .eq(WxNoticeConfig::getStatus, Constants.ZERO)
                        .last(" limit 1")
                );
                if(Objects.isNull(wxNoticeConfig)){
                    return;
                }
                String postUrL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token;
                //整体参数map
                Map<String, Object> paramMap = new HashMap<String, Object>();
                //消息主题显示相关map
                Map<String, Object> dataMap = new HashMap<String, Object>();
                //车牌号
                Map<String, Object> const1 = new HashMap<String,Object>();
                const1.put("value","作业任务未完成");
                //司机姓名
                Map<String, Object> thing2 = new HashMap<String,Object>();
                thing2.put("value",unFinishNum+"个");
                //签到时间
                Map<String, Object> time3 = new HashMap<String,Object>();
                time3.put("value", DateUtil.getFomartDate(new Date(),"yyyy年MM月dd日 HH:mm:ss"));
                dataMap.put("const1",const1);
                dataMap.put("thing2",thing2);
                dataMap.put("time3",time3);
                for (String openId:openIds) {
                    paramMap.clear();
                    paramMap.put("template_id", wxNoticeConfig.getTempId());
                    paramMap.put("touser", openId);
                    paramMap.put("data", dataMap);
                    String response = HttpsUtil.postJson(postUrL, JSONObject.toJSONString(paramMap));
                    log.error("·==++--·推送微信模板信息内容:{}", JSONObject.toJSONString(paramMap));
                    if(StringUtils.isBlank(response)){
                        log.error("·==++--·推送微信模板信息:{}·--++==·", "失败");
                    }else{
                        JSONObject json = JSONObject.parseObject(response);
                        log.error("·==++--·推送微信模板信息:{}·--++==·", Constants.equalsInteger(json.getInteger("errcode"),Constants.ZERO)?"成功":"失败"+json.getString("errmsg"));
                    }
                }
            }
        }catch (Exception e){
        }
    }
    public void  sendMeetTemplateNotice(SystemDictDataBiz systemDictDataBiz,SmsEmail smsEmail){
        String token = this.getToken(systemDictDataBiz);
        if(StringUtils.isBlank(token)){
            return;
        }
        try{
                String jumpUrl = Constants.getWxUrl(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.WX_REDIRECT_URL).getCode(),
                        Constants.WxUrlParams.MEETING,smsEmail.getObjId().toString());
                String postUrL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token;
                JSONObject jsonObject = JSONObject.parseObject(smsEmail.getContent());
                jsonObject.put("url",jumpUrl);
                String response = HttpsUtil.postJson(postUrL, JSONObject.toJSONString(jsonObject));
                log.warn("·==++--·推送微信模板信息内容:{}", JSONObject.toJSONString(jsonObject));
                if(StringUtils.isBlank(response)){
                    log.warn("·==++--·推送微信模板信息:{}·--++==·", "失败");
                }else{
                    JSONObject json = JSONObject.parseObject(response);
                    log.warn("·==++--·推送微信模板信息:{}·--++==·", Constants.equalsInteger(json.getInteger("errcode"),Constants.ZERO)?"成功":"失败"+json.getString("errmsg"));
                }
        }catch (Exception e){
        }
    }
}