提交 fcf14f9f 作者: 谭志磊

feat : 访客邀请

上级 8b21acf2
......@@ -45,7 +45,7 @@ public class VisitorExportExcel implements Serializable {
@ExcelColumn(title = "标签卡")
String labelCard;
@ExcelColumn(title = "标签卡状态")
@ExcelColumn(title = "标签卡状态", mapping = "1:未发卡,2:使用中,3:已收卡")
String labelCardStatus;
@ExcelColumn(title = "所属单位")
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.visitor;
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 tzl
* 2022/4/21 14:04
*/
@ApiModel("VisitorInfo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class VisitorInfoParam implements Serializable {
@Serial
private static final long serialVersionUID = 3419577080791245488L;
@ApiModelProperty(value = "到访人姓名", example = "张三", required = true)
@NotEmpty(message = "到访人姓名不能为空")
String visitorName;
@ApiModelProperty(value = "到访人电话", example = "17688888888", required = true)
@NotEmpty(message = "到访人电话不能为空")
String visitorMobile;
@ApiModelProperty(value = "到访人身份证", example = "430441190001255417", required = true)
@NotEmpty(message = "到访人身份证不能为空")
String visitorCarNum;
@ApiModelProperty(value = "是否特殊作业", example = "fasle", required = true)
boolean taskType;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.visitor;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* @author tzl
* 2022/4/21 13:51
*/
@ApiModel("VisitorParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class VisitorListParam implements Serializable {
@Serial
private static final long serialVersionUID = 6356324790945367160L;
@ApiModelProperty(value = "访客来源", example = "内部邀请", required = true)
String visitorSource;
@ApiModelProperty(value = "来访原因", example = "2022-04-19 14:28:00")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
LocalDateTime appOfVisitTime;
@ApiModelProperty(value = "被访人id", example = "1", required = true)
String intervieweeId;
@ApiModelProperty(value = "来访原因", example = "看看", required = true)
String reason;
@ApiModelProperty(value = "访客所属公司", example = "壹润科技", required = true)
String orgId;
@ApiModelProperty(value = "邀请人数", example = "1", required = true)
Integer numOfVisitor;
List<VisitorInfoParam> visitorInfos;
}
......@@ -144,40 +144,40 @@ public class VideoServiceImpl implements VideoService {
return Result.no(Status.BAD_REQUEST, "您输入的编号已存在");
}
//当修改跟国标相关联的信息时同步更新国标数据
if (
!video.getVideoName().equals(videoParam.getVideoName()) && !video.getM3u8().equals(videoParam.getM3u8())
) {
new Thread(() -> {
JSONObject jsonObject = gbClient.proxyDel("stream", video.getUuid(), gbCookie());
if (!jsonObject.get("code").equals(0)) {
throw new RuntimeException(jsonObject.get("msg").toString());
}
})
.start();
}
// if (
// !video.getVideoName().equals(videoParam.getVideoName()) && !video.getM3u8().equals(videoParam.getM3u8())
// ) {
new Thread(() -> {
JSONObject jsonObject = gbClient.proxyDel("stream", video.getUuid(), gbCookie());
if (!jsonObject.get("code").equals(0)) {
throw new RuntimeException(jsonObject.get("msg").toString());
}
})
.start();
}
// }
BeanUtils.copyProperties(videoParam, video);
videoRepository.saveAndFlush(video);
//将信息发送到队列,等待同步至国标
new Thread(() -> {
StreamProxyItem streamProxyItem = StreamProxyItem
.builder()
.name(video.getVideoName())
.app("stream")
.stream(video.getUuid())
.url(video.getM3u8())
.mediaServerId("ZbnQN5csqxrPix7a")
.enable(true)
.enable_hls(true)
.type(video.getM3u8().contains("sss") ? "ffmpeg" : "default")
.timeout_ms(video.getM3u8().contains("sss") ? 60 : null)
.build();
JSONObject jsonObject = gbClient.proxySave(streamProxyItem, gbCookie());
if (!jsonObject.get("code").equals(0)) {
throw new RuntimeException(jsonObject.get("msg").toString());
}
})
.start();
// new Thread(() -> {
StreamProxyItem streamProxyItem = StreamProxyItem
.builder()
.name(video.getVideoName())
.app("stream")
.stream(video.getUuid())
.url(video.getM3u8())
.mediaServerId("ZbnQN5csqxrPix7a")
.enable(true)
.enable_hls(true)
.type(video.getM3u8().contains("sss") ? "ffmpeg" : "default")
.timeout_ms(video.getM3u8().contains("sss") ? 60 : null)
.build();
JSONObject jsonObject = gbClient.proxySave(streamProxyItem, gbCookie());
if (!jsonObject.get("code").equals(0)) {
throw new RuntimeException(jsonObject.get("msg").toString());
}
// })
// .start();
return Result.ok();
}
......@@ -343,24 +343,26 @@ public class VideoServiceImpl implements VideoService {
//如果存在则操作修改
video.setId(one.getId());
//删除国标关联监控信息
// gbClient.proxyDel("stream", video.getUuid(),s);
gbClient.proxyDel("stream", video.getUuid(), gbCookie());
});
videoRepository.saveAndFlush(video);
//导入监控点位后,还需要同步数据到国标28181
// StreamProxyItem streamProxyItem = StreamProxyItem
// .builder()
// .name(video.getVideoName())
// .app("stream")
// .stream(video.getUuid())
// .url(video.getM3u8())
// .mediaServerId("ZbnQN5csqxrPix7a")
// .enable(true)
// .enable_hls(true)
// .type(video.getM3u8().contains("sss") ? "default" : "ffmpeg")
// .timeout_ms(video.getM3u8().contains("sss") ? 60 : null)
// .build();
// JSONObject jsonObject = gbClient.proxySave(streamProxyItem, gbCookie());
// System.out.println(jsonObject);
StreamProxyItem streamProxyItem = StreamProxyItem
.builder()
.name(video.getVideoName())
.app("stream")
.stream(video.getUuid())
.url(video.getM3u8())
.mediaServerId("ZbnQN5csqxrPix7a")
.enable(true)
.enable_hls(true)
.type(video.getM3u8().contains("sss") ? "default" : "ffmpeg")
.timeout_ms(video.getM3u8().contains("sss") ? 60 : null)
.build();
JSONObject jsonObject = gbClient.proxySave(streamProxyItem, gbCookie());
if (!jsonObject.get("code").equals(0)) {
throw new RuntimeException(jsonObject.get("msg").toString());
}
});
}
return Result.ok();
......@@ -373,6 +375,7 @@ public class VideoServiceImpl implements VideoService {
/**
* 获取国标系统登录cookie
*
* @return cookie
*/
String gbCookie() {
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.visitor;
import com.yiring.app.param.visitor.VisitorListParam;
import com.yiring.app.param.visitor.VisitorParam;
import com.yiring.app.param.visitor.VisitorQueryParam;
import com.yiring.app.vo.visitor.VisitorVo;
......@@ -22,6 +23,13 @@ public interface VisitorService {
Result<String> saveVisitor(VisitorParam visitorParam);
/**
* 访客批量新增
* @param visitorListParam 批量访客新增入参
* @return 是否成功
*/
Result<String> saveVisitor(VisitorListParam visitorListParam);
/**
* 访客删除
* @param idParam 主键id
* @return 是否成功
......
......@@ -6,6 +6,8 @@ import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder;
import com.yiring.app.domain.visitor.Visitor;
import com.yiring.app.domain.visitor.VisitorRepository;
import com.yiring.app.excel.visitor.VisitorExportExcel;
import com.yiring.app.param.visitor.VisitorInfoParam;
import com.yiring.app.param.visitor.VisitorListParam;
import com.yiring.app.param.visitor.VisitorParam;
import com.yiring.app.param.visitor.VisitorQueryParam;
import com.yiring.app.service.visitor.VisitorService;
......@@ -63,6 +65,38 @@ public class VisitorServiceImpl implements VisitorService {
}
@Override
public Result<String> saveVisitor(VisitorListParam visitorListParam) {
List<VisitorInfoParam> visitorInfos = visitorListParam.getVisitorInfos();
List<String> mobileList = new ArrayList<>();
List<String> carList = new ArrayList<>();
visitorInfos.forEach(visitorInfoParam -> {
if (hasVisitorMobile(visitorInfoParam.getVisitorMobile())) {
mobileList.add(visitorInfoParam.getVisitorMobile());
}
if (hasCarNum(visitorInfoParam.getVisitorCarNum())) {
carList.add(visitorInfoParam.getVisitorCarNum());
}
});
if (mobileList.size() > 0) {
return Result.no(Status.BAD_REQUEST, mobileList + "手机号已经预约,请勿重复预约");
}
if (carList.size() > 0) {
return Result.no(Status.BAD_REQUEST, carList + "身份证已经预约,请勿重复预约");
}
visitorInfos.forEach(visitorInfoParam -> {
Visitor visitor = new Visitor();
BeanUtils.copyProperties(visitorInfoParam, visitor);
visitor.setOrgId(visitorListParam.getOrgId());
visitor.setNumOfVisitor(visitorListParam.getNumOfVisitor());
visitor.setReason(visitorListParam.getReason());
visitor.setIntervieweeId(visitorListParam.getIntervieweeId());
visitorRepository.saveAndFlush(visitor);
});
return Result.ok();
}
@Override
public Result<String> deleteVisitor(IdParam idParam) {
Optional<Visitor> optional = visitorRepository.findById(idParam.getId());
if (optional.isEmpty()) {
......@@ -214,13 +248,19 @@ public class VisitorServiceImpl implements VisitorService {
}
public boolean hasCarNum(String carNum) {
Visitor visitor = Visitor.builder().visitorCarNum(carNum).build();
return visitorRepository.count(Example.of(visitor)) > 0;
Visitor visitor = Visitor.builder().visitorCarNum(carNum).labelCardStatus("1").build();
long count = visitorRepository.count(Example.of(visitor));
Visitor visitor1 = Visitor.builder().visitorCarNum(carNum).labelCardStatus("2").build();
long count1 = visitorRepository.count(Example.of(visitor1));
return count + count1 > 0;
}
public boolean hasVisitorMobile(String mobile) {
Visitor visitor = Visitor.builder().visitorMobile(mobile).build();
return visitorRepository.count(Example.of(visitor)) > 0;
Visitor visitor = Visitor.builder().visitorMobile(mobile).labelCardStatus("1").build();
long count = visitorRepository.count(Example.of(visitor));
Visitor visitor1 = Visitor.builder().visitorMobile(mobile).labelCardStatus("1").build();
long count1 = visitorRepository.count(Example.of(visitor1));
return count + count1 > 0;
}
public Specification<Visitor> condition(VisitorQueryParam visitorQueryParam) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论