提交 e902c070 作者: 17607474349

feat:

1、播报语音
上级 b432177a
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.broadcast;
import com.yiring.common.domain.BasicEntity;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.Entity;
import javax.persistence.Table;
import lombok.*;
import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.CreationTimestamp;
/**
* 播报音频
*
* @author LJ-2204
* @date 2022/5/7
*/
@Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@FieldDefaults(level = AccessLevel.PRIVATE)
@Entity
@Table(name = "BS_BROADCAST_AUDIO")
@Comment("播报语音")
public class BroadcastAudio extends BasicEntity implements Serializable {
@Serial
private static final long serialVersionUID = -7232247536987652847L;
@Comment("语音名称")
String name;
@Comment("语音地址")
String uri;
@Comment("上传时间")
@CreationTimestamp
LocalDateTime uploadTime;
@Comment("备注")
String describe;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.broadcast;
import java.io.Serializable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
/**
* 播报音频
*
* @author LJ-2204
* @date 2022/5/7
*/
@Repository
public interface BroadcastAudioRepository
extends JpaRepository<BroadcastAudio, Serializable>, JpaSpecificationExecutor<BroadcastAudio> {}
......@@ -100,7 +100,7 @@ public class LocationTag extends BasicEntity implements Serializable {
String voltUnit;
@FieldMapping
@Comment("类型(1:内部/2:访客/3:承包商)")
@Comment("类型(1:内部/2:访客)")
Integer category;
@FieldMapping(value = "raiseTimestamp", desc = "更新时间戳", type = Long.class)
......
......@@ -13,7 +13,7 @@ import lombok.Data;
import lombok.experimental.FieldDefaults;
/**
* 部门信息控制器
* 部门导出
*
* @author LJ-2204
* @date 2022/4/22
......
......@@ -12,7 +12,7 @@ import lombok.Data;
import lombok.experimental.FieldDefaults;
/**
* 部门信息控制器
* 信标导出
*
* @author LJ-2204
* @date 2022/4/29
......
......@@ -31,7 +31,6 @@ public class UserExportExcel implements Serializable {
@ExcelColumn(title = "工号")
String uuid;
// 图标类型
@ExcelColumn(title = "图标类型")
String type;
......
......@@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
/**
* 部门信息控制器
* zy信标
*
* @author LJ-2204
* @date 2022/4/28
......
......@@ -6,7 +6,7 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
/**
* 部门信息控制器
* zy用户
*
* @author LJ-2204
* @date 2022/5/5
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.broadcast;
import com.yiring.app.domain.broadcast.BroadcastAudio;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 播报音频
*
* @author LJ-2204
* @date 2022/5/7
*/
@ApiModel("BroadcastAudioAddParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastAudioAddParam implements Serializable {
@Serial
private static final long serialVersionUID = 7174160141071642430L;
@ApiModelProperty(value = "语音名称", example = "警告张三", required = true)
@NotEmpty(message = "语音名称不能为空")
String name;
@ApiModelProperty(value = "语音地址", example = "uri", required = true)
@NotEmpty(message = "语音地址不能为空")
String uri;
@ApiModelProperty(value = "备注", example = "请输入备注信息")
String describe;
public static BroadcastAudio transform(BroadcastAudioAddParam param) {
return BroadcastAudio.builder().name(param.getName()).uri(param.getUri()).describe(param.getDescribe()).build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.broadcast;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 播报语音
*
* @author LJ-2204
* @date 2022/5/7
*/
@ApiModel("BroadcastAudioFindParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastAudioFindParam implements Serializable {
@Serial
private static final long serialVersionUID = -7396234032011169171L;
@ApiModelProperty(value = "备注", example = "请输入备注信息")
String name;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.broadcast;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 播报语音
*
* @author LJ-2204
* @date 2022/5/7
*/
@ApiModel("BroadcastAudioModifyParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastAudioModifyParam implements Serializable {
@Serial
private static final long serialVersionUID = 6319295457926858655L;
@ApiModelProperty(value = "主键", example = "1", required = true)
@NotNull(message = "主键不能为空")
Long id;
@ApiModelProperty(value = "语音名称", example = "警告张三", required = true)
@NotEmpty(message = "语音名称不能为空")
String name;
@ApiModelProperty(value = "语音地址", example = "uri", required = true)
@NotEmpty(message = "语音地址不能为空")
String uri;
@ApiModelProperty(value = "备注", example = "请输入备注信息")
String describe;
}
......@@ -10,7 +10,7 @@ import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 部门信息控制器
* 定位标签导出
*
* @author LJ-2204
* @date 2022/4/27
......
......@@ -34,4 +34,7 @@ public class LocationTagFindParam implements Serializable {
@ApiModelProperty(value = "状态", example = "true")
Boolean silent;
@ApiModelProperty(value = "绑卡状态", example = "true")
Boolean used;
}
......@@ -30,5 +30,5 @@ public class LocationTagTypeFindParam implements Serializable {
String code;
@ApiModelProperty(value = "类别", example = "1内部/2访客")
Integer category;
String category;
}
......@@ -10,7 +10,7 @@ import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 部门信息控制器
* 分配标签
*
* @author LJ-2204
* @date 2022/4/28
......@@ -32,5 +32,5 @@ public class LocationTagTypeSendParam implements Serializable {
String ids;
@ApiModelProperty(value = "类别", example = "1内部/2访客")
Integer category;
String category;
}
......@@ -10,7 +10,7 @@ import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 部门信息控制器
* zy标签
*
* @author LJ-2204
* @date 2022/5/6
......@@ -32,7 +32,7 @@ public class ZyLocationTagTypeSendParam implements Serializable {
Long[] ids;
@ApiModelProperty(value = "类别", example = "1:内部/2:访客")
Integer category;
String category;
@ApiModelProperty(value = "工厂ID", example = "100")
Integer orgId;
......
......@@ -9,7 +9,7 @@ import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 部门信息控制器
* zy用户
*
* @author LJ-2204
* @date 2022/5/5
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.broadcast;
import com.yiring.app.param.broadcast.BroadcastAudioAddParam;
import com.yiring.app.param.broadcast.BroadcastAudioFindParam;
import com.yiring.app.param.broadcast.BroadcastAudioModifyParam;
import com.yiring.app.vo.broadcast.BroadcastAudioIndexVo;
import com.yiring.app.vo.broadcast.BroadcastAudioVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
/**
* 播报语音
*
* @author LJ-2204
* @date 2022/5/7
*/
public interface BroadcastAudioService {
/**
* 添加播报语音
* @param param BroadcastAudioAddParam
* @return Result<String>
*/
Result<String> save(BroadcastAudioAddParam param);
/**
* 删除播报语音
* @param idParam IdParam
* @return Result<String>
*/
Result<String> delete(IdParam idParam);
/**
* 修改播报语音
* @param param BroadcastAudioModifyParam
* @return Result<String>
*/
Result<String> modify(BroadcastAudioModifyParam param);
/**
* 表格查询
* @param param BroadcastAudioFindParam
* @param pageParam PageParam
* @return Result<PageVo<BroadcastAudioVo>>
*/
Result<PageVo<BroadcastAudioVo>> page(BroadcastAudioFindParam param, PageParam pageParam);
/**
* 播报语音检索
* @param indexParam IndexParam
* @return Result<PageVo<BroadcastAudioIndexVo>>
*/
Result<PageVo<BroadcastAudioIndexVo>> index(IndexParam indexParam);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.broadcast.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil;
import com.yiring.app.domain.broadcast.BroadcastAudio;
import com.yiring.app.domain.broadcast.BroadcastAudioRepository;
import com.yiring.app.param.broadcast.BroadcastAudioAddParam;
import com.yiring.app.param.broadcast.BroadcastAudioFindParam;
import com.yiring.app.param.broadcast.BroadcastAudioModifyParam;
import com.yiring.app.service.broadcast.BroadcastAudioService;
import com.yiring.app.vo.broadcast.BroadcastAudioIndexVo;
import com.yiring.app.vo.broadcast.BroadcastAudioVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.domain.BasicEntity;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.criteria.Order;
import javax.persistence.criteria.Predicate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 播报音频
*
* @author LJ-2204
* @date 2022/5/7
*/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
@Service
public class BroadcastAudioServiceImpl implements BroadcastAudioService {
@Resource
BroadcastAudioRepository broadcastAudioRepository;
@Override
public Result<String> save(BroadcastAudioAddParam param) {
broadcastAudioRepository.save(BroadcastAudioAddParam.transform(param));
return Result.ok();
}
@Override
public Result<String> delete(IdParam idParam) {
Optional<BroadcastAudio> byId = broadcastAudioRepository.findById(idParam.getId());
if (byId.isEmpty()) return Result.no(Status.BAD_REQUEST, "信息不存在");
BroadcastAudio broadcastAudio = byId.get();
broadcastAudioRepository.delete(broadcastAudio);
return Result.ok();
}
@Override
public Result<String> modify(BroadcastAudioModifyParam param) {
Optional<BroadcastAudio> byId = broadcastAudioRepository.findById(param.getId());
if (byId.isEmpty()) return Result.no(Status.BAD_REQUEST, "信息不存在");
BroadcastAudio broadcastAudio = byId.get();
broadcastAudio.setDescribe(param.getDescribe());
broadcastAudio.setName(param.getName());
broadcastAudio.setUri(param.getUri());
broadcastAudioRepository.save(broadcastAudio);
return Result.ok();
}
@Override
public Result<PageVo<BroadcastAudioVo>> page(BroadcastAudioFindParam param, PageParam pageParam) {
Specification<BroadcastAudio> specification = (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList();
if (ObjectUtil.isNotEmpty(param.getName())) {
predicates.add(cb.like(root.get(BroadcastAudio.Fields.name), "%" + param.getName() + "%"));
}
Order order = cb.desc(root.get(BasicEntity.Fields.createTime));
return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction();
};
// 分页
Pageable pageable = PageRequest.of(pageParam.getPageNo() - 1, pageParam.getPageSize());
Page<BroadcastAudio> broadcastAudios = broadcastAudioRepository.findAll(specification, pageable);
List<BroadcastAudioVo> broadcastAudioVos = broadcastAudios
.getContent()
.stream()
.map(BroadcastAudioVo::transform)
.collect(Collectors.toList());
PageVo<BroadcastAudioVo> pageVo = PageVo.build(broadcastAudioVos, broadcastAudios.getTotalElements());
return Result.ok(pageVo);
}
@Override
public Result<PageVo<BroadcastAudioIndexVo>> index(IndexParam indexParam) {
Specification<BroadcastAudio> specification = (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList();
if (ObjectUtil.isNotEmpty(indexParam.getStr())) {
predicates.add(cb.like(root.get(BroadcastAudio.Fields.name), "%" + indexParam.getStr() + "%"));
}
Order order = cb.desc(root.get(BasicEntity.Fields.createTime));
return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction();
};
List<BroadcastAudio> broadcastAudios = broadcastAudioRepository.findAll(specification);
List<BroadcastAudioIndexVo> broadcastAudioIndexVos = broadcastAudios
.stream()
.map(BroadcastAudioIndexVo::transform)
.collect(Collectors.toList());
PageVo<BroadcastAudioIndexVo> pageVo = PageVo.build(broadcastAudioIndexVos, broadcastAudioIndexVos.size());
return Result.ok(pageVo);
}
}
......@@ -348,6 +348,10 @@ public class LocationTagServiceImpl implements LocationTagService {
predicates.add(cb.equal(root.get(LocationTag.Fields.silent), locationTagFindParam.getSilent()));
}
if (ObjectUtil.isNotEmpty(locationTagFindParam.getUsed())) {
predicates.add(cb.equal(root.get(LocationTag.Fields.used), locationTagFindParam.getUsed()));
}
Order order = cb.desc(root.get(LocationTag.Fields.createTime));
return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction();
......
......@@ -34,7 +34,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 部门信息控制器
* 标签分配
*
* @author LJ-2204
* @date 2022/4/27
......@@ -90,7 +90,7 @@ public class LocationTagTypeServiceImpl implements LocationTagTypeService {
ZyLocationTagTypeSendParam zyLocationTagTypeSendParam = ZyLocationTagTypeSendParam
.builder()
.orgId(FACTORY_ID)
.category(locationtagtypeSendParam.getCategory())
.category(Convert.toStr(locationtagtypeSendParam.getCategory()))
.build();
String[] split = locationtagtypeSendParam.getIds().split(",");
......@@ -125,7 +125,7 @@ public class LocationTagTypeServiceImpl implements LocationTagTypeService {
locationTags =
locationTags
.stream()
.peek(locationTag -> locationTag.setCategory(locationtagtypeSendParam.getCategory()))
.peek(locationTag -> locationTag.setCategory(Convert.toInt(locationtagtypeSendParam.getCategory())))
.collect(Collectors.toList());
locationTagRepository.saveAll(locationTags);
return Result.ok();
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.broadcast;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.broadcast.BroadcastAudio;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 播报语音
*
* @author LJ-2204
* @date 2022/5/7
*/
@ApiModel("BroadcastAudioIndexVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastAudioIndexVo implements Serializable {
@Serial
private static final long serialVersionUID = -2734529136001729248L;
@ApiModelProperty(value = "主键", example = "100")
@JsonSerialize(using = ToStringSerializer.class)
Long id;
@ApiModelProperty(value = "语音名称", example = "张三")
String name;
@ApiModelProperty(value = "语音地址", example = "uri")
String uri;
public static BroadcastAudioIndexVo transform(BroadcastAudio broadcastAudio) {
return BroadcastAudioIndexVo
.builder()
.id(broadcastAudio.getId())
.name(broadcastAudio.getName())
.uri(broadcastAudio.getUri())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.broadcast;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.broadcast.BroadcastAudio;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 播报音频
*
* @author LJ-2204
* @date 2022/5/7
*/
@ApiModel("BroadcastAudioVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastAudioVo implements Serializable {
@Serial
private static final long serialVersionUID = 1092099954728361919L;
@ApiModelProperty(value = "主键", example = "100")
@JsonSerialize(using = ToStringSerializer.class)
Long id;
@ApiModelProperty(value = "语音名称", example = "张三")
String name;
@ApiModelProperty(value = "语音地址", example = "uri")
String uri;
@ApiModelProperty(value = "上传时间", example = "2022-11-11 22:22:22")
LocalDateTime uploadTime;
@ApiModelProperty(value = "备注", example = "1")
String describe;
public static BroadcastAudioVo transform(BroadcastAudio broadcastAudio) {
return BroadcastAudioVo
.builder()
.id(broadcastAudio.getId())
.name(broadcastAudio.getName())
.uri(broadcastAudio.getUri())
.uploadTime(broadcastAudio.getUploadTime())
.describe(broadcastAudio.getDescribe())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.location.tag;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
......@@ -43,8 +44,8 @@ public class LocationTagTypeVo implements Serializable {
@ApiModelProperty(value = "标签类型", example = "人员")
String tagType;
@ApiModelProperty(value = "类型", example = "类型(1:内部/2:访客/3:承包商)")
Integer category;
@ApiModelProperty(value = "类型", example = "类型(1:内部/2:访客)")
String category;
public static LocationTagTypeVo transform(LocationTag locationTag) {
String entityType = StrUtil.equals(locationTag.getType().name(), "BTT02") ? "car" : "staff";
......@@ -54,7 +55,7 @@ public class LocationTagTypeVo implements Serializable {
.code(locationTag.getCode())
.type(locationTag.getType())
.tagType(entityType)
.category(locationTag.getCategory())
.category(Convert.toStr(locationTag.getCategory()))
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.broadcast;
import com.yiring.app.param.broadcast.BroadcastAudioAddParam;
import com.yiring.app.param.broadcast.BroadcastAudioFindParam;
import com.yiring.app.param.broadcast.BroadcastAudioModifyParam;
import com.yiring.app.service.broadcast.BroadcastAudioService;
import com.yiring.app.vo.broadcast.BroadcastAudioIndexVo;
import com.yiring.app.vo.broadcast.BroadcastAudioVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 播报音频
*
* @author LJ-2204
* @date 2022/5/7
*/
@Slf4j
@Api(tags = "播报音频")
@Validated
@RestController
@RequestMapping("/broadcast/audio")
public class BroadcastAudioController {
@Resource
BroadcastAudioService broadcastAudioService;
@ApiOperation("添加")
@PostMapping("save")
public Result<String> save(@Valid BroadcastAudioAddParam param) {
return broadcastAudioService.save(param);
}
@ApiOperation("删除")
@DeleteMapping("delete")
public Result<String> delete(IdParam idParam) {
return broadcastAudioService.delete(idParam);
}
@ApiOperation("修改")
@PutMapping("modify")
public Result<String> modify(@Valid BroadcastAudioModifyParam param) {
return broadcastAudioService.modify(param);
}
@ApiOperation("表格查询")
@GetMapping("page")
public Result<PageVo<BroadcastAudioVo>> page(@Valid BroadcastAudioFindParam param, PageParam pageParam) {
return broadcastAudioService.page(param, pageParam);
}
@ApiOperation("播报语音检索")
@GetMapping("index")
public Result<PageVo<BroadcastAudioIndexVo>> index(IndexParam indexParam) {
return broadcastAudioService.index(indexParam);
}
}
......@@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* 部门信息控制器
* 部门控制器
* @author LJ-2204
* @date 2022/4/19
*/
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论