feat:批量审批

This commit is contained in:
dzc committed 2025-04-08 12:43:56 +08:00
1 parent 645240e656
commit b28f934faa
11 files changed
+564 -330

No files matched your search

@@ -0,0 +1,28 @@
package com.bsd.pjcloud.flow.task.dto;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class BatchCompleteTaskDto {
/**
* 任务id
*/
private List<String> processInstances;
/**
* 任务本地变量
*/
private Map<String, Object> taskLocalParamMap;
/**
* 是否成功 1是 0否
*/
private String isSuccess;
}
@@ -1,6 +1,7 @@
package com.bsd.pjcloud.flow.task.controller;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.flow.task.dto.BatchCompleteTaskDto;
import com.bsd.pjcloud.flow.task.dto.TaskParamDto;
import com.bsd.pjcloud.flow.task.service.ITaskService;
import lombok.RequiredArgsConstructor;
@@ -63,8 +64,8 @@ public class TaskController {
*/
@SneakyThrows
@PostMapping("batchCompleteTask")
public R batchCompleteTask(@RequestBody TaskParamDto completeParamDto) {
return taskService.completeTask(completeParamDto);
public R batchCompleteTask(@RequestBody BatchCompleteTaskDto dto) {
return R.ok(taskService.batchCompleteTask(dto));
}
/**
@@ -1,6 +1,7 @@
package com.bsd.pjcloud.flow.task.service;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.flow.task.dto.BatchCompleteTaskDto;
import com.bsd.pjcloud.flow.task.dto.TaskParamDto;
/**
@@ -8,60 +9,73 @@ import com.bsd.pjcloud.flow.task.dto.TaskParamDto;
*/
public interface ITaskService {
/**
* 查询任务
* @param taskId
* @param view
* @return
*/
R queryTask(String taskId, boolean view);
/**
* 查询任务
*
* @param taskId
* @param view
* @return
*/
R queryTask(String taskId, boolean view);
/**
* 完成任务
* @param taskParamDto
* @return
*/
R completeTask(TaskParamDto taskParamDto);
/**
* 完成任务
*
* @param taskParamDto
* @return
*/
R completeTask(TaskParamDto taskParamDto);
/**
* 前加签
* @param taskParamDto
* @return
*/
R delegateTask(TaskParamDto taskParamDto);
/**
* 批量完成任务
*/
R batchCompleteTask(BatchCompleteTaskDto dto);
/**
* 加签完成任务
* @param taskParamDto
* @return
*/
R resolveTask(TaskParamDto taskParamDto);
/**
* 前加签
*
* @param taskParamDto
* @return
*/
R delegateTask(TaskParamDto taskParamDto);
/**
* 设置执行人
* @param taskParamDto
* @return
*/
R setAssignee(TaskParamDto taskParamDto);
/**
* 加签完成任务
*
* @param taskParamDto
* @return
*/
R resolveTask(TaskParamDto taskParamDto);
/**
* 结束流程
* @param taskParamDto
* @return
*/
R stopProcessInstance(TaskParamDto taskParamDto);
/**
* 设置执行人
*
* @param taskParamDto
* @return
*/
R setAssignee(TaskParamDto taskParamDto);
/**
* 退回
* @param taskParamDto
* @return
*/
R back(TaskParamDto taskParamDto);
/**
* 结束流程
*
* @param taskParamDto
* @return
*/
R stopProcessInstance(TaskParamDto taskParamDto);
/**
* 查询首页数据看板
* @return
*/
R queryTaskData();
/**
* 退回
*
* @param taskParamDto
* @return
*/
R back(TaskParamDto taskParamDto);
/**
* 查询首页数据看板
*
* @return
*/
R queryTaskData();
}
@@ -4,8 +4,13 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.security.service.PjcloudUser;
import com.bsd.pjcloud.flow.task.dto.*;
import com.bsd.pjcloud.flow.task.entity.Process;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -15,10 +20,6 @@ import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowEngineService;
import com.bsd.pjcloud.flow.task.constant.FormTypeEnum;
import com.bsd.pjcloud.flow.task.constant.NodeStatusEnum;
import com.bsd.pjcloud.flow.task.constant.ProcessInstanceConstant;
import com.bsd.pjcloud.flow.task.dto.IndexPageStatistics;
import com.bsd.pjcloud.flow.task.dto.Node;
import com.bsd.pjcloud.flow.task.dto.TaskParamDto;
import com.bsd.pjcloud.flow.task.dto.TaskResultDto;
import com.bsd.pjcloud.flow.task.entity.ProcessCopy;
import com.bsd.pjcloud.flow.task.entity.ProcessInstanceRecord;
import com.bsd.pjcloud.flow.task.entity.ProcessNodeRecordAssignUser;
@@ -31,6 +32,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -40,299 +42,343 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class TaskServiceImpl implements ITaskService {
private final RemoteFlowEngineService flowEngineService;
private final RemoteFlowEngineService flowEngineService;
private final IProcessService processService;
private final IProcessService processService;
private final IProcessCopyService processCopyService;
private final IProcessCopyService processCopyService;
private final IProcessNodeDataService nodeDataService;
private final IProcessNodeDataService nodeDataService;
private final IProcessNodeRecordAssignUserService processNodeRecordAssignUserService;
private final IProcessNodeRecordAssignUserService processNodeRecordAssignUserService;
private final IProcessInstanceRecordService processInstanceRecordService;
private final IProcessInstanceRecordService processInstanceRecordService;
private final ObjectMapper objectMapper;
private final ObjectMapper objectMapper;
/**
* 查询首页数据看板
* @return
*/
@Override
public R queryTaskData() {
R<IndexPageStatistics> indexPageStatisticsR = flowEngineService
.querySimpleData(SecurityUtils.getUser().getId());
/**
* 查询首页数据看板
*
* @return
*/
@Override
public R queryTaskData() {
R<IndexPageStatistics> indexPageStatisticsR = flowEngineService
.querySimpleData(SecurityUtils.getUser().getId());
// 获取抄送任务
Long copyCount = processCopyService.lambdaQuery()
.eq(ProcessCopy::getUserId, SecurityUtils.getUser().getId())
.count();
indexPageStatisticsR.getData().setCopyNum(copyCount);
return indexPageStatisticsR;
}
// 获取抄送任务
Long copyCount = processCopyService.lambdaQuery()
.eq(ProcessCopy::getUserId, SecurityUtils.getUser().getId())
.count();
indexPageStatisticsR.getData().setCopyNum(copyCount);
return indexPageStatisticsR;
}
/**
* 查询任务
*
* @param taskId
* @param view
* @return
*/
@SneakyThrows
@Override
public R queryTask(String taskId, boolean view) {
/**
* 查询任务
* @param taskId
* @param view
* @return
*/
@SneakyThrows
@Override
public R queryTask(String taskId, boolean view) {
long userId = SecurityUtils.getUser().getId();
long userId = SecurityUtils.getUser().getId();
R<TaskResultDto> r = flowEngineService.queryTask(taskId, userId);
R<TaskResultDto> r = flowEngineService.queryTask(taskId, userId);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
if (!r.isOk()) {
return R.failed(r.getMsg());
}
TaskResultDto taskResultDto = r.getData();
TaskResultDto taskResultDto = r.getData();
// 变量
Map<String, Object> paramMap = taskResultDto.getVariableAll();
// 是否是当前活动任务
Boolean currentTask = taskResultDto.getCurrentTask();
if (!currentTask) {
ProcessNodeRecordAssignUser processNodeRecordAssignUser = processNodeRecordAssignUserService.lambdaQuery()
.eq(ProcessNodeRecordAssignUser::getTaskId, taskId)
.eq(ProcessNodeRecordAssignUser::getUserId, userId)
.eq(ProcessNodeRecordAssignUser::getStatus, NodeStatusEnum.YJS.getCode())
.last("limit 1")
.orderByDesc(ProcessNodeRecordAssignUser::getEndTime)
.one();
// 变量
Map<String, Object> paramMap = taskResultDto.getVariableAll();
// 是否是当前活动任务
Boolean currentTask = taskResultDto.getCurrentTask();
if (!currentTask) {
ProcessNodeRecordAssignUser processNodeRecordAssignUser = processNodeRecordAssignUserService.lambdaQuery()
.eq(ProcessNodeRecordAssignUser::getTaskId, taskId)
.eq(ProcessNodeRecordAssignUser::getUserId, userId)
.eq(ProcessNodeRecordAssignUser::getStatus, NodeStatusEnum.YJS.getCode())
.last("limit 1")
.orderByDesc(ProcessNodeRecordAssignUser::getEndTime)
.one();
if (processNodeRecordAssignUser != null) {
String data = processNodeRecordAssignUser.getData();
if (StrUtil.isNotBlank(data)) {
Map<String, Object> collect = objectMapper.readValue(data, new TypeReference<>() {
});
paramMap.putAll(collect);
if (processNodeRecordAssignUser != null) {
String data = processNodeRecordAssignUser.getData();
if (StrUtil.isNotBlank(data)) {
Map<String, Object> collect = objectMapper.readValue(data, new TypeReference<>() {
});
paramMap.putAll(collect);
}
}
}
}
}
// 当前节点数据
Node node = nodeDataService.getNodeData(taskResultDto.getFlowId(), taskResultDto.getNodeId()).getData();
Map<String, String> formPerms = node.getFormPerms();
}
// 当前节点数据
Node node = nodeDataService.getNodeData(taskResultDto.getFlowId(), taskResultDto.getNodeId()).getData();
Map<String, String> formPerms = node.getFormPerms();
Process oaForms = processService.getByFlowId(taskResultDto.getFlowId());
if (oaForms == null) {
return R.failed("流程不存在");
}
Process oaForms = processService.getByFlowId(taskResultDto.getFlowId());
if (oaForms == null) {
return R.failed("流程不存在");
}
List<FormItemVO> formItemVOList = JSONUtil.toList(oaForms.getFormItems(), FormItemVO.class);
for (FormItemVO formItemVO : formItemVOList) {
List<FormItemVO> formItemVOList = JSONUtil.toList(oaForms.getFormItems(), FormItemVO.class);
for (FormItemVO formItemVO : formItemVOList) {
String id = formItemVO.getId();
String perm = formPerms.get(id);
if (StrUtil.isNotBlank(perm)) {
formItemVO.setPerm(view ? (ProcessInstanceConstant.FormPermClass.EDIT.equals(perm)
? ProcessInstanceConstant.FormPermClass.READ : perm) : perm);
}
else {
formItemVO.setPerm(ProcessInstanceConstant.FormPermClass.HIDE);
}
if (formItemVO.getType().equals(FormTypeEnum.LAYOUT.getType())) {
// 明细
List<Map<String, Object>> subParamList = MapUtil.get(paramMap, id,
new cn.hutool.core.lang.TypeReference<>() {
});
Object value = formItemVO.getProps().getValue();
List<List<FormItemVO>> l = new ArrayList<>();
for (Map<String, Object> map : subParamList) {
List<FormItemVO> subItemList = Convert.toList(FormItemVO.class, value);
for (FormItemVO itemVO : subItemList) {
itemVO.getProps().setValue(map.get(itemVO.getId()));
String permSub = formPerms.get(itemVO.getId());
if (StrUtil.isNotBlank(permSub)) {
itemVO.setPerm(view ? (ProcessInstanceConstant.FormPermClass.EDIT.equals(permSub)
? ProcessInstanceConstant.FormPermClass.READ : permSub) : permSub);
}
else {
itemVO.setPerm(ProcessInstanceConstant.FormPermClass.HIDE);
}
}
l.add(subItemList);
}
formItemVO.getProps().setValue(l);
{
List<FormItemVO> subItemList = Convert.toList(FormItemVO.class, value);
for (FormItemVO itemVO : subItemList) {
String permSub = formPerms.get(itemVO.getId());
if (StrUtil.isNotBlank(permSub)) {
itemVO.setPerm(permSub);
}
else {
itemVO.setPerm(ProcessInstanceConstant.FormPermClass.HIDE);
}
}
formItemVO.getProps().setOriForm(subItemList);
}
}
else {
formItemVO.getProps().setValue(paramMap.get(id));
}
}
Dict set = Dict.create()
.set("processInstanceId", taskResultDto.getProcessInstanceId())
.set("node", taskResultDto.getTaskNode())
.set("process", oaForms.getProcess())
.set("delegateAgain", taskResultDto.getDelegate())
.set("delegationTask", StrUtil.equals(taskResultDto.getDelegationState(), "PENDING"))
.set("formItems", formItemVOList);
return R.ok(set);
}
/**
* 完成任务
* @param taskParamDto
* @return
*/
@Override
public R completeTask(TaskParamDto taskParamDto) {
long userId = SecurityUtils.getUser().getId();
taskParamDto.setUserId(String.valueOf(userId));
R r = flowEngineService.completeTask(taskParamDto);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
return R.ok();
}
/**
* 前加签
* @param taskParamDto
* @return
*/
@Transactional
@Override
public R delegateTask(TaskParamDto taskParamDto) {
taskParamDto.setUserId(SecurityUtils.getUser().getId().toString());
R r = flowEngineService.delegateTask(taskParamDto);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
return R.ok();
}
/**
* 加签完成任务
* @param taskParamDto
* @return
*/
@Override
public R resolveTask(TaskParamDto taskParamDto) {
R r = flowEngineService.resolveTask(taskParamDto);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
return R.ok();
}
/**
* 设置执行人
* @param taskParamDto
* @return
*/
@Override
public R setAssignee(TaskParamDto taskParamDto) {
R r = flowEngineService.transferTask(taskParamDto);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
return R.ok();
}
/**
* 结束流程
* @param taskParamDto
* @return
*/
@Override
public R stopProcessInstance(TaskParamDto taskParamDto) {
String processInstanceId = taskParamDto.getProcessInstanceId();
List<String> allStopProcessInstanceIdList = getAllStopProcessInstanceIdList(processInstanceId);
CollUtil.reverse(allStopProcessInstanceIdList);
allStopProcessInstanceIdList.add(processInstanceId);
taskParamDto.setProcessInstanceIdList(allStopProcessInstanceIdList);
taskParamDto.setUserId(SecurityUtils.getUser().getId().toString());
R r = flowEngineService.stopProcessInstance(taskParamDto);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
return R.ok();
}
/**
* 退回
* @param taskParamDto
* @return
*/
@Override
public R back(TaskParamDto taskParamDto) {
taskParamDto.setUserId(SecurityUtils.getUser().getId().toString());
R r = flowEngineService.back(taskParamDto);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
return R.ok();
}
private List<String> getAllStopProcessInstanceIdList(String processInstanceId) {
List<ProcessInstanceRecord> list = processInstanceRecordService.lambdaQuery()
.eq(ProcessInstanceRecord::getParentProcessInstanceId, processInstanceId)
.list();
List<String> collect = list.stream().map(w -> w.getProcessInstanceId()).collect(Collectors.toList());
for (ProcessInstanceRecord processInstanceRecord : list) {
List<String> allStopProcessInstanceIdList = getAllStopProcessInstanceIdList(
processInstanceRecord.getProcessInstanceId());
collect.addAll(allStopProcessInstanceIdList);
}
return collect;
}
String id = formItemVO.getId();
String perm = formPerms.get(id);
if (StrUtil.isNotBlank(perm)) {
formItemVO.setPerm(view ? (ProcessInstanceConstant.FormPermClass.EDIT.equals(perm)
? ProcessInstanceConstant.FormPermClass.READ : perm) : perm);
} else {
formItemVO.setPerm(ProcessInstanceConstant.FormPermClass.HIDE);
}
if (formItemVO.getType().equals(FormTypeEnum.LAYOUT.getType())) {
// 明细
List<Map<String, Object>> subParamList = MapUtil.get(paramMap, id,
new cn.hutool.core.lang.TypeReference<>() {
});
Object value = formItemVO.getProps().getValue();
List<List<FormItemVO>> l = new ArrayList<>();
for (Map<String, Object> map : subParamList) {
List<FormItemVO> subItemList = Convert.toList(FormItemVO.class, value);
for (FormItemVO itemVO : subItemList) {
itemVO.getProps().setValue(map.get(itemVO.getId()));
String permSub = formPerms.get(itemVO.getId());
if (StrUtil.isNotBlank(permSub)) {
itemVO.setPerm(view ? (ProcessInstanceConstant.FormPermClass.EDIT.equals(permSub)
? ProcessInstanceConstant.FormPermClass.READ : permSub) : permSub);
} else {
itemVO.setPerm(ProcessInstanceConstant.FormPermClass.HIDE);
}
}
l.add(subItemList);
}
formItemVO.getProps().setValue(l);
{
List<FormItemVO> subItemList = Convert.toList(FormItemVO.class, value);
for (FormItemVO itemVO : subItemList) {
String permSub = formPerms.get(itemVO.getId());
if (StrUtil.isNotBlank(permSub)) {
itemVO.setPerm(permSub);
} else {
itemVO.setPerm(ProcessInstanceConstant.FormPermClass.HIDE);
}
}
formItemVO.getProps().setOriForm(subItemList);
}
} else {
formItemVO.getProps().setValue(paramMap.get(id));
}
}
Dict set = Dict.create()
.set("processInstanceId", taskResultDto.getProcessInstanceId())
.set("node", taskResultDto.getTaskNode())
.set("process", oaForms.getProcess())
.set("delegateAgain", taskResultDto.getDelegate())
.set("delegationTask", StrUtil.equals(taskResultDto.getDelegationState(), "PENDING"))
.set("formItems", formItemVOList);
return R.ok(set);
}
/**
* 完成任务
*
* @param taskParamDto
* @return
*/
@Override
public R completeTask(TaskParamDto taskParamDto) {
long userId = SecurityUtils.getUser().getId();
taskParamDto.setUserId(String.valueOf(userId));
R r = flowEngineService.completeTask(taskParamDto);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
return R.ok();
}
@Override
public R batchCompleteTask(BatchCompleteTaskDto dto) {
if (ObjectUtil.isEmpty(dto.getProcessInstances())) return R.failed();
PjcloudUser user = SecurityUtils.getUser();
TaskParamDto taskParamDto = new TaskParamDto();
taskParamDto.setUserId(String.valueOf(user.getId()));
for (String v : dto.getProcessInstances()) {
TaskDto taskDto = flowEngineService.queryAssignTaskOne(v).getData();
if (ObjectUtil.isEmpty(taskDto)) continue;
TaskParamDto currentTaskDto = BeanUtils.toBean(taskParamDto, TaskParamDto.class);
currentTaskDto.setTaskId(taskDto.getTaskId());
currentTaskDto.setTaskLocalParamMap(dto.getTaskLocalParamMap());
if (ObjectUtil.equals(dto.getIsSuccess(), YesNoEnum.YES.getCode())) {
Map<String, Object> taskMap = (Map<String, Object>) queryTask(taskDto.getTaskId(), false).getData();
List<FormItemVO> formItems = (List<FormItemVO>) taskMap.get("formItems");
Map<String, Object> paramsMap = new HashMap<>();
for (FormItemVO i : formItems) {
if (ObjectUtil.isNotEmpty(i.getProps()) && ObjectUtil.isNotEmpty(i.getProps().getValue())) {
paramsMap.put(i.getId(), i.getProps().getValue());
}
}
paramsMap.put(taskDto.getNodeId() + "_approve_condition", true);
currentTaskDto.setParamMap(paramsMap);
} else if (ObjectUtil.equals(dto.getIsSuccess(), YesNoEnum.NO.getCode())) {
Map<String, Object> errorParamsMap = new HashMap<>();
errorParamsMap.put(taskDto.getNodeId() + "_approve_condition", false);
currentTaskDto.setParamMap(errorParamsMap);
} else {
continue;
}
try {
String data = flowEngineService.completeTask(currentTaskDto).getData();
log.info("批量审批结果:{}", data);
} catch (Exception e) {
log.error("批量审批错误", e);
}
}
return null;
}
/**
* 前加签
*
* @param taskParamDto
* @return
*/
@Transactional
@Override
public R delegateTask(TaskParamDto taskParamDto) {
taskParamDto.setUserId(SecurityUtils.getUser().getId().toString());
R r = flowEngineService.delegateTask(taskParamDto);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
return R.ok();
}
/**
* 加签完成任务
*
* @param taskParamDto
* @return
*/
@Override
public R resolveTask(TaskParamDto taskParamDto) {
R r = flowEngineService.resolveTask(taskParamDto);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
return R.ok();
}
/**
* 设置执行人
*
* @param taskParamDto
* @return
*/
@Override
public R setAssignee(TaskParamDto taskParamDto) {
R r = flowEngineService.transferTask(taskParamDto);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
return R.ok();
}
/**
* 结束流程
*
* @param taskParamDto
* @return
*/
@Override
public R stopProcessInstance(TaskParamDto taskParamDto) {
String processInstanceId = taskParamDto.getProcessInstanceId();
List<String> allStopProcessInstanceIdList = getAllStopProcessInstanceIdList(processInstanceId);
CollUtil.reverse(allStopProcessInstanceIdList);
allStopProcessInstanceIdList.add(processInstanceId);
taskParamDto.setProcessInstanceIdList(allStopProcessInstanceIdList);
taskParamDto.setUserId(SecurityUtils.getUser().getId().toString());
R r = flowEngineService.stopProcessInstance(taskParamDto);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
return R.ok();
}
/**
* 退回
*
* @param taskParamDto
* @return
*/
@Override
public R back(TaskParamDto taskParamDto) {
taskParamDto.setUserId(SecurityUtils.getUser().getId().toString());
R r = flowEngineService.back(taskParamDto);
if (!r.isOk()) {
return R.failed(r.getMsg());
}
return R.ok();
}
private List<String> getAllStopProcessInstanceIdList(String processInstanceId) {
List<ProcessInstanceRecord> list = processInstanceRecordService.lambdaQuery()
.eq(ProcessInstanceRecord::getParentProcessInstanceId, processInstanceId)
.list();
List<String> collect = list.stream().map(w -> w.getProcessInstanceId()).collect(Collectors.toList());
for (ProcessInstanceRecord processInstanceRecord : list) {
List<String> allStopProcessInstanceIdList = getAllStopProcessInstanceIdList(
processInstanceRecord.getProcessInstanceId());
collect.addAll(allStopProcessInstanceIdList);
}
return collect;
}
}
@@ -0,0 +1,19 @@
package com.bsd.pjcloud.thirdparty.vo.door;
import cn.hutool.core.util.ObjectUtil;
import lombok.Data;
@Data
public class DoorBaseVo {
static private Integer successCode = 20000;
private Integer code;
private String message;
public boolean isSuccess() {
return ObjectUtil.equal(code, DoorBaseVo.successCode);
}
}
@@ -0,0 +1,17 @@
package com.bsd.pjcloud.thirdparty.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "door")
@Data
public class DoorConfig {
private String baseUrl;
private String appId;
private String selfBaseUrl;
}
@@ -0,0 +1,37 @@
package com.bsd.pjcloud.thirdparty.controller.door;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.security.annotation.Inner;
import com.bsd.pjcloud.thirdparty.dto.door.DoorRegisterDto;
import com.bsd.pjcloud.thirdparty.service.ThirdDoorApiService;
import com.bsd.pjcloud.thirdparty.vo.door.DoorRegisterVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequiredArgsConstructor
@RequestMapping("/third-door")
@Tag(description = "third-door", name = "智能柜")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class ThirdDoorApiController {
private final ThirdDoorApiService thirdDoorApiService;
/* ************************************* start 原创调用 start ************************************* */
@Inner
@Operation(summary = "本地一卡通交易数据同步")
@PostMapping("/register")
public R<DoorRegisterVo> register(@RequestBody DoorRegisterDto dto) {
return R.ok(thirdDoorApiService.register(dto));
}
/* ************************************* end 原创调用 end ************************************* */
}
@@ -0,0 +1,15 @@
package com.bsd.pjcloud.thirdparty.service;
import com.bsd.pjcloud.thirdparty.dto.door.DoorRegisterDto;
import com.bsd.pjcloud.thirdparty.vo.door.DoorRegisterVo;
public interface ThirdDoorApiService {
/**
* 设备注册
*/
DoorRegisterVo register(DoorRegisterDto dto);
}
@@ -0,0 +1,36 @@
package com.bsd.pjcloud.thirdparty.service.impl.door;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil;
import com.bsd.pjcloud.thirdparty.dto.door.DoorRegisterDto;
import com.bsd.pjcloud.thirdparty.service.ThirdDoorApiService;
import com.bsd.pjcloud.thirdparty.utils.door.api.DoorApi;
import com.bsd.pjcloud.thirdparty.vo.door.DoorRegisterVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@Service
@Validated
@Slf4j
@RequiredArgsConstructor
public class ThirdDoorApiServiceImpl implements ThirdDoorApiService {
/**
* 设备注册
*/
@Override
public DoorRegisterVo register(DoorRegisterDto dto) {
long startTime = System.currentTimeMillis();
DoorApi.Api registerApi = DoorApi.REGISTER;
try {
String res = registerApi.getHttpRequest().body(JSONUtil.toJsonStr(dto)).execute().body();
} catch (Exception e) {
} finally {
}
return null;
}
}
@@ -1,6 +1,8 @@
package com.bsd.pjcloud.thirdparty.utils.door.api;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpRequest;
import com.bsd.pjcloud.thirdparty.constant.ThordDoorApiTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -55,5 +57,15 @@ public class DoorApi {
private String contentType;
private ThordDoorApiTypeEnum type;
public HttpRequest getHttpRequest() {
if (ObjectUtil.equals(method, "post")) {
return HttpRequest.post(url).contentType(contentType);
} else if (ObjectUtil.equals(method, "get")) {
return HttpRequest.get(url).contentType(contentType);
} else {
return null;
}
}
}
}
@@ -68,4 +68,13 @@ zy:
# token key
# self_token_key: zy_token
# token
# self_token_secret: eV3dT0oD7iX8rK4eC3jS6fU8cU5cS6mJ
# self_token_secret: eV3dT0oD7iX8rK4eC3jS6fU8cU5cS6mJ
# 智能柜
door:
base-url: https://www.365e-life.net:8443/bkopenapi
app-id:
self-base-url:
# 旷世识别