rk
3 天以前 9b276fecad68c5d5483bfb29a2eaf203f4bb371b
定时自动叫号 与 WMS获取车辆是否在园接口开发
已添加6个文件
已修改4个文件
492 ■■■■■ 文件已修改
server/db/business.dd_notice_config.permissions.sql 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/DdNoticeConfigCloudController.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/DdNoticeConfigMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/DdNoticeConfig.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/DdNoticeConfigService.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DdNoticeConfigServiceImpl.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/business.dd_notice_config.permissions.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ddnoticeconfig:create', '新建钉钉公众号通知配置', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ddnoticeconfig:delete', '删除钉钉公众号通知配置', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ddnoticeconfig:update', '修改钉钉公众号通知配置', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ddnoticeconfig:query', '查询钉钉公众号通知配置', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ddnoticeconfig:exportExcel', '导出钉钉公众号通知配置(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/DdNoticeConfigCloudController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.CloudRequiredPermission;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.DdNoticeConfig;
import com.doumee.service.business.DdNoticeConfigService;
import com.doumee.service.business.third.model.ApiResponse;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/10/14 15:11
 */
@Api(tags = "钉钉公众号通知配置")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/ddNoticeConfig")
public class DdNoticeConfigCloudController extends BaseController {
    @Autowired
    private DdNoticeConfigService ddNoticeConfigService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:ddnoticeconfig:create")
    public ApiResponse create(@RequestBody DdNoticeConfig ddNoticeConfig) {
        return ApiResponse.success(ddNoticeConfigService.create(ddNoticeConfig));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:ddnoticeconfig:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        ddNoticeConfigService.deleteById(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:ddnoticeconfig:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        ddNoticeConfigService.deleteByIdInBatch(idList);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:ddnoticeconfig:update")
    public ApiResponse updateById(@RequestBody DdNoticeConfig ddNoticeConfig) {
        ddNoticeConfigService.updateById(ddNoticeConfig);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:ddnoticeconfig:query")
    public ApiResponse<PageData<DdNoticeConfig>> findPage (@RequestBody PageWrap<DdNoticeConfig> pageWrap) {
        return ApiResponse.success(ddNoticeConfigService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:ddnoticeconfig:exportExcel")
    public void exportExcel (@RequestBody PageWrap<DdNoticeConfig> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(DdNoticeConfig.class).export(ddNoticeConfigService.findPage(pageWrap).getRecords(), "钉钉公众号通知配置", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:ddnoticeconfig:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(ddNoticeConfigService.findById(id));
    }
    @ApiOperation("批量禁启用")
    @GetMapping("/updateStatus/batch")
    @CloudRequiredPermission("business:ddnoticeconfig:update")
    public ApiResponse updateStatusBatch(@RequestParam String ids,@RequestParam Integer status) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        ddNoticeConfigService.updateStatusByIdInBatch(idList,status);
        return ApiResponse.success(null);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/dingTalk/DingTalk.java
@@ -375,6 +375,9 @@
     */
    public Boolean workInfoOANotice(Long agentId,String userIds,OapiMessageCorpconversationAsyncsendV2Request.Msg msg){
        try{
            if(CollectionUtils.isEmpty(msg)){
                return null;
            }
            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
            OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
            request.setAgentId(agentId);
@@ -382,7 +385,7 @@
            request.setToAllUser(false);
            request.setMsg(msg);
            OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(request, "60c2df248ca93d4eafb4a04a2330d3d3");//getToken());
            OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(request, getToken());
            if(rsp.getErrcode().equals(Constants.DD_ERR_CODE)){
                return true;
            }else{
@@ -540,6 +543,9 @@
     */
    public String toDoNotice(String title,List<String> unionIdList,List<CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList> fieldList,String url) {
        try{
            if(CollectionUtils.isEmpty(fieldList)){
                return null;
            }
            com.aliyun.dingtalktodo_1_0.Client client = DingTalk.createV1Client();
            CreateTodoTaskHeaders createTodoTaskHeaders = new CreateTodoTaskHeaders();
            createTodoTaskHeaders.xAcsDingtalkAccessToken = getToken();
@@ -559,7 +565,7 @@
                    .setTitle("去处理")
                    .setActionType(2)
                    .setParam(actionList0Param)
                    .setUrl("https://www.baidu.com") //TODO è¯¦æƒ…地址
                    .setUrl(url) //TODO è¯¦æƒ…地址
                    .setActionKey("ak-1-1");
            //详情页url跳转地址
            CreateTodoTaskRequest.CreateTodoTaskRequestDetailUrl detailUrl = new CreateTodoTaskRequest.CreateTodoTaskRequestDetailUrl()
@@ -670,6 +676,11 @@
    }
    /**
     * è®¿å®¢æŠ¥å¤‡ä¸Žè®¿å®¢ç”³è¯· é’‰é’‰å¾…办
     * @param visits
     * @return
     */
    public List<CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList> getToDoVisitFiledInfo(Visits visits){
        List<CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList> list = new ArrayList<>();
        CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList contentFieldList0 = new CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList()
@@ -698,7 +709,11 @@
    }
    /**
     * ç”¨è½¦ç”³è¯·çš„ é’‰é’‰å¾…办
     * @param carUseBook
     * @return
     */
    public List<CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList> getToDoCarUseBookFiledInfo(CarUseBook carUseBook){
        List<CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList> list = new ArrayList<>();
        CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList contentFieldList1 = new CreateTodoTaskRequest.CreateTodoTaskRequestContentFieldList()
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/DdNoticeConfigMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.DdNoticeConfig;
import com.github.yulichang.base.MPJBaseMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/10/14 15:11
 */
public interface DdNoticeConfigMapper extends MPJBaseMapper<DdNoticeConfig> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/DdNoticeConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
 * é’‰é’‰å…¬ä¼—号通知配置
 * @author æ±Ÿè¹„蹄
 * @date 2025/10/14 15:11
 */
@Data
@ApiModel("钉钉公众号通知配置")
@TableName("`dd_notice_config`")
public class DdNoticeConfig {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码")
    @ExcelColumn(name="创建人编码")
    private String creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码")
    @ExcelColumn(name="更新人编码")
    private String edirot;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "开启状态:0开启;1关闭", example = "1")
    @ExcelColumn(name="开启状态:0开启;1关闭")
    private Integer status;
    @ApiModelProperty(value = "标题")
    @ExcelColumn(name="标题")
    private String titile;
    @ApiModelProperty(value = "业务类型 1=访客提交访客申请待审批人进行审批;2=访客提交访客申请审批通过,通知被访人;3=访客提交访客申请审批拒绝,通知被访人;4=访客申请审批通过,通知抄送人;5=访客报备待审批人进行审批;6=访客报备审批通过,通知发起人;7=访客报备审批拒绝,通知发起人;8=访客报备审批通过,通知抄送人;9=公务车申请,通知审批人;10=公务车申请审批通过,通知发起人;11=公务车申请审批驳回,通知发起人;12=公务车申请审批通过,通知抄送人;13=天气预警;14=区域事件通知;", example = "1")
    @ExcelColumn(name="业务类型 1=访客提交访客申请待审批人进行审批;2=访客提交访客申请审批通过,通知被访人;3=访客提交访客申请审批拒绝,通知被访人;4=访客申请审批通过,通知抄送人;5=访客报备待审批人进行审批;6=访客报备审批通过,通知发起人;7=访客报备审批拒绝,通知发起人;8=访客报备审批通过,通知抄送人;9=公务车申请,通知审批人;10=公务车申请审批通过,通知发起人;11=公务车申请审批驳回,通知发起人;12=公务车申请审批通过,通知抄送人;13=天气预警;14=区域事件通知;")
    private Integer objType;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/DdNoticeConfigService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,100 @@
package com.doumee.service.business;
import com.doumee.dao.business.model.DdNoticeConfig;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import java.util.List;
/**
 * é’‰é’‰å…¬ä¼—号通知配置Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2025/10/14 15:11
 */
public interface DdNoticeConfigService {
    /**
     * åˆ›å»º
     *
     * @param ddNoticeConfig å®žä½“对象
     * @return Integer
     */
    Integer create(DdNoticeConfig ddNoticeConfig);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    /**
     * åˆ é™¤
     *
     * @param ddNoticeConfig å®žä½“对象
     */
    void delete(DdNoticeConfig ddNoticeConfig);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param ddNoticeConfig å®žä½“对象
     */
    void updateById(DdNoticeConfig ddNoticeConfig);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param ddNoticeConfigs å®žä½“集
     */
    void updateByIdInBatch(List<DdNoticeConfig> ddNoticeConfigs);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return DdNoticeConfig
     */
    DdNoticeConfig findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param ddNoticeConfig å®žä½“对象
     * @return DdNoticeConfig
     */
    DdNoticeConfig findOne(DdNoticeConfig ddNoticeConfig);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param ddNoticeConfig å®žä½“对象
     * @return List<DdNoticeConfig>
     */
    List<DdNoticeConfig> findList(DdNoticeConfig ddNoticeConfig);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<DdNoticeConfig>
     */
    PageData<DdNoticeConfig> findPage(PageWrap<DdNoticeConfig> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param ddNoticeConfig å®žä½“对象
     * @return long
     */
    long count(DdNoticeConfig ddNoticeConfig);
    void updateStatusByIdInBatch(List<Integer> ids,Integer status);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -95,6 +95,8 @@
    @Autowired
    private CarDriverMapper carDriverMapper;
    @Autowired
    private DdNoticeConfigMapper ddNoticeConfigMapper;
    @Autowired
    private VisitsJoinMapper visitsMapper;
@@ -682,7 +684,10 @@
                            if(CollectionUtils.isNotEmpty(erpId)){
                                String ddTalkId = dingTalk.toDoNotice(StringUtils.isNotBlank(carUseBook.getMemberName())?(carUseBook.getMemberName()+"提交的公务用车申请"):"公务车用车申请",
                                        erpId ,
                                        dingTalk.getToDoCarUseBookFiledInfo(carUseBook),"pages/staff/vehicle/sendACarDetail?id="+carUseBook.getId());
                                        ddNoticeConfigMapper.selectCount(new QueryWrapper<DdNoticeConfig>().lambda()
                                                .eq(DdNoticeConfig::getIsdeleted,Constants.ZERO).eq(DdNoticeConfig::getStatus,Constants.ZERO)
                                                .eq(DdNoticeConfig::getObjType,9))>Constants.ZERO?
                                        dingTalk.getToDoCarUseBookFiledInfo(carUseBook):null,"pages/staff/vehicle/sendACarDetail?id="+carUseBook.getId());
                                carUseBookMapper.update(new UpdateWrapper<CarUseBook>().lambda()
                                        .set(CarUseBook::getDdBelongToUnionId,erpId.get(Constants.ZERO))
                                        .set(CarUseBook::getDdToDoId,ddTalkId).eq(CarUseBook::getId,carUseBook.getId()));
@@ -692,9 +697,13 @@
                        Visits visits = visitsMapper.selectById(businessId);
                        if (Objects.nonNull(visits)) {
                            //TODO ç¼ºå°‘域名前缀内容
                            String ddTalkId = dingTalk.toDoNotice(visits.getName() + "的访客申请",
                            String ddTalkId = dingTalk.toDoNotice(visits.getName() + (Constants.equalsInteger(visits.getType(),Constants.TWO)?"的访客报备":"的访客申请"),
                                    erpId,
                                    dingTalk.getToDoVisitFiledInfo(visits), "pages/appointmentDetails/appointmentDetails?id=" + visits.getId());
                                    ddNoticeConfigMapper.selectCount(new QueryWrapper<DdNoticeConfig>().lambda()
                                            .eq(DdNoticeConfig::getIsdeleted,Constants.ZERO).eq(DdNoticeConfig::getStatus,Constants.ZERO)
                                            .eq(DdNoticeConfig::getObjType,Constants.equalsInteger(visits.getType(),Constants.TWO)?5:1))>Constants.ZERO?
                                    dingTalk.getToDoVisitFiledInfo(visits):null,
                                    "pages/appointmentDetails/appointmentDetails?id=" + visits.getId());
                            visitsMapper.update(new UpdateWrapper<Visits>().lambda()
                                            .set(Visits::getDdBelongToUnionId,erpId.get(Constants.ZERO))
                                    .set(Visits::getDdToDoId, ddTalkId).eq(Visits::getId, visits.getId()));
@@ -1544,7 +1553,10 @@
                //TODO ç¼ºå°‘域名前缀内容
                String ddTalkId = dingTalk.toDoNotice(StringUtils.isNotBlank(carUseBook.getMemberName())?(carUseBook.getMemberName()+"提交的公务用车申请"):"公务车用车申请",
                        memberList.stream().map(i->i.getErpId()).collect(Collectors.toList()) ,
                        dingTalk.getToDoCarUseBookFiledInfo(carUseBook),"pages/staff/vehicle/sendACarDetail?id="+carUseBook.getId());
                        ddNoticeConfigMapper.selectCount(new QueryWrapper<DdNoticeConfig>().lambda()
                                .eq(DdNoticeConfig::getIsdeleted,Constants.ZERO).eq(DdNoticeConfig::getStatus,Constants.ZERO)
                                .eq(DdNoticeConfig::getObjType,9))>Constants.ZERO?
                        dingTalk.getToDoCarUseBookFiledInfo(carUseBook):null,"pages/staff/vehicle/sendACarDetail?id="+carUseBook.getId());
                carUseBookMapper.update(new UpdateWrapper<CarUseBook>().lambda()
                        .set(CarUseBook::getDdToDoId,ddTalkId).eq(CarUseBook::getId,carUseBook.getId()));
            } 
@@ -1869,8 +1881,11 @@
                if(Objects.nonNull(beVisitMember)&&StringUtils.isNotBlank(beVisitMember.getDdId())){
                    dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
                            beVisitMember.getDdId(),
                            ddNoticeConfigMapper.selectCount(new QueryWrapper<DdNoticeConfig>().lambda()
                                    .eq(DdNoticeConfig::getIsdeleted,Constants.ZERO).eq(DdNoticeConfig::getStatus,Constants.ZERO)
                                    .eq(DdNoticeConfig::getObjType, Constants.equalsInteger(visits.getType(),Constants.TWO)?(Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?6:7):(Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?2:3)))>Constants.ZERO?
                            dingTalk.getVisitNoticeMsg(visits,visits.getName()+"的"+(Constants.equalsInteger(visits.getType(),Constants.TWO)?"访客报备":"访客申请")+","+
                                    (Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)? "已审批通过":"已审批驳回"))
                                    (Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)? "已审批通过":"已审批驳回")):null
                    );
                }
            }
@@ -1908,8 +1923,11 @@
            if(Objects.nonNull(creatMember)&&StringUtils.isNotBlank(creatMember.getDdId())){
                dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
                        creatMember.getErpId(),
                        ddNoticeConfigMapper.selectCount(new QueryWrapper<DdNoticeConfig>().lambda()
                                .eq(DdNoticeConfig::getIsdeleted,Constants.ZERO).eq(DdNoticeConfig::getStatus,Constants.ZERO)
                                .eq(DdNoticeConfig::getObjType,Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?10:11))>Constants.ZERO?
                                dingTalk.getCarUseNoticeMsg(carUseBook,carUseBook.getMemberName() + "提交的公务用车,"+
                                        (Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)? "已审批通过":"已审批驳回"))
                                        (Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)? "已审批通过":"已审批驳回")):null
                );
            }
            if(StringUtils.isNotBlank(carUseBook.getDdBelongToUnionId())
@@ -2011,9 +2029,15 @@
                    if(Objects.nonNull(visits)||Objects.nonNull(carUseBook)){
                        dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
                                StringUtils.join(memberList.stream().map(i->i.getDdId()).collect(Collectors.toList()),","),
                                ddNoticeConfigMapper.selectCount(new QueryWrapper<DdNoticeConfig>().lambda()
                                                .eq(DdNoticeConfig::getIsdeleted,Constants.ZERO).eq(DdNoticeConfig::getStatus,Constants.ZERO)
                                                .eq(DdNoticeConfig::getObjType, Objects.nonNull(visits)?(Constants.equalsInteger(visits.getType(),Constants.TWO)?8:4):12))>Constants.ZERO?
                                Objects.nonNull(visits)?
                                        dingTalk.getVisitNoticeMsg(visits,visits.getName()+"的"+(Constants.equalsInteger(visits.getType(),Constants.TWO)?"访客报备":"访客申请")+",抄送给您,请知晓"):
                                        dingTalk.getCarUseNoticeMsg(carUseBook,carUseBook.getMemberName() + "提交的公务用车,抄送给您,请知晓")
                                                dingTalk.getCarUseNoticeMsg(carUseBook,carUseBook.getMemberName() + "提交的公务用车,抄送给您,请知晓"):null
                        );
                    }
                }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DdNoticeConfigServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,117 @@
package com.doumee.service.business.impl;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.DdNoticeConfigMapper;
import com.doumee.dao.business.model.DdNoticeConfig;
import com.doumee.dao.business.model.SmsConfig;
import com.doumee.service.business.DdNoticeConfigService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
/**
 * é’‰é’‰å…¬ä¼—号通知配置Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2025/10/14 15:11
 */
@Service
public class DdNoticeConfigServiceImpl implements DdNoticeConfigService {
    @Autowired
    private DdNoticeConfigMapper ddNoticeConfigMapper;
    @Override
    public Integer create(DdNoticeConfig ddNoticeConfig) {
        ddNoticeConfigMapper.insert(ddNoticeConfig);
        return ddNoticeConfig.getId();
    }
    @Override
    public void deleteById(Integer id) {
        ddNoticeConfigMapper.deleteById(id);
    }
    @Override
    public void delete(DdNoticeConfig ddNoticeConfig) {
        UpdateWrapper<DdNoticeConfig> deleteWrapper = new UpdateWrapper<>(ddNoticeConfig);
        ddNoticeConfigMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        ddNoticeConfigMapper.deleteBatchIds(ids);
    }
    @Override
    public void updateById(DdNoticeConfig ddNoticeConfig) {
        ddNoticeConfigMapper.updateById(ddNoticeConfig);
    }
    @Override
    public void updateByIdInBatch(List<DdNoticeConfig> ddNoticeConfigs) {
        if (CollectionUtils.isEmpty(ddNoticeConfigs)) {
            return;
        }
        for (DdNoticeConfig ddNoticeConfig: ddNoticeConfigs) {
            this.updateById(ddNoticeConfig);
        }
    }
    @Override
    public DdNoticeConfig findById(Integer id) {
        return ddNoticeConfigMapper.selectById(id);
    }
    @Override
    public DdNoticeConfig findOne(DdNoticeConfig ddNoticeConfig) {
        QueryWrapper<DdNoticeConfig> wrapper = new QueryWrapper<>(ddNoticeConfig);
        return ddNoticeConfigMapper.selectOne(wrapper);
    }
    @Override
    public List<DdNoticeConfig> findList(DdNoticeConfig ddNoticeConfig) {
        QueryWrapper<DdNoticeConfig> wrapper = new QueryWrapper<>(ddNoticeConfig);
        return ddNoticeConfigMapper.selectList(wrapper);
    }
    @Override
    public PageData<DdNoticeConfig> findPage(PageWrap<DdNoticeConfig> pageWrap) {
        IPage<DdNoticeConfig> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<DdNoticeConfig> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper.lambda().eq(DdNoticeConfig::getIsdeleted, Constants.ZERO);
        return PageData.from(ddNoticeConfigMapper.selectPage(page, queryWrapper));
    }
    @Override
    public long count(DdNoticeConfig ddNoticeConfig) {
        QueryWrapper<DdNoticeConfig> wrapper = new QueryWrapper<>(ddNoticeConfig);
        return ddNoticeConfigMapper.selectCount(wrapper);
    }
    @Override
    public void updateStatusByIdInBatch(List<Integer> ids,Integer status) {
        if (CollectionUtils.isEmpty(ids) || Objects.isNull(status)) {
            return;
        }
        ddNoticeConfigMapper.update(new UpdateWrapper<DdNoticeConfig>()
                .set("status",status)
                .in("id",ids)
        );
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -103,6 +103,9 @@
    @Autowired
    private DingTalk dingTalk;
    @Autowired
    private DdNoticeConfigMapper ddNoticeConfigMapper;
    @Override
    public Integer create(HiddenDanger hiddenDanger) {
@@ -255,7 +258,10 @@
        if(StringUtils.isNotBlank(member.getDdId())){
            dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
                    member.getDdId(),
                    dingTalk.getHiddenDangerNoticeMsg(hiddenDanger));
                    ddNoticeConfigMapper.selectCount(new QueryWrapper<DdNoticeConfig>().lambda()
                            .eq(DdNoticeConfig::getIsdeleted,Constants.ZERO).eq(DdNoticeConfig::getStatus,Constants.ZERO)
                            .eq(DdNoticeConfig::getObjType,14))>Constants.ZERO?
                    dingTalk.getHiddenDangerNoticeMsg(hiddenDanger):null);
        }
        return hiddenDanger.getId();
@@ -809,7 +815,10 @@
        if(StringUtils.isNotBlank(member.getDdId())){
            dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
                    member.getDdId(),
                    dingTalk.getHiddenDangerNoticeMsg(hiddenDanger));
                    ddNoticeConfigMapper.selectCount(new QueryWrapper<DdNoticeConfig>().lambda()
                            .eq(DdNoticeConfig::getIsdeleted,Constants.ZERO).eq(DdNoticeConfig::getStatus,Constants.ZERO)
                            .eq(DdNoticeConfig::getObjType,14))>Constants.ZERO?
                            dingTalk.getHiddenDangerNoticeMsg(hiddenDanger):null);
        }
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java
@@ -64,6 +64,9 @@
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private DdNoticeConfigMapper ddNoticeConfigMapper;
    @Override
    public Integer create(Warning warning) {
@@ -315,9 +318,13 @@
                        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberList)&&memberList.size()>Constants.ZERO){
                            List<String> ddUserIdList = memberList.stream().map(j->j.getErpId()).collect(Collectors.toList());
                            //发送推送钉钉消息
                            Boolean isSuccess = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
                                    String.join(",",ddUserIdList),
                                    dingTalk.getWeatherNoticeMsg(title,text));
                                    ddNoticeConfigMapper.selectCount(new QueryWrapper<DdNoticeConfig>().lambda()
                                            .eq(DdNoticeConfig::getIsdeleted,Constants.ZERO).eq(DdNoticeConfig::getStatus,Constants.ZERO)
                                            .eq(DdNoticeConfig::getObjType,13))>Constants.ZERO?
                                    dingTalk.getWeatherNoticeMsg(title,text):null);
                            for (Member member:memberList) {
                                WarningPush warningPush = new WarningPush();
                                warningPush.setCreateDate(new Date());