diff --git a/db/1000pjcloudx_thirdparty.sql b/db/1000pjcloudx_thirdparty.sql index 93fbde67b..1346cc840 100644 --- a/db/1000pjcloudx_thirdparty.sql +++ b/db/1000pjcloudx_thirdparty.sql @@ -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 -- ---------------------------- diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index 19c13bfa2..daa561236 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -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 ='硬件商品库存更新记录'; \ No newline at end of file diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/dto/BatchCompleteTaskDto.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/dto/BatchCompleteTaskDto.java new file mode 100644 index 000000000..7f983dbdb --- /dev/null +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/dto/BatchCompleteTaskDto.java @@ -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 processInstances; + + /** + * 任务本地变量 + */ + private Map taskLocalParamMap; + + + /** + * 是否成功 1是 0否 + */ + private String isSuccess; + +} diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/TaskController.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/TaskController.java index 735f407f4..9fb201efe 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/TaskController.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/TaskController.java @@ -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); + } } diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/ITaskService.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/ITaskService.java index 8779c5894..be40dd881 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/ITaskService.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/ITaskService.java @@ -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(); } diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/TaskServiceImpl.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/TaskServiceImpl.java index b0e03f9f3..86f021d66 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/TaskServiceImpl.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/TaskServiceImpl.java @@ -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 indexPageStatisticsR = flowEngineService - .querySimpleData(SecurityUtils.getUser().getId()); + /** + * 查询首页数据看板 + * + * @return + */ + @Override + public R queryTaskData() { + R 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 r = flowEngineService.queryTask(taskId, userId); - R 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 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 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 collect = objectMapper.readValue(data, new TypeReference<>() { + }); + paramMap.putAll(collect); - if (processNodeRecordAssignUser != null) { - String data = processNodeRecordAssignUser.getData(); - if (StrUtil.isNotBlank(data)) { - Map collect = objectMapper.readValue(data, new TypeReference<>() { - }); - paramMap.putAll(collect); + } + } + + } - } - } + // 当前节点数据 + Node node = nodeDataService.getNodeData(taskResultDto.getFlowId(), taskResultDto.getNodeId()).getData(); + Map formPerms = node.getFormPerms(); - } - - // 当前节点数据 - Node node = nodeDataService.getNodeData(taskResultDto.getFlowId(), taskResultDto.getNodeId()).getData(); - Map 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 formItemVOList = JSONUtil.toList(oaForms.getFormItems(), FormItemVO.class); - for (FormItemVO formItemVO : formItemVOList) { + List 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> subParamList = MapUtil.get(paramMap, id, - new cn.hutool.core.lang.TypeReference<>() { - }); - - Object value = formItemVO.getProps().getValue(); - - List> l = new ArrayList<>(); - for (Map map : subParamList) { - List 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 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 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 getAllStopProcessInstanceIdList(String processInstanceId) { - List list = processInstanceRecordService.lambdaQuery() - .eq(ProcessInstanceRecord::getParentProcessInstanceId, processInstanceId) - .list(); - - List collect = list.stream().map(w -> w.getProcessInstanceId()).collect(Collectors.toList()); - - for (ProcessInstanceRecord processInstanceRecord : list) { - List 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> subParamList = MapUtil.get(paramMap, id, + new cn.hutool.core.lang.TypeReference<>() { + }); + + Object value = formItemVO.getProps().getValue(); + + List> l = new ArrayList<>(); + for (Map map : subParamList) { + List 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 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 taskMap = (Map) queryTask(taskDto.getTaskId(), false).getData(); + List formItems = (List) taskMap.get("formItems"); + Map 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 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 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 getAllStopProcessInstanceIdList(String processInstanceId) { + List list = processInstanceRecordService.lambdaQuery() + .eq(ProcessInstanceRecord::getParentProcessInstanceId, processInstanceId) + .list(); + + List collect = list.stream().map(w -> w.getProcessInstanceId()).collect(Collectors.toList()); + + for (ProcessInstanceRecord processInstanceRecord : list) { + List allStopProcessInstanceIdList = getAllStopProcessInstanceIdList( + processInstanceRecord.getProcessInstanceId()); + + collect.addAll(allStopProcessInstanceIdList); + + } + return collect; + } } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/manager/HardDoorManagerDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/manager/HardDoorManagerDto.java new file mode 100644 index 000000000..07bb254a8 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/manager/HardDoorManagerDto.java @@ -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 { +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardManagerDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/manager/HardManagerDto.java similarity index 65% rename from pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardManagerDto.java rename to pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/manager/HardManagerDto.java index 42c6d3ce6..f1c3050e6 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardManagerDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/manager/HardManagerDto.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorManagerEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorManagerEntity.java new file mode 100644 index 000000000..ffe7283e9 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorManagerEntity.java @@ -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 { + + + /** + * 编号 + */ + @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; +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardManagerEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardManagerEntity.java similarity index 98% rename from pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardManagerEntity.java rename to pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardManagerEntity.java index 75de4e03b..f45905c58 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardManagerEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardManagerEntity.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/spu/HardSpuRepertoryEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/spu/HardSpuRepertoryEntity.java index ae8b854bb..96512745f 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/spu/HardSpuRepertoryEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/spu/HardSpuRepertoryEntity.java @@ -48,6 +48,12 @@ public class HardSpuRepertoryEntity extends Model { @Schema(description = "商品id") private Long spuId; + /** + * 更新前的库存数量 + */ + @Schema(description = "更新前的库存数量") + private Integer beforeCount; + /** * 更新库存数量 */ @@ -55,7 +61,7 @@ public class HardSpuRepertoryEntity extends Model { @Min(value = 1, message = "更新库存数量不能小于1") @Max(value = 100, message = "更新库存数量不能大于100") @Schema(description = "更新库存数量") - private Long count; + private Integer count; /** * 上架类型 diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/utils/HardUtil.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/utils/HardUtil.java index 61ff0ce34..d9021bbc8 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/utils/HardUtil.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/utils/HardUtil.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/manager/HardDoorManagerVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/manager/HardDoorManagerVo.java new file mode 100644 index 000000000..40565e1ae --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/manager/HardDoorManagerVo.java @@ -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; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardManagerVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/manager/HardManagerVo.java similarity index 84% rename from pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardManagerVo.java rename to pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/manager/HardManagerVo.java index f941ba5ab..274ba9005 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardManagerVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/manager/HardManagerVo.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/excel/HardOrderExcelVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/excel/HardOrderExcelVo.java index 8d3fe7cdf..2e5513aa5 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/excel/HardOrderExcelVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/excel/HardOrderExcelVo.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/hard/HardApiController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/hard/HardApiController.java index 9988b934b..86aee512d 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/hard/HardApiController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/hard/HardApiController.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/manager/HardDoorManagerController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/manager/HardDoorManagerController.java new file mode 100644 index 000000000..4dda3afe9 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/manager/HardDoorManagerController.java @@ -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 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 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 export(HardDoorManagerEntity hardDoorManager, Long[] ids) { + return hardDoorManagerService.list(Wrappers.lambdaQuery(hardDoorManager).in(ArrayUtil.isNotEmpty(ids), HardDoorManagerEntity::getId, ids)); + } +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardManagerController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/manager/HardManagerController.java similarity index 95% rename from pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardManagerController.java rename to pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/manager/HardManagerController.java index a251fd86e..16575c50b 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardManagerController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/manager/HardManagerController.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java index 6f5f2fa88..5892f7bf7 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java @@ -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()); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuRepertoryController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuRepertoryController.java index 24249cf50..894c97338 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuRepertoryController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuRepertoryController.java @@ -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 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardDoorManagerMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardDoorManagerMapper.java new file mode 100644 index 000000000..7623514eb --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardDoorManagerMapper.java @@ -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 { + + Page scopePageJoin(Page page, @Param("dto") HardDoorManagerDto dto, DataScope dataScope); + + HardDoorManagerVo pageJoin(@Param("hardId") Long hardId); +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardManagerMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardManagerMapper.java similarity index 92% rename from pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardManagerMapper.java rename to pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardManagerMapper.java index c8d26218f..65e6d7a87 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardManagerMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardManagerMapper.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java index 71e95df2e..efb85038f 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorManagerService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorManagerService.java new file mode 100644 index 000000000..d8ed09d6e --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorManagerService.java @@ -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 { + + Page scopePageJoin(Page page, HardDoorManagerDto dto, DataScope dataScope); + + /** + * 根据硬件id查询详情 + */ + HardDoorManagerVo getByHardId(Long hardId); + + /** + * 绑定设备 + */ + void bind(HardDoorManagerEntity dto); +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardManagerService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardManagerService.java index adfbe0d82..2b63a7a3c 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardManagerService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardManagerService.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuRepertoryService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuRepertoryService.java index f92d412bd..8092bfb6c 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuRepertoryService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuRepertoryService.java @@ -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 { Page scopePageJoin(Page page, HardSpuRepertoryDto dto, DataScope dataScope); @@ -16,4 +18,14 @@ public interface HardSpuRepertoryService extends IService list); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardInvoiceServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardInvoiceServiceImpl.java index 908863e7d..81b20fdb8 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardInvoiceServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardInvoiceServiceImpl.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/hard/HardThirdSelfZyServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/hard/HardThirdSelfZyServiceImpl.java index 4e2993986..f6c993b97 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/hard/HardThirdSelfZyServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/hard/HardThirdSelfZyServiceImpl.java @@ -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; } } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorManagerServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorManagerServiceImpl.java new file mode 100644 index 000000000..f4bfdeed2 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorManagerServiceImpl.java @@ -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 implements HardDoorManagerService { + + @Override + public Page 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); + } +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardManagerServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardManagerServiceImpl.java similarity index 95% rename from pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardManagerServiceImpl.java rename to pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardManagerServiceImpl.java index cee7939a3..70b993a36 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardManagerServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardManagerServiceImpl.java @@ -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 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)) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index 3c55591c7..dc3533fa3 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java index 31690e018..ee455f8b7 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuCategoryServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuCategoryServiceImpl.java index 789748bcd..b2acf076a 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuCategoryServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuCategoryServiceImpl.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuRepertoryServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuRepertoryServiceImpl.java index 7412cc58d..07c0f339a 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuRepertoryServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuRepertoryServiceImpl.java @@ -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 list) { + if (ObjectUtil.isEmpty(list)) return; + List spuRepertoryList = baseMapper.selectList(new LambdaQueryWrapper() + .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 list, HardSpuRepertoryDto dto) { if (ObjectUtil.isEmpty(list)) return; // 商户 List mchIds = list.stream().map(HardSpuRepertoryVo::getSpuMchId).filter(ObjectUtil::isNotEmpty).distinct().toList(); + list.forEach(v -> v.setMerchantId(v.getSpuMchId())); if (ObjectUtil.isNotEmpty(mchIds)) { List mchList = remoteMchService.getByIds(mchIds).getData(); if (ObjectUtil.isNotEmpty(mchList)) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuServiceImpl.java index 3fbe9a5a6..b8878bbfd 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuServiceImpl.java @@ -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; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardDoorManagerMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardDoorManagerMapper.xml new file mode 100644 index 000000000..3aa38cc91 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardDoorManagerMapper.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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, + + + + a.del_flag = '0' + + and a.hard_id = #{dto.hardId} + + + and a.imei like concat('%', #{dto.imei}, '%') + + + and a.power_status = #{dto.powerStatus} + + + and a.net_status = #{dto.netStatus} + + + and a.sale_status = #{dto.saleStatus} + + + + + + m.name as hardName, + m.type as hardType + from hard_door_manager a + left join hard_manager m on m.id = a.hard_id + + + + + + \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/HardManagerMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardManagerMapper.xml similarity index 92% rename from pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/HardManagerMapper.xml rename to pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardManagerMapper.xml index 7a5c2ba1d..5f34ed120 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/HardManagerMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardManagerMapper.xml @@ -1,8 +1,8 @@ - - + + diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml index 5a79ff927..34afa65fa 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml @@ -82,6 +82,9 @@ a.del_flag = '0' + + and a.order_status = #{dto.orderStatus} + and a.merchant_type = #{dto.merchantType} @@ -266,12 +269,12 @@ - s.name, + s.name as spuName, s.spu_category_id, s.hard_door_number, s.mch_id as spuMchId, diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/api/feign/RemoterThirdDoorApiService.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/api/feign/RemoterThirdDoorApiService.java new file mode 100644 index 000000000..c8b825ead --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/api/feign/RemoterThirdDoorApiService.java @@ -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 register(@RequestBody DoorRegisterDto dto); + + /** + * 设备信息绑定 + */ + @NoToken + @PostMapping("/third-door/bind") + R bind(@RequestBody DoorBindDto dto); + + /** + * 查询设备状态 + */ + @NoToken + @PostMapping("/third-door/status") + R status(@RequestBody DoorStatusDto dto); + + /** + * 设备重启 + */ + @NoToken + @PostMapping("/third-door/restart") + R restart(@RequestBody DoorRestartDto dto); + + /** + * 音量设置 + */ + @NoToken + @PostMapping("/third-door/volume") + R volume(@RequestBody DoorVolumeDto dto); + + /** + * 音量设置 + */ + @NoToken + @PostMapping("/third-door/open") + R open(@RequestBody DoorOpenDto dto); + + /** + * 音量设置 + */ + @NoToken + @PostMapping("/third-door/video") + R video(@RequestBody DoorVideoDto dto); + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/ThirdZyBizEnumType.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/ThirdZyBizEnumType.java index 87c029ff0..3d1f4a043 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/ThirdZyBizEnumType.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/ThirdZyBizEnumType.java @@ -7,7 +7,7 @@ import lombok.Getter; import java.util.Arrays; /** - * 打印状态 + * 正元接口 */ @AllArgsConstructor @Getter diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/door/ThirdDoorApiTypeEnum.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/door/ThirdDoorApiTypeEnum.java new file mode 100644 index 000000000..2d4c989ae --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/door/ThirdDoorApiTypeEnum.java @@ -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(); + } + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/door/ThordDoorApiTypeEnum.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/door/ThordDoorApiTypeEnum.java new file mode 100644 index 000000000..5dfa0f6d8 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/door/ThordDoorApiTypeEnum.java @@ -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(); + } + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorBindDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorBindDto.java new file mode 100644 index 000000000..e674bcfb1 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorBindDto.java @@ -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; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorOpenCallbackDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorOpenCallbackDto.java new file mode 100644 index 000000000..e688478f9 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorOpenCallbackDto.java @@ -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; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorOpenDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorOpenDto.java new file mode 100644 index 000000000..8d9e33398 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorOpenDto.java @@ -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; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorRegisterDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorRegisterDto.java new file mode 100644 index 000000000..c8899bb2d --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorRegisterDto.java @@ -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; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorRestartDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorRestartDto.java new file mode 100644 index 000000000..ba64fe376 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorRestartDto.java @@ -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; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorStatusDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorStatusDto.java new file mode 100644 index 000000000..2321bc044 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorStatusDto.java @@ -0,0 +1,13 @@ +package com.bsd.pjcloud.thirdparty.dto.door; + +import lombok.Data; + +@Data +public class DoorStatusDto { + + /** + * 设备编号 + */ + private String deviceCode; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorVideoCallbackDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorVideoCallbackDto.java new file mode 100644 index 000000000..fda2bb328 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorVideoCallbackDto.java @@ -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 videoList; + + @Data + public class Video { + + /** + * 摄像头号:1:主摄;2:辅摄 + */ + private Integer cameraNo; + + /** + * 视频地址 + */ + private String videoUrl; + + } + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorVideoDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorVideoDto.java new file mode 100644 index 000000000..b348a63f6 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorVideoDto.java @@ -0,0 +1,13 @@ +package com.bsd.pjcloud.thirdparty.dto.door; + +import lombok.Data; + +@Data +public class DoorVideoDto { + + /** + * 开门事件号 + */ + private String eventId; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorVolumeDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorVolumeDto.java new file mode 100644 index 000000000..aea1b72a9 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/DoorVolumeDto.java @@ -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; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/ThirdDoorLogDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/ThirdDoorLogDto.java new file mode 100644 index 000000000..337eff4c1 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/ThirdDoorLogDto.java @@ -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; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/entity/door/ThirdDoorLogEntity.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/entity/door/ThirdDoorLogEntity.java new file mode 100644 index 000000000..2c55b35b9 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/entity/door/ThirdDoorLogEntity.java @@ -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 { + + + /** + * 主键 + */ + @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; +} \ No newline at end of file diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorBaseVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorBaseVo.java new file mode 100644 index 000000000..105c6f8ec --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorBaseVo.java @@ -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); + } + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorBindVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorBindVo.java new file mode 100644 index 000000000..729079f27 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorBindVo.java @@ -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; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorOpenCallbackVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorOpenCallbackVo.java new file mode 100644 index 000000000..4e2230948 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorOpenCallbackVo.java @@ -0,0 +1,7 @@ +package com.bsd.pjcloud.thirdparty.vo.door; + +import lombok.Data; + +@Data +public class DoorOpenCallbackVo { +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorOpenVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorOpenVo.java new file mode 100644 index 000000000..c682f4cf2 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorOpenVo.java @@ -0,0 +1,18 @@ +package com.bsd.pjcloud.thirdparty.vo.door; + +import lombok.Data; + +@Data +public class DoorOpenVo { + + /** + * 开门事件号 + */ + private String eventId; + + /** + * 商户自定义开门请求号 + */ + private String outOpenNo; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorRegisterVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorRegisterVo.java new file mode 100644 index 000000000..3506eafcb --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorRegisterVo.java @@ -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; +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorRestartVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorRestartVo.java new file mode 100644 index 000000000..12dea036d --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorRestartVo.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.thirdparty.vo.door; + +import lombok.Data; + +@Data +public class DoorRestartVo { + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorStatusVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorStatusVo.java new file mode 100644 index 000000000..2e7f1a47c --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorStatusVo.java @@ -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 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; + + } + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorVideoCallbackVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorVideoCallbackVo.java new file mode 100644 index 000000000..d51a92f2f --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorVideoCallbackVo.java @@ -0,0 +1,7 @@ +package com.bsd.pjcloud.thirdparty.vo.door; + +import lombok.Data; + +@Data +public class DoorVideoCallbackVo { +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorVideoVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorVideoVo.java new file mode 100644 index 000000000..916adf997 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorVideoVo.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.thirdparty.vo.door; + +import lombok.Data; + + +@Data +public class DoorVideoVo { +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorVolumeVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorVolumeVo.java new file mode 100644 index 000000000..8e40c2c44 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorVolumeVo.java @@ -0,0 +1,7 @@ +package com.bsd.pjcloud.thirdparty.vo.door; + +import lombok.Data; + +@Data +public class DoorVolumeVo { +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports index e45bfabeb..77223a1d0 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports @@ -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 diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/DoorConfig.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/DoorConfig.java new file mode 100644 index 000000000..b95b68892 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/DoorConfig.java @@ -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; +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/door/ThirdDoorApiController.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/door/ThirdDoorApiController.java new file mode 100644 index 000000000..cd159e6b5 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/door/ThirdDoorApiController.java @@ -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 register(@RequestBody DoorRegisterDto dto) { + return R.ok(thirdDoorApiService.register(dto)); + } + + @Inner + @Operation(summary = "设备信息绑定") + @PostMapping("/bind") + public R bind(@RequestBody DoorBindDto dto) { + return R.ok(thirdDoorApiService.bind(dto)); + } + + @Inner + @Operation(summary = "查询设备状态") + @PostMapping("/status") + public R status(@RequestBody DoorStatusDto dto) { + return R.ok(thirdDoorApiService.status(dto)); + } + + @Inner + @Operation(summary = "设备重启") + @PostMapping("/restart") + public R restart(@RequestBody DoorRestartDto dto) { + return R.ok(thirdDoorApiService.restart(dto)); + } + + @Inner + @Operation(summary = "音量设置") + @PostMapping("/volume") + public R volume(@RequestBody DoorVolumeDto dto) { + return R.ok(thirdDoorApiService.volume(dto)); + } + + @Inner + @Operation(summary = "请求开锁") + @PostMapping("/open") + public R open(@RequestBody DoorOpenDto dto) { + return R.ok(thirdDoorApiService.open(dto)); + } + + @Inner + @Operation(summary = "调取另一个摄像头视频") + @PostMapping("/video") + public R video(@RequestBody DoorVideoDto dto) { + return R.ok(thirdDoorApiService.video(dto)); + } + + + /* ************************************* end 远程调用 end ************************************* */ + + + /* ************************************* start 回调 start ************************************* */ + + @Inner(value = false) + @Operation(summary = "门锁开关通知回调") + @PostMapping("/callback/open") + public R callbackOpen(@RequestBody DoorOpenCallbackDto dto) { + return R.ok(thirdDoorApiService.callbackOpen(dto)); + } + + @Inner(value = false) + @Operation(summary = "视频地址通知回调") + @PostMapping("/callback/open") + public R callbackVideo(@RequestBody DoorVideoCallbackDto dto) { + return R.ok(thirdDoorApiService.callbackVideo(dto)); + } + + @Inner(value = false) + @Operation(summary = "设备状态通知回调") + @PostMapping("/callback/open") + public R callbackStatus(@RequestBody DoorStatusDto dto) { + return R.ok(thirdDoorApiService.callbackStatus(dto)); + } + + + /* ************************************* start 回调 start ************************************* */ + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/door/ThirdDoorLogController.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/door/ThirdDoorLogController.java new file mode 100644 index 000000000..fb6b153e3 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/door/ThirdDoorLogController.java @@ -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 export(ThirdDoorLogEntity thirdDoorLog, Long[] ids) { + return thirdDoorLogService.list(Wrappers.lambdaQuery(thirdDoorLog).in(ArrayUtil.isNotEmpty(ids), ThirdDoorLogEntity::getId, ids)); + } +} \ No newline at end of file diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZyForeignController.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZyForeignController.java index 63d81cd98..4c96bc3b8 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZyForeignController.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZyForeignController.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZyMerController.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZyMerController.java index 5ea5b37f7..4b0b9d3ad 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZyMerController.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZyMerController.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZySelfController.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZySelfController.java index eb5fd2cf8..0cf55a1bd 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZySelfController.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZySelfController.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZyStrideController.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZyStrideController.java index 7fbec6780..ab90ca8a6 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZyStrideController.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/zy/ThirdZyStrideController.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/mapper/door/ThirdDoorLogMapper.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/mapper/door/ThirdDoorLogMapper.java new file mode 100644 index 000000000..17e9e1aa9 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/mapper/door/ThirdDoorLogMapper.java @@ -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 { + + default Page scopePageList(Page page, ThirdDoorLogDto dto, DataScope dataScope) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .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); + } +} \ No newline at end of file diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdDoorApiService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdDoorApiService.java new file mode 100644 index 000000000..f68b4d062 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdDoorApiService.java @@ -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); +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdDoorLogService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdDoorLogService.java new file mode 100644 index 000000000..31c840297 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdDoorLogService.java @@ -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 { + + Page scopePageList(Page page, ThirdDoorLogDto dto, DataScope dataScope); +} \ No newline at end of file diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZyForeignService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZyForeignService.java similarity index 92% rename from pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZyForeignService.java rename to pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZyForeignService.java index 2a80ce483..129f44f8c 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZyForeignService.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZyForeignService.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZyIdDictService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZyIdDictService.java similarity index 80% rename from pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZyIdDictService.java rename to pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZyIdDictService.java index 3e85ab1d7..c7556c641 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZyIdDictService.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZyIdDictService.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZyMerService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZyMerService.java similarity index 94% rename from pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZyMerService.java rename to pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZyMerService.java index 521202773..11530a464 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZyMerService.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZyMerService.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZySelfService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZySelfService.java similarity index 82% rename from pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZySelfService.java rename to pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZySelfService.java index 90cc4646b..ca702ec51 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZySelfService.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZySelfService.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZyStrideService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZyStrideService.java similarity index 94% rename from pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZyStrideService.java rename to pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZyStrideService.java index 7b50b0403..439895732 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ThirdZyStrideService.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdZyStrideService.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java new file mode 100644 index 000000000..11800e381 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java @@ -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; + } +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorLogServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorLogServiceImpl.java new file mode 100644 index 000000000..2b9279fef --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorLogServiceImpl.java @@ -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 implements ThirdDoorLogService { + + @Override + public Page scopePageList(Page page, ThirdDoorLogDto dto, DataScope dataScope) { + return baseMapper.scopePageList(page, dto, dataScope); + } +} \ No newline at end of file diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyForeignServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyForeignServiceImpl.java index 491cc6792..a095310d3 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyForeignServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyForeignServiceImpl.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyIdDictServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyIdDictServiceImpl.java index 33d8996e3..7ac9cd97c 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyIdDictServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyIdDictServiceImpl.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyMerServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyMerServiceImpl.java index ed30f5c19..21e43ca0d 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyMerServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyMerServiceImpl.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZySelfServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZySelfServiceImpl.java index a3567ea67..44ea7ef5e 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZySelfServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZySelfServiceImpl.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyStrideServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyStrideServiceImpl.java index 25e29e95b..fb1eeb683 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyStrideServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/zy/ThirdZyStrideServiceImpl.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/door/api/DoorApi.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/door/api/DoorApi.java new file mode 100644 index 000000000..f01ad9515 --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/door/api/DoorApi.java @@ -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; + } + } +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml index 87ce99714..5824833b5 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml @@ -68,4 +68,13 @@ zy: # token key # self_token_key: zy_token # token - # self_token_secret: eV3dT0oD7iX8rK4eC3jS6fU8cU5cS6mJ \ No newline at end of file + # self_token_secret: eV3dT0oD7iX8rK4eC3jS6fU8cU5cS6mJ + +# 智能柜 +door: + base-url: https://www.365e-life.net:8443/bkopenapi + app-id: + self-base-url: + +# 旷世识别 + diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/mapper/ThirdDoorLogMapper.xml b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/mapper/ThirdDoorLogMapper.xml new file mode 100644 index 000000000..d0285a8af --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/mapper/ThirdDoorLogMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/ZyTest.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/ZyTest.java index c281b5329..82419bfb6 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/ZyTest.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/test/java/com/bsd/pjcloud/admin/ZyTest.java @@ -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; diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/utils/excel/ExcelTool.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/utils/excel/ExcelTool.java index 6c3d7374b..a0cdfeacb 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/utils/excel/ExcelTool.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/utils/excel/ExcelTool.java @@ -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 getPictures(HSSFSheet sheet) throws IOException { Map map = new HashMap(); - List 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 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; } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageVo.java index 4ea23cc72..26c9536f2 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageVo.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/WalletManageVo.java @@ -50,4 +50,13 @@ public class WalletManageVo extends WalletManageEntity implements BaseUserInterf */ private LocalDateTime lastTopUpTime; + /** + * 导出相关 + */ + private String balanceStr; + + private String totalExpenseStr; + + private String totalRechargeStr; + } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java index fe828b73c..667bf45bf 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/recharge/WalletRechargeApplyMapper.java @@ -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 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 a.del_flag = 0 - 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} + + AND sub.user_id = #{dto.userId} + + + and sub.user_id in + + #{v} + + + + AND wallet.wallet_type_id = #{dto.walletTypeId} + + ) AND a.user_id = #{dto.userId}