Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
75b3a22d0b
99 files changed
+2624
-532
No files matched your search
@@ -30,6 +30,34 @@ CREATE TABLE `third_zy_log`
|
||||
ROW_FORMAT = DYNAMIC COMMENT ='正元日志表';
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for third_door_log
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `third_door_log`;
|
||||
CREATE TABLE `third_door_log`
|
||||
(
|
||||
`id` bigint NOT NULL COMMENT '主键',
|
||||
`api_type` tinytext NOT NULL COMMENT '请求类型',
|
||||
`biz_type` tinytext NOT NULL COMMENT 'api类型',
|
||||
`biz_id` varchar(2048) DEFAULT NULL COMMENT 'api类型id',
|
||||
`api_url` text DEFAULT NULL COMMENT 'api url',
|
||||
`res` text DEFAULT NULL COMMENT 'res',
|
||||
`req` text DEFAULT NULL COMMENT 'req',
|
||||
`error` text DEFAULT NULL COMMENT '调用错误',
|
||||
`time_consuming` char(64) DEFAULT NULL COMMENT '耗时(毫秒)',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`create_by` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
|
||||
`update_by` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人',
|
||||
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '删除时间',
|
||||
`tenant_id` bigint(20) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_general_ci
|
||||
ROW_FORMAT = DYNAMIC COMMENT ='智能柜日志';
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for third_zy_id_dict
|
||||
-- ----------------------------
|
||||
|
||||
+44
-12
@@ -35,6 +35,37 @@ CREATE TABLE hard_manager
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_general_ci COMMENT ='设备管理';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for hard_door_manager
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `hard_door_manager`;
|
||||
CREATE TABLE hard_door_manager
|
||||
(
|
||||
id bigint NOT NULL COMMENT '编号',
|
||||
hard_id bigint NOT NULL COMMENT '设备编号',
|
||||
imei varchar(32) NOT NULL COMMENT '设备 IMEI 号(15 位)',
|
||||
cabinet_num int DEFAULT NULL COMMENT '货柜数量',
|
||||
cabinet_camera_num int DEFAULT NULL COMMENT '每个货柜中摄像头数量',
|
||||
cabinet_weight_unit_num int DEFAULT NULL COMMENT '每个货柜中称重单元数量',
|
||||
power_status int DEFAULT NULL COMMENT '1:通电;2:断电',
|
||||
net_status int DEFAULT NULL COMMENT '在线状态。1:在线;2:离线',
|
||||
sale_status int DEFAULT NULL COMMENT '售卖状态。1:在售;2:停售',
|
||||
signal_intensity int DEFAULT NULL COMMENT 'sim 信号强度。大于-95 表示信号强度好;-95 到-105 表示信号强度中等;小于-105 表示信号差;',
|
||||
signal_ratio int DEFAULT NULL COMMENT '信噪比,体现信道传输质量的参数。大于 15 表示质量好;15 到 0 表示质量中等;小于等于 0 表示质量差;',
|
||||
signal_time int DEFAULT NULL COMMENT 'sim 信号值更新时间。yyyy-MM-dd HH:mm:ss',
|
||||
cabinet_list text DEFAULT NULL COMMENT '货柜列表JSON',
|
||||
restart_time datetime DEFAULT NULL COMMENT '上次重启时间',
|
||||
create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
|
||||
create_time datetime DEFAULT NULL COMMENT '创建时间',
|
||||
update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人',
|
||||
update_time datetime DEFAULT NULL COMMENT '修改时间',
|
||||
del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记',
|
||||
tenant_id bigint DEFAULT NULL COMMENT '租户ID',
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_general_ci COMMENT ='柜子设备管理';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for hard_group
|
||||
-- ----------------------------
|
||||
@@ -329,17 +360,18 @@ CREATE TABLE hard_spu_category
|
||||
DROP TABLE IF EXISTS hard_spu_repertory;
|
||||
CREATE TABLE hard_spu_repertory
|
||||
(
|
||||
id bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
|
||||
user_id bigint NOT NULL COMMENT '用户id',
|
||||
hard_id bigint NOT NULL COMMENT '设备id',
|
||||
spu_id bigint NOT NULL COMMENT '商品id',
|
||||
count bigint DEFAULT 0 COMMENT '更新库存数量',
|
||||
biz_type tinytext NOT NULL COMMENT '上架类型',
|
||||
create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
|
||||
create_time datetime DEFAULT NULL COMMENT '创建时间',
|
||||
update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人',
|
||||
update_time datetime DEFAULT NULL COMMENT '修改时间',
|
||||
del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记',
|
||||
tenant_id bigint DEFAULT NULL COMMENT '租户ID',
|
||||
id bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
|
||||
user_id bigint NOT NULL COMMENT '用户id',
|
||||
hard_id bigint NOT NULL COMMENT '设备id',
|
||||
spu_id bigint NOT NULL COMMENT '商品id',
|
||||
before_count int NOT NULL COMMENT '更新前的库存数量',
|
||||
count int DEFAULT 0 COMMENT '更新库存数量',
|
||||
biz_type tinytext NOT NULL COMMENT '上架类型',
|
||||
create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
|
||||
create_time datetime DEFAULT NULL COMMENT '创建时间',
|
||||
update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人',
|
||||
update_time datetime DEFAULT NULL COMMENT '修改时间',
|
||||
del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记',
|
||||
tenant_id bigint DEFAULT NULL COMMENT '租户ID',
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE = InnoDB COMMENT ='硬件商品库存更新记录';
|
||||
+28
@@ -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;
|
||||
|
||||
}
|
||||
+99
-79
@@ -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;
|
||||
@@ -15,104 +16,123 @@ import org.springframework.web.bind.annotation.*;
|
||||
@RequestMapping("/task")
|
||||
public class TaskController {
|
||||
|
||||
private final ITaskService taskService;
|
||||
private final ITaskService taskService;
|
||||
|
||||
/**
|
||||
* 查询首页数据看板
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@GetMapping("queryTaskData")
|
||||
public R queryTaskData() {
|
||||
return taskService.queryTaskData();
|
||||
}
|
||||
/**
|
||||
* 查询首页数据看板
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@GetMapping("queryTaskData")
|
||||
public R queryTaskData() {
|
||||
return taskService.queryTaskData();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询任务
|
||||
* @param taskId
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@GetMapping("queryTask")
|
||||
public R queryTask(String taskId, boolean view) {
|
||||
/**
|
||||
* 查询任务
|
||||
*
|
||||
* @param taskId
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@GetMapping("queryTask")
|
||||
public R queryTask(String taskId, boolean view) {
|
||||
|
||||
return taskService.queryTask(taskId, view);
|
||||
return taskService.queryTask(taskId, view);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 完成任务
|
||||
* @param completeParamDto
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@PostMapping("completeTask")
|
||||
public R completeTask(@RequestBody TaskParamDto completeParamDto) {
|
||||
/**
|
||||
* 完成任务
|
||||
*
|
||||
* @param completeParamDto
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@PostMapping("completeTask")
|
||||
public R completeTask(@RequestBody TaskParamDto completeParamDto) {
|
||||
|
||||
return taskService.completeTask(completeParamDto);
|
||||
return taskService.completeTask(completeParamDto);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 前加签
|
||||
* @param completeParamDto
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@PostMapping("delegateTask")
|
||||
public R delegateTask(@RequestBody TaskParamDto completeParamDto) {
|
||||
/**
|
||||
* 批量完成任务
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@PostMapping("batchCompleteTask")
|
||||
public R batchCompleteTask(@RequestBody BatchCompleteTaskDto dto) {
|
||||
return R.ok(taskService.batchCompleteTask(dto));
|
||||
}
|
||||
|
||||
return taskService.delegateTask(completeParamDto);
|
||||
/**
|
||||
* 前加签
|
||||
*
|
||||
* @param completeParamDto
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@PostMapping("delegateTask")
|
||||
public R delegateTask(@RequestBody TaskParamDto completeParamDto) {
|
||||
|
||||
}
|
||||
return taskService.delegateTask(completeParamDto);
|
||||
|
||||
/**
|
||||
* 加签完成任务
|
||||
* @param completeParamDto
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@PostMapping("resolveTask")
|
||||
public R resolveTask(@RequestBody TaskParamDto completeParamDto) {
|
||||
}
|
||||
|
||||
return taskService.resolveTask(completeParamDto);
|
||||
/**
|
||||
* 加签完成任务
|
||||
*
|
||||
* @param completeParamDto
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@PostMapping("resolveTask")
|
||||
public R resolveTask(@RequestBody TaskParamDto completeParamDto) {
|
||||
|
||||
}
|
||||
return taskService.resolveTask(completeParamDto);
|
||||
|
||||
/**
|
||||
* 设置执行人
|
||||
* @param completeParamDto
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@PostMapping("setAssignee")
|
||||
public R setAssignee(@RequestBody TaskParamDto completeParamDto) {
|
||||
}
|
||||
|
||||
return taskService.setAssignee(completeParamDto);
|
||||
/**
|
||||
* 设置执行人
|
||||
*
|
||||
* @param completeParamDto
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@PostMapping("setAssignee")
|
||||
public R setAssignee(@RequestBody TaskParamDto completeParamDto) {
|
||||
|
||||
}
|
||||
return taskService.setAssignee(completeParamDto);
|
||||
|
||||
/**
|
||||
* 结束流程
|
||||
* @param completeParamDto
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@PostMapping("stopProcessInstance")
|
||||
public R stopProcessInstance(@RequestBody TaskParamDto completeParamDto) {
|
||||
}
|
||||
|
||||
return taskService.stopProcessInstance(completeParamDto);
|
||||
/**
|
||||
* 结束流程
|
||||
*
|
||||
* @param completeParamDto
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
@PostMapping("stopProcessInstance")
|
||||
public R stopProcessInstance(@RequestBody TaskParamDto completeParamDto) {
|
||||
|
||||
}
|
||||
return taskService.stopProcessInstance(completeParamDto);
|
||||
|
||||
/**
|
||||
* 退回
|
||||
* @param taskParamDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("back")
|
||||
public R back(@RequestBody TaskParamDto taskParamDto) {
|
||||
return taskService.back(taskParamDto);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 退回
|
||||
*
|
||||
* @param taskParamDto
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("back")
|
||||
public R back(@RequestBody TaskParamDto taskParamDto) {
|
||||
return taskService.back(taskParamDto);
|
||||
}
|
||||
|
||||
}
|
||||
+62
-48
@@ -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();
|
||||
|
||||
}
|
||||
+325
-279
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package com.bsd.pjcloud.hard.api.dto.manager;
|
||||
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class HardDoorManagerDto extends HardDoorManagerEntity {
|
||||
}
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package com.bsd.pjcloud.hard.api.dto;
|
||||
package com.bsd.pjcloud.hard.api.dto.manager;
|
||||
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
+154
@@ -0,0 +1,154 @@
|
||||
package com.bsd.pjcloud.hard.api.entity.manager;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import com.bsd.pjcloud.common.core.util.TenantTable;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 智能柜设置
|
||||
*
|
||||
* @author dzc
|
||||
* @date 2025-04-08 18:50:53
|
||||
*/
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
@TenantTable
|
||||
@TableName("hard_door_manager")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(description = "智能柜设置")
|
||||
public class HardDoorManagerEntity extends Model<HardDoorManagerEntity> {
|
||||
|
||||
|
||||
/**
|
||||
* 编号
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@Schema(description = "编号")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 设备编号
|
||||
*/
|
||||
@Schema(description = "设备编号")
|
||||
private Long hardId;
|
||||
|
||||
/**
|
||||
* 设备 IMEI 号(15 位)
|
||||
*/
|
||||
@Schema(description = "设备 IMEI 号(15 位)")
|
||||
private String imei;
|
||||
|
||||
/**
|
||||
* 货柜数量
|
||||
*/
|
||||
@Schema(description = "货柜数量")
|
||||
private Integer cabinetNum;
|
||||
|
||||
/**
|
||||
* 每个货柜中摄像头数量
|
||||
*/
|
||||
@Schema(description = "每个货柜中摄像头数量")
|
||||
private Integer cabinetCameraNum;
|
||||
|
||||
/**
|
||||
* 每个货柜中称重单元数量
|
||||
*/
|
||||
@Schema(description = "每个货柜中称重单元数量")
|
||||
private Integer cabinetWeightUnitNum;
|
||||
|
||||
/**
|
||||
* 1:通电;2:断电
|
||||
*/
|
||||
@Schema(description = "1:通电;2:断电")
|
||||
private Integer powerStatus;
|
||||
|
||||
/**
|
||||
* 在线状态。1:在线;2:离线
|
||||
*/
|
||||
@Schema(description = "在线状态。1:在线;2:离线")
|
||||
private Integer netStatus;
|
||||
|
||||
/**
|
||||
* 售卖状态。1:在售;2:停售
|
||||
*/
|
||||
@Schema(description = "售卖状态。1:在售;2:停售")
|
||||
private Integer saleStatus;
|
||||
|
||||
/**
|
||||
* sim 信号强度。大于-95 表示信号强度好;-95 到-105 表示信号强度中等;小于-105 表示信号差;
|
||||
*/
|
||||
@Schema(description = "sim 信号强度。大于-95 表示信号强度好;-95 到-105 表示信号强度中等;小于-105 表示信号差;")
|
||||
private Integer signalIntensity;
|
||||
|
||||
/**
|
||||
* 信噪比,体现信道传输质量的参数。大于 15 表示质量好;15 到 0 表示质量中等;小于等于 0 表示质量差;
|
||||
*/
|
||||
@Schema(description = "信噪比,体现信道传输质量的参数。大于 15 表示质量好;15 到 0 表示质量中等;小于等于 0 表示质量差;")
|
||||
private Integer signalRatio;
|
||||
|
||||
/**
|
||||
* sim 信号值更新时间。yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
@Schema(description = "sim 信号值更新时间。yyyy-MM-dd HH:mm:ss")
|
||||
private Integer signalTime;
|
||||
|
||||
/**
|
||||
* 货柜列表JSON
|
||||
*/
|
||||
@Schema(description = "货柜列表JSON")
|
||||
private String cabinetList;
|
||||
|
||||
/**
|
||||
* 上次重启时间
|
||||
*/
|
||||
@Schema(description = "上次重启时间")
|
||||
private LocalDateTime restartTime;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "创建人")
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(description = "修改人")
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(description = "修改时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记
|
||||
*/
|
||||
@TableLogic
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "删除标记")
|
||||
private String delFlag;
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
@Schema(description = "租户ID")
|
||||
private Long tenantId;
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.bsd.pjcloud.hard.api.entity;
|
||||
package com.bsd.pjcloud.hard.api.entity.manager;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
+7
-1
@@ -48,6 +48,12 @@ public class HardSpuRepertoryEntity extends Model<HardSpuRepertoryEntity> {
|
||||
@Schema(description = "商品id")
|
||||
private Long spuId;
|
||||
|
||||
/**
|
||||
* 更新前的库存数量
|
||||
*/
|
||||
@Schema(description = "更新前的库存数量")
|
||||
private Integer beforeCount;
|
||||
|
||||
/**
|
||||
* 更新库存数量
|
||||
*/
|
||||
@@ -55,7 +61,7 @@ public class HardSpuRepertoryEntity extends Model<HardSpuRepertoryEntity> {
|
||||
@Min(value = 1, message = "更新库存数量不能小于1")
|
||||
@Max(value = 100, message = "更新库存数量不能大于100")
|
||||
@Schema(description = "更新库存数量")
|
||||
private Long count;
|
||||
private Integer count;
|
||||
|
||||
/**
|
||||
* 上架类型
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ import cn.hutool.json.JSONUtil;
|
||||
import com.bsd.pjcloud.common.core.util.CollectionUtils;
|
||||
import com.bsd.pjcloud.hard.api.dto.code.QRCodeDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardGroupEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.base.BaseHardGroupInterface;
|
||||
import com.bsd.pjcloud.hard.api.vo.base.BaseHardInterface;
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package com.bsd.pjcloud.hard.api.vo.manager;
|
||||
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class HardDoorManagerVo extends HardDoorManagerEntity {
|
||||
/**
|
||||
* 硬件设备相关
|
||||
*/
|
||||
private String hardName;
|
||||
|
||||
private String hardType;
|
||||
|
||||
}
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
package com.bsd.pjcloud.hard.api.vo;
|
||||
package com.bsd.pjcloud.hard.api.vo.manager;
|
||||
|
||||
import com.bsd.pjcloud.admin.api.vo.base.BaseDeptInterface;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.base.BaseHardGroupInterface;
|
||||
import com.bsd.pjcloud.wallet.api.vo.base.BaseMchInterface;
|
||||
import lombok.Data;
|
||||
+3
-3
@@ -31,13 +31,13 @@ public class HardOrderExcelVo {
|
||||
private String hourType;
|
||||
|
||||
@ExcelProperty("商品总价")
|
||||
private Integer totalPrice;
|
||||
private Double totalPrice;
|
||||
|
||||
@ExcelProperty("额外支付")
|
||||
private Integer extraPrice;
|
||||
private Double extraPrice;
|
||||
|
||||
@ExcelProperty("实际支付")
|
||||
private Integer payPrice;
|
||||
private Double payPrice;
|
||||
|
||||
@ExcelProperty("订单支付时间")
|
||||
private LocalDateTime payTime;
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ import com.bsd.pjcloud.hard.api.dto.hard.HandCancelCodeDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.hard.HardBindDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.hard.HardCreateOrderDto;
|
||||
import com.bsd.pjcloud.hard.api.vo.HardInvoiceVo;
|
||||
import com.bsd.pjcloud.hard.api.vo.HardManagerVo;
|
||||
import com.bsd.pjcloud.hard.api.vo.manager.HardManagerVo;
|
||||
import com.bsd.pjcloud.hard.api.vo.android.HardAdUserVo;
|
||||
import com.bsd.pjcloud.hard.api.vo.order.HardCarVo;
|
||||
import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo;
|
||||
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
package com.bsd.pjcloud.hard.controller.manager;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.common.log.annotation.SysLog;
|
||||
import com.bsd.pjcloud.hard.api.dto.manager.HardDoorManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo;
|
||||
import com.bsd.pjcloud.hard.service.HardDoorManagerService;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
|
||||
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
|
||||
import org.springdoc.core.annotations.ParameterObject;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 智能柜设置
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/hard-door-manager")
|
||||
@Tag(description = "hard-door-manager", name = "智能柜设置管理")
|
||||
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
|
||||
public class HardDoorManagerController {
|
||||
|
||||
private final HardDoorManagerService hardDoorManagerService;
|
||||
|
||||
@Operation(summary = "绑定设备", description = "绑定设备")
|
||||
@PostMapping("/bind")
|
||||
@PreAuthorize("@pms.hasPermission('hard_hardDoorManager_add')")
|
||||
public R bind(@RequestBody HardDoorManagerEntity dto) {
|
||||
if (ObjectUtil.isEmpty(dto.getImei())) throw new RuntimeException("设备IMEI卡号不能为空");
|
||||
hardDoorManagerService.bind(dto);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@Operation(summary = "分页查询", description = "分页查询")
|
||||
@GetMapping("/page")
|
||||
@PreAuthorize("@pms.hasPermission('hard_hardDoorManager_view')")
|
||||
public R getHardDoorManagerPage(@ParameterObject Page page, @ParameterObject HardDoorManagerEntity hardDoorManager) {
|
||||
LambdaQueryWrapper<HardDoorManagerEntity> wrapper = Wrappers.lambdaQuery();
|
||||
return R.ok(hardDoorManagerService.page(page, wrapper));
|
||||
}
|
||||
|
||||
@Operation(summary = "分页查询", description = "分页查询")
|
||||
@GetMapping("/page-join")
|
||||
@PreAuthorize("@pms.hasPermission('hard_hardDoorManager_view')")
|
||||
public R pageJoin(@ParameterObject Page page, @ParameterObject HardDoorManagerDto dto) {
|
||||
DataScope dataScope = new DataScope();
|
||||
return R.ok(hardDoorManagerService.scopePageJoin(page, dto, dataScope));
|
||||
}
|
||||
|
||||
@Operation(summary = "通过id查询", description = "通过id查询")
|
||||
@GetMapping("/{id}")
|
||||
@PreAuthorize("@pms.hasPermission('hard_hardDoorManager_view')")
|
||||
public R getById(@PathVariable("id") Long id) {
|
||||
return R.ok(hardDoorManagerService.getById(id));
|
||||
}
|
||||
|
||||
@Operation(summary = "根据硬件id查询详情", description = "根据硬件id查询详情")
|
||||
@GetMapping("/get-by-hard-id")
|
||||
@PreAuthorize("@pms.hasPermission('hard_hardDoorManager_view')")
|
||||
public R<HardDoorManagerVo> getByHardId(@RequestParam Long hardId) {
|
||||
return R.ok(hardDoorManagerService.getByHardId(hardId));
|
||||
}
|
||||
|
||||
@Operation(summary = "通过id删除智能柜设置", description = "通过id删除智能柜设置")
|
||||
@SysLog("通过id删除智能柜设置")
|
||||
@DeleteMapping
|
||||
@PreAuthorize("@pms.hasPermission('hard_hardDoorManager_del')")
|
||||
public R removeById(@RequestBody Long[] ids) {
|
||||
return R.ok(hardDoorManagerService.removeBatchByIds(CollUtil.toList(ids)));
|
||||
}
|
||||
|
||||
@ResponseExcel
|
||||
@GetMapping("/export")
|
||||
@PreAuthorize("@pms.hasPermission('hard_hardDoorManager_export')")
|
||||
public List<HardDoorManagerEntity> export(HardDoorManagerEntity hardDoorManager, Long[] ids) {
|
||||
return hardDoorManagerService.list(Wrappers.lambdaQuery(hardDoorManager).in(ArrayUtil.isNotEmpty(ids), HardDoorManagerEntity::getId, ids));
|
||||
}
|
||||
}
|
||||
+3
-4
@@ -1,4 +1,4 @@
|
||||
package com.bsd.pjcloud.hard.controller;
|
||||
package com.bsd.pjcloud.hard.controller.manager;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
@@ -9,9 +9,8 @@ import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.log.annotation.SysLog;
|
||||
import com.bsd.pjcloud.common.security.service.PjcloudUser;
|
||||
import com.bsd.pjcloud.common.security.util.SecurityUtils;
|
||||
import com.bsd.pjcloud.hard.api.dto.HardInvoiceDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.service.HardManagerService;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
|
||||
+3
-3
@@ -277,15 +277,15 @@ public class HardOrderController {
|
||||
lineNumber++;
|
||||
if (ObjectUtil.isNotEmpty(v.getTotalPrice())) {
|
||||
totalPriceSum = totalPriceSum.add(BigDecimal.valueOf(v.getTotalPrice()));
|
||||
v.setTotalPrice(BigDecimal.valueOf(v.getTotalPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).intValue());
|
||||
v.setTotalPrice(BigDecimal.valueOf(v.getTotalPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).doubleValue());
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(v.getExtraPrice())) {
|
||||
extraPriceSum = extraPriceSum.add(BigDecimal.valueOf(v.getExtraPrice()));
|
||||
v.setExtraPrice(BigDecimal.valueOf(v.getExtraPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).intValue());
|
||||
v.setExtraPrice(BigDecimal.valueOf(v.getExtraPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).doubleValue());
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(v.getPayPrice())) {
|
||||
payPriceSum = payPriceSum.add(BigDecimal.valueOf(v.getPayPrice()));
|
||||
v.setPayPrice(BigDecimal.valueOf(v.getPayPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).intValue());
|
||||
v.setPayPrice(BigDecimal.valueOf(v.getPayPrice()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).doubleValue());
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(v.getHourType())) {
|
||||
HardHourTypeEnum hardHourTypeEnum = HardHourTypeEnum.valueOfByType(v.getHourType());
|
||||
|
||||
+6
-3
@@ -80,8 +80,10 @@ public class HardSpuRepertoryController {
|
||||
@SysLog("修改硬件商品库存更新记录")
|
||||
@PutMapping
|
||||
@PreAuthorize("@pms.hasPermission('hard_hardSpuRepertory_edit')")
|
||||
public R updateById(@RequestBody HardSpuRepertoryEntity hardSpuRepertory) {
|
||||
return R.ok(hardSpuRepertoryService.updateById(hardSpuRepertory));
|
||||
public R updateById(@Validated @RequestBody HardSpuRepertoryEntity hardSpuRepertory) {
|
||||
PjcloudUser user = SecurityUtils.getUser();
|
||||
hardSpuRepertoryService.edit(hardSpuRepertory, user);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@Operation(summary = "通过id删除硬件商品库存更新记录", description = "通过id删除硬件商品库存更新记录")
|
||||
@@ -89,7 +91,8 @@ public class HardSpuRepertoryController {
|
||||
@DeleteMapping
|
||||
@PreAuthorize("@pms.hasPermission('hard_hardSpuRepertory_del')")
|
||||
public R removeById(@RequestBody Long[] ids) {
|
||||
return R.ok(hardSpuRepertoryService.removeBatchByIds(CollUtil.toList(ids)));
|
||||
hardSpuRepertoryService.delByIds(CollUtil.toList(ids));
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@ResponseExcel
|
||||
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package com.bsd.pjcloud.hard.mapper.manager;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
|
||||
import com.bsd.pjcloud.hard.api.dto.manager.HardDoorManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@Mapper
|
||||
public interface HardDoorManagerMapper extends PjcloudBaseMapper<HardDoorManagerEntity> {
|
||||
|
||||
Page<HardDoorManagerVo> scopePageJoin(Page page, @Param("dto") HardDoorManagerDto dto, DataScope dataScope);
|
||||
|
||||
HardDoorManagerVo pageJoin(@Param("hardId") Long hardId);
|
||||
}
|
||||
+4
-4
@@ -1,4 +1,4 @@
|
||||
package com.bsd.pjcloud.hard.mapper;
|
||||
package com.bsd.pjcloud.hard.mapper.manager;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
|
||||
@@ -7,9 +7,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.bsd.pjcloud.common.core.util.BeanUtils;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
|
||||
import com.bsd.pjcloud.hard.api.dto.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.HardManagerVo;
|
||||
import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.manager.HardManagerVo;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
+1
-2
@@ -4,12 +4,11 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.bsd.pjcloud.common.core.util.BeanUtils;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
|
||||
import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.order.HardOrderSumAndCountDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.order.*;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.bsd.pjcloud.hard.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.hard.api.dto.manager.HardDoorManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo;
|
||||
|
||||
public interface HardDoorManagerService extends IService<HardDoorManagerEntity> {
|
||||
|
||||
Page<HardDoorManagerVo> scopePageJoin(Page page, HardDoorManagerDto dto, DataScope dataScope);
|
||||
|
||||
/**
|
||||
* 根据硬件id查询详情
|
||||
*/
|
||||
HardDoorManagerVo getByHardId(Long hardId);
|
||||
|
||||
/**
|
||||
* 绑定设备
|
||||
*/
|
||||
void bind(HardDoorManagerEntity dto);
|
||||
}
|
||||
+3
-3
@@ -3,11 +3,11 @@ package com.bsd.pjcloud.hard.service;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.bsd.pjcloud.common.security.service.PjcloudUser;
|
||||
import com.bsd.pjcloud.hard.api.dto.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.hard.CurrentUserHardTypeInfoDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.hard.HardBindDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.HardManagerVo;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.manager.HardManagerVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
+12
@@ -8,6 +8,8 @@ import com.bsd.pjcloud.hard.api.dto.spu.HardSpuRepertoryDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuRepertoryEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuRepertoryVo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public interface HardSpuRepertoryService extends IService<HardSpuRepertoryEntity> {
|
||||
|
||||
Page<HardSpuRepertoryVo> scopePageJoin(Page page, HardSpuRepertoryDto dto, DataScope dataScope);
|
||||
@@ -16,4 +18,14 @@ public interface HardSpuRepertoryService extends IService<HardSpuRepertoryEntity
|
||||
* 新增
|
||||
*/
|
||||
Long create(HardSpuRepertoryEntity entity, PjcloudUser user);
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
void edit(HardSpuRepertoryEntity entity, PjcloudUser user);
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
void delByIds(ArrayList<Long> list);
|
||||
}
|
||||
+3
-3
@@ -24,14 +24,14 @@ import com.bsd.pjcloud.hard.api.constant.HardTypeEnum;
|
||||
import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum;
|
||||
import com.bsd.pjcloud.hard.api.dto.HardInvoiceDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardInvoiceEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.order.HardCarEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity;
|
||||
import com.bsd.pjcloud.hard.api.utils.Drawing2D;
|
||||
import com.bsd.pjcloud.hard.api.vo.HardInvoiceVo;
|
||||
import com.bsd.pjcloud.hard.api.vo.HardManagerVo;
|
||||
import com.bsd.pjcloud.hard.api.vo.manager.HardManagerVo;
|
||||
import com.bsd.pjcloud.hard.mapper.HardInvoiceMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.HardManagerMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper;
|
||||
import com.bsd.pjcloud.hard.service.HardCarService;
|
||||
import com.bsd.pjcloud.hard.service.HardInvoiceService;
|
||||
|
||||
+3
-1
@@ -188,7 +188,9 @@ public class HardThirdSelfZyServiceImpl implements HardThirdSelfZyService {
|
||||
* 查询正元默认商户信息
|
||||
*/
|
||||
private MchManageVo getZyDefaultMch() {
|
||||
return remoteMchService.getById(zyCallbackConfig.getMchId()).getData();
|
||||
MchManageVo defaultMch = remoteMchService.getById(zyCallbackConfig.getMchId()).getData();
|
||||
log.info("查询正元默认商户信息mchId|{}|defaultMch{}", zyCallbackConfig.getMchId(), JSONUtil.toJsonStr(defaultMch));
|
||||
return defaultMch;
|
||||
}
|
||||
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package com.bsd.pjcloud.hard.service.impl.manager;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.hard.api.dto.manager.HardDoorManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo;
|
||||
import com.bsd.pjcloud.hard.mapper.manager.HardDoorManagerMapper;
|
||||
import com.bsd.pjcloud.hard.service.HardDoorManagerService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 智能柜设置
|
||||
*/
|
||||
@Service
|
||||
public class HardDoorManagerServiceImpl extends ServiceImpl<HardDoorManagerMapper, HardDoorManagerEntity> implements HardDoorManagerService {
|
||||
|
||||
@Override
|
||||
public Page<HardDoorManagerVo> scopePageJoin(Page page, HardDoorManagerDto dto, DataScope dataScope) {
|
||||
return baseMapper.scopePageJoin(page, dto, dataScope);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据硬件id查询详情
|
||||
*/
|
||||
@Override
|
||||
public HardDoorManagerVo getByHardId(Long hardId) {
|
||||
return baseMapper.pageJoin(hardId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 绑定设备
|
||||
*/
|
||||
@Override
|
||||
public void bind(HardDoorManagerEntity dto) {
|
||||
HardDoorManagerEntity saveOrUpdate = new HardDoorManagerEntity();
|
||||
saveOrUpdate.setId(dto.getId());
|
||||
saveOrUpdate.setHardId(dto.getHardId());
|
||||
saveOrUpdate.setImei(dto.getImei());
|
||||
baseMapper.insertOrUpdate(saveOrUpdate);
|
||||
}
|
||||
}
|
||||
+10
-6
@@ -1,4 +1,4 @@
|
||||
package com.bsd.pjcloud.hard.service.impl;
|
||||
package com.bsd.pjcloud.hard.service.impl.manager;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
@@ -16,16 +16,19 @@ import com.bsd.pjcloud.common.core.util.BeanUtils;
|
||||
import com.bsd.pjcloud.common.core.util.CollectionUtils;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.security.service.PjcloudUser;
|
||||
import com.bsd.pjcloud.hard.api.constant.HardTypeEnum;
|
||||
import com.bsd.pjcloud.hard.api.dto.HardGroupDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.hard.CurrentUserHardTypeInfoDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.hard.HardBindDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardGroupEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.utils.HardUtil;
|
||||
import com.bsd.pjcloud.hard.api.vo.HardManagerVo;
|
||||
import com.bsd.pjcloud.hard.api.vo.manager.HardManagerVo;
|
||||
import com.bsd.pjcloud.hard.mapper.HardGroupMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.HardManagerMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper;
|
||||
import com.bsd.pjcloud.hard.service.HardDoorManagerService;
|
||||
import com.bsd.pjcloud.hard.service.HardManagerService;
|
||||
import com.bsd.pjcloud.hard.mqtt.config.MqttConfig;
|
||||
import com.bsd.pjcloud.hard.utils.MqTopicUtil;
|
||||
@@ -54,6 +57,8 @@ public class HardManagerServiceImpl extends ServiceImpl<HardManagerMapper, HardM
|
||||
|
||||
private final MqttConfig mqttConfig;
|
||||
|
||||
private final HardDoorManagerService hardDoorManagerService;
|
||||
|
||||
private final HardGroupMapper hardGroupMapper;
|
||||
|
||||
private final RemoteUserService userService;
|
||||
@@ -264,7 +269,6 @@ public class HardManagerServiceImpl extends ServiceImpl<HardManagerMapper, HardM
|
||||
return count > 0;
|
||||
}
|
||||
|
||||
|
||||
private String createMqConfigByAction(Long groupId, Long deptId, Long hardId, Integer action) {
|
||||
MqTopicUtil eventDto = MqTopicUtil.builder().groupId(groupId).deptId(deptId).hardId(hardId).build();
|
||||
if (ObjectUtil.equals(action, 1)) {
|
||||
+3
-3
@@ -23,20 +23,20 @@ import com.bsd.pjcloud.hard.api.constant.HardTypeEnum;
|
||||
import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum;
|
||||
import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum;
|
||||
import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum;
|
||||
import com.bsd.pjcloud.hard.api.dto.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.hard.HandCancelCodeDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.hard.HardCreateOrderDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.order.HardCreateCarDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.order.app.HardAppCreateOrderDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.order.HardCarEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.order.HardParentCarEntity;
|
||||
import com.bsd.pjcloud.hard.api.utils.HardUtil;
|
||||
import com.bsd.pjcloud.hard.api.vo.order.HardCarVo;
|
||||
import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo;
|
||||
import com.bsd.pjcloud.hard.mapper.HardManagerMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper;
|
||||
import com.bsd.pjcloud.hard.service.HardCarService;
|
||||
import com.bsd.pjcloud.hard.service.HardInvoiceService;
|
||||
|
||||
+3
-6
@@ -14,15 +14,15 @@ import com.bsd.pjcloud.common.security.service.PjcloudUser;
|
||||
import com.bsd.pjcloud.common.security.util.SecurityUtils;
|
||||
import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum;
|
||||
import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum;
|
||||
import com.bsd.pjcloud.hard.api.dto.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.hard.CurrentUserHardTypeInfoDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.order.HardDeptTotalDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.order.HardOrderSumAndCountDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.utils.HardUtil;
|
||||
import com.bsd.pjcloud.hard.api.vo.order.*;
|
||||
import com.bsd.pjcloud.hard.mapper.HardManagerMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper;
|
||||
import com.bsd.pjcloud.hard.service.HardManagerService;
|
||||
import com.bsd.pjcloud.hard.service.HardOrderTotalService;
|
||||
@@ -35,11 +35,8 @@ import com.bsd.pjcloud.wallet.api.vo.MchManageVo;
|
||||
import com.bsd.pjcloud.wallet.api.vo.WalletTransactionSumAndCountVo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.bouncycastle.jcajce.provider.util.SecretKeyUtil;
|
||||
import org.springframework.security.concurrent.DelegatingSecurityContextExecutor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.common.core.util.CollectionUtils;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.hard.api.dto.spu.HardSpuCategoryDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuCategoryEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuCategoryVo;
|
||||
import com.bsd.pjcloud.hard.mapper.spu.HardSpuCategoryMapper;
|
||||
|
||||
+74
-3
@@ -1,6 +1,7 @@
|
||||
package com.bsd.pjcloud.hard.service.impl.spu;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.admin.api.entity.SysUser;
|
||||
@@ -11,14 +12,14 @@ import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.common.security.service.PjcloudUser;
|
||||
import com.bsd.pjcloud.hard.api.constant.spu.SpuRepertoryTypeEnum;
|
||||
import com.bsd.pjcloud.hard.api.dto.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.spu.HardSpuRepertoryDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuRepertoryEntity;
|
||||
import com.bsd.pjcloud.hard.api.utils.HardUtil;
|
||||
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuRepertoryVo;
|
||||
import com.bsd.pjcloud.hard.mapper.HardManagerMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.spu.HardSpuRepertoryMapper;
|
||||
import com.bsd.pjcloud.hard.service.HardSpuRepertoryService;
|
||||
import com.bsd.pjcloud.hard.service.HardSpuService;
|
||||
@@ -28,6 +29,7 @@ import com.bsd.pjcloud.wallet.api.vo.MchManageVo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -60,23 +62,92 @@ public class HardSpuRepertoryServiceImpl extends ServiceImpl<HardSpuRepertoryMap
|
||||
* 新增
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long create(HardSpuRepertoryEntity entity, PjcloudUser user) {
|
||||
// 查询商品
|
||||
HardSpuEntity spuDetail = hardSpuService.getById(entity.getSpuId());
|
||||
if (ObjectUtil.isEmpty(spuDetail)) {
|
||||
throw new RuntimeException("商品不存在");
|
||||
}
|
||||
Integer beforeCount = 0;
|
||||
if (ObjectUtil.isNotEmpty(spuDetail.getRepertoryCount())) {
|
||||
beforeCount = spuDetail.getRepertoryCount();
|
||||
}
|
||||
entity.setBeforeCount(beforeCount);
|
||||
entity.setUserId(user.getId());
|
||||
entity.setHardId(spuDetail.getHardId());
|
||||
entity.setBizType(SpuRepertoryTypeEnum.HANDLER.getType());
|
||||
baseMapper.insert(entity);
|
||||
// 更新商品库存
|
||||
HardSpuEntity spu = new HardSpuEntity();
|
||||
spu.setId(spuDetail.getId());
|
||||
spu.setRepertoryCount(entity.getCount() + beforeCount);
|
||||
hardSpuService.updateById(spu);
|
||||
return entity.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void edit(HardSpuRepertoryEntity entity, PjcloudUser user) {
|
||||
// 查询商品
|
||||
HardSpuEntity spuDetail = hardSpuService.getById(entity.getSpuId());
|
||||
if (ObjectUtil.isEmpty(spuDetail)) {
|
||||
throw new RuntimeException("商品不存在");
|
||||
}
|
||||
// 查询上架记录
|
||||
HardSpuRepertoryEntity repertoryDetail = baseMapper.selectById(entity.getId());
|
||||
if (ObjectUtil.isEmpty(repertoryDetail)) {
|
||||
throw new RuntimeException("上架记录不存在");
|
||||
}
|
||||
Integer beforeCount = 0;
|
||||
if (ObjectUtil.isNotEmpty(spuDetail.getRepertoryCount())) {
|
||||
beforeCount = spuDetail.getRepertoryCount();
|
||||
}
|
||||
entity.setUserId(user.getId());
|
||||
baseMapper.updateById(entity);
|
||||
// 更新商品库存
|
||||
HardSpuEntity spu = new HardSpuEntity();
|
||||
spu.setId(spuDetail.getId());
|
||||
spu.setRepertoryCount(entity.getCount() + beforeCount - repertoryDetail.getCount());
|
||||
hardSpuService.updateById(spu);
|
||||
entity.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void delByIds(ArrayList<Long> list) {
|
||||
if (ObjectUtil.isEmpty(list)) return;
|
||||
List<HardSpuRepertoryEntity> spuRepertoryList = baseMapper.selectList(new LambdaQueryWrapper<HardSpuRepertoryEntity>()
|
||||
.in(HardSpuRepertoryEntity::getId, list)
|
||||
);
|
||||
for (HardSpuRepertoryEntity v : spuRepertoryList) {
|
||||
// 删除
|
||||
baseMapper.deleteById(v.getId());
|
||||
// 更新商品库存
|
||||
// 查询商品
|
||||
HardSpuEntity spuDetail = hardSpuService.getById(v.getSpuId());
|
||||
if (ObjectUtil.isEmpty(spuDetail)) {
|
||||
throw new RuntimeException("商品<" + spuDetail.getName() + ">不存在");
|
||||
}
|
||||
HardSpuEntity spu = new HardSpuEntity();
|
||||
spu.setId(v.getSpuId());
|
||||
spu.setRepertoryCount(spuDetail.getRepertoryCount() - v.getCount());
|
||||
hardSpuService.updateById(spu);
|
||||
baseMapper.deleteById(v.getId());
|
||||
}
|
||||
}
|
||||
|
||||
private void disposeList(List<HardSpuRepertoryVo> list, HardSpuRepertoryDto dto) {
|
||||
if (ObjectUtil.isEmpty(list)) return;
|
||||
// 商户
|
||||
List<Long> mchIds = list.stream().map(HardSpuRepertoryVo::getSpuMchId).filter(ObjectUtil::isNotEmpty).distinct().toList();
|
||||
list.forEach(v -> v.setMerchantId(v.getSpuMchId()));
|
||||
if (ObjectUtil.isNotEmpty(mchIds)) {
|
||||
List<MchManageVo> mchList = remoteMchService.getByIds(mchIds).getData();
|
||||
if (ObjectUtil.isNotEmpty(mchList)) {
|
||||
|
||||
+4
-4
@@ -6,14 +6,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.common.core.util.CollectionUtils;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.hard.api.dto.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.spu.HardSpuDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity;
|
||||
import com.bsd.pjcloud.hard.api.utils.HardUtil;
|
||||
import com.bsd.pjcloud.hard.api.vo.HardManagerVo;
|
||||
import com.bsd.pjcloud.hard.api.vo.manager.HardManagerVo;
|
||||
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuVo;
|
||||
import com.bsd.pjcloud.hard.mapper.HardManagerMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.spu.HardSpuMapper;
|
||||
import com.bsd.pjcloud.hard.service.HardManagerService;
|
||||
import com.bsd.pjcloud.hard.service.HardSpuService;
|
||||
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.bsd.pjcloud.hard.mapper.manager.HardDoorManagerMapper">
|
||||
<resultMap id="hardDoorManagerMap" type="com.bsd.pjcloud.hard.api.dto.manager.HardDoorManagerDto">
|
||||
<id property="id" column="id"/>
|
||||
<result property="hardId" column="hard_id"/>
|
||||
<result property="imei" column="imei"/>
|
||||
<result property="cabinetNum" column="cabinet_num"/>
|
||||
<result property="cabinetCameraNum" column="cabinet_camera_num"/>
|
||||
<result property="cabinetWeightUnitNum" column="cabinet_weight_unit_num"/>
|
||||
<result property="powerStatus" column="power_status"/>
|
||||
<result property="netStatus" column="net_status"/>
|
||||
<result property="saleStatus" column="sale_status"/>
|
||||
<result property="signalIntensity" column="signal_intensity"/>
|
||||
<result property="signalRatio" column="signal_ratio"/>
|
||||
<result property="signalTime" column="signal_time"/>
|
||||
<result property="cabinetList" column="cabinet_list"/>
|
||||
<result property="restartTime" column="restart_time"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectA">
|
||||
select a.id,
|
||||
a.hard_id,
|
||||
a.imei,
|
||||
a.cabinet_num,
|
||||
a.cabinet_camera_num,
|
||||
a.cabinet_weight_unit_num,
|
||||
a.power_status,
|
||||
a.net_status,
|
||||
a.sale_status,
|
||||
a.signal_intensity,
|
||||
a.signal_ratio,
|
||||
a.signal_time,
|
||||
a.cabinet_list,
|
||||
a.restart_time,
|
||||
a.create_by,
|
||||
a.create_time,
|
||||
a.update_by,
|
||||
a.update_time,
|
||||
a.del_flag,
|
||||
a.tenant_id,
|
||||
</sql>
|
||||
|
||||
<sql id="whereA">
|
||||
a.del_flag = '0'
|
||||
<if test="dto.hardId != null">
|
||||
and a.hard_id = #{dto.hardId}
|
||||
</if>
|
||||
<if test="dto.imei != null and dto.imei != '' ">
|
||||
and a.imei like concat('%', #{dto.imei}, '%')
|
||||
</if>
|
||||
<if test="dto.powerStatus != null">
|
||||
and a.power_status = #{dto.powerStatus}
|
||||
</if>
|
||||
<if test="dto.netStatus != null">
|
||||
and a.net_status = #{dto.netStatus}
|
||||
</if>
|
||||
<if test="dto.saleStatus != null">
|
||||
and a.sale_status = #{dto.saleStatus}
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<sql id="selectPage">
|
||||
<include refid="selectA"/>
|
||||
m.name as hardName,
|
||||
m.type as hardType
|
||||
from hard_door_manager a
|
||||
left join hard_manager m on m.id = a.hard_id
|
||||
</sql>
|
||||
|
||||
<select id="scopePageJoin" resultType="com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo">
|
||||
<include refid="selectPage"/>
|
||||
<where>
|
||||
<include refid="whereA"/>
|
||||
</where>
|
||||
order by a.create_time desc , a.id desc
|
||||
</select>
|
||||
|
||||
<select id="pageJoin" resultType="com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo">
|
||||
<include refid="selectPage"/>
|
||||
<where>
|
||||
a.hard_id = #{hardId}
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.bsd.pjcloud.hard.mapper.HardManagerMapper">
|
||||
<resultMap id="hardManagerMap" type="com.bsd.pjcloud.hard.api.entity.HardManagerEntity">
|
||||
<mapper namespace="com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper">
|
||||
<resultMap id="hardManagerMap" type="com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity">
|
||||
<id property="id" column="id"/>
|
||||
<result property="merchantId" column="merchant_id"/>
|
||||
<result property="deptId" column="dept_id"/>
|
||||
+6
-3
@@ -82,6 +82,9 @@
|
||||
|
||||
<sql id="whereA">
|
||||
a.del_flag = '0'
|
||||
<if test="dto.orderStatus != null and dto.orderStatus != '' ">
|
||||
and a.order_status = #{dto.orderStatus}
|
||||
</if>
|
||||
<if test="dto.merchantType != null and dto.merchantType != '' ">
|
||||
and a.merchant_type = #{dto.merchantType}
|
||||
</if>
|
||||
@@ -266,12 +269,12 @@
|
||||
|
||||
<select id="sumAndCount" resultType="com.bsd.pjcloud.hard.api.vo.order.HardOrderSumAndCountVo">
|
||||
select
|
||||
a.dept_id,
|
||||
a.user_dept_id as deptId,
|
||||
sum(a.pay_price) as sum,
|
||||
count(0) as count
|
||||
from hard_order a
|
||||
<where>
|
||||
a.del_flag = 0 and a.dept_id is not null
|
||||
a.del_flag = 0
|
||||
<if test="dto.walletTypeId != null">
|
||||
</if>
|
||||
<if test="dto.orderStatusCodes != null and dto.orderStatusCodes.size() != 0">
|
||||
@@ -290,7 +293,7 @@
|
||||
and a.create_time between #{dto.createTimeList[0]} and #{dto.createTimeList[1]}
|
||||
</if>
|
||||
</where>
|
||||
group by a.dept_id
|
||||
group by a.user_dept_id
|
||||
</select>
|
||||
|
||||
<select id="totalYearMonthDay" resultType="com.bsd.pjcloud.hard.api.vo.order.HardZyCardSyncVo">
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
<result property="ksStatus" column="ks_status"/>
|
||||
<result property="ksStatusTitle" column="ks_status_title"/>
|
||||
<result property="ksComments" column="ks_comments"/>
|
||||
<result property="hardDoorNumber" column="hard_door_number"/>
|
||||
<result property="mchId" column="mch_id"/>
|
||||
<result property="mchDeptId" column="mch_dept_id"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
@@ -41,6 +42,7 @@
|
||||
a.ks_status_title,
|
||||
a.ks_comments,
|
||||
a.hard_id,
|
||||
a.hard_door_number,
|
||||
a.mch_id,
|
||||
a.mch_dept_id,
|
||||
a.create_by,
|
||||
|
||||
+4
-1
@@ -7,6 +7,7 @@
|
||||
<result property="userId" column="user_id"/>
|
||||
<result property="hardId" column="hard_id"/>
|
||||
<result property="spuId" column="spu_id"/>
|
||||
<result property="beforeCount" column="before_count"/>
|
||||
<result property="count" column="count"/>
|
||||
<result property="bizType" column="biz_type"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
@@ -22,6 +23,7 @@
|
||||
a.user_id,
|
||||
a.hard_id,
|
||||
a.spu_id,
|
||||
a.before_count,
|
||||
a.count,
|
||||
a.biz_type,
|
||||
a.create_by,
|
||||
@@ -33,6 +35,7 @@
|
||||
</sql>
|
||||
|
||||
<sql id="whereA">
|
||||
a.del_flag = '0'
|
||||
<if test="dto.hardId != null and dto.hardId != '' ">
|
||||
and a.hard_id = #{dto.hardId}
|
||||
</if>
|
||||
@@ -55,7 +58,7 @@
|
||||
|
||||
<select id="scopePageJoin" resultType="com.bsd.pjcloud.hard.api.vo.spu.HardSpuRepertoryVo">
|
||||
<include refid="selectA"/>
|
||||
s.name,
|
||||
s.name as spuName,
|
||||
s.spu_category_id,
|
||||
s.hard_door_number,
|
||||
s.mch_id as spuMchId,
|
||||
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
package com.bsd.pjcloud.thirdparty.api.feign;
|
||||
|
||||
|
||||
import com.bsd.pjcloud.common.core.constant.ServiceNameConstants;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.feign.annotation.NoToken;
|
||||
import com.bsd.pjcloud.thirdparty.dto.door.*;
|
||||
import com.bsd.pjcloud.thirdparty.vo.door.*;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
@FeignClient(contextId = "remoterThirdDoorApiService", value = ServiceNameConstants.THIRDPARTY_SERVICE)
|
||||
public interface RemoterThirdDoorApiService {
|
||||
|
||||
/**
|
||||
* 设备注册
|
||||
*/
|
||||
@NoToken
|
||||
@PostMapping("/third-door/register")
|
||||
R<DoorRegisterVo> register(@RequestBody DoorRegisterDto dto);
|
||||
|
||||
/**
|
||||
* 设备信息绑定
|
||||
*/
|
||||
@NoToken
|
||||
@PostMapping("/third-door/bind")
|
||||
R<DoorBindVo> bind(@RequestBody DoorBindDto dto);
|
||||
|
||||
/**
|
||||
* 查询设备状态
|
||||
*/
|
||||
@NoToken
|
||||
@PostMapping("/third-door/status")
|
||||
R<DoorStatusVo> status(@RequestBody DoorStatusDto dto);
|
||||
|
||||
/**
|
||||
* 设备重启
|
||||
*/
|
||||
@NoToken
|
||||
@PostMapping("/third-door/restart")
|
||||
R<DoorRestartVo> restart(@RequestBody DoorRestartDto dto);
|
||||
|
||||
/**
|
||||
* 音量设置
|
||||
*/
|
||||
@NoToken
|
||||
@PostMapping("/third-door/volume")
|
||||
R<DoorVolumeVo> volume(@RequestBody DoorVolumeDto dto);
|
||||
|
||||
/**
|
||||
* 音量设置
|
||||
*/
|
||||
@NoToken
|
||||
@PostMapping("/third-door/open")
|
||||
R<DoorOpenVo> open(@RequestBody DoorOpenDto dto);
|
||||
|
||||
/**
|
||||
* 音量设置
|
||||
*/
|
||||
@NoToken
|
||||
@PostMapping("/third-door/video")
|
||||
R<DoorVideoVo> video(@RequestBody DoorVideoDto dto);
|
||||
|
||||
}
|
||||
+1
-1
@@ -7,7 +7,7 @@ import lombok.Getter;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* 打印状态
|
||||
* 正元接口
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
package com.bsd.pjcloud.thirdparty.constant.door;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.bsd.pjcloud.thirdparty.constant.ThirdZyBizEnumType;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum ThirdDoorApiTypeEnum {
|
||||
|
||||
DOOR_API("10", "智能柜接口"),
|
||||
DISCERN_API("20", "识别接口"),
|
||||
;
|
||||
|
||||
private final String type;
|
||||
private final String description;
|
||||
|
||||
public static ThirdDoorApiTypeEnum valueOfByType(String type) {
|
||||
if (ObjectUtil.isEmpty(type)) return null;
|
||||
return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get();
|
||||
}
|
||||
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package com.bsd.pjcloud.thirdparty.constant.door;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* 柜子接口
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum ThordDoorApiTypeEnum {
|
||||
|
||||
REGISTER("10", "设备注册"),
|
||||
BIND("20", "设备信息绑定"),
|
||||
STATUS("30", "查询设备状态"),
|
||||
RESTART("40", "设备重启"),
|
||||
SETTING("50", "设备设置"),
|
||||
VOLUME("60", "音量设置"),
|
||||
OPEN("70", "请求开锁"),
|
||||
VIDEO("80", "调取另一个摄像头视频"),
|
||||
OPEN_CALLBACK("90", "门锁开关通知"),
|
||||
VIDEO_CALLBACK("100", "视频地址通知"),
|
||||
STATUS_CALLBACK("110", "设备状态通知"),
|
||||
;
|
||||
|
||||
private final String type;
|
||||
private final String description;
|
||||
|
||||
public static ThordDoorApiTypeEnum valueOfByType(String type) {
|
||||
if (ObjectUtil.isEmpty(type)) return null;
|
||||
return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get();
|
||||
}
|
||||
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.bsd.pjcloud.thirdparty.dto.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorBindDto {
|
||||
|
||||
/**
|
||||
* 设备编号
|
||||
*/
|
||||
private String deviceCode;
|
||||
|
||||
/**
|
||||
* 设备 IMEI 号(15 位)
|
||||
*/
|
||||
private String imei;
|
||||
|
||||
/**
|
||||
* 外部设备编号(由调用方系统自定义唯一编号)
|
||||
*/
|
||||
private String outDeviceCode;
|
||||
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
package com.bsd.pjcloud.thirdparty.dto.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorOpenCallbackDto {
|
||||
|
||||
/**
|
||||
* OPEN:开锁通知;
|
||||
* CLOSE:关锁通知;
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 开门事件号
|
||||
*/
|
||||
private String eventId;
|
||||
|
||||
/**
|
||||
* 1: 录制视频;4:不录制视频;5:检修开锁;6:检修关锁;
|
||||
*/
|
||||
private Integer eventType;
|
||||
|
||||
/**
|
||||
* 商户自定义开门请求号(未开门的通知该字段为空)
|
||||
*/
|
||||
private String outOpenNo;
|
||||
|
||||
/**
|
||||
* 设备编号
|
||||
*/
|
||||
private String deviceCode;
|
||||
|
||||
/**
|
||||
* 货柜号(1,2)
|
||||
*/
|
||||
private Integer cabinetNo;
|
||||
|
||||
/**
|
||||
* SUCCESS: 开锁成功;
|
||||
* FAIL: 失败;
|
||||
*/
|
||||
private String resultCode;
|
||||
|
||||
/**
|
||||
* 错误信息,resultCode=FAIL 时返回错误信息
|
||||
*/
|
||||
private String resultMsg;
|
||||
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
package com.bsd.pjcloud.thirdparty.dto.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorOpenDto {
|
||||
|
||||
/**
|
||||
* 设备编号
|
||||
*/
|
||||
private String deviceCode;
|
||||
|
||||
/**
|
||||
* 货柜号(1,2),单门柜填 1
|
||||
*/
|
||||
private int cabinetNo;
|
||||
|
||||
/**
|
||||
* 商户自定义开门请求号(商户需要保证唯一)
|
||||
*/
|
||||
private String outOpenNo;
|
||||
|
||||
/**
|
||||
* 1:录制视频;4:不录制视频;5:检修开锁;6:检修关锁
|
||||
* 当锁状态异常无法开门时,可通过检修开锁、检修关锁重置锁状态
|
||||
*/
|
||||
private Integer eventType;
|
||||
|
||||
/**
|
||||
* 开关门通知地址
|
||||
*/
|
||||
private String lockNotifyUrl;
|
||||
|
||||
/**
|
||||
* 视频通知地址,视频上传成功后通过该地址通知 eventType 为 1 时必传
|
||||
*/
|
||||
private String videoNotifyUrl;
|
||||
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package com.bsd.pjcloud.thirdparty.dto.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorRegisterDto {
|
||||
|
||||
/**
|
||||
* 设备 IMEI 号(15 位)
|
||||
*/
|
||||
private String imei;
|
||||
|
||||
/**
|
||||
* 外部设备编号(由调用方系统自定义唯一编号)
|
||||
*/
|
||||
private String outDeviceCode;
|
||||
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package com.bsd.pjcloud.thirdparty.dto.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorRestartDto {
|
||||
|
||||
/**
|
||||
* 设备编号
|
||||
*/
|
||||
private String deviceCode;
|
||||
|
||||
/**
|
||||
* 重启模式。
|
||||
* 3:系统软重启 安全重启空闲状态下响应处于购物中不响应
|
||||
* 4:系统硬重启 不论什么状态直接重启
|
||||
*/
|
||||
private String restartType;
|
||||
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.bsd.pjcloud.thirdparty.dto.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorStatusDto {
|
||||
|
||||
/**
|
||||
* 设备编号
|
||||
*/
|
||||
private String deviceCode;
|
||||
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
package com.bsd.pjcloud.thirdparty.dto.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Data
|
||||
public class DoorVideoCallbackDto {
|
||||
|
||||
/**
|
||||
* 开门事件号
|
||||
*/
|
||||
private String eventId;
|
||||
|
||||
/**
|
||||
* 商户自定义开门请求号(未开门的通知该字段为空)
|
||||
*/
|
||||
private String outOpenNo;
|
||||
|
||||
/**
|
||||
* 设备编号
|
||||
*/
|
||||
private String deviceCode;
|
||||
|
||||
/**
|
||||
* 货柜号(1,2)
|
||||
*/
|
||||
private Integer cabinetNo;
|
||||
|
||||
/**
|
||||
* SUCCESS: 成功,videoList 有值。
|
||||
* FAIL: 失败,videoList 为空。
|
||||
* UNOPENED:未开门,videoList 为空。
|
||||
*/
|
||||
private String resultCode;
|
||||
|
||||
/**
|
||||
* 错误信息,resultCode=FAIL 时返回错误信息
|
||||
*/
|
||||
private String resultMsg;
|
||||
|
||||
private List<DoorVideoCallbackDto.Video> videoList;
|
||||
|
||||
@Data
|
||||
public class Video {
|
||||
|
||||
/**
|
||||
* 摄像头号:1:主摄;2:辅摄
|
||||
*/
|
||||
private Integer cameraNo;
|
||||
|
||||
/**
|
||||
* 视频地址
|
||||
*/
|
||||
private String videoUrl;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.bsd.pjcloud.thirdparty.dto.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorVideoDto {
|
||||
|
||||
/**
|
||||
* 开门事件号
|
||||
*/
|
||||
private String eventId;
|
||||
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.bsd.pjcloud.thirdparty.dto.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorVolumeDto {
|
||||
|
||||
/**
|
||||
* 设备编号
|
||||
*/
|
||||
private String deviceCode;
|
||||
|
||||
/**
|
||||
* 系统音量
|
||||
*/
|
||||
private Integer systemVolume;
|
||||
|
||||
/**
|
||||
* 媒体音量
|
||||
*/
|
||||
private Integer mediaVolume;
|
||||
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.bsd.pjcloud.thirdparty.dto.door;
|
||||
|
||||
import com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class ThirdDoorLogDto extends ThirdDoorLogEntity {
|
||||
|
||||
private LocalDateTime[] createTimeList;
|
||||
|
||||
}
|
||||
+119
@@ -0,0 +1,119 @@
|
||||
package com.bsd.pjcloud.thirdparty.entity.door;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import com.bsd.pjcloud.common.core.util.TenantTable;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 智能柜日志
|
||||
*/
|
||||
@Data
|
||||
@TenantTable
|
||||
@TableName("third_door_log")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(description = "智能柜日志")
|
||||
public class ThirdDoorLogEntity extends Model<ThirdDoorLogEntity> {
|
||||
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@Schema(description = "主键")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 请求类型
|
||||
*/
|
||||
@Schema(description = "请求类型")
|
||||
private String apiType;
|
||||
|
||||
/**
|
||||
* api类型
|
||||
*/
|
||||
@Schema(description = "api类型")
|
||||
private String bizType;
|
||||
|
||||
/**
|
||||
* api类型id
|
||||
*/
|
||||
@Schema(description = "api类型id")
|
||||
private String bizId;
|
||||
|
||||
/**
|
||||
* api url
|
||||
*/
|
||||
@Schema(description = "api url")
|
||||
private String apiUrl;
|
||||
|
||||
/**
|
||||
* res
|
||||
*/
|
||||
@Schema(description = "res")
|
||||
private String res;
|
||||
|
||||
/**
|
||||
* req
|
||||
*/
|
||||
@Schema(description = "req")
|
||||
private String req;
|
||||
|
||||
/**
|
||||
* 调用错误
|
||||
*/
|
||||
@Schema(description = "调用错误")
|
||||
private String error;
|
||||
|
||||
/**
|
||||
* 耗时(毫秒)
|
||||
*/
|
||||
@Schema(description = "耗时(毫秒)")
|
||||
private String timeConsuming;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "创建人")
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(description = "更新人")
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(description = "更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除时间
|
||||
*/
|
||||
@TableLogic
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description = "删除时间")
|
||||
private String delFlag;
|
||||
|
||||
/**
|
||||
* tenantId
|
||||
*/
|
||||
@Schema(description = "tenantId")
|
||||
private Long tenantId;
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
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;
|
||||
|
||||
private Object data;
|
||||
|
||||
public boolean isSuccess() {
|
||||
return ObjectUtil.equal(code, DoorBaseVo.successCode);
|
||||
}
|
||||
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.bsd.pjcloud.thirdparty.vo.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorBindVo {
|
||||
|
||||
/**
|
||||
* 设备编号
|
||||
*/
|
||||
private String deviceCode;
|
||||
|
||||
/**
|
||||
* 设备 IMEI 号(15 位)
|
||||
*/
|
||||
private String imei;
|
||||
|
||||
/**
|
||||
* 外部设备编号(由调用方系统自定义唯一编号)
|
||||
*/
|
||||
private String outDeviceCode;
|
||||
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package com.bsd.pjcloud.thirdparty.vo.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorOpenCallbackVo {
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package com.bsd.pjcloud.thirdparty.vo.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorOpenVo {
|
||||
|
||||
/**
|
||||
* 开门事件号
|
||||
*/
|
||||
private String eventId;
|
||||
|
||||
/**
|
||||
* 商户自定义开门请求号
|
||||
*/
|
||||
private String outOpenNo;
|
||||
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package com.bsd.pjcloud.thirdparty.vo.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorRegisterVo {
|
||||
/**
|
||||
* 设备编号
|
||||
*/
|
||||
private String deviceCode;
|
||||
|
||||
/**
|
||||
* 设备 IMEI 号(15 位)
|
||||
*/
|
||||
private String imei;
|
||||
|
||||
/**
|
||||
* 外部设备编号(由调用方系统自定义唯一编号)
|
||||
*/
|
||||
private String outDeviceCode;
|
||||
|
||||
/**
|
||||
* 货柜数量
|
||||
*/
|
||||
private Integer cabinetNum;
|
||||
|
||||
/**
|
||||
* 每个货柜中摄像头数量
|
||||
*/
|
||||
private Integer cabinetCameraNum;
|
||||
|
||||
/**
|
||||
* 每个货柜中称重单元数量
|
||||
*/
|
||||
private Integer cabinetWeightUnitNum;
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package com.bsd.pjcloud.thirdparty.vo.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorRestartVo {
|
||||
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
package com.bsd.pjcloud.thirdparty.vo.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Data
|
||||
public class DoorStatusVo {
|
||||
|
||||
|
||||
/**
|
||||
* 设备编号
|
||||
*/
|
||||
private String deviceCode;
|
||||
|
||||
/**
|
||||
* 1:通电;2:断电
|
||||
*/
|
||||
private Integer powerStatus;
|
||||
|
||||
/**
|
||||
* 在线状态,1:在线;2:离线
|
||||
*/
|
||||
private Integer netStatus;
|
||||
|
||||
/**
|
||||
* 售卖状态。1:在售;2:停售
|
||||
*/
|
||||
private Integer saleStatus;
|
||||
|
||||
/**
|
||||
* sim卡号设备有上报会返回,若一次上报都没有,则返回null。
|
||||
*/
|
||||
private String simSn;
|
||||
|
||||
/**
|
||||
* sim 信号强度
|
||||
* 大于-95 表示信号强度好
|
||||
* -95 到-105 表示信号强度中等
|
||||
* 小于-105 表示信号差
|
||||
*/
|
||||
private Integer signalIntensity;
|
||||
|
||||
/**
|
||||
* 信噪比,体现信道传输质量的参数
|
||||
* 大于 15 表示质量好
|
||||
* 15 到 0 表示质量中等
|
||||
* 小于等于 0 表示质量差
|
||||
*/
|
||||
private Integer signalRatio;
|
||||
|
||||
/**
|
||||
* sim 信号值更新时间。yyyy-MM-dd HH:mm:ss
|
||||
*/
|
||||
private LocalDateTime signalTime;
|
||||
|
||||
/**
|
||||
* 货柜列表
|
||||
*/
|
||||
private List<Cabinet> cabinetList;
|
||||
|
||||
@Data
|
||||
public class Cabinet {
|
||||
|
||||
/**
|
||||
* 货柜号(1,2)
|
||||
*/
|
||||
private Integer cabinetNo;
|
||||
|
||||
/**
|
||||
* 锁在线1:在线;2:离线
|
||||
*/
|
||||
private Integer isLockOnline;
|
||||
|
||||
/**
|
||||
* 锁状态1:锁关;2:锁开
|
||||
*/
|
||||
private Integer lockStatus;
|
||||
|
||||
/**
|
||||
* 门状态1:门关;2:门开
|
||||
*/
|
||||
private Integer doorStatus;
|
||||
|
||||
/**
|
||||
* 货柜售卖状态1:在售;2:停售
|
||||
*/
|
||||
private Integer saleStatus;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package com.bsd.pjcloud.thirdparty.vo.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorVideoCallbackVo {
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package com.bsd.pjcloud.thirdparty.vo.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
public class DoorVideoVo {
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package com.bsd.pjcloud.thirdparty.vo.door;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DoorVolumeVo {
|
||||
}
|
||||
+1
@@ -1,2 +1,3 @@
|
||||
com.bsd.pjcloud.thirdparty.api.feign.RemoterThirdDoorApiService
|
||||
com.bsd.pjcloud.thirdparty.api.feign.RemoterThirdPartyAuthService
|
||||
com.bsd.pjcloud.thirdparty.api.feign.RemoterThirdZyService
|
||||
+17
@@ -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;
|
||||
}
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
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.*;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdDoorApiService;
|
||||
import com.bsd.pjcloud.thirdparty.vo.door.*;
|
||||
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));
|
||||
}
|
||||
|
||||
@Inner
|
||||
@Operation(summary = "设备信息绑定")
|
||||
@PostMapping("/bind")
|
||||
public R<DoorBindVo> bind(@RequestBody DoorBindDto dto) {
|
||||
return R.ok(thirdDoorApiService.bind(dto));
|
||||
}
|
||||
|
||||
@Inner
|
||||
@Operation(summary = "查询设备状态")
|
||||
@PostMapping("/status")
|
||||
public R<DoorStatusVo> status(@RequestBody DoorStatusDto dto) {
|
||||
return R.ok(thirdDoorApiService.status(dto));
|
||||
}
|
||||
|
||||
@Inner
|
||||
@Operation(summary = "设备重启")
|
||||
@PostMapping("/restart")
|
||||
public R<DoorRestartVo> restart(@RequestBody DoorRestartDto dto) {
|
||||
return R.ok(thirdDoorApiService.restart(dto));
|
||||
}
|
||||
|
||||
@Inner
|
||||
@Operation(summary = "音量设置")
|
||||
@PostMapping("/volume")
|
||||
public R<DoorVolumeVo> volume(@RequestBody DoorVolumeDto dto) {
|
||||
return R.ok(thirdDoorApiService.volume(dto));
|
||||
}
|
||||
|
||||
@Inner
|
||||
@Operation(summary = "请求开锁")
|
||||
@PostMapping("/open")
|
||||
public R<DoorOpenVo> open(@RequestBody DoorOpenDto dto) {
|
||||
return R.ok(thirdDoorApiService.open(dto));
|
||||
}
|
||||
|
||||
@Inner
|
||||
@Operation(summary = "调取另一个摄像头视频")
|
||||
@PostMapping("/video")
|
||||
public R<DoorVideoVo> video(@RequestBody DoorVideoDto dto) {
|
||||
return R.ok(thirdDoorApiService.video(dto));
|
||||
}
|
||||
|
||||
|
||||
/* ************************************* end 远程调用 end ************************************* */
|
||||
|
||||
|
||||
/* ************************************* start 回调 start ************************************* */
|
||||
|
||||
@Inner(value = false)
|
||||
@Operation(summary = "门锁开关通知回调")
|
||||
@PostMapping("/callback/open")
|
||||
public R<DoorOpenCallbackVo> callbackOpen(@RequestBody DoorOpenCallbackDto dto) {
|
||||
return R.ok(thirdDoorApiService.callbackOpen(dto));
|
||||
}
|
||||
|
||||
@Inner(value = false)
|
||||
@Operation(summary = "视频地址通知回调")
|
||||
@PostMapping("/callback/open")
|
||||
public R<DoorVideoCallbackVo> callbackVideo(@RequestBody DoorVideoCallbackDto dto) {
|
||||
return R.ok(thirdDoorApiService.callbackVideo(dto));
|
||||
}
|
||||
|
||||
@Inner(value = false)
|
||||
@Operation(summary = "设备状态通知回调")
|
||||
@PostMapping("/callback/open")
|
||||
public R<DoorStatusVo> callbackStatus(@RequestBody DoorStatusDto dto) {
|
||||
return R.ok(thirdDoorApiService.callbackStatus(dto));
|
||||
}
|
||||
|
||||
|
||||
/* ************************************* start 回调 start ************************************* */
|
||||
|
||||
}
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
package com.bsd.pjcloud.thirdparty.controller.door;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.common.log.annotation.SysLog;
|
||||
import com.bsd.pjcloud.thirdparty.dto.door.ThirdDoorLogDto;
|
||||
import com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdDoorLogService;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
|
||||
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
|
||||
import org.springdoc.core.annotations.ParameterObject;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 智能柜日志
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/third-door-log")
|
||||
@Tag(description = "third-door-log", name = "智能柜日志管理")
|
||||
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
|
||||
public class ThirdDoorLogController {
|
||||
|
||||
private final ThirdDoorLogService thirdDoorLogService;
|
||||
|
||||
@Operation(summary = "分页查询", description = "分页查询")
|
||||
@GetMapping("/page")
|
||||
@PreAuthorize("@pms.hasPermission('third_thirdDoorLog_view')")
|
||||
public R getThirdDoorLogPage(@ParameterObject Page page, @ParameterObject ThirdDoorLogDto dto) {
|
||||
DataScope dataScope = null;
|
||||
return R.ok(thirdDoorLogService.scopePageList(page, dto, dataScope));
|
||||
}
|
||||
|
||||
@Operation(summary = "通过id查询", description = "通过id查询")
|
||||
@GetMapping("/{id}")
|
||||
@PreAuthorize("@pms.hasPermission('third_thirdDoorLog_view')")
|
||||
public R getById(@PathVariable("id") Long id) {
|
||||
return R.ok(thirdDoorLogService.getById(id));
|
||||
}
|
||||
|
||||
@Operation(summary = "新增智能柜日志", description = "新增智能柜日志")
|
||||
@SysLog("新增智能柜日志")
|
||||
@PostMapping
|
||||
@PreAuthorize("@pms.hasPermission('third_thirdDoorLog_add')")
|
||||
public R save(@RequestBody ThirdDoorLogEntity thirdDoorLog) {
|
||||
return R.ok(thirdDoorLogService.save(thirdDoorLog));
|
||||
}
|
||||
|
||||
@Operation(summary = "修改智能柜日志", description = "修改智能柜日志")
|
||||
@SysLog("修改智能柜日志")
|
||||
@PutMapping
|
||||
@PreAuthorize("@pms.hasPermission('third_thirdDoorLog_edit')")
|
||||
public R updateById(@RequestBody ThirdDoorLogEntity thirdDoorLog) {
|
||||
return R.ok(thirdDoorLogService.updateById(thirdDoorLog));
|
||||
}
|
||||
|
||||
@Operation(summary = "通过id删除智能柜日志", description = "通过id删除智能柜日志")
|
||||
@SysLog("通过id删除智能柜日志")
|
||||
@DeleteMapping
|
||||
@PreAuthorize("@pms.hasPermission('third_thirdDoorLog_del')")
|
||||
public R removeById(@RequestBody Long[] ids) {
|
||||
return R.ok(thirdDoorLogService.removeBatchByIds(CollUtil.toList(ids)));
|
||||
}
|
||||
|
||||
@ResponseExcel
|
||||
@GetMapping("/export")
|
||||
@PreAuthorize("@pms.hasPermission('third_thirdDoorLog_export')")
|
||||
public List<ThirdDoorLogEntity> export(ThirdDoorLogEntity thirdDoorLog, Long[] ids) {
|
||||
return thirdDoorLogService.list(Wrappers.lambdaQuery(thirdDoorLog).in(ArrayUtil.isNotEmpty(ids), ThirdDoorLogEntity::getId, ids));
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -3,7 +3,7 @@ package com.bsd.pjcloud.thirdparty.controller.zy;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.security.annotation.Inner;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.foreign.ZyForeignSyncNativeCardTradeInfoDto;
|
||||
import com.bsd.pjcloud.thirdparty.service.impl.ThirdZyForeignService;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdZyForeignService;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.foreign.ZyForeignSyncNativeCardTradeInfoVo;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
|
||||
|
||||
+1
-3
@@ -2,13 +2,11 @@ package com.bsd.pjcloud.thirdparty.controller.zy;
|
||||
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.security.annotation.Inner;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.foreign.ZyForeignSyncNativeCardTradeInfoDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncAccClassInfoDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncAccountInfoDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncDealerInfoDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncEnterpriseInfoDto;
|
||||
import com.bsd.pjcloud.thirdparty.service.impl.ThirdZyMerService;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.foreign.ZyForeignSyncNativeCardTradeInfoVo;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdZyMerService;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.mer.ZyMerSyncAccClassInfoVo;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.mer.ZyMerSyncAccountInfoVo;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.mer.ZyMerSyncDealerInfoVo;
|
||||
|
||||
+1
-4
@@ -1,14 +1,11 @@
|
||||
package com.bsd.pjcloud.thirdparty.controller.zy;
|
||||
|
||||
import com.bsd.pjcloud.common.idempotent.annotation.Idempotent;
|
||||
import com.bsd.pjcloud.common.security.annotation.Inner;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.self.ZySelfCorrectDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.self.ZySelfGetTokenDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.self.ZySelfPayDto;
|
||||
import com.bsd.pjcloud.thirdparty.service.impl.ThirdZySelfService;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.self.ZySelfCorrectVo;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdZySelfService;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.self.ZySelfGetTokenVo;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.self.ZySelfPayVo;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ import com.bsd.pjcloud.common.security.annotation.Inner;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.stride.ZyStrideAuthenticationDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.stride.ZyStrideConsumptionDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.stride.ZyStrideCorrectDto;
|
||||
import com.bsd.pjcloud.thirdparty.service.impl.ThirdZyStrideService;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdZyStrideService;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.stride.ZyStrideAuthenticationVo;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.stride.ZyStrideConsumptionVo;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.stride.ZyStrideCorrectVo;
|
||||
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package com.bsd.pjcloud.thirdparty.mapper.door;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
|
||||
import com.bsd.pjcloud.thirdparty.dto.door.ThirdDoorLogDto;
|
||||
import com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface ThirdDoorLogMapper extends PjcloudBaseMapper<ThirdDoorLogEntity> {
|
||||
|
||||
default Page<ThirdDoorLogEntity> scopePageList(Page page, ThirdDoorLogDto dto, DataScope dataScope) {
|
||||
LambdaQueryWrapper<ThirdDoorLogEntity> wrapper = new LambdaQueryWrapper<ThirdDoorLogEntity>()
|
||||
.eq(ObjectUtil.isNotEmpty(dto.getApiType()), ThirdDoorLogEntity::getApiType, dto.getApiType())
|
||||
.eq(ObjectUtil.isNotEmpty(dto.getBizId()), ThirdDoorLogEntity::getBizId, dto.getBizId())
|
||||
.eq(ObjectUtil.isNotEmpty(dto.getBizType()), ThirdDoorLogEntity::getBizType, dto.getBizType())
|
||||
.between(
|
||||
ObjectUtil.isNotEmpty(dto.getCreateTimeList()),
|
||||
ThirdDoorLogEntity::getCreateTime,
|
||||
ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[0] : null,
|
||||
ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[1] : null
|
||||
)
|
||||
.orderByDesc(ThirdDoorLogEntity::getCreateTime)
|
||||
.orderByDesc(ThirdDoorLogEntity::getId);
|
||||
return selectPageByScope(page, wrapper, dataScope);
|
||||
}
|
||||
}
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
package com.bsd.pjcloud.thirdparty.service;
|
||||
|
||||
|
||||
import com.bsd.pjcloud.thirdparty.dto.door.*;
|
||||
import com.bsd.pjcloud.thirdparty.vo.door.*;
|
||||
|
||||
public interface ThirdDoorApiService {
|
||||
|
||||
/**
|
||||
* 设备注册
|
||||
*/
|
||||
DoorRegisterVo register(DoorRegisterDto dto);
|
||||
|
||||
/**
|
||||
* 设备信息绑定
|
||||
*/
|
||||
DoorBindVo bind(DoorBindDto dto);
|
||||
|
||||
/**
|
||||
* 查询设备状态
|
||||
*/
|
||||
DoorStatusVo status(DoorStatusDto dto);
|
||||
|
||||
/**
|
||||
* 设备重启
|
||||
*/
|
||||
DoorRestartVo restart(DoorRestartDto dto);
|
||||
|
||||
/**
|
||||
* 音量设置
|
||||
*/
|
||||
DoorVolumeVo volume(DoorVolumeDto dto);
|
||||
|
||||
/**
|
||||
* 请求开锁
|
||||
*/
|
||||
DoorOpenVo open(DoorOpenDto dto);
|
||||
|
||||
/**
|
||||
* 调取另一个摄像头视频
|
||||
*/
|
||||
DoorVideoVo video(DoorVideoDto dto);
|
||||
|
||||
/**
|
||||
* 门锁开关通知回调
|
||||
*/
|
||||
DoorOpenCallbackVo callbackOpen(DoorOpenCallbackDto dto);
|
||||
|
||||
/**
|
||||
* 视频地址通知回调
|
||||
*/
|
||||
DoorVideoCallbackVo callbackVideo(DoorVideoCallbackDto dto);
|
||||
|
||||
/**
|
||||
* 设备状态通知回调
|
||||
*/
|
||||
DoorStatusVo callbackStatus(DoorStatusDto dto);
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package com.bsd.pjcloud.thirdparty.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.thirdparty.dto.door.ThirdDoorLogDto;
|
||||
import com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ThirdDoorLogService extends IService<ThirdDoorLogEntity> {
|
||||
|
||||
Page<ThirdDoorLogEntity> scopePageList(Page page, ThirdDoorLogDto dto, DataScope dataScope);
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.bsd.pjcloud.thirdparty.service.impl;
|
||||
package com.bsd.pjcloud.thirdparty.service;
|
||||
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.foreign.ZyForeignSyncNativeCardTradeInfoDto;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.foreign.ZyForeignGetRegionIdByTokenVo;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.bsd.pjcloud.thirdparty.service.impl;
|
||||
package com.bsd.pjcloud.thirdparty.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.bsd.pjcloud.thirdparty.entity.zy.ThirdZyIdDictEntity;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.bsd.pjcloud.thirdparty.service.impl;
|
||||
package com.bsd.pjcloud.thirdparty.service;
|
||||
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncAccClassInfoDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncAccountInfoDto;
|
||||
+1
-3
@@ -1,11 +1,9 @@
|
||||
package com.bsd.pjcloud.thirdparty.service.impl;
|
||||
package com.bsd.pjcloud.thirdparty.service;
|
||||
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.self.ZySelfCorrectDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.self.ZySelfGetTokenDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.self.ZySelfPayDto;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.self.ZySelfCorrectVo;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.self.ZySelfGetTokenVo;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.self.ZySelfPayVo;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.bsd.pjcloud.thirdparty.service.impl;
|
||||
package com.bsd.pjcloud.thirdparty.service;
|
||||
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.stride.ZyStrideAuthenticationDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.stride.ZyStrideConsumptionDto;
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
package com.bsd.pjcloud.thirdparty.service.impl.door;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.bsd.pjcloud.thirdparty.dto.door.*;
|
||||
import com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdDoorApiService;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdDoorLogService;
|
||||
import com.bsd.pjcloud.thirdparty.utils.door.api.DoorApi;
|
||||
import com.bsd.pjcloud.thirdparty.vo.door.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@Service
|
||||
@Validated
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class ThirdDoorApiServiceImpl implements ThirdDoorApiService {
|
||||
|
||||
private final String TAG = "智能柜api";
|
||||
|
||||
private final ThirdDoorLogService doorLogService;
|
||||
|
||||
/**
|
||||
* 设备注册
|
||||
*/
|
||||
@Override
|
||||
public DoorRegisterVo register(DoorRegisterDto dto) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
DoorApi.Api registerApi = DoorApi.REGISTER;
|
||||
ThirdDoorLogEntity logEntity = registerApi.getInitLogEntity();
|
||||
logEntity.setReq(JSONUtil.toJsonStr(dto));
|
||||
try {
|
||||
String body = JSONUtil.toJsonStr(dto);
|
||||
String res = registerApi.getHttpRequest().body(body).execute().body();
|
||||
if (ObjectUtil.isEmpty(res)) throw new RuntimeException("response响应为空");
|
||||
logEntity.setRes(res);
|
||||
DoorBaseVo doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class);
|
||||
if (!doorBaseVo.isSuccess()) {
|
||||
throw new RuntimeException(String.format("请求错误res|%s|url|%s|body|%s|", res, registerApi, body));
|
||||
}
|
||||
return JSONUtil.toBean(res, DoorRegisterVo.class);
|
||||
} catch (Exception e) {
|
||||
String error = String.format("|%s||register|意外的错误error|%s|stack|%s|", TAG, e.getMessage(), Arrays.toString(e.getStackTrace()));
|
||||
log.error(error);
|
||||
logEntity.setError(error);
|
||||
} finally {
|
||||
logEntity.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime));
|
||||
doorLogService.save(logEntity);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设备信息绑定
|
||||
*/
|
||||
@Override
|
||||
public DoorBindVo bind(DoorBindDto dto) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
DoorApi.Api registerApi = DoorApi.REGISTER;
|
||||
ThirdDoorLogEntity logEntity = registerApi.getInitLogEntity();
|
||||
logEntity.setReq(JSONUtil.toJsonStr(dto));
|
||||
try {
|
||||
String body = JSONUtil.toJsonStr(dto);
|
||||
String res = registerApi.getHttpRequest().body(body).execute().body();
|
||||
if (ObjectUtil.isEmpty(res)) throw new RuntimeException("response响应为空");
|
||||
logEntity.setRes(res);
|
||||
DoorBaseVo doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class);
|
||||
if (!doorBaseVo.isSuccess()) {
|
||||
throw new RuntimeException(String.format("请求错误res|%s|url|%s|body|%s|", res, registerApi, body));
|
||||
}
|
||||
return JSONUtil.toBean(res, DoorBindVo.class);
|
||||
} catch (Exception e) {
|
||||
String error = String.format("|%s||bind|意外的错误error|%s|stack|%s|", TAG, e.getMessage(), Arrays.toString(e.getStackTrace()));
|
||||
log.error(error);
|
||||
logEntity.setError(error);
|
||||
} finally {
|
||||
logEntity.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime));
|
||||
doorLogService.save(logEntity);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询设备状态
|
||||
*/
|
||||
@Override
|
||||
public DoorStatusVo status(DoorStatusDto dto) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设备重启
|
||||
*/
|
||||
@Override
|
||||
public DoorRestartVo restart(DoorRestartDto dto) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 音量设置
|
||||
*/
|
||||
@Override
|
||||
public DoorVolumeVo volume(DoorVolumeDto dto) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求开锁
|
||||
*/
|
||||
@Override
|
||||
public DoorOpenVo open(DoorOpenDto dto) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 调取另一个摄像头视频
|
||||
*/
|
||||
@Override
|
||||
public DoorVideoVo video(DoorVideoDto dto) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 门锁开关通知回调
|
||||
*/
|
||||
@Override
|
||||
public DoorOpenCallbackVo callbackOpen(DoorOpenCallbackDto dto) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 视频地址通知回调
|
||||
*/
|
||||
@Override
|
||||
public DoorVideoCallbackVo callbackVideo(DoorVideoCallbackDto dto) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设备状态通知回调
|
||||
*/
|
||||
@Override
|
||||
public DoorStatusVo callbackStatus(DoorStatusDto dto) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.bsd.pjcloud.thirdparty.service.impl.door;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.thirdparty.dto.door.ThirdDoorLogDto;
|
||||
import com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity;
|
||||
import com.bsd.pjcloud.thirdparty.mapper.door.ThirdDoorLogMapper;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdDoorLogService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 智能柜日志
|
||||
*/
|
||||
@Service
|
||||
public class ThirdDoorLogServiceImpl extends ServiceImpl<ThirdDoorLogMapper, ThirdDoorLogEntity> implements ThirdDoorLogService {
|
||||
|
||||
@Override
|
||||
public Page<ThirdDoorLogEntity> scopePageList(Page page, ThirdDoorLogDto dto, DataScope dataScope) {
|
||||
return baseMapper.scopePageList(page, dto, dataScope);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -10,7 +10,7 @@ import com.bsd.pjcloud.thirdparty.config.ZyConfig;
|
||||
import com.bsd.pjcloud.thirdparty.constant.ThirdZyBizEnumType;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.foreign.ZyForeignSyncNativeCardTradeInfoDto;
|
||||
import com.bsd.pjcloud.thirdparty.entity.zy.ThirdZyLogEntity;
|
||||
import com.bsd.pjcloud.thirdparty.service.impl.ThirdZyForeignService;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdZyForeignService;
|
||||
import com.bsd.pjcloud.thirdparty.utils.zy.api.ZyApi;
|
||||
import com.bsd.pjcloud.thirdparty.utils.zy.api.ZyApiTool;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseEncryptVo;
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ package com.bsd.pjcloud.thirdparty.service.impl.zy;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.thirdparty.entity.zy.ThirdZyIdDictEntity;
|
||||
import com.bsd.pjcloud.thirdparty.mapper.zy.ThirdZyIdDictMapper;
|
||||
import com.bsd.pjcloud.thirdparty.service.impl.ThirdZyIdDictService;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdZyIdDictService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
+1
-2
@@ -1,6 +1,5 @@
|
||||
package com.bsd.pjcloud.thirdparty.service.impl.zy;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
@@ -11,7 +10,7 @@ import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncAccountInfoDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncDealerInfoDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.mer.ZyMerSyncEnterpriseInfoDto;
|
||||
import com.bsd.pjcloud.thirdparty.entity.zy.ThirdZyLogEntity;
|
||||
import com.bsd.pjcloud.thirdparty.service.impl.ThirdZyMerService;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdZyMerService;
|
||||
import com.bsd.pjcloud.thirdparty.utils.zy.api.ZyApi;
|
||||
import com.bsd.pjcloud.thirdparty.utils.zy.api.ZyApiTool;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseEncryptVo;
|
||||
|
||||
+1
-5
@@ -3,7 +3,6 @@ package com.bsd.pjcloud.thirdparty.service.impl.zy;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.codec.Base64;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
@@ -11,8 +10,6 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.URLUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.bsd.pjcloud.common.core.constant.CacheConstants;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.hard.api.constant.third.HardCallbackRefundStatus;
|
||||
import com.bsd.pjcloud.hard.api.dto.third.HardCallbackPayDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.third.HardCallbackRefundDto;
|
||||
import com.bsd.pjcloud.hard.api.feign.RemoteHardThirdSelfZyService;
|
||||
@@ -27,11 +24,10 @@ import com.bsd.pjcloud.thirdparty.dto.zy.self.ZySelfTokenDto;
|
||||
import com.bsd.pjcloud.thirdparty.entity.zy.ThirdZyIdDictEntity;
|
||||
import com.bsd.pjcloud.thirdparty.entity.zy.ThirdZyLogEntity;
|
||||
import com.bsd.pjcloud.thirdparty.mapper.zy.ThirdZyIdDictMapper;
|
||||
import com.bsd.pjcloud.thirdparty.service.impl.ThirdZySelfService;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdZySelfService;
|
||||
import com.bsd.pjcloud.thirdparty.utils.zy.api.ZyApi;
|
||||
import com.bsd.pjcloud.thirdparty.utils.zy.api.ZyApiTool;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.ZyBaseVo;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.self.ZySelfCorrectVo;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.self.ZySelfGetTokenVo;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.self.ZySelfPayVo;
|
||||
import io.jsonwebtoken.Claims;
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ import com.bsd.pjcloud.thirdparty.dto.zy.stride.ZyStrideAuthenticationDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.stride.ZyStrideConsumptionDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.stride.ZyStrideCorrectDto;
|
||||
import com.bsd.pjcloud.thirdparty.entity.zy.ThirdZyLogEntity;
|
||||
import com.bsd.pjcloud.thirdparty.service.impl.ThirdZyStrideService;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdZyStrideService;
|
||||
import com.bsd.pjcloud.thirdparty.utils.zy.api.ZyApi;
|
||||
import com.bsd.pjcloud.thirdparty.utils.zy.api.ZyApiTool;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.stride.ZyStrideAuthenticationVo;
|
||||
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
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.door.ThirdDoorApiTypeEnum;
|
||||
import com.bsd.pjcloud.thirdparty.constant.door.ThordDoorApiTypeEnum;
|
||||
import com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
public class DoorApi {
|
||||
|
||||
// 设备注册
|
||||
public static final Api REGISTER = Api.builder().url("/ams/api/device/register").bizType(ThordDoorApiTypeEnum.REGISTER).method("post").contentType("application/json").build();
|
||||
|
||||
// 设备信息绑定
|
||||
public static final Api BIND = Api.builder().url("/ams/api/device/bind").bizType(ThordDoorApiTypeEnum.BIND).method("post").contentType("application/json").build();
|
||||
|
||||
// 查询设备状态
|
||||
public static final Api STATUS = Api.builder().url("/ams/api/device/status").bizType(ThordDoorApiTypeEnum.STATUS).method("post").contentType("application/json").build();
|
||||
|
||||
// 设备重启
|
||||
public static final Api RESTART = Api.builder().url("/ams/api/device/restart").bizType(ThordDoorApiTypeEnum.RESTART).method("post").contentType("application/json").build();
|
||||
|
||||
// 设备设置
|
||||
public static final Api SETTING = Api.builder().url("/ams/api/device/setting").bizType(ThordDoorApiTypeEnum.SETTING).method("post").contentType("application/json").build();
|
||||
|
||||
// 音量设置
|
||||
public static final Api VOLUME = Api.builder().url("/ams/api/device/volume").bizType(ThordDoorApiTypeEnum.VOLUME).method("post").contentType("application/json").build();
|
||||
|
||||
// 请求开锁
|
||||
public static final Api OPEN = Api.builder().url("/ams/api/event/open").bizType(ThordDoorApiTypeEnum.OPEN).method("post").contentType("application/json").build();
|
||||
|
||||
// 调取另一个摄像头视频
|
||||
public static final Api VIDEO = Api.builder().url("/ams/api/event/video").bizType(ThordDoorApiTypeEnum.VIDEO).method("post").contentType("application/json").build();
|
||||
|
||||
// 门锁开关通知
|
||||
public static final Api OPEN_CALLBACK = Api.builder().url("/door/callback/open").bizType(ThordDoorApiTypeEnum.OPEN_CALLBACK).method("post").contentType("application/json").build();
|
||||
|
||||
// 视频地址通知
|
||||
public static final Api VIDEO_CALLBACK = Api.builder().url("/door/callback/video").bizType(ThordDoorApiTypeEnum.VIDEO_CALLBACK).method("post").contentType("application/json").build();
|
||||
|
||||
// 设备状态通知
|
||||
public static final Api STATUS_CALLBACK = Api.builder().url("/door/callback/status").bizType(ThordDoorApiTypeEnum.STATUS_CALLBACK).method("post").contentType("application/json").build();
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public static class Api {
|
||||
|
||||
private String url;
|
||||
|
||||
private String method;
|
||||
|
||||
private String contentType;
|
||||
|
||||
private ThirdDoorApiTypeEnum apiType = ThirdDoorApiTypeEnum.DOOR_API;
|
||||
|
||||
private ThordDoorApiTypeEnum bizType;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
public ThirdDoorLogEntity getInitLogEntity() {
|
||||
ThirdDoorLogEntity entity = new ThirdDoorLogEntity();
|
||||
entity.setBizId(null);
|
||||
entity.setBizType(bizType.getType());
|
||||
entity.setApiType(apiType.getType());
|
||||
entity.setApiUrl(url);
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
-1
@@ -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:
|
||||
|
||||
# 旷世识别
|
||||
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.bsd.pjcloud.thirdparty.mapper.door.ThirdDoorLogMapper">
|
||||
|
||||
<resultMap id="thirdDoorLogMap" type="com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity">
|
||||
<id property="id" column="id"/>
|
||||
<result property="apiType" column="api_type"/>
|
||||
<result property="bizType" column="biz_type"/>
|
||||
<result property="bizId" column="biz_id"/>
|
||||
<result property="apiUrl" column="api_url"/>
|
||||
<result property="res" column="res"/>
|
||||
<result property="req" column="req"/>
|
||||
<result property="error" column="error"/>
|
||||
<result property="timeConsuming" column="time_consuming"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
</mapper>
|
||||
+4
-4
@@ -21,10 +21,10 @@ import com.bsd.pjcloud.thirdparty.dto.zy.stride.ZyStrideConsumptionDto;
|
||||
import com.bsd.pjcloud.thirdparty.dto.zy.stride.ZyStrideCorrectDto;
|
||||
import com.bsd.pjcloud.thirdparty.entity.zy.ThirdZyIdDictEntity;
|
||||
import com.bsd.pjcloud.thirdparty.mapper.zy.ThirdZyIdDictMapper;
|
||||
import com.bsd.pjcloud.thirdparty.service.impl.ThirdZyForeignService;
|
||||
import com.bsd.pjcloud.thirdparty.service.impl.ThirdZyMerService;
|
||||
import com.bsd.pjcloud.thirdparty.service.impl.ThirdZySelfService;
|
||||
import com.bsd.pjcloud.thirdparty.service.impl.ThirdZyStrideService;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdZyForeignService;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdZyMerService;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdZySelfService;
|
||||
import com.bsd.pjcloud.thirdparty.service.ThirdZyStrideService;
|
||||
import com.bsd.pjcloud.thirdparty.utils.zy.api.ZyApiTool;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.foreign.ZyForeignGetRegionIdByTokenVo;
|
||||
import com.bsd.pjcloud.thirdparty.vo.zy.foreign.ZyForeignSyncNativeCardTradeInfoVo;
|
||||
|
||||
+14
-8
@@ -3,6 +3,7 @@ package com.bsd.pjcloud.admin.utils.excel;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import lombok.experimental.UtilityClass;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.EncryptedDocumentException;
|
||||
import org.apache.poi.hssf.usermodel.*;
|
||||
import org.apache.poi.ooxml.POIXMLDocumentPart;
|
||||
@@ -20,6 +21,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@UtilityClass
|
||||
public class ExcelTool {
|
||||
|
||||
@@ -52,15 +54,19 @@ public class ExcelTool {
|
||||
*/
|
||||
public static Map<String, PictureData> getPictures(HSSFSheet sheet) throws IOException {
|
||||
Map<String, PictureData> map = new HashMap<String, PictureData>();
|
||||
List<HSSFShape> list = sheet.getDrawingPatriarch().getChildren();
|
||||
for (HSSFShape shape : list) {
|
||||
if (shape instanceof HSSFPicture) {
|
||||
HSSFPicture picture = (HSSFPicture) shape;
|
||||
HSSFClientAnchor cAnchor = picture.getClientAnchor();
|
||||
PictureData pdata = picture.getPictureData();
|
||||
String key = String.valueOf(cAnchor.getRow1());
|
||||
map.put(key, pdata);
|
||||
try {
|
||||
List<HSSFShape> list = sheet.getDrawingPatriarch().getChildren();
|
||||
for (HSSFShape shape : list) {
|
||||
if (shape instanceof HSSFPicture) {
|
||||
HSSFPicture picture = (HSSFPicture) shape;
|
||||
HSSFClientAnchor cAnchor = picture.getClientAnchor();
|
||||
PictureData pdata = picture.getPictureData();
|
||||
String key = String.valueOf(cAnchor.getRow1());
|
||||
map.put(key, pdata);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("getPictures 读取图片错误", e);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
+9
@@ -50,4 +50,13 @@ public class WalletManageVo extends WalletManageEntity implements BaseUserInterf
|
||||
*/
|
||||
private LocalDateTime lastTopUpTime;
|
||||
|
||||
/**
|
||||
* 导出相关
|
||||
*/
|
||||
private String balanceStr;
|
||||
|
||||
private String totalExpenseStr;
|
||||
|
||||
private String totalRechargeStr;
|
||||
|
||||
}
|
||||
+10
-3
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.bsd.pjcloud.common.core.util.BeanUtils;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
|
||||
import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum;
|
||||
import com.bsd.pjcloud.wallet.api.dto.recharge.WalletRechargeApplyDto;
|
||||
import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity;
|
||||
import com.bsd.pjcloud.wallet.api.entity.recharge.WalletRechargeApplyEntity;
|
||||
@@ -65,9 +66,15 @@ public interface WalletRechargeApplyMapper extends PjcloudBaseMapper<WalletRecha
|
||||
WalletRechargeApplyEntity::getProcessTime,
|
||||
ObjectUtil.isNotEmpty(dto.getProcessTimeList()) ? dto.getProcessTimeList()[0] : null,
|
||||
ObjectUtil.isNotEmpty(dto.getProcessTimeList()) ? dto.getProcessTimeList()[1] : null
|
||||
)
|
||||
.orderByDesc(WalletRechargeApplyEntity::getCreateTime)
|
||||
.orderByDesc(WalletRechargeApplyEntity::getId);
|
||||
);
|
||||
if (ObjectUtil.equals(dto.getProcessStatus(), TaskCheckStatusEnum.RESULT.getCode())) {
|
||||
wrapper.orderByDesc(WalletRechargeApplyEntity::getProcessTime)
|
||||
.orderByDesc(WalletRechargeApplyEntity::getId);
|
||||
} else {
|
||||
wrapper.orderByDesc(WalletRechargeApplyEntity::getCreateTime)
|
||||
.orderByDesc(WalletRechargeApplyEntity::getId);
|
||||
}
|
||||
|
||||
Page list = selectPageByScope(page, wrapper, DataScope.of());
|
||||
list.setRecords(BeanUtils.toBean(list.getRecords(), WalletRechargeApplyVo.class));
|
||||
return list;
|
||||
|
||||
+6
-6
@@ -344,11 +344,11 @@ public class WalletManageServiceImpl extends ServiceImpl<WalletManageMapper, Wal
|
||||
List<WalletManageBalanceVo> itemList = baseMapper.selectBalance(dto);
|
||||
if (ObjectUtil.isEmpty(itemList)) continue;
|
||||
for (WalletManageBalanceVo j : itemList) {
|
||||
j.setWalletTypeName(i.getName());
|
||||
walletList.stream().filter(v -> ObjectUtil.equals(v.getUserId(), j.getUserId())).findFirst().ifPresent(v -> {
|
||||
walletList.stream().filter(v -> ObjectUtil.equals(i.getId(), v.getWalletTypeId()) && ObjectUtil.equals(v.getUserId(), j.getUserId())).findFirst().ifPresent(v -> {
|
||||
if (ObjectUtil.isNotEmpty(j.getBalance())) {
|
||||
v.setBalance(j.getBalance());
|
||||
v.setLastTopUpTime(j.getCreateTime());
|
||||
v.setWalletTypeName(i.getName());
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -380,15 +380,15 @@ public class WalletManageServiceImpl extends ServiceImpl<WalletManageMapper, Wal
|
||||
lineNumber++;
|
||||
if (ObjectUtil.isNotEmpty(v.getBalance())) {
|
||||
balanceSum = balanceSum.add(BigDecimal.valueOf(v.getBalance()));
|
||||
v.setBalance(BigDecimal.valueOf(v.getBalance()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).intValue());
|
||||
v.setBalanceStr(BigDecimal.valueOf(v.getBalance()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString());
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(v.getTotalExpense())) {
|
||||
totalExpenseSum = totalExpenseSum.add(BigDecimal.valueOf(v.getTotalExpense()));
|
||||
v.setTotalExpense(BigDecimal.valueOf(v.getTotalExpense()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).intValue());
|
||||
v.setTotalExpenseStr(BigDecimal.valueOf(v.getTotalExpense()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString());
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(v.getTotalRecharge())) {
|
||||
totalRechargeSum = totalRechargeSum.add(BigDecimal.valueOf(v.getTotalRecharge()));
|
||||
v.setTotalRecharge(BigDecimal.valueOf(v.getTotalRecharge()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).intValue());
|
||||
v.setTotalRechargeStr(BigDecimal.valueOf(v.getTotalRecharge()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString());
|
||||
}
|
||||
}
|
||||
map.put("balanceSum", balanceSum.divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString());
|
||||
@@ -420,7 +420,7 @@ public class WalletManageServiceImpl extends ServiceImpl<WalletManageMapper, Wal
|
||||
lineNumber++;
|
||||
if (ObjectUtil.isNotEmpty(v.getBalance())) {
|
||||
balanceSum = balanceSum.add(BigDecimal.valueOf(v.getBalance()));
|
||||
v.setBalance(BigDecimal.valueOf(v.getBalance()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).intValue());
|
||||
v.setBalanceStr(BigDecimal.valueOf(v.getBalance()).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString());
|
||||
}
|
||||
}
|
||||
map.put("balanceSum", balanceSum.divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).toString());
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -58,8 +58,25 @@
|
||||
<where>
|
||||
a.del_flag = 0
|
||||
<if test="dto.walletRecordMonth != null">
|
||||
AND a.create_time = (SELECT MAX(sub.create_time) FROM wallet_transaction sub WHERE sub.user_id = a.user_id AND
|
||||
DATE_FORMAT(sub.create_time, '%Y-%m') <= #{dto.walletRecordMonth})
|
||||
AND a.create_time = (
|
||||
SELECT MAX(sub.create_time)
|
||||
FROM wallet_transaction sub
|
||||
LEFT JOIN wallet_manage wallet on wallet.id = sub.wallet_id
|
||||
WHERE sub.user_id = a.user_id
|
||||
AND DATE_FORMAT(sub.create_time, '%Y-%m') <= #{dto.walletRecordMonth}
|
||||
<if test="dto.userId != null">
|
||||
AND sub.user_id = #{dto.userId}
|
||||
</if>
|
||||
<if test="dto.userIds != null and dto.userIds.size() != 0">
|
||||
and sub.user_id in
|
||||
<foreach collection="dto.userIds" item="v" open="(" close=")" separator=",">
|
||||
#{v}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="dto.walletTypeId != null">
|
||||
AND wallet.wallet_type_id = #{dto.walletTypeId}
|
||||
</if>
|
||||
)
|
||||
</if>
|
||||
<if test="dto.userId != null">
|
||||
AND a.user_id = #{dto.userId}
|
||||
|
||||
Reference in new issue
Block a user