diff --git a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteSubmailConfigService.java b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteSubmailConfigService.java index 4bc2563..ee3af3a 100644 --- a/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteSubmailConfigService.java +++ b/dk-api/api-system/src/main/java/org/dromara/system/api/RemoteSubmailConfigService.java @@ -3,6 +3,10 @@ package org.dromara.system.api; import org.dromara.common.core.domain.R; import org.dromara.system.api.domain.vo.RemoteClientVo; +import java.util.List; +import java.util.Map; +import java.util.Set; + /** * 客户端服务 * @@ -17,4 +21,11 @@ public interface RemoteSubmailConfigService { */ R remoteCmdSend(String code, String multiParam ); + /** + * @param code 编码 + * @param alertList 预警信息 + * @return 客户端对象 + */ + void remoteSend(String code,List> alertList); + } diff --git a/dk-common/common-mybatis/src/main/resources/common-mybatis.yml b/dk-common/common-mybatis/src/main/resources/common-mybatis.yml index f5dc637..f43eea0 100644 --- a/dk-common/common-mybatis/src/main/resources/common-mybatis.yml +++ b/dk-common/common-mybatis/src/main/resources/common-mybatis.yml @@ -23,7 +23,7 @@ mybatis-plus: dbConfig: # 主键类型 # AUTO 自增 NONE 空 INPUT 用户输入 ASSIGN_ID 雪花 ASSIGN_UUID 唯一 UUID - idType: ASSIGN_ID + idType: AUTO # 逻辑已删除值(框架表均使用此值 禁止随意修改) logicDeleteValue: 2 # 逻辑未删除值 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 d997cfd..dcf8487 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 @@ -157,7 +157,7 @@ public class BusinessAlertController extends BaseController { /** - * 查询全部预警/待办/已完成/忽略 + * 前端视频画框 */ @Operation(summary ="ai实时流预警保存",description = "ai实时流预警保存") @PostMapping("/saveAlertList") diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessLayerController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessLayerController.java new file mode 100644 index 0000000..5d1f691 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessLayerController.java @@ -0,0 +1,36 @@ +package org.dromara.business.controller; + + +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.dromara.business.domain.bo.BusinessLayerBo; + +import org.dromara.business.domain.vo.BusinessLayerVo; + +import org.dromara.business.service.IBusinessLayerService; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Validated +@RequiredArgsConstructor +@RestController +@Tag(name = "图层模块") +@RequestMapping("/layer") +public class BusinessLayerController { + + private final IBusinessLayerService businessLayerService; + /** + * 图层模块列表 + */ + @SaCheckPermission("business:task:list") + @GetMapping("/list") + public TableDataInfo list(BusinessLayerBo bo, PageQuery pageQuery) { + return businessLayerService.queryPageList(bo, pageQuery); + } + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java index a78da95..a4752ca 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessAlert.java @@ -263,4 +263,25 @@ public class BusinessAlert { */ @TableField(exist = false) private String icon; + + /** + * 无人机方向 + */ + private String direction; + + /** + * 无人机云台偏航角 + */ + private String gimbalYaw; + + /** + * 无人机高 + */ + private String height; + + /** + * 无人机俯视角 + */ + private String gimbalPitch; + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessLayer.java b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessLayer.java new file mode 100644 index 0000000..f204838 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/BusinessLayer.java @@ -0,0 +1,59 @@ +package org.dromara.business.domain; + + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; + +import java.io.Serial; +import java.util.Date; + +@Data +@EqualsAndHashCode +@TableName("business_layer") +public class BusinessLayer { + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + + + private String layerName; + + + /*0:禁用 1:启用*/ + private Boolean enable; + + /** + * 时间 + * */ + private Date createTime; + + + private Integer layerType; + + @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "layerType", other = "layer_type") + private String layerTypeName; + + //租户id + private String tenantId; + //部门id + private Long deptId; + //部门名称 + private String deptName; + + //备注 + private String remark; + //排序 + private Integer sort; + //父部门id + private Integer parentId; + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java index 23f549f..9c1e38c 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessAlertBo.java @@ -252,4 +252,24 @@ public class BusinessAlertBo { */ private String exportType = "world"; + /** + * 无人机方向 + */ + private String direction; + + /** + * 无人机云台偏航角 + */ + private String gimbalYaw; + + /** + * 无人机高 + */ + private String height; + + /** + * 无人机俯视角 + */ + private String gimbalPitch; + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessLayerBo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessLayerBo.java new file mode 100644 index 0000000..3c0e822 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/bo/BusinessLayerBo.java @@ -0,0 +1,57 @@ +package org.dromara.business.domain.bo; + + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.business.domain.BusinessLayer; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; + +import java.io.Serial; +import java.util.Date; + +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BusinessLayer.class,reverseConvertGenerate = false) +public class BusinessLayerBo { + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + private Long id; + + + @NotNull(message = "图层名称不能为空", groups = { AddGroup.class}) + private String layerName; + + /*0:禁用 1:启用*/ + private Boolean enable; + /** + * 时间 + * */ + private Date createTime; + + @NotNull(message = "图层类型不能为空", groups = { AddGroup.class}) + private Integer layerType; + + private String tenantId; + @NotNull(message = "部门id不能为空", groups = { AddGroup.class}) + private Long deptId; + + @NotNull(message = "部门名称不能为空", groups = { AddGroup.class}) + private String deptName; + + private String remark; + + //排序 + private Integer sort; + //父部门id + private Integer parentId; + +} 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 cfc7d8e..32efc5c 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 @@ -211,4 +211,25 @@ public class BusinessAlertVo implements Serializable { * 案件号 */ private String caseNumber; + + + /** + * 无人机方向 + */ + private String direction; + + /** + * 无人机云台偏航角 + */ + private String gimbalYaw; + + /** + * 无人机高 + */ + private String height; + + /** + * 无人机俯视角 + */ + private String gimbalPitch; } diff --git a/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessLayerVo.java b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessLayerVo.java new file mode 100644 index 0000000..59a9016 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/domain/vo/BusinessLayerVo.java @@ -0,0 +1,56 @@ +package org.dromara.business.domain.vo; + + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.business.domain.BusinessLayer; +import org.dromara.business.domain.BusinessTask; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; + +import java.io.Serial; +import java.util.Date; + +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BusinessLayer.class) +public class BusinessLayerVo { + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + private Long id; + + + + private String layerName; + + /*0:禁用 1:启用*/ + private Boolean enable; + /** + * 时间 + * */ + private Date createTime; + private Integer layerType; + @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "layerType", other = "layer_type") + private String layerTypeName; + private String tenantId; + private Long deptId; + + private String deptName; + + private String remark; + + //排序 + private Integer sort; + //父部门id + private Integer parentId; + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java index e139e1e..9a1726d 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/dubbo/RemoteBusinessAlertServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.business.dubbo; import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboService; import org.dromara.business.api.RemoteBusinessAlertService; import org.dromara.business.api.domain.bo.RemoteBusinessAlertBo; @@ -9,6 +10,8 @@ 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.system.api.RemoteSubmailConfigService; +import org.dromara.system.api.RemoteUserService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -26,7 +29,8 @@ import java.util.stream.Collectors; public class RemoteBusinessAlertServiceImpl implements RemoteBusinessAlertService { private final IBusinessAlertService businessAlertService; - + @DubboReference(timeout = 30000) + private RemoteSubmailConfigService remoteSubmailConfigService; @Override public Boolean saveBusinessAlert(List alertVoList, String activeProfile) { @@ -84,5 +88,7 @@ public class RemoteBusinessAlertServiceImpl implements RemoteBusinessAlertServic }).toList(); businessAlertService.batchUpdateDept(alertVoList); + //短信推送 + remoteSubmailConfigService.remoteSend("smsMultixsend", alertList); } } diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessLayerMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessLayerMapper.java new file mode 100644 index 0000000..1d0488d --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessLayerMapper.java @@ -0,0 +1,16 @@ +package org.dromara.business.mapper; + + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.business.domain.BusinessLayer; +import org.dromara.business.domain.bo.BusinessLayerBo; +import org.dromara.business.domain.bo.BusinessTaskBo; +import org.dromara.business.domain.vo.BusinessLayerVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +public interface BusinessLayerMapper extends BaseMapperPlus { + + Page queryPageList(@Param("page") Page page, @Param("bo") BusinessLayerBo bo); + +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessLayerService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessLayerService.java new file mode 100644 index 0000000..2527a1f --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessLayerService.java @@ -0,0 +1,22 @@ +package org.dromara.business.service; + +import org.dromara.business.domain.bo.BusinessLayerBo; +import org.dromara.business.domain.vo.BusinessLayerVo; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +public interface IBusinessLayerService { + + /** + * 分页查询工单预约列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 工单预约分页列表 + */ + TableDataInfo queryPageList(BusinessLayerBo bo, PageQuery pageQuery); + + Boolean insert(BusinessLayerBo bo); + Boolean update(BusinessLayerBo bo); + Boolean delete(Long id); +} diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index 587b2e3..484705f 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -42,6 +43,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.api.RemoteLabelPostService; +import org.dromara.system.api.RemoteSubmailConfigService; import org.dromara.system.api.RemoteUserService; import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; import org.dromara.system.api.domain.vo.RemoteUserVo; @@ -85,6 +87,8 @@ import java.util.Base64; public class BusinessAlertServiceImpl implements IBusinessAlertService { private final BusinessAlertMapper baseMapper; + @DubboReference(timeout = 30000) + private RemoteSubmailConfigService remoteSubmailConfigService; @Autowired private BusinessAlertConstructInfoMapper businessAlertConstructInfoMapper; @@ -114,7 +118,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { public BusinessAlert addBusinessAlert(BusinessAlertVo param) { BusinessAlert alert = MapstructUtils.convert(param, BusinessAlert.class); alert.setCreateTime(new Date()); - alert.setJobName(alert.getLabelCn()+ DateUtils.getTime()); +// alert.setJobName(alert.getLabelCn()+ DateUtils.getTime()); //创建案件号 try { incrementalAlertCount(alert); @@ -151,28 +155,48 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { @Override public void addBusinessAlertList(List alertVoList) { - if(!alertVoList.isEmpty()) { - incrementalCount(alertVoList); - List remoteStartProcessList = new ArrayList<>(); - for (BusinessAlertVo alertVo : alertVoList) { - alertVo.setBusinessType(2); - alertVo.setHandleType(BusinessStatusEnum.WAITING.getStatus()); - BusinessAlert alert = addBusinessAlert(alertVo); - RemoteStartProcess startProcess = new RemoteStartProcess(); - startProcess.setBusinessId(String.valueOf(alert.getId())); - startProcess.setFlowCode("alertChz"); - remoteStartProcessList.add(startProcess); - } + if (ObjectUtil.isEmpty(alertVoList)){ + throw new ServiceException("参数为空!"); + } - int startIndex = 0; // 从第 0 条开始 - int batchSize = 5; // 每批处理 5 条 - boolean flag = BatchProcessorUtil.processBatches(remoteStartProcessList, batchSize, startIndex, batch -> { - //批量新增部门区域数据 - remoteWorkflowService.startWorkFlowBatch(batch); - }); + try { + incrementalCount(alertVoList); + } catch (Exception e) { + log.error(e.getMessage(),e); + } + + //用于短信推送 + List> noticeList=new ArrayList<>(); + List remoteStartProcessList = new ArrayList<>(); + for (BusinessAlertVo alertVo : alertVoList) { + Mapmap=new HashMap<>(); + alertVo.setBusinessType(2); + BusinessAlert alert = addBusinessAlert(alertVo); + RemoteStartProcess startProcess = new RemoteStartProcess(); + startProcess.setBusinessId(String.valueOf(alert.getId())); + + String flowCode = remoteWorkflowService.getFlowCode(alertVo.getLabelEn()); + log.info("flowCode:{}",flowCode); + + startProcess.setFlowCode(flowCode); + map.put("deptId",alert.getDeptId()); + map.put("deptName",alert.getDeptName()); + map.put("labelCn",alert.getLabelCn()); + map.put("labelEn",alert.getLabelEn()); + map.put("jobName",alert.getJobName()); + noticeList.add(map); + remoteStartProcessList.add(startProcess); } + int startIndex = 0; // 从第 0 条开始 + int batchSize = 5; // 每批处理 5 条 + boolean flag = BatchProcessorUtil.processBatches(remoteStartProcessList, batchSize, startIndex, batch -> { + //批量新增部门区域数据 + remoteWorkflowService.startWorkFlowBatch(batch); + }); + remoteSubmailConfigService.remoteSend("smsMultixsend",noticeList); + } /** @@ -988,6 +1012,7 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { //更新number this.baseMapper.batchUpdateCaseNumber(alertVoList); + } catch (Exception e) { log.error(e.getMessage(),e); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessLayerServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessLayerServiceImpl.java new file mode 100644 index 0000000..1a0ad34 --- /dev/null +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessLayerServiceImpl.java @@ -0,0 +1,47 @@ +package org.dromara.business.service.impl; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.convert.impl.MapConverter; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.business.domain.BusinessLayer; +import org.dromara.business.domain.bo.BusinessLayerBo; +import org.dromara.business.domain.vo.BusinessLayerVo; +import org.dromara.business.mapper.BusinessLayerMapper; +import org.dromara.business.service.IBusinessLayerService; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.springframework.stereotype.Service; + + + +@Slf4j +@RequiredArgsConstructor +@Service +public class BusinessLayerServiceImpl implements IBusinessLayerService { + private final BusinessLayerMapper baseMapper; + + @Override + public TableDataInfo queryPageList(BusinessLayerBo bo, PageQuery pageQuery) { + Page result = baseMapper.queryPageList(pageQuery.build(), bo); + return TableDataInfo.build(result); + } + + @Override + public Boolean insert(BusinessLayerBo bo) { + BusinessLayer layerVo = Convert.convert( BusinessLayer.class,bo); + return baseMapper.insert(layerVo)>0; + } + + @Override + public Boolean update(BusinessLayerBo bo) { + BusinessLayer layerVo = Convert.convert( BusinessLayer.class,bo); + return baseMapper.updateById(layerVo)>0; + } + + @Override + public Boolean delete(Long id) { + return baseMapper.deleteById(id)>0; + } +} diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessLayerMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessLayerMapper.xml new file mode 100644 index 0000000..ed9fcf4 --- /dev/null +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessLayerMapper.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java index 70c2321..7edd719 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineJobController.java @@ -154,4 +154,11 @@ public class WaylineJobController { } } + //根据设备sn查询jobname + @GetMapping("/{workspace_id}/getJobByDockSn") + @Operation(summary = "根据设备sn查询jobname。", description = "根据设备sn查询jobname。") + public HttpResultResponse getJobByDockSn( @RequestParam(name = "device_sn") String deviceSn) { + return HttpResultResponse.success(waylineJobService.getJobByDockSn(deviceSn)); + } + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java index 6b2532b..36e4064 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineJobService.java @@ -87,4 +87,6 @@ public interface IWaylineJobService { * @param fileType 图片类型 ("jpeg,mp4") * */ List getMediaFileDTO(String jobId, String fileType); + + WaylineJobDTO getJobByDockSn(String dockSn); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java index 3201cce..82790e3 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineJobServiceImpl.java @@ -267,6 +267,26 @@ public class WaylineJobServiceImpl implements IWaylineJobService { return fileService.getMediaFileDTO(jobId,fileType); } + @Override + public WaylineJobDTO getJobByDockSn(String dockSn) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(WaylineJobEntity::getStatus, 2) + .eq(WaylineJobEntity::getDockSn, dockSn); + + //降序查询 + queryWrapper.orderByDesc(WaylineJobEntity::getCreateTime); + + List waylineJobEntities = mapper.selectList(queryWrapper); + + if (ObjectUtil.isEmpty(waylineJobEntities)){ + return new WaylineJobDTO(); + } + + return entity2Dto(waylineJobEntities.getFirst()); + + } + private WaylineJobDTO entity2Dto(WaylineJobEntity entity) { if (entity == null) { return null; diff --git a/dk-modules/system/src/main/java/org/dromara/system/DKSystemApplication.java b/dk-modules/system/src/main/java/org/dromara/system/DKSystemApplication.java index 63db867..c015fef 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/DKSystemApplication.java +++ b/dk-modules/system/src/main/java/org/dromara/system/DKSystemApplication.java @@ -4,6 +4,7 @@ import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup; +import org.springframework.scheduling.annotation.EnableAsync; /** * 系统模块 @@ -12,6 +13,7 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt */ @EnableDubbo @SpringBootApplication +@EnableAsync public class DKSystemApplication { public static void main(String[] args) { SpringApplication application = new SpringApplication(DKSystemApplication.class); diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysUserController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysUserController.java index 107ee20..365b7dc 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysUserController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysUserController.java @@ -274,6 +274,16 @@ public class SysUserController extends BaseController { return toAjax(userService.updateUserStatus(user.getUserId(), user.getStatus())); } + + /** + * 状态修改 + */ + @SaCheckPermission("system:user:edit") + @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @PutMapping("/noticeType") + public R noticeType(@RequestBody SysUserBo user) { + return toAjax(userService.updateUserNoticeType(user.getUserId(), user.getNoticeType())); + } /** * 根据用户编号获取授权角色 * diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/SysUser.java b/dk-modules/system/src/main/java/org/dromara/system/domain/SysUser.java index 772b505..ed89ba4 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/SysUser.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/SysUser.java @@ -98,6 +98,7 @@ public class SysUser extends TenantEntity { */ private Date loginDate; + private Integer noticeType; /** * 备注 */ diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java index 2b96210..871e7d1 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java @@ -108,6 +108,7 @@ public class SysUserBo extends BaseEntity { */ private String excludeUserIds; + private Integer noticeType; /** * 平台名称 */ diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java index 45397be..ef52276 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java @@ -47,6 +47,7 @@ public class SysUserVo implements Serializable { * 用户账号 */ private String userName; + private Integer noticeType; /** * 用户昵称 diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteSubmailConfigServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteSubmailConfigServiceImpl.java index e35f1c8..b140394 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteSubmailConfigServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteSubmailConfigServiceImpl.java @@ -1,17 +1,27 @@ package org.dromara.system.dubbo; -import cn.hutool.core.bean.BeanUtil; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import lombok.RequiredArgsConstructor; + import org.apache.dubbo.config.annotation.DubboService; import org.dromara.common.core.domain.R; -import org.dromara.system.api.RemoteClientService; + import org.dromara.system.api.RemoteSubmailConfigService; -import org.dromara.system.api.domain.vo.RemoteClientVo; -import org.dromara.system.domain.vo.SysClientVo; -import org.dromara.system.service.ISysClientService; + +import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.service.ISysSubmailConfigService; +import org.dromara.system.service.ISysUserService; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + /** * 客户端服务 * @@ -25,6 +35,7 @@ public class RemoteSubmailConfigServiceImpl implements RemoteSubmailConfigServic private final ISysSubmailConfigService sysSubmailConfigService; + private final ISysUserService userService; /** * @@ -36,4 +47,22 @@ public class RemoteSubmailConfigServiceImpl implements RemoteSubmailConfigServic public R remoteCmdSend(String code, String multiParam) { return sysSubmailConfigService.cmdSend(code, multiParam); } + + /** + * 根据部门获取部门下的短信推送人员,进行推送 + * */ + @Override + @Async + public void remoteSend(String code, List> alertList) { + if(!alertList.isEmpty()){ + for (Map map : alertList) { + Long deptId = Convert.toLong(map.get("deptId")); + List sysUserVos = userService.selectUserListByDept(Convert.toLong(deptId)); + Set phones = sysUserVos.stream().filter(u -> u.getNoticeType() == 1 && StrUtil.isNotEmpty(u.getPhonenumber())).map(SysUserVo::getPhonenumber).collect(Collectors.toSet()); + sysSubmailConfigService.sendPhone(code,phones, JSON.toJSONString(map)); + } + } + + + } } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysSubmailConfigService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysSubmailConfigService.java index 7ae1f1c..01a7223 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysSubmailConfigService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysSubmailConfigService.java @@ -10,6 +10,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import java.util.Collection; import java.util.List; +import java.util.Set; /** * 赛邮服务配置Service接口 @@ -71,5 +72,8 @@ public interface ISysSubmailConfigService { R cmdSend(String code, String multiParam); + R sendPhone(String code,Setphones, String multiParam); + String submailSendUtil(SysSubmailConfigBo bo, List configUserVoList); + String submailSendPhone(SysSubmailConfigBo bo, Set phones); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java index 5b188c5..2d0e9e0 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysUserService.java @@ -169,6 +169,7 @@ public interface ISysUserService { * @return 结果 */ int updateUserStatus(Long userId, String status); + int updateUserNoticeType(Long userId, Integer noticeType); /** * 修改用户基本信息 diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysSubmailConfigServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysSubmailConfigServiceImpl.java index c5d9894..5bed240 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysSubmailConfigServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysSubmailConfigServiceImpl.java @@ -32,10 +32,7 @@ import org.dromara.system.domain.SysSubmailConfig; import org.dromara.system.mapper.SysSubmailConfigMapper; import org.dromara.system.service.ISysSubmailConfigService; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; import java.util.stream.Collectors; /** @@ -189,6 +186,75 @@ public class SysSubmailConfigServiceImpl implements ISysSubmailConfigService { return R.ok(result); } + @Override + public R sendPhone(String code, Set phones, String multiParam) { + //找到生效配置 + SysSubmailConfigBo bo = new SysSubmailConfigBo(); + bo.setCode(code); + List sysSubmailConfigVoTempList = this.queryList(bo); + if (sysSubmailConfigVoTempList.size() <= 0) { + return R.fail("暂无有效配置"); + } + SysSubmailConfigVo firstConfigVo = sysSubmailConfigVoTempList.get(0); + + BeanUtil.copyProperties(firstConfigVo,bo); + bo.setMultiParam(multiParam); + + String result = submailSendPhone(bo,phones); + return R.ok(result); + } + public String submailSendPhone(SysSubmailConfigBo bo, Set phones) { + if(!phones.isEmpty()){ + String subMailSaveFlag = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("submail.log.save"); + HashMap postParam = new HashMap<>(); + postParam.put("appid", bo.getAppid()); + postParam.put("signature", bo.getSignature()); + + String phonenumber =String.join(",", phones);; + String result = ""; + switch (bo.getCode()){ + case "smsSend": //短信发送 to/content + postParam.put("to", phonenumber); + postParam.put("content", bo.getContent()); + result = HttpUtil.post(bo.getUrl(), postParam); //JSONUtil.parseObj(result).getStr("status") + saveConfigLog(bo, subMailSaveFlag, phonenumber, result); + break; + case "smsXsend": //短信模板发送 to/project + postParam.put("to", phonenumber); + postParam.put("project", bo.getProject()); + postParam.put("vars", bo.getVars()); + result = HttpUtil.post(bo.getUrl(), postParam); + saveConfigLog(bo, subMailSaveFlag, phonenumber, result); + break; + case "smsMultisend": //短信一对多发送 multi +// postParam.put("to", phonenumber); +// postParam.put("project", bo.getProject()); +// postParam.put("vars", bo.getVars()); +// result = HttpUtil.post(bo.getUrl(), postParam); +// saveConfigLog(bo, subMailSaveFlag, phonenumber, result); + break; + case "smsMultixsend": //短信模板一对多发送 project/multi + postParam.put("to", phonenumber); + postParam.put("project", bo.getProject()); +// 拼接multi + JSONArray multiJson = new JSONArray(); + for (String phone : phones) { + JSONObject entries = new JSONObject(); + entries.set("to",phone); + entries.set("vars", JSONUtil.parseObj(bo.getMultiParam())); + multiJson.add(entries); + } + String multiJsonStr = multiJson.toString(); +// postParam.put("multi", multiJson.toString()); + postParam.put("multi", multiJsonStr); + result = HttpUtil.post(bo.getUrl(), postParam); + saveConfigLog(bo, subMailSaveFlag, phonenumber, result); + break; + } + return result; + } + return null; + } public String submailSendUtil(SysSubmailConfigBo bo, List configUserVoList) { String subMailSaveFlag = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("submail.log.save"); HashMap postParam = new HashMap<>(); diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index 8849a41..54b5d6a 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -376,6 +376,14 @@ public class SysUserServiceImpl implements ISysUserService { .eq(SysUser::getUserId, userId)); } + @Override + public int updateUserNoticeType(Long userId, Integer noticeType) { + return baseMapper.update(null, + new LambdaUpdateWrapper() + .set(SysUser::getNoticeType, noticeType) + .eq(SysUser::getUserId, userId)); + } + /** * 修改用户基本信息 * diff --git a/dk-modules/system/src/main/java/org/dromara/system/utils/OvkmzParser.java b/dk-modules/system/src/main/java/org/dromara/system/utils/OvkmzParser.java new file mode 100644 index 0000000..38aa2dd --- /dev/null +++ b/dk-modules/system/src/main/java/org/dromara/system/utils/OvkmzParser.java @@ -0,0 +1,11 @@ +package org.dromara.system.utils; + + +/** + * 解析ovkmz文件 + */ +public class OvkmzParser { + + + +} diff --git a/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml b/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml index 4b35648..2e482a2 100644 --- a/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/dk-modules/system/src/main/resources/mapper/system/SysUserMapper.xml @@ -17,7 +17,7 @@ ${ew.getSqlSelect} - u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, + u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex,u.notice_type, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.product_name from sys_user u diff --git a/dk-visual/nacos/src/main/resources/application.properties b/dk-visual/nacos/src/main/resources/application.properties index 44fe8a3..972740f 100644 --- a/dk-visual/nacos/src/main/resources/application.properties +++ b/dk-visual/nacos/src/main/resources/application.properties @@ -40,9 +40,9 @@ spring.sql.init.platform=mysql db.num=1 ### Connect URL of DB: -db.url.0=jdbc:mysql://114.235.183.147:3306/dk_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true +db.url.0=jdbc:mysql://127.0.0.1:3306/dk_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true db.user.0=root -db.password.0=dkcy@yf +db.password.0=123456 ### the maximum retry times for push nacos.config.push.maxRetryTime=50