diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteNoticeService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteNoticeService.java new file mode 100644 index 0000000..af7661f --- /dev/null +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteNoticeService.java @@ -0,0 +1,10 @@ +package org.dromara.system.api; + +import org.dromara.system.api.domain.bo.RemoteNoticeBo; +import org.dromara.system.api.domain.vo.RemotePostVo; + +import java.util.List; + +public interface RemoteNoticeService { + int saveNotice(RemoteNoticeBo bo); +} diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteNoticeBo.java b/dk-api/api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteNoticeBo.java new file mode 100644 index 0000000..9ff720f --- /dev/null +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteNoticeBo.java @@ -0,0 +1,74 @@ +package org.dromara.system.api.domain.bo; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * 操作日志记录表 oper_log + * + * @author Lion Li + */ +@Data +@NoArgsConstructor +public class RemoteNoticeBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Long noticeId; + + + /** + * 公告标题 + */ + private String noticeTitle; + + /** + * 公告类型(1通知 2公告) + */ + private String noticeType; + + /** + * 公告内容 + */ + private String noticeContent; + + /** + * 公告状态(0正常 1关闭) + */ + private String status; + + /** + * 备注 + */ + private String remark; + + private Integer isRead; + /** + * 创建部门 + */ + + private Long createDept; + + /** + * 创建者 + */ + + private Long createBy; + private String deviceSn; + + /** + * 创建时间 + */ + private Date createTime; + + private String param; + + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java index 229dba3..d3f2659 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java @@ -1,6 +1,7 @@ package org.dromara.business.controller; import cn.dev33.satoken.annotation.SaCheckPermission; +import com.alibaba.fastjson.JSON; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; @@ -9,17 +10,22 @@ import org.dromara.business.domain.BusinessAlert; import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.vo.BusinessAlertVo; import org.dromara.business.service.IBusinessAlertService; +import org.dromara.business.utils.MinioUntil; +import org.dromara.business.utils.constants.MinIOConstants; import org.dromara.common.core.domain.R; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; +import org.dromara.system.api.RemoteNoticeService; +import org.dromara.system.api.domain.bo.RemoteNoticeBo; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.Date; import java.util.List; /** @@ -39,6 +45,8 @@ public class BusinessAlertController extends BaseController { private final IBusinessAlertService businessAlertService; @DubboReference(timeout = 30000) private RemoteWorkflowService remoteWorkflowService; + @DubboReference(timeout = 30000) + private RemoteNoticeService remoteNoticeService; /** * 查询全部预警/待办/已完成/忽略 @@ -79,13 +87,28 @@ public class BusinessAlertController extends BaseController { */ @Operation(summary ="ai实时流预警保存",description = "ai实时流预警保存") @PostMapping("/saveAlert") - public void saveAlert(BusinessAlertVo vo) { + public void saveAlert(@RequestBody BusinessAlertVo vo) { vo.setBusinessType(2); BusinessAlert businessAlert = businessAlertService.addBusinessAlert(vo); RemoteStartProcess startProcess = new RemoteStartProcess(); startProcess.setBusinessId(String.valueOf(businessAlert.getId())); startProcess.setFlowCode("alertChz"); remoteWorkflowService.startWorkFlowBatch(List.of(startProcess)); + RemoteNoticeBo remoteNoticeBo = new RemoteNoticeBo(); + remoteNoticeBo.setNoticeTitle(vo.getDeptName()+"产生预警,预警类型["+vo.getLabelCn()+"],请立即查看"); + remoteNoticeBo.setNoticeType("3"); + remoteNoticeBo.setNoticeContent(vo.getDeptName()+"产生预警,预警类型["+vo.getLabelCn()+"],请立即查看"); + remoteNoticeBo.setStatus("0"); + remoteNoticeBo.setIsRead(0); + remoteNoticeBo.setCreateBy(1L); + remoteNoticeBo.setCreateDept(1L); + remoteNoticeBo.setCreateTime(new Date()); + if (vo.getBusinessType() == 2){ + vo.setImages(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_DKCY, vo.getImages(), 3600).toString()); + } + remoteNoticeBo.setDeviceSn(vo.getDeviceSn()); + remoteNoticeBo.setParam(JSON.toJSONString(vo)); + remoteNoticeService.saveNotice(remoteNoticeBo); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java index e1c332b..bc23174 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessAlertVo.java @@ -205,4 +205,5 @@ public class BusinessAlertVo implements Serializable { private Date createTime; //1:图片比对预警 2:AI实时预警 private Integer businessType; + private String deviceSn; } diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/SysNotice.java b/dk-modules/system/src/main/java/org/dromara/system/domain/SysNotice.java index fb1df87..8d57adb 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/SysNotice.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/SysNotice.java @@ -48,4 +48,5 @@ public class SysNotice extends TenantEntity { */ private String remark; + private Integer isRead; } diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteNoticeServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteNoticeServiceImpl.java new file mode 100644 index 0000000..981c85a --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteNoticeServiceImpl.java @@ -0,0 +1,38 @@ +package org.dromara.system.dubbo; + +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; +import org.apache.dubbo.config.annotation.DubboService; +import org.dromara.common.core.service.DictService; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.resource.api.RemoteMessageService; +import org.dromara.system.api.RemoteNoticeService; +import org.dromara.system.api.domain.bo.RemoteNoticeBo; +import org.dromara.system.domain.SysNotice; +import org.dromara.system.mapper.SysNoticeMapper; +import org.springframework.stereotype.Service; + + + +/** + * @author sean + * @version 1.1 + * @date 2022/6/1 + */ +@RequiredArgsConstructor +@Service +@DubboService +public class RemoteNoticeServiceImpl implements RemoteNoticeService { + private final DictService dictService; + private final SysNoticeMapper sysNoticeMapper; + @DubboReference + private final RemoteMessageService remoteMessageService; + + @Override + public int saveNotice(RemoteNoticeBo bo) { + SysNotice notice = MapstructUtils.convert(bo, SysNotice.class); + /*String type = dictService.getDictLabel("sys_notice_type", notice.getNoticeType());*/ + remoteMessageService.publishAll(bo.getParam()); + return sysNoticeMapper.insert(notice); + } +}