From 44775cd2d99b5400b54bcbaaa51beb5fb4de6471 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 14 Apr 2025 11:22:14 +0800 Subject: [PATCH 01/78] =?UTF-8?q?feat:=E6=9F=9C=E5=AD=90=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_hardware.sql | 4 +- db/800pjcloudx_wallet.sql | 1 + .../hard/api/constant/HardBroadcastEnum.java | 24 +++ .../hard/api/entity/HardBroadcastEntity.java | 167 +++++++++--------- .../entity/manager/HardDoorManagerEntity.java | 9 +- .../hard/service/HardBroadcastService.java | 10 ++ .../impl/HardBroadcastServiceImpl.java | 87 ++++++++- .../manager/HardDoorManagerServiceImpl.java | 58 ++++-- .../impl/order/HardOrderServiceImpl.java | 22 ++- .../resources/mapper/HardBroadcastMapper.xml | 6 +- .../mapper/manager/HardDoorManagerMapper.xml | 2 + .../thirdparty/vo/door/DoorStatusVo.java | 6 +- .../service/impl/SysUserServiceImpl.java | 1 + .../api/constant/WalletCodeBizEnum.java | 1 + .../api/entity/WalletCodeUseEntity.java | 129 +++++++------- .../controller/WalletCodeUseController.java | 25 ++- .../wallet/service/WalletCodeUseService.java | 16 +- .../impl/WalletCodeUseServiceImpl.java | 108 ++++++++++- .../service/impl/WalletManageServiceImpl.java | 48 +---- 19 files changed, 509 insertions(+), 215 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardBroadcastEnum.java diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index 416b038d5..1da58c271 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -52,9 +52,10 @@ CREATE TABLE hard_door_manager power_status int DEFAULT NULL COMMENT '1:通电;2:断电', net_status int DEFAULT NULL COMMENT '在线状态。1:在线;2:离线', sale_status int DEFAULT NULL COMMENT '售卖状态。1:在售;2:停售', + sim_sn varchar(32) NOT NULL COMMENT 'sim 卡号。设备有上报会返回,若一次上报都没有,则返回 null', 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', + signal_time datetime 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 '创建人', @@ -266,6 +267,7 @@ CREATE TABLE hard_broadcast user_id bigint NOT NULL COMMENT '预定用户', hard_id bigint NOT NULL COMMENT '硬件id', topic varchar(128) NOT NULL COMMENT 'mq主题', + biz_type varchar(64) NOT NULL COMMENT '关联业务类型', biz_id varchar(64) NOT NULL COMMENT '关联业务编号', title varchar(64) NOT NULL COMMENT '预定标题', content varchar(128) NOT NULL COMMENT '广播内容', diff --git a/db/800pjcloudx_wallet.sql b/db/800pjcloudx_wallet.sql index e32f569cb..ac38462b1 100644 --- a/db/800pjcloudx_wallet.sql +++ b/db/800pjcloudx_wallet.sql @@ -415,6 +415,7 @@ CREATE TABLE wallet_code_use status char(1) DEFAULT '0' NOT NULL COMMENT '是否使用', code varchar(1024) DEFAULT NULL COMMENT '二维码', code_content varchar(1024) DEFAULT NULL COMMENT '二维码内容', + short_code varchar(32) DEFAULT '' COMMENT '短码', use_time timestamp NULL COMMENT '使用时间', create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', create_time datetime DEFAULT NULL COMMENT '创建时间', diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardBroadcastEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardBroadcastEnum.java new file mode 100644 index 000000000..208d2a45f --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardBroadcastEnum.java @@ -0,0 +1,24 @@ +package com.bsd.pjcloud.hard.api.constant; + +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 硬件广播类型 + */ +@AllArgsConstructor +@Getter +public enum HardBroadcastEnum { + OFFLINE_CANTEEN_RESERVE("1", "线下食堂订餐广播"), + ; + private final String type; + private final String description; + + public static HardBroadcastEnum 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-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardBroadcastEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardBroadcastEntity.java index 3ef0b6c53..25a26116f 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardBroadcastEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardBroadcastEntity.java @@ -3,14 +3,17 @@ package com.bsd.pjcloud.hard.api.entity; 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 lombok.*; import com.bsd.pjcloud.common.core.util.TenantTable; + import java.time.LocalDateTime; /** * 设备广播 */ +@Builder +@AllArgsConstructor +@NoArgsConstructor @Data @TenantTable @TableName("hard_broadcast") @@ -19,118 +22,124 @@ import java.time.LocalDateTime; public class HardBroadcastEntity extends Model { - /** - * 编号 - */ + /** + * 编号 + */ @TableId(type = IdType.ASSIGN_ID) - @Schema(description="编号") + @Schema(description = "编号") private Long id; - /** - * 预定用户 - */ - @Schema(description="预定用户") + /** + * 预定用户 + */ + @Schema(description = "预定用户") private Long userId; - /** - * 硬件id - */ - @Schema(description="硬件id") + /** + * 硬件id + */ + @Schema(description = "硬件id") private Long hardId; - /** - * mq主题 - */ - @Schema(description="mq主题") + /** + * mq主题 + */ + @Schema(description = "mq主题") private String topic; - /** - * 关联业务编号 - */ - @Schema(description="关联业务编号") + /** + * 业务类型 + */ + @Schema(description = "业务类型") + private String bizType; + + /** + * 关联业务编号 + */ + @Schema(description = "关联业务编号") private String bizId; - /** - * 预定标题 - */ - @Schema(description="预定标题") + /** + * 预定标题 + */ + @Schema(description = "预定标题") private String title; - /** - * 广播内容 - */ - @Schema(description="广播内容") + /** + * 广播内容 + */ + @Schema(description = "广播内容") private String content; - /** - * 当前广播次数 - */ - @Schema(description="当前广播次数") + /** + * 当前广播次数 + */ + @Schema(description = "当前广播次数") private Integer broadcastCount; - /** - * 最大广播次数 - */ - @Schema(description="最大广播次数") + /** + * 最大广播次数 + */ + @Schema(description = "最大广播次数") private Integer broadcastMaxCount; - /** - * 是否广播语音 - */ - @Schema(description="是否广播语音") + /** + * 是否广播语音 + */ + @Schema(description = "是否广播语音") private String isBroadcast; - /** - * 是否完成 - */ - @Schema(description="是否完成") + /** + * 是否完成 + */ + @Schema(description = "是否完成") private String isDone; - /** - * 完成时间 - */ - @Schema(description="完成时间") + /** + * 完成时间 + */ + @Schema(description = "完成时间") private LocalDateTime isDoneTime; - /** - * 创建人 - */ - @TableField(fill = FieldFill.INSERT) - @Schema(description="创建人") + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建人") private String createBy; - /** - * 创建时间 - */ - @TableField(fill = FieldFill.INSERT) - @Schema(description="创建时间") + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建时间") private LocalDateTime createTime; - /** - * 修改人 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改人") + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改人") private String updateBy; - /** - * 修改时间 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改时间") + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改时间") private LocalDateTime updateTime; - /** - * 删除标记 - */ + /** + * 删除标记 + */ @TableLogic - @TableField(fill = FieldFill.INSERT) - @Schema(description="删除标记") + @TableField(fill = FieldFill.INSERT) + @Schema(description = "删除标记") private String delFlag; - /** - * 租户ID - */ - @Schema(description="租户ID") + /** + * 租户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/manager/HardDoorManagerEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorManagerEntity.java index fe36eee33..5ce14a52c 100644 --- 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 @@ -7,6 +7,7 @@ import lombok.*; import com.bsd.pjcloud.common.core.util.TenantTable; import java.time.LocalDateTime; +import java.util.List; /** * 智能柜设置 @@ -89,6 +90,12 @@ public class HardDoorManagerEntity extends Model { @Schema(description = "售卖状态。1:在售;2:停售") private Integer saleStatus; + /** + * sim 卡号。设备有上报会返回,若一次上报都没有,则返回 null。 + */ + @Schema(description = "sim 卡号。设备有上报会返回,若一次上报都没有,则返回 null。") + private String simSn; + /** * sim 信号强度。大于-95 表示信号强度好;-95 到-105 表示信号强度中等;小于-105 表示信号差; */ @@ -105,7 +112,7 @@ public class HardDoorManagerEntity extends Model { * sim 信号值更新时间。yyyy-MM-dd HH:mm:ss */ @Schema(description = "sim 信号值更新时间。yyyy-MM-dd HH:mm:ss") - private Integer signalTime; + private LocalDateTime signalTime; /** * 货柜列表JSON diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardBroadcastService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardBroadcastService.java index eb5bf30b9..929a1c0c9 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardBroadcastService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardBroadcastService.java @@ -5,10 +5,20 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.hard.api.dto.HardBroadcastDto; import com.bsd.pjcloud.hard.api.entity.HardBroadcastEntity; +import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.vo.HardBroadcastVo; public interface HardBroadcastService extends IService { Page scopePageJoin(Page page, HardBroadcastDto dto, DataScope dataScope); + /** + * 添加线下食堂预约订单广播 + */ + void addReserveOrderTask(HardOrderEntity orderdetail); + + /** + * 完成硬件广播 + */ + void doneBroadcast(HardOrderEntity orderdetail); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardBroadcastServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardBroadcastServiceImpl.java index 68ceba6f1..f678793cf 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardBroadcastServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardBroadcastServiceImpl.java @@ -1,20 +1,25 @@ package com.bsd.pjcloud.hard.service.impl; 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.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; import com.bsd.pjcloud.admin.api.vo.UserVO; +import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.hard.api.constant.HardBroadcastEnum; +import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; +import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.dto.HardBroadcastDto; import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto; import com.bsd.pjcloud.hard.api.entity.HardBroadcastEntity; import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity; +import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.utils.HardUtil; -import com.bsd.pjcloud.hard.api.vo.HardAuthVo; import com.bsd.pjcloud.hard.api.vo.HardBroadcastVo; import com.bsd.pjcloud.hard.mapper.HardBroadcastMapper; import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper; @@ -36,6 +41,8 @@ import java.util.List; @Service public class HardBroadcastServiceImpl extends ServiceImpl implements HardBroadcastService { + static private final String TAG = "硬件广播"; + private final HardManagerMapper hardManagerMapper; private final RemoteUserService remoteUserService; @@ -47,6 +54,84 @@ public class HardBroadcastServiceImpl extends ServiceImpl() + .eq(HardBroadcastEntity::getBizId, orderdetail.getId()) + ); + if (ObjectUtil.isNotEmpty(broadcastDetail)) { + log.error("|{}|addReserveOrderTask发送mq消息失败,广播已存在|{}|", TAG, orderdetail.getId()); + return; + } + // 查询设备 + + HardBroadcastEntity saveObj = HardBroadcastEntity.builder() + .userId(orderdetail.getUserId()) + .hardId(orderdetail.getHardId()) + .topic("") + .bizType(HardBroadcastEnum.OFFLINE_CANTEEN_RESERVE.getType()) + .bizId(String.valueOf(orderdetail.getId())) + .title(HardBroadcastEnum.OFFLINE_CANTEEN_RESERVE.getDescription()) + .content("") + .broadcastCount(0) + .broadcastMaxCount(20) + .isBroadcast(YesNoEnum.YES.getCode()) + .isDone(YesNoEnum.NO.getCode()) + .build(); + baseMapper.insert(saveObj); + } + + /** + * 完成硬件广播 + */ + @Override + public void doneBroadcast(HardOrderEntity orderdetail) { + if (ObjectUtil.isEmpty(orderdetail)) return; + HardTypeEnum hardTypeEnum = HardTypeEnum.valueOfByType(orderdetail.getSysType()); + if (ObjectUtil.isEmpty(orderdetail)) { + log.error("|{}|doneBroadcast发送mq消息失败,设备类型错误hardType不存在hardType|{}|", TAG, orderdetail.getSysType()); + return; + } + if (ObjectUtil.notEqual(hardTypeEnum, HardTypeEnum.CANTEEN)) return; + HardOrderTypeEnum hardOrderType = HardOrderTypeEnum.valueOfByType(orderdetail.getOrderType()); + if (ObjectUtil.isEmpty(hardOrderType)) { + log.error("|{}|doneBroadcast发送mq消息失败,订餐类型错误hardType不存在hardType|{}|", TAG, orderdetail.getOrderType()); + return; + } + if (ObjectUtil.notEqual(hardOrderType, HardOrderTypeEnum.RESERVE)) return; + HardBroadcastEntity broadcastDetail = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(HardBroadcastEntity::getBizId, orderdetail.getId()) + ); + if (ObjectUtil.isEmpty(broadcastDetail)) { + log.error("|{}|doneBroadcast发送mq消息失败,广播不存在|{}|", TAG, orderdetail.getId()); + return; + } + HardBroadcastEntity updateObj = HardBroadcastEntity.builder() + .id(broadcastDetail.getId()) + .isBroadcast(YesNoEnum.NO.getCode()) + .isDone(YesNoEnum.YES.getCode()) + .isDoneTime(orderdetail.getCreateTime()) + .build(); + baseMapper.updateById(updateObj); + } + private void disposeList(List list, HardBroadcastDto dto) { if (ObjectUtil.isEmpty(list)) return; // 设备 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 index 965bea5b2..f65d6c432 100644 --- 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 @@ -1,6 +1,7 @@ package com.bsd.pjcloud.hard.service.impl.manager; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.common.data.datascope.DataScope; @@ -11,12 +12,10 @@ 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 com.bsd.pjcloud.thirdparty.api.feign.RemoterThirdDoorApiService; -import com.bsd.pjcloud.thirdparty.dto.door.DoorBindDto; -import com.bsd.pjcloud.thirdparty.dto.door.DoorRegisterDto; -import com.bsd.pjcloud.thirdparty.dto.door.DoorVideoDto; -import com.bsd.pjcloud.thirdparty.dto.door.DoorVolumeDto; +import com.bsd.pjcloud.thirdparty.dto.door.*; import com.bsd.pjcloud.thirdparty.vo.door.DoorBindVo; import com.bsd.pjcloud.thirdparty.vo.door.DoorRegisterVo; +import com.bsd.pjcloud.thirdparty.vo.door.DoorStatusVo; import com.bsd.pjcloud.thirdparty.vo.door.DoorVolumeVo; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -59,24 +58,18 @@ public class HardDoorManagerServiceImpl extends ServiceImpl carList = hardCarService.getByParentCarId(dto.getCarParentId()); @@ -345,6 +343,8 @@ public class HardOrderServiceImpl extends ServiceImpl { + HardOrderTypeEnum hardOrderType = HardOrderTypeEnum.valueOfByType(orderdetail.getOrderType()); + if (ObjectUtil.isEmpty(hardTypeEnum)) { + log.error("|{}|发送mq消息失败,订餐类型错误hardType不存在hardType|{}|", TAG, orderdetail.getOrderType()); + return; + } + // 发送订餐mq + if (ObjectUtil.equals(hardOrderType, HardOrderTypeEnum.RESERVE)) { + hardBroadcastService.addReserveOrderTask(orderdetail); + } + } } } catch (Exception e) { + // 不返回错误 log.info("|{}|发送mq消息成功,意外的错误error|{}|", TAG, e.getMessage()); } } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/HardBroadcastMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/HardBroadcastMapper.xml index af902b355..ff348dcc2 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/HardBroadcastMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/HardBroadcastMapper.xml @@ -7,6 +7,7 @@ + @@ -28,6 +29,7 @@ a.user_id, a.hard_id, a.topic, + a.biz_type, a.biz_id, a.title, a.content, @@ -52,6 +54,9 @@ and a.hard_id = #{dto.hardId} + + and a.biz_type = #{dto.bizType} + and a.biz_id = #{dto.bizId} @@ -77,5 +82,4 @@ - \ No newline at end of file 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 index 5b66bd7e2..5ffe2aa35 100644 --- 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 @@ -14,6 +14,7 @@ + @@ -39,6 +40,7 @@ a.power_status, a.net_status, a.sale_status, + a.sim_sn, a.signal_intensity, a.signal_ratio, a.signal_time, 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 index d2bb00954..6e42eb029 100644 --- 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 @@ -59,10 +59,10 @@ public class DoorStatusVo extends DoorBaseInnerVo { /** * 货柜列表 */ - private List cabinetList; + private List cabinetStatusList; @Data - public class Cabinet { + public static class Cabinet { /** * 货柜号(1,2) @@ -72,7 +72,7 @@ public class DoorStatusVo extends DoorBaseInnerVo { /** * 锁在线1:在线;2:离线 */ - private Integer isLockOnline; + private String isLockOnline; /** * 锁状态1:锁关;2:锁开 diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java index 4066c95a9..420e03e23 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java @@ -78,6 +78,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.cache.Cache; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Caching; import org.springframework.context.annotation.Lazy; import org.springframework.mock.web.MockMultipartFile; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletCodeBizEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletCodeBizEnum.java index 3d415b576..91f0f6093 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletCodeBizEnum.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/WalletCodeBizEnum.java @@ -13,6 +13,7 @@ public enum WalletCodeBizEnum { FOREIGN("2", "外来人员"), CANTEEN_RESERVE("3", "食堂线上预订"), SUPERMARKET_RESERVE("4", "超市线上预订"), + USER_WALLET("5", "用户钱包二维码"), ; private final String code; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletCodeUseEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletCodeUseEntity.java index 0a1b98f9e..26d1d08cb 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletCodeUseEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/WalletCodeUseEntity.java @@ -5,6 +5,7 @@ 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; /** @@ -24,94 +25,100 @@ import java.time.LocalDateTime; public class WalletCodeUseEntity extends Model { - /** - * 编号 - */ + /** + * 编号 + */ @TableId(type = IdType.ASSIGN_ID) - @Schema(description="编号") + @Schema(description = "编号") private Long id; - /** - * 用户id - */ - @Schema(description="用户id") + /** + * 用户id + */ + @Schema(description = "用户id") private Long userId; - /** - * 类型 - */ - @Schema(description="类型") + /** + * 类型 + */ + @Schema(description = "类型") private String bizType; - /** - * 类型关联id - */ - @Schema(description="类型关联id") + /** + * 类型关联id + */ + @Schema(description = "类型关联id") private Long bizId; - /** - * 是否使用 - */ - @Schema(description="是否使用") + /** + * 是否使用 + */ + @Schema(description = "是否使用") private String status; - /** - * 二维码 - */ - @Schema(description="二维码") + /** + * 二维码 + */ + @Schema(description = "二维码") private String code; - /** - * 二维码内容 - */ - @Schema(description="二维码内容") + /** + * 二维码内容 + */ + @Schema(description = "二维码内容") private String codeContent; - /** - * 使用时间 - */ - @Schema(description="使用时间") + /** + * 短码 + */ + @Schema(description = "短码") + private String shortCode; + + /** + * 使用时间 + */ + @Schema(description = "使用时间") private LocalDateTime useTime; - /** - * 创建人 - */ - @TableField(fill = FieldFill.INSERT) - @Schema(description="创建人") + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建人") private String createBy; - /** - * 创建时间 - */ - @TableField(fill = FieldFill.INSERT) - @Schema(description="创建时间") + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建时间") private LocalDateTime createTime; - /** - * 修改人 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改人") + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改人") private String updateBy; - /** - * 修改时间 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改时间") + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改时间") private LocalDateTime updateTime; - /** - * 删除标记 - */ + /** + * 删除标记 + */ @TableLogic - @TableField(fill = FieldFill.INSERT) - @Schema(description="删除标记") + @TableField(fill = FieldFill.INSERT) + @Schema(description = "删除标记") private String delFlag; - /** - * 租户ID - */ - @Schema(description="租户ID") + /** + * 租户ID + */ + @Schema(description = "租户ID") private Long tenantId; } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletCodeUseController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletCodeUseController.java index 332b1a7d1..8cabfb93f 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletCodeUseController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletCodeUseController.java @@ -7,7 +7,6 @@ import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.wallet.api.constant.WalletCodeBizEnum; import com.bsd.pjcloud.wallet.api.dto.WalletCodeUseDto; import com.bsd.pjcloud.wallet.api.entity.WalletCodeUseEntity; -import com.bsd.pjcloud.wallet.api.vo.WalletCodeUseVo; import com.bsd.pjcloud.wallet.service.WalletCodeUseService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -33,24 +32,37 @@ public class WalletCodeUseController { private final WalletCodeUseService walletCodeUseService; /* ************************************* start 远程调用 start ************************************* */ + + /** + * 核销二维码 + */ @Inner @GetMapping("/cancel-code") public R cancelCode(@RequestParam Long id) { return R.ok(walletCodeUseService.cancelCode(id)); } + /** + * 是否核销 + */ @Inner @GetMapping("/is-cancel-code") public R isCancelCode(@RequestParam Long id) { return R.ok(walletCodeUseService.isCancelCode(id)); } + /** + * 生成二维码 + */ @Inner @GetMapping("/generate-code") public R generateCode(@RequestParam Long id, @RequestParam Long userId, @RequestParam WalletCodeBizEnum walletCodeBiz, @RequestParam Integer count) { return R.ok(walletCodeUseService.generate(id, userId, walletCodeBiz, count)); } + /** + * 根据ids查询 + */ @Inner @GetMapping("/get-by-biz-ids") public R> getByBizIds(@RequestParam List ids) { @@ -60,6 +72,9 @@ public class WalletCodeUseController { return R.ok(list); } + /** + * 根据id查询 + */ @Inner @GetMapping("/get-by-biz-id") public R getByBizId(@RequestParam Long id) { @@ -78,6 +93,14 @@ public class WalletCodeUseController { } /* ************************************* end app end ************************************* */ + /* ************************************* start android start ************************************* */ + @Operation(summary = "根据短码查询加密信息", description = "根据短码查询加密信息") + @GetMapping("/ad/by-short-code") + public R adByShortCode(@RequestParam String shortCode) { + return R.ok(walletCodeUseService.getByShortCode(shortCode)); + } + /* ************************************* end android end ************************************* */ + @Operation(summary = "二维码列表", description = "二维码列表") @GetMapping("/code-list") public R codeList(@ParameterObject Page page, @ParameterObject WalletCodeUseDto dto) { diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletCodeUseService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletCodeUseService.java index 81821a017..f0dec9a0d 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletCodeUseService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletCodeUseService.java @@ -10,22 +10,30 @@ import jakarta.validation.constraints.NotNull; public interface WalletCodeUseService extends IService { + /** + * 生成二维码 + */ Boolean generate(@NotNull Long id, @NotNull Long userId, @NotNull WalletCodeBizEnum walletCodeBizEnum, @NotNull Integer count); + /** + * 生成钱包二码 + */ + WalletCodeUseEntity generateWallet(@NotNull Long walletId); + Page pageJoin(Page page, WalletCodeUseDto dto); /** * 核销二维码 - * @param id useCodeId - * @return */ Boolean cancelCode(Long id); /** * 二维码是否核销 - * @param id useCodeId - * @return */ Boolean isCancelCode(Long id); + /** + * 根据短码查询加密信息 + */ + String getByShortCode(String shortCode); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletCodeUseServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletCodeUseServiceImpl.java index 8cec2034b..a39b48a63 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletCodeUseServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletCodeUseServiceImpl.java @@ -1,32 +1,42 @@ package com.bsd.pjcloud.wallet.service.impl; +import cn.hutool.core.codec.Base64; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.extra.spring.SpringUtil; import com.alibaba.fastjson.JSON; 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.dto.UserInfo; import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.feign.RemoteFileService; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; +import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.QRCodeImageGenerator; import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.hard.api.dto.code.QRCodeExtraDto; import com.bsd.pjcloud.wallet.api.constant.WalletCodeBizEnum; import com.bsd.pjcloud.wallet.api.dto.WalletCodeUseDto; import com.bsd.pjcloud.wallet.api.entity.WalletCodeUseEntity; +import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.vo.WalletCodeUseVo; +import com.bsd.pjcloud.wallet.api.vo.WalletSettingVo; import com.bsd.pjcloud.wallet.mapper.WalletCodeUseMapper; import com.bsd.pjcloud.wallet.service.WalletCodeUseService; 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.code.QRCodeDto; import com.bsd.pjcloud.hard.api.utils.HardUtil; +import com.bsd.pjcloud.wallet.service.WalletManageService; +import com.bsd.pjcloud.wallet.service.WalletSettingService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.seata.spring.annotation.GlobalTransactional; +import org.springframework.context.annotation.Lazy; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -35,6 +45,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayInputStream; import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -53,9 +64,16 @@ public class WalletCodeUseServiceImpl extends ServiceImpl() + .eq(WalletCodeUseEntity::getUserId, wallet.getUserId()) + .eq(WalletCodeUseEntity::getBizType, WalletCodeBizEnum.USER_WALLET.getCode()) + .eq(WalletCodeUseEntity::getBizId, wallet.getId()) + ); + String shortCode = generateShortCode(encodeJson); + WalletCodeUseEntity codeUseEntity = WalletCodeUseEntity.builder() + .userId(wallet.getUserId()) + .bizType(WalletCodeBizEnum.USER_WALLET.getCode()) + .bizId(wallet.getId()) + .status(YesNoEnum.NO.getCode()) + .code("") + .codeContent(encodeJson) + .shortCode(shortCode) + .build(); + baseMapper.insert(codeUseEntity); + return codeUseEntity; + } + + @Override public Page pageJoin(Page page, WalletCodeUseDto dto) { Page list = baseMapper.pageJoin(page, dto); @@ -126,4 +200,34 @@ public class WalletCodeUseServiceImpl extends ServiceImpl() + .eq(WalletCodeUseEntity::getShortCode, shortCode) + .orderByDesc(WalletCodeUseEntity::getCreateTime) + .orderByDesc(WalletCodeUseEntity::getId) + .last("limit 1") + ); + return detail.getCodeContent(); + } + + // 生成短码 + public String generateShortCode(String codeContent) { + while (true) { + String shortCode = DigestUtils.md5Hex(codeContent); + // 判断code是否存在 + Long count = baseMapper.selectCount(new LambdaQueryWrapper().eq(WalletCodeUseEntity::getShortCode, shortCode)); + if (count == 0) { + return shortCode; + } + } + } + + private WalletCodeUseServiceImpl getSelf() { + return SpringUtil.getBean(getClass()); + } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java index 0e905f96f..c6aeff5cd 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java @@ -4,9 +4,7 @@ import cn.hutool.core.codec.Base64; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.io.resource.ResourceUtil; -import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.ZipUtil; import cn.hutool.extra.spring.SpringUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; @@ -25,29 +23,20 @@ import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; import com.bsd.pjcloud.common.core.constant.CacheConstants; import com.bsd.pjcloud.common.core.constant.CommonRoleConstant; -import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; 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.data.datascope.DataScope; import com.bsd.pjcloud.common.data.resolver.ParamResolver; -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.code.QRCodeDto; -import com.bsd.pjcloud.hard.api.dto.code.QRCodeExtraDto; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; import com.bsd.pjcloud.wallet.api.dto.WalletManageBalanceDto; import com.bsd.pjcloud.wallet.api.dto.WalletManageDto; import com.bsd.pjcloud.wallet.api.dto.WalletTypeDto; -import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; -import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; -import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; -import com.bsd.pjcloud.wallet.api.entity.WalletTypeEntity; +import com.bsd.pjcloud.wallet.api.entity.*; import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletManageBalanceVo; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; -import com.bsd.pjcloud.wallet.api.vo.WalletSettingVo; import com.bsd.pjcloud.wallet.mapper.WalletManageMapper; import com.bsd.pjcloud.wallet.mapper.WalletTransactionMapper; import com.bsd.pjcloud.wallet.mapper.WalletTypeMapper; @@ -65,8 +54,6 @@ import org.springframework.validation.annotation.Validated; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; -import java.time.LocalDateTime; -import java.time.ZoneId; import java.util.*; /** @@ -86,7 +73,7 @@ public class WalletManageServiceImpl extends ServiceImpl Date: Mon, 14 Apr 2025 11:42:43 +0800 Subject: [PATCH 02/78] =?UTF-8?q?feat:=E8=AE=BE=E5=A4=87=E9=9F=B3=E9=87=8F?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_hardware.sql | 2 ++ .../hard/api/dto/spu/HardPutawayDto.java | 21 +++++++++++++++++++ .../entity/manager/HardDoorManagerEntity.java | 12 +++++++++++ .../manager/HardDoorManagerController.java | 1 - .../controller/spu/HardSpuController.java | 8 +++++++ .../pjcloud/hard/service/HardSpuService.java | 6 ++++++ .../manager/HardDoorManagerServiceImpl.java | 7 +++++++ .../service/impl/spu/HardSpuServiceImpl.java | 9 ++++++++ .../mapper/manager/HardDoorManagerMapper.xml | 4 ++++ 9 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/HardPutawayDto.java diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index 1da58c271..061634297 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -58,6 +58,8 @@ CREATE TABLE hard_door_manager signal_time datetime DEFAULT NULL COMMENT 'sim 信号值更新时间。yyyy-MM-dd HH:mm:ss', cabinet_list text DEFAULT NULL COMMENT '货柜列表JSON', restart_time datetime DEFAULT NULL COMMENT '上次重启时间', + system_volume int DEFAULT 0 COMMENT '系统音量', + media_volume int DEFAULT 0 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 '修改人', diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/HardPutawayDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/HardPutawayDto.java new file mode 100644 index 000000000..2565a3ebd --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/HardPutawayDto.java @@ -0,0 +1,21 @@ +package com.bsd.pjcloud.hard.api.dto.spu; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class HardPutawayDto { + + /** + * 绑定id + */ + @NotNull(message = "绑定id不能为空") + private Long id; + + /** + * 商品id + */ + @NotNull(message = "商品id") + private Long hardSpuId; + +} 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 index 5ce14a52c..19ad596b4 100644 --- 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 @@ -126,6 +126,18 @@ public class HardDoorManagerEntity extends Model { @Schema(description = "上次重启时间") private LocalDateTime restartTime; + /** + * 系统音量 + */ + @Schema(description = "系统音量") + private Integer systemVolume; + + /** + * 媒体音量 + */ + @Schema(description = "媒体音量") + private Integer mediaVolume; + /** * 创建人 */ 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 index c697e13f5..48f424e17 100644 --- 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 @@ -44,7 +44,6 @@ public class HardDoorManagerController { @PostMapping("/bind") public R bind(@RequestBody HardDoorManagerEntity dto) { if (ObjectUtil.isEmpty(dto.getImei())) throw new RuntimeException("设备IMEI卡号不能为空"); - if (ObjectUtil.isEmpty(dto.getDeviceCode())) throw new RuntimeException("设备内置设备编号不能为空"); hardDoorManagerService.bind(dto); return R.ok(); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java index 462e0713c..163d0979d 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java @@ -8,6 +8,7 @@ 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.spu.HardPutawayDto; import com.bsd.pjcloud.hard.api.dto.spu.HardSpuDto; import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity; import com.bsd.pjcloud.hard.api.vo.spu.HardSpuJoinVo; @@ -52,6 +53,13 @@ public class HardSpuController { return R.ok(hardSpuService.getByCabinetNo(hardId, cabinetNo)); } + @Operation(summary = "上架", description = "上架") + @PostMapping("/putaway") + public R putaway(@RequestBody HardPutawayDto dto) { + hardSpuService.putaway(dto); + return R.ok(); + } + @Operation(summary = "下拉查询", description = "下拉查询") @GetMapping("/select") public R select(@ParameterObject Page page, @ParameterObject HardSpuDto dto) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuService.java index b02be44f2..bc4261086 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuService.java @@ -3,6 +3,7 @@ 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.spu.HardPutawayDto; import com.bsd.pjcloud.hard.api.dto.spu.HardSpuDto; import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity; import com.bsd.pjcloud.hard.api.vo.spu.HardSpuJoinVo; @@ -39,6 +40,11 @@ public interface HardSpuService extends IService { */ List>> getByCabinetNo(Long hardId, String cabinetNo); + /** + * 上架 + */ + void putaway(HardPutawayDto dto); + /** * 拉取旷世商品 */ 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 index f65d6c432..53a640a9a 100644 --- 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 @@ -98,6 +98,7 @@ public class HardDoorManagerServiceImpl extends ServiceImpl + + @@ -46,6 +48,8 @@ a.signal_time, a.cabinet_list, a.restart_time, + a.system_volume, + a.media_volume, a.create_by, a.create_time, a.update_by, From 753078984ceb51ff04b4b828455f9e18a6ad0f37 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 14 Apr 2025 15:35:44 +0800 Subject: [PATCH 03/78] =?UTF-8?q?feat:=E6=8B=89=E5=8F=96=E6=97=B7=E4=B8=96?= =?UTF-8?q?=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_hardware.sql | 11 +- .../pjcloud/hard/api/dto/spu/HardSpuDto.java | 6 - .../hard/api/entity/spu/HardSpuEntity.java | 31 ++++- .../impl/spu/HardSpuJoinServiceImpl.java | 3 +- .../service/impl/spu/HardSpuServiceImpl.java | 108 +++++++++++++++++- .../resources/mapper/spu/HardSpuMapper.xml | 12 +- .../thirdparty/vo/ks/KsBarcodeByIdsVo.java | 51 ++------- .../thirdparty/vo/ks/KsBarcodeLikeVo.java | 23 ++++ .../thirdparty/vo/ks/KsBarcodeSkuVo.java | 52 ++------- .../pjcloud/thirdparty/vo/ks/KsBaseVo.java | 2 +- .../bsd/pjcloud/thirdparty/vo/ks/KsSpuVo.java | 77 +++++++++++++ .../impl/ks/ThirdKsApiServiceImpl.java | 3 +- .../thirdparty/utils/ks/api/KsApi.java | 11 +- .../src/main/resources/application.yml | 1 - 14 files changed, 279 insertions(+), 112 deletions(-) create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/ks/KsSpuVo.java diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index 061634297..67856520d 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -317,9 +317,10 @@ DROP TABLE IF EXISTS hard_spu; CREATE TABLE hard_spu ( id bigint NOT NULL AUTO_INCREMENT COMMENT '编号', - spu_category_id bigint NOT NULL COMMENT '商品分类id', + spu_category_id bigint DEFAULT NULL COMMENT '商品分类id', name varchar(64) NOT NULL COMMENT '商品名', - pic varchar(256) NOT NULL COMMENT '商品图片', + cover varchar(256) NOT NULL COMMENT '商品封面图片', + pic varchar(1024) NOT NULL COMMENT '商品图片用于识别', price int NOT NULL COMMENT '单价(分)', sales_count int DEFAULT 0 NOT NULL COMMENT '销量', repertory_count int DEFAULT 0 NOT NULL COMMENT '库存', @@ -329,10 +330,12 @@ CREATE TABLE hard_spu specs_taste varchar(128) DEFAULT NULL COMMENT '规格-口味', specs_capacity varchar(128) DEFAULT NULL COMMENT '规格-容量', specs_weight varchar(128) DEFAULT NULL COMMENT '规格-重量', - sku_type varchar(32) DEFAULT NULL COMMENT 'sku类型,0:标准库;1:私有库 ', + sku_type varchar(32) DEFAULT NULL COMMENT 'sku类型,0:标准库;1:私有库', + ks_sku_id varchar(32) DEFAULT NULL COMMENT '旷世skuid', + ks_res_sku_id varchar(32) DEFAULT NULL COMMENT '旷世返回的业务方sku_id', ks_barcode varchar(32) DEFAULT NULL COMMENT '69码', ks_has_sub_sku varchar(128) DEFAULT NULL COMMENT '是否为集合SKU', - ks_sub_sku text DEFAULT NULL COMMENT '集合SKU的子SKU信息', + ks_sub_sku_json text DEFAULT NULL COMMENT '集合SKU的子SKU信息JSON', ks_status char(1) DEFAULT NULL COMMENT '旷世审核状态', ks_status_title varchar(64) DEFAULT NULL COMMENT '旷世审核状态标题', ks_comments varchar(512) DEFAULT NULL COMMENT '旷世审核状态描述', diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/HardSpuDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/HardSpuDto.java index dc5fbface..d5940b6d3 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/HardSpuDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/HardSpuDto.java @@ -1,18 +1,12 @@ package com.bsd.pjcloud.hard.api.dto.spu; import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity; -import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; -import lombok.NoArgsConstructor; import java.time.LocalDateTime; import java.util.List; @Data -@Builder -@AllArgsConstructor -@NoArgsConstructor public class HardSpuDto extends HardSpuEntity { private List spuIdList; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/spu/HardSpuEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/spu/HardSpuEntity.java index 0cb22e5b4..d2f959ecd 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/spu/HardSpuEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/spu/HardSpuEntity.java @@ -7,8 +7,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; -import lombok.Data; -import lombok.EqualsAndHashCode; +import lombok.*; import com.bsd.pjcloud.common.core.util.TenantTable; import java.time.LocalDateTime; @@ -16,6 +15,9 @@ import java.time.LocalDateTime; /** * 硬件商品 */ +@Builder +@AllArgsConstructor +@NoArgsConstructor @Data @TenantTable @TableName("hard_spu") @@ -46,9 +48,15 @@ public class HardSpuEntity extends Model { private String name; /** - * 商品图片 + * 商品封面图片 */ - @Schema(description = "商品图片") + @Schema(description = "商品封面图片") + private String cover; + + /** + * 商品图片用于识别 + */ + @Schema(description = "商品图片用于识别") private String pic; /** @@ -109,11 +117,24 @@ public class HardSpuEntity extends Model { /** * sku类型,0:标准库;1:私有库 + * * @see HardKsSkuTypeEnum */ @Schema(description = "sku类型,0:标准库;1:私有库") private String skuType; + /** + * 旷世skuid + */ + @Schema(description = "旷世skuid") + private String ksSkuId; + + /** + * 旷世返回的业务方sku_id + */ + @Schema(description = "旷世返回的业务方sku_id") + private String ksResSkuId; + /** * 69码 */ @@ -130,7 +151,7 @@ public class HardSpuEntity extends Model { * 是否为集合SKU */ @Schema(description = "是否为集合SKU") - private String ksSubSku; + private String ksSubSkuJson; /** * 旷世审核状态 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuJoinServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuJoinServiceImpl.java index 150416d7e..2fcc50fec 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuJoinServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuJoinServiceImpl.java @@ -42,7 +42,8 @@ public class HardSpuJoinServiceImpl extends ServiceImpl spuIds = joinList.stream().map(HardSpuJoinVo::getSpuId).toList(); // 查询商品 if (ObjectUtil.isNotEmpty(spuIds)) { - List spuList = hardSpuMapper.scopPageList(HardSpuDto.builder().build(), null); + HardSpuDto spuDto = new HardSpuDto(); + List spuList = hardSpuMapper.scopPageList(spuDto, null); for (HardSpuJoinVo v : joinList) { spuList.stream().filter(i -> ObjectUtil.equals(i.getId(), v.getSpuId())).findFirst().ifPresent(v::setSpuDetail); } 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 8cd3ea97f..5dd4697cf 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 @@ -1,15 +1,20 @@ package com.bsd.pjcloud.hard.service.impl.spu; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; 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.common.core.constant.enums.YesNoEnum; import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.hard.api.constant.spu.HardKsCheckStatusEnum; import com.bsd.pjcloud.hard.api.constant.spu.HardKsSkuTypeEnum; import com.bsd.pjcloud.hard.api.dto.spu.HardPutawayDto; import com.bsd.pjcloud.hard.api.dto.spu.HardSpuDto; import com.bsd.pjcloud.hard.api.dto.spu.HardSpuJoinDto; import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity; +import com.bsd.pjcloud.hard.api.entity.spu.HardSpuJoinEntity; import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo; import com.bsd.pjcloud.hard.api.vo.spu.HardSpuJoinVo; import com.bsd.pjcloud.hard.api.vo.spu.HardSpuVo; @@ -21,6 +26,7 @@ import com.bsd.pjcloud.hard.service.HardSpuService; import com.bsd.pjcloud.thirdparty.api.feign.RemoterThirdKsService; import com.bsd.pjcloud.thirdparty.dto.ks.KsBarcodeLikeDto; import com.bsd.pjcloud.thirdparty.vo.ks.KsBarcodeLikeVo; +import com.bsd.pjcloud.thirdparty.vo.ks.KsSpuVo; import com.bsd.pjcloud.wallet.api.feign.RemoteMchService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -38,6 +44,8 @@ import java.util.*; @Service public class HardSpuServiceImpl extends ServiceImpl implements HardSpuService { + private static final String TAG = "硬件商品"; + private final HardManagerService hardManagerService; private final HardDoorManagerService hardDoorManagerService; private final HardSpuJoinService hardSpuJoinService; @@ -115,10 +123,12 @@ public class HardSpuServiceImpl extends ServiceImpl> addMap = new HashMap<>(); addMap.put(i, storeySpu); @@ -144,16 +154,102 @@ public class HardSpuServiceImpl extends ServiceImpl spuList = new ArrayList<>(); + for (KsSpuVo i : data.getResultList()) { + try { + HardSpuEntity entity = HardSpuEntity + .builder() + .spuCategoryId(null) + .name(i.getSku_name()) + .cover(i.getCover()) + .skuType(i.getSku_type()) + .ksSkuId(i.getKs_sku_id()) + .ksResSkuId(i.getSku_id()) + .ksBarcode(i.getBarcode()) + .ksHasSubSku(i.getHas_sub_sku()) + .build(); + // 图片 + if (ObjectUtil.isNotEmpty(i.getImg_urls())) { + entity.setPic(String.join(",", i.getImg_urls())); + } + // 审核状态 + entity.setKsStatus(HardKsCheckStatusEnum.CHECK_DONE.getType()); + entity.setKsStatusTitle(HardKsCheckStatusEnum.CHECK_DONE.getDescription()); + entity.setKsComments("API同步"); + // 处理规格 + KsSpuVo.KsSpuSpecsVo specs = i.getSpecs(); + if (ObjectUtil.isNotEmpty(specs)) { + if (ObjectUtil.isNotEmpty(specs.getTaste())) entity.setSpecsTaste(specs.getTaste()); + if (ObjectUtil.isNotEmpty(specs.getCapacity())) entity.setSpecsCapacity(specs.getCapacity()); + if (ObjectUtil.isNotEmpty(specs.getWeight())) entity.setSpecsWeight(specs.getWeight()); + } + // 处理集合SKU的子SKU信息 + if (ObjectUtil.isEmpty(i.getSub_sku())) { + entity.setKsSubSkuJson(""); + spuList.add(entity); + } else { + HardSpuEntity entityCopy = BeanUtil.toBean(entity, HardSpuEntity.class); + for (KsSpuVo j : i.getSub_sku()) { + entityCopy.setKsSkuId(j.getKs_sku_id()); + entityCopy.setKsResSkuId(j.getSku_id()); + entityCopy.setKsBarcode(j.getBarcode()); + entityCopy.setName(j.getSku_name()); + entityCopy.setSkuType(j.getSku_type()); + entityCopy.setCover(i.getCover()); + entityCopy.setKsSubSkuJson(JSONUtil.toJsonStr(j.getSub_sku())); + // 图片 + if (ObjectUtil.isNotEmpty(j.getImg_urls())) { + entityCopy.setPic(String.join(",", j.getImg_urls())); + } + spuList.add(entityCopy); + } + } + } catch (Exception e) { + log.error("|{}|添加旷世商品错误|{}|", TAG, e.getMessage()); + } } + if (ObjectUtil.isNotEmpty(spuList)) { + List insertList = new ArrayList<>(); + List updateList = new ArrayList<>(); + for (HardSpuEntity i : spuList) { + HardSpuEntity entity = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(HardSpuEntity::getKsResSkuId, i.getKsResSkuId()) + .eq(HardSpuEntity::getKsSkuId, i.getKsSkuId()) + ); + if (ObjectUtil.isEmpty(entity)) { + i.setPrice(0); + i.setSalesCount(0); + i.setRepertoryCount(0); + i.setSort(0); + i.setIsDefault(YesNoEnum.YES.getCode()); + i.setStatus(YesNoEnum.YES.getCode()); + insertList.add(i); + } else { + i.setId(entity.getId()); + updateList.add(i); + } + } + if (ObjectUtil.isNotEmpty(insertList)) { + baseMapper.insert(insertList); + } + if (ObjectUtil.isNotEmpty(updateList)) { + baseMapper.updateById(updateList); + } + } + return false; } /** diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/spu/HardSpuMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/spu/HardSpuMapper.xml index 0fe7da6d4..71329ef84 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/spu/HardSpuMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/spu/HardSpuMapper.xml @@ -6,6 +6,7 @@ + @@ -17,9 +18,11 @@ + + - + @@ -35,6 +38,7 @@ select a.id, a.spu_category_id, a.name, + a.cover, a.pic, a.price, a.sales_count, @@ -46,9 +50,11 @@ a.specs_capacity, a.specs_weight, a.sku_type, + a.ks_res_sku_id, + a.ks_sku_id, a.ks_barcode, a.ks_has_sub_sku, - a.ks_sub_sku, + a.ks_sub_sku_json, a.ks_status, a.ks_status_title, a.ks_comments, @@ -106,7 +112,7 @@ \ No newline at end of file From 796985f3c619ee784a509326dfdc98c11c4d318a Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 17 Apr 2025 14:25:38 +0800 Subject: [PATCH 27/78] =?UTF-8?q?feat:=E8=B4=AD=E4=B9=B0=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pjcloud/hard/api/dto/HardDoorFlowDto.java | 9 ++++ .../pjcloud/hard/api/vo/HardDoorFlowVo.java | 30 ++++++++++- .../controller/HardDoorFlowController.java | 14 +++--- .../hard/mapper/HardDoorFlowMapper.java | 18 +++++++ .../hard/service/HardDoorFlowService.java | 9 +++- .../service/impl/HardAuthServiceImpl.java | 2 +- .../service/impl/HardDoorFlowServiceImpl.java | 50 ++++++++++++++++++- 7 files changed, 120 insertions(+), 12 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowDto.java diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowDto.java new file mode 100644 index 000000000..8a9a6421d --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowDto.java @@ -0,0 +1,9 @@ +package com.bsd.pjcloud.hard.api.dto; + +import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity; +import lombok.Data; + +@Data +public class HardDoorFlowDto extends HardDoorFlowEntity { + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardDoorFlowVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardDoorFlowVo.java index f41ff9955..581280235 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardDoorFlowVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardDoorFlowVo.java @@ -1,8 +1,36 @@ package com.bsd.pjcloud.hard.api.vo; +import com.bsd.pjcloud.admin.api.vo.base.BaseUserDeptInterface; import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity; +import com.bsd.pjcloud.hard.api.vo.base.BaseHardInterface; import lombok.Data; +import java.util.List; + @Data -public class HardDoorFlowVo extends HardDoorFlowEntity { +public class HardDoorFlowVo extends HardDoorFlowEntity implements BaseHardInterface, BaseUserDeptInterface { + + /** + * 设备相关 + */ + private String hardName; + + private String hardType; + + private List hardTypeCodes; + + /** + * 用户相关 + */ + private String username; + + private String userMobile; + + private String userAvatar; + + private Long userDeptId; + + private String userDeptName; + + } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java index 34e998eea..416f5d392 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java @@ -2,16 +2,17 @@ package com.bsd.pjcloud.hard.controller; 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.common.security.annotation.Inner; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.hard.api.constant.HardDoorFlowEnum; import com.bsd.pjcloud.hard.api.constant.HardDoorOpenTypeEnum; +import com.bsd.pjcloud.hard.api.dto.HardDoorFlowDto; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowOpenDto; import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity; import com.bsd.pjcloud.hard.service.HardDoorFlowService; @@ -31,7 +32,6 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.Objects; /** * 智能柜流程 @@ -114,12 +114,12 @@ public class HardDoorFlowController { return R.ok(); } - @Operation(summary = "分页查询", description = "分页查询") - @GetMapping("/page") + @Operation(summary = "复杂查询", description = "复杂查询") + @GetMapping("/page-join") @PreAuthorize("@pms.hasPermission('dzc_hardDoorFlow_view')") - public R getHardDoorFlowPage(@ParameterObject Page page, @ParameterObject HardDoorFlowEntity hardDoorFlow) { - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - return R.ok(hardDoorFlowService.page(page, wrapper)); + public R pageJoin(@ParameterObject Page page, @ParameterObject HardDoorFlowDto dto) { + DataScope dataScope = null; + return R.ok(hardDoorFlowService.scopePageJoin(page, dto, dataScope)); } @Operation(summary = "通过id查询", description = "通过id查询") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java index 2d71c9878..c36d4a6a1 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java @@ -1,11 +1,29 @@ package com.bsd.pjcloud.hard.mapper; +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.hard.api.dto.HardDoorFlowDto; import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity; +import com.bsd.pjcloud.hard.api.vo.HardDoorFlowVo; +import com.github.yulichang.query.MPJLambdaQueryWrapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface HardDoorFlowMapper extends PjcloudBaseMapper { + default Page scopePageJoin(Page page, HardDoorFlowDto dto, DataScope dataScope) { + MPJLambdaQueryWrapper wrapper = new MPJLambdaQueryWrapper() + .selectAll(HardDoorFlowEntity.class) + .eq(ObjectUtil.isNotEmpty(dto.getUserId()), HardDoorFlowEntity::getUserId, dto.getUserId()) + .eq(ObjectUtil.isNotEmpty(dto.getBizType()), HardDoorFlowEntity::getBizType, dto.getBizType()) + .eq(ObjectUtil.isNotEmpty(dto.getHardDoorId()), HardDoorFlowEntity::getHardDoorId, dto.getHardDoorId()) + .eq(ObjectUtil.isNotEmpty(dto.getCabinetNo()), HardDoorFlowEntity::getCabinetNo, dto.getCabinetNo()) + .eq(ObjectUtil.isNotEmpty(dto.getOrderId()), HardDoorFlowEntity::getOrderId, dto.getOrderId()) + .eq(ObjectUtil.isNotEmpty(dto.getIsOpen()), HardDoorFlowEntity::getIsOpen, dto.getIsOpen()); + return selectJoinPage(page, HardDoorFlowVo.class, wrapper); + } } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java index 656a9d776..33f5352fd 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java @@ -1,17 +1,24 @@ 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.HardDoorFlowDto; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowOpenDto; import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity; +import com.bsd.pjcloud.hard.api.vo.HardDoorFlowVo; import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo; import com.bsd.pjcloud.thirdparty.dto.door.DoorOpenCallbackDto; import com.bsd.pjcloud.thirdparty.dto.door.DoorStatusCallbackDto; -import com.bsd.pjcloud.thirdparty.dto.door.DoorStatusDto; import com.bsd.pjcloud.thirdparty.dto.door.DoorVideoCallbackDto; import com.bsd.pjcloud.thirdparty.dto.ks.KsRecognitionCallbackDto; public interface HardDoorFlowService extends IService { + /** + * 复杂查询 + */ + Page scopePageJoin(Page page, HardDoorFlowDto dto, DataScope dataScope); /** * 检修开门 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java index 6bd5c1178..02dd514be 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java @@ -99,7 +99,7 @@ public class HardAuthServiceImpl extends ServiceImpl scopePageJoin(Page page, HardDoorFlowDto dto, DataScope dataScope) { + Page pageList = baseMapper.scopePageJoin(page, dto, dataScope); + disposeList(pageList.getRecords(), dto); + return pageList; + } /** * 根据旷世识别id查询 @@ -325,6 +349,28 @@ public class HardDoorFlowServiceImpl extends ServiceImpl list, HardDoorFlowDto dto) { + if (ObjectUtil.isEmpty(list)) return; + // 设备 + List hardIds = list.stream().map(HardDoorFlowVo::getHardId).filter(ObjectUtil::isNotEmpty).distinct().toList(); + if (ObjectUtil.isNotEmpty(hardIds)) { + HardManagerDto hardManagerDto = new HardManagerDto(); + hardManagerDto.setIds(hardIds); + List hardList = hardManagerMapper.list(hardManagerDto); + if (ObjectUtil.isNotEmpty(hardList)) { + HardUtil.convertHardList(list, CollectionUtils.convertMap(hardList, HardManagerEntity::getId)); + } + } + // 用户相关 + List userIds = list.stream().map(HardDoorFlowVo::getUserId).distinct().toList(); + if (ObjectUtil.isNotEmpty(userIds)) { + R> userList = remoteUserService.getUserDeptByIds(new ArrayList<>(userIds)); + if (ObjectUtil.isNotEmpty(userList.getData())) { + DataUtil.convertUserDeptList(list, CollectionUtils.convertMap(userList.getData(), UserVO::getUserId)); + } + } + } + private HardDoorFlowServiceImpl getSelf() { return SpringUtil.getBean(getClass()); } From 2ecc2e78ce54772a28cf39f8bec2722510b72996 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 17 Apr 2025 15:48:29 +0800 Subject: [PATCH 28/78] =?UTF-8?q?feat:=E6=99=BA=E8=83=BD=E6=9F=9C=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_hardware.sql | 4 + ...FlowEnum.java => HardDoorFlowBizEnum.java} | 4 +- .../api/constant/flow/HardDoorFlowEnum.java | 39 ++++ .../hard/api/dto/HardDoorFlowOpenDto.java | 4 +- .../hard/api/entity/HardDoorFlowEntity.java | 18 ++ .../controller/HardDoorFlowController.java | 6 +- .../service/impl/HardAuthServiceImpl.java | 4 +- .../service/impl/HardDoorFlowServiceImpl.java | 184 +++++++++++++----- 8 files changed, 208 insertions(+), 55 deletions(-) rename pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/{HardDoorFlowEnum.java => HardDoorFlowBizEnum.java} (85%) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/flow/HardDoorFlowEnum.java diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index 00e008477..b2f1df520 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -133,6 +133,10 @@ CREATE TABLE hard_door_flow sku_driving_dto varchar(512) DEFAULT NULL COMMENT 'sku识别主动获取参数', sku_driving_vo varchar(512) DEFAULT NULL COMMENT 'sku识别主动获取结果', sku_driving_time datetime DEFAULT NULL COMMENT 'sku识别主动获取时间', + # 流程相关 + flow_status varchar(32) DEFAULT NULL COMMENT '流程状态', + error varchar(512) DEFAULT NULL COMMENT '流程错误信息', + error_desc varchar(64) DEFAULT NULL COMMENT '流程错误描述(展示)', # 其他字段 create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', create_time datetime DEFAULT NULL COMMENT '创建时间', diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardDoorFlowEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardDoorFlowBizEnum.java similarity index 85% rename from pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardDoorFlowEnum.java rename to pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardDoorFlowBizEnum.java index b3363cf17..3667a7f32 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardDoorFlowEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardDoorFlowBizEnum.java @@ -11,7 +11,7 @@ import java.util.Arrays; */ @AllArgsConstructor @Getter -public enum HardDoorFlowEnum { +public enum HardDoorFlowBizEnum { PAY_OPEN("10", "购买开门"), REPERTORY_OPEN("20", "上架开门"), ACCESS_OPEN("20", "检修开门"), @@ -19,7 +19,7 @@ public enum HardDoorFlowEnum { private final String type; private final String description; - public static HardDoorFlowEnum valueOfByType(String type) { + public static HardDoorFlowBizEnum 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-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/flow/HardDoorFlowEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/flow/HardDoorFlowEnum.java new file mode 100644 index 000000000..b88db16c5 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/flow/HardDoorFlowEnum.java @@ -0,0 +1,39 @@ +package com.bsd.pjcloud.hard.api.constant.flow; + +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 智能柜流程 + */ +@AllArgsConstructor +@Getter +public enum HardDoorFlowEnum { + FLOW_AUTH("10", "用户授权", "20"), + FLOW_APPLY_OPEN("20", "智能柜申请开门", "30"), + FLOW_CALLBACK_OPEN("30", "智能柜开门响应", "40"), + FLOW_CALLBACK_VIDEO("40", "智能柜视频回调", "50"), + FLOW_SUBMIT_RECOGNITION("50", "旷世提交识别", "60"), + FLOW_CALLBACK_RECOGNITION("60", "旷世识别响应", "70"), + FLOW_PAY_ORDER("60", "订单结算", null), + ; + private final String type; + private final String description; + private final String nextType; + + public static HardDoorFlowEnum valueOfByType(String type) { + if (ObjectUtil.isEmpty(type)) return null; + return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get(); + } + + public static HardDoorFlowEnum getNextType(HardDoorFlowEnum type) { + if (ObjectUtil.isEmpty(type)) return null; + String nextType = Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get().getNextType(); + if (ObjectUtil.isEmpty(nextType)) return null; + return valueOfByType(nextType); + } + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowOpenDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowOpenDto.java index add0a9c94..d8ded1ab7 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowOpenDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowOpenDto.java @@ -1,6 +1,6 @@ package com.bsd.pjcloud.hard.api.dto; -import com.bsd.pjcloud.hard.api.constant.HardDoorFlowEnum; +import com.bsd.pjcloud.hard.api.constant.HardDoorFlowBizEnum; import com.bsd.pjcloud.hard.api.constant.HardDoorOpenTypeEnum; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -28,7 +28,7 @@ public class HardDoorFlowOpenDto { /** * 流程类型 */ - private HardDoorFlowEnum flowType; + private HardDoorFlowBizEnum flowType; /** * 开门操作类型 diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardDoorFlowEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardDoorFlowEntity.java index f5f1117ff..21bfed879 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardDoorFlowEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardDoorFlowEntity.java @@ -176,6 +176,24 @@ public class HardDoorFlowEntity extends Model { @Schema(description = "sku识别主动获取时间") private LocalDateTime skuDrivingTime; + /** + * 流程状态 + */ + @Schema(description = "流程状态") + private String flowStatus; + + /** + * 流程错误信息 + */ + @Schema(description = "流程错误信息") + private String error; + + /** + * 流程错误描述(展示) + */ + @Schema(description = "流程错误描述(展示)") + private String errorDesc; + /** * 创建人 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java index 416f5d392..72fb37e3a 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java @@ -10,7 +10,7 @@ import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; -import com.bsd.pjcloud.hard.api.constant.HardDoorFlowEnum; +import com.bsd.pjcloud.hard.api.constant.HardDoorFlowBizEnum; import com.bsd.pjcloud.hard.api.constant.HardDoorOpenTypeEnum; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowDto; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowOpenDto; @@ -96,7 +96,7 @@ public class HardDoorFlowController { @PostMapping("/open-access") public R openAccess(@Validated @RequestBody HardDoorFlowOpenDto dto) { PjcloudUser user = SecurityUtils.getUser(); - dto.setFlowType(HardDoorFlowEnum.ACCESS_OPEN); + dto.setFlowType(HardDoorFlowBizEnum.ACCESS_OPEN); dto.setOpenType(HardDoorOpenTypeEnum.MAINTENANCE_UNLOCK); dto.setUserId(user.getId()); hardDoorFlowService.openDoorAccess(dto); @@ -107,7 +107,7 @@ public class HardDoorFlowController { @PostMapping("/close-access") public R closeAccess(@Validated @RequestBody HardDoorFlowOpenDto dto) { PjcloudUser user = SecurityUtils.getUser(); - dto.setFlowType(HardDoorFlowEnum.ACCESS_OPEN); + dto.setFlowType(HardDoorFlowBizEnum.ACCESS_OPEN); dto.setOpenType(HardDoorOpenTypeEnum.MAINTENANCE_LOCK); dto.setUserId(user.getId()); hardDoorFlowService.closeAccess(dto); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java index 02dd514be..20980c8ce 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java @@ -11,7 +11,7 @@ import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.hard.api.constant.HardAuthTypeEnum; -import com.bsd.pjcloud.hard.api.constant.HardDoorFlowEnum; +import com.bsd.pjcloud.hard.api.constant.HardDoorFlowBizEnum; import com.bsd.pjcloud.hard.api.constant.HardDoorOpenTypeEnum; import com.bsd.pjcloud.hard.api.dto.HardAuthAppDto; import com.bsd.pjcloud.hard.api.dto.HardAuthDto; @@ -106,7 +106,7 @@ public class HardAuthServiceImpl extends ServiceImpl maintenanceList = HardDoorOpenTypeEnum.getMaintenanceListCodes(); - if (maintenanceList.contains(String.valueOf(dto.getEventType()))) { - hardDoorManagerService.refresh(dto.getDeviceCode()); - return; - } boolean isOpenDoor = ObjectUtil.equals(dto.getType(), "OPEN"); - HardDoorFlowEntity updateObj = HardDoorFlowEntity.builder() - .id(flowDetail.getId()) - .isOpen(isOpenDoor ? YesNoEnum.YES.getCode() : YesNoEnum.NO.getCode()) - .openCallbackTime(LocalDateTime.now()) - .openCallbackVo(JSONUtil.toJsonStr(dto)) - .build(); + HardDoorFlowEntity updateObj = HardDoorFlowEntity.builder().id(flowDetail.getId()).flowStatus(flowDetail.getFlowStatus()).isOpen(isOpenDoor ? YesNoEnum.YES.getCode() : YesNoEnum.NO.getCode()).build(); // 如果是购买的话 - if (ObjectUtil.equals(flowDetail.getBizType(), HardDoorFlowEnum.PAY_OPEN.getType())) { + if (ObjectUtil.equals(flowDetail.getBizType(), HardDoorFlowBizEnum.PAY_OPEN.getType())) { // 创建订单 Long orderId = hardOrderService.createHardDoorOrder(flowDetail.getUserId(), flowDetail.getHardId()); updateObj.setOrderId(orderId); } - baseMapper.updateById(updateObj); + flowStatusControl(updateObj, null, dto, null); } /** @@ -284,6 +269,8 @@ public class HardDoorFlowServiceImpl extends ServiceImpl resultSkuList = result.getResult(); - if (ObjectUtil.isNotEmpty(resultSkuList)) { - Long orderId = hardOrderService.payHardDoorOrder(orderDetail, resultSkuList); - if (ObjectUtil.isNotEmpty(orderId)) { - // 完成授权流程 - HardAuthEntity updateAuthObj = HardAuthEntity.builder().id(authDetail.getId()).isDone(YesNoEnum.YES.getCode()).isDoneTime(LocalDateTime.now()).build(); - hardAuthMapper.updateById(updateAuthObj); + if (ObjectUtil.isEmpty(resultSkuList)) { + String ksErrorMsg = "商品识别响应错误,识别的商品列表为空"; + log.error(ksErrorMsg); + getSelf().flowStatusControl(flowDetail, null, dto, ksErrorMsg); + return; + } + getSelf().flowStatusControl(flowDetail, null, dto, null); + // 查询订单 + HardOrderEntity orderDetail = hardOrderService.getById(flowDetail.getOrderId()); + if (ObjectUtil.isEmpty(orderDetail)) { + String ksErrorMsg = String.format("订单结算错误,订单不存在orderId%s", flowDetail.getOrderId()); + log.error(ksErrorMsg); + getSelf().flowStatusControl(flowDetail, null, dto, ksErrorMsg); + return; + } + try { + hardOrderService.payHardDoorOrder(orderDetail, resultSkuList); + // 完成授权流程 + HardAuthEntity updateAuthObj = HardAuthEntity.builder().id(authDetail.getId()).isDone(YesNoEnum.YES.getCode()).isDoneTime(LocalDateTime.now()).build(); + hardAuthMapper.updateById(updateAuthObj); + } catch (Exception e) { + e.printStackTrace(); + String ksErrorMsg = String.format("订单结算错误,订单支付失败error%s;", e.getMessage()); + log.error(ksErrorMsg); + getSelf().flowStatusControl(flowDetail, null, dto, ksErrorMsg); + } + } + + /** + * 流程状态控制(发起流程需要手动) + */ + @Transactional(rollbackFor = Exception.class) + public void flowStatusControl(HardDoorFlowEntity flow, Object dto, Object vo, String error) { + if (ObjectUtil.isAllNotEmpty(flow.getId(), flow.getFlowStatus())) { + log.error("|{}|flowStatusControl 意外的错误,流程id或者flowstatus为空", TAG); + return; + } + HardDoorFlowEnum flowStatus = HardDoorFlowEnum.valueOfByType(flow.getFlowStatus()); + HardDoorFlowEnum nextType = HardDoorFlowEnum.getNextType(flowStatus); + if (ObjectUtil.isEmpty(nextType)) { + log.error("|{}|flowStatusControl 意外的错误,流程状态控制错误该流程已结束", TAG); + return; + } + HardDoorFlowEntity updateObj = new HardDoorFlowEntity(); + updateObj.setId(flow.getId()); + updateObj.setError(error); + updateObj.setFlowStatus(nextType.getType()); + switch (nextType) { + // 智能柜申请开门 + case FLOW_APPLY_OPEN -> { + updateObj.setRequestOpenDto(JSONUtil.toJsonStr(dto)); + updateObj.setRequestOpenVo(JSONUtil.toJsonStr(vo)); + updateObj.setRequestOpenTime(LocalDateTime.now()); + if (ObjectUtil.isNotEmpty(flow.getHardId())) { + updateObj.setHardId(flow.getHardId()); + } + if (ObjectUtil.isNotEmpty(flow.getHardDoorId())) { + updateObj.setHardDoorId(flow.getHardDoorId()); + } + if (ObjectUtil.isNotEmpty(flow.getCabinetNo())) { + updateObj.setCabinetNo(flow.getCabinetNo()); + } + if (ObjectUtil.isNotEmpty(error)) { + updateObj.setErrorDesc("智能柜申请开门错误"); + } + break; + } + // 智能柜开门响应 + case FLOW_CALLBACK_OPEN -> { + updateObj.setOpenCallbackVo(JSONUtil.toJsonStr(vo)); + updateObj.setOpenCallbackTime(LocalDateTime.now()); + if (ObjectUtil.isNotEmpty(flow.getIsOpen())) { + updateObj.setIsOpen(flow.getIsOpen()); + } + if (ObjectUtil.isNotEmpty(flow.getOrderId())) { + updateObj.setOrderId(flow.getOrderId()); + } + if (ObjectUtil.isNotEmpty(error)) { + updateObj.setErrorDesc("智能柜开门响应错误"); + } + break; + } + // 智能柜视频回调 + case FLOW_CALLBACK_VIDEO -> { + updateObj.setVideoCallbackVo(JSONUtil.toJsonStr(vo)); + updateObj.setVideoCallbackTime(LocalDateTime.now()); + if (ObjectUtil.isNotEmpty(error)) { + updateObj.setErrorDesc("智能柜视频回调错误"); + } + break; + } + // 商品提交识别提交 + case FLOW_SUBMIT_RECOGNITION -> { + updateObj.setSkuSubmitDto(JSONUtil.toJsonStr(dto)); + updateObj.setSkuSubmitVo(JSONUtil.toJsonStr(vo)); + updateObj.setSkuSubmitTime(LocalDateTime.now()); + if (ObjectUtil.isNotEmpty(error)) { + updateObj.setErrorDesc("商品提交识别提交错误"); + } + break; + } + // 商品识别响应 + case FLOW_CALLBACK_RECOGNITION -> { + updateObj.setSkuCallbackVo(JSONUtil.toJsonStr(vo)); + updateObj.setSkuCallbackTime(LocalDateTime.now()); + if (ObjectUtil.isNotEmpty(error)) { + updateObj.setErrorDesc("商品识别响应错误"); + } + break; } } + baseMapper.updateById(updateObj); } private void disposeList(List list, HardDoorFlowDto dto) { From b9e5399403ace2c71d59dd2e7ef683e639fe0004 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 17 Apr 2025 17:47:02 +0800 Subject: [PATCH 29/78] =?UTF-8?q?feat:app=E4=B8=8A=E6=9E=B6=E5=91=98?= =?UTF-8?q?=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_hardware.sql | 2 + .../api/constant/flow/HardDoorFlowEnum.java | 8 +-- .../spu/HardSpuRepertoryTypeEnum.java | 2 +- .../api/dto/spu/DeductionSpuRepertoryDto.java | 43 +++++++++++++ .../api/dto/spu/DeductionSpuStockDto.java | 1 + .../hard/api/entity/HardDoorFlowEntity.java | 6 ++ .../api/vo/manager/HardDoorManagerVo.java | 5 +- .../controller/HardDoorFlowController.java | 12 +++- .../manager/HardDoorManagerController.java | 19 +++++- .../controller/spu/HardSpuController.java | 31 ++++++++++ .../spu/HardSpuRepertoryController.java | 13 +++- .../hard/service/HardDoorFlowService.java | 1 - .../hard/service/HardDoorManagerService.java | 2 +- .../hard/service/HardSpuRepertoryService.java | 7 +++ .../pjcloud/hard/service/HardSpuService.java | 5 ++ .../service/impl/HardAuthServiceImpl.java | 2 +- .../service/impl/HardDoorFlowServiceImpl.java | 60 +++++++++---------- .../manager/HardDoorManagerServiceImpl.java | 31 ++++++++-- .../impl/spu/HardSpuJoinServiceImpl.java | 1 + .../impl/spu/HardSpuRepertoryServiceImpl.java | 44 ++++++++++++++ .../service/impl/spu/HardSpuServiceImpl.java | 13 +++- 21 files changed, 256 insertions(+), 52 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/DeductionSpuRepertoryDto.java diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index b2f1df520..ecd71f99c 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -137,6 +137,8 @@ CREATE TABLE hard_door_flow flow_status varchar(32) DEFAULT NULL COMMENT '流程状态', error varchar(512) DEFAULT NULL COMMENT '流程错误信息', error_desc varchar(64) DEFAULT NULL COMMENT '流程错误描述(展示)', + # 购买成功 + pay_time datetime DEFAULT NULL COMMENT '购买成功时间', # 其他字段 create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', create_time datetime DEFAULT NULL COMMENT '创建时间', diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/flow/HardDoorFlowEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/flow/HardDoorFlowEnum.java index b88db16c5..4511e3cd2 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/flow/HardDoorFlowEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/flow/HardDoorFlowEnum.java @@ -18,7 +18,7 @@ public enum HardDoorFlowEnum { FLOW_CALLBACK_VIDEO("40", "智能柜视频回调", "50"), FLOW_SUBMIT_RECOGNITION("50", "旷世提交识别", "60"), FLOW_CALLBACK_RECOGNITION("60", "旷世识别响应", "70"), - FLOW_PAY_ORDER("60", "订单结算", null), + FLOW_PAY_ORDER("70", "订单结算", null), ; private final String type; private final String description; @@ -31,9 +31,9 @@ public enum HardDoorFlowEnum { public static HardDoorFlowEnum getNextType(HardDoorFlowEnum type) { if (ObjectUtil.isEmpty(type)) return null; - String nextType = Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get().getNextType(); - if (ObjectUtil.isEmpty(nextType)) return null; - return valueOfByType(nextType); + HardDoorFlowEnum currentFlow = valueOfByType(type.getType()); + if (ObjectUtil.isEmpty(currentFlow) || ObjectUtil.isEmpty(currentFlow.getNextType())) return null; + return valueOfByType(currentFlow.getNextType()); } } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/spu/HardSpuRepertoryTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/spu/HardSpuRepertoryTypeEnum.java index 0efb77ebf..ebd15f5c3 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/spu/HardSpuRepertoryTypeEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/spu/HardSpuRepertoryTypeEnum.java @@ -13,7 +13,7 @@ import java.util.Arrays; @Getter public enum HardSpuRepertoryTypeEnum { HANDLER("10", "手动上架"), - AUTO("20", "自动上架"), + PERSION("20", "上架员上架"), ; private final String type; private final String description; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/DeductionSpuRepertoryDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/DeductionSpuRepertoryDto.java new file mode 100644 index 000000000..795911292 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/DeductionSpuRepertoryDto.java @@ -0,0 +1,43 @@ +package com.bsd.pjcloud.hard.api.dto.spu; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + + +@Data +public class DeductionSpuRepertoryDto { + + /** + * 智能柜编号 + */ + @NotNull(message = "智能柜编号不能为空") + private Long hardDoorId; + + /** + * 货柜编号 + */ + @NotNull(message = "货柜编号不能为空") + private String cabinetNo; + + /** + * 上架数量 + */ + @NotEmpty(message = "商品列表不能为空") + private List list; + + @Data + public static class Item { + + @NotNull(message = "商品id不能为空") + private Long hardSpuId; + + @NotNull(message = "增加库存不能为空") + private Integer plusCount; + + } + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/DeductionSpuStockDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/DeductionSpuStockDto.java index bd0781c54..691dca346 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/DeductionSpuStockDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/DeductionSpuStockDto.java @@ -1,5 +1,6 @@ package com.bsd.pjcloud.hard.api.dto.spu; +import jakarta.validation.constraints.NotNull; import lombok.Data; import java.util.List; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardDoorFlowEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardDoorFlowEntity.java index 21bfed879..8e10716c4 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardDoorFlowEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardDoorFlowEntity.java @@ -176,6 +176,12 @@ public class HardDoorFlowEntity extends Model { @Schema(description = "sku识别主动获取时间") private LocalDateTime skuDrivingTime; + /** + * 支付时间 + */ + @Schema(description = "支付时间") + private LocalDateTime payTime; + /** * 流程状态 */ 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 index 242a1513f..756e33517 100644 --- 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 @@ -2,12 +2,13 @@ package com.bsd.pjcloud.hard.api.vo.manager; import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity; import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity; +import com.bsd.pjcloud.hard.api.vo.base.BaseHardInterface; import lombok.Data; import java.util.List; @Data -public class HardDoorManagerVo extends HardDoorManagerEntity { +public class HardDoorManagerVo extends HardDoorManagerEntity implements BaseHardInterface { /** * 硬件设备相关 */ @@ -15,6 +16,8 @@ public class HardDoorManagerVo extends HardDoorManagerEntity { private String hardType; + private List hardTypeCodes; + private List cabinetList; } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java index 72fb37e3a..c857320c2 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java @@ -83,12 +83,20 @@ public class HardDoorFlowController { hardDoorFlowService.disposeRecognitionCallback(dto); } - - /* ************************************* end 远程调用 end ************************************* */ /* ************************************* start app start ************************************* */ + @Operation(summary = "上架开门", description = "上架开门") + @PostMapping("/open-repertory") + public R openRepertory(@Validated @RequestBody HardDoorFlowOpenDto dto) { + PjcloudUser user = SecurityUtils.getUser(); + dto.setFlowType(HardDoorFlowBizEnum.REPERTORY_OPEN); + dto.setOpenType(HardDoorOpenTypeEnum.NO_RECORD_VIDEO); + dto.setUserId(user.getId()); + hardDoorFlowService.openDoorRepertory(dto); + return R.ok(); + } /* ************************************* end app end ************************************* */ 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 index f5c1a36d4..d82c03d22 100644 --- 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 @@ -41,6 +41,23 @@ public class HardDoorManagerController { private final HardDoorManagerService hardDoorManagerService; private final HardDoorCabinetService hardDoorCabinetService; + /* ************************************* start APP start ************************************* */ + + @Operation(summary = "app查询智能柜列表", description = "app查询智能柜列表") + @GetMapping("/app/page") + public R> appPage(@ParameterObject Page page, @ParameterObject HardDoorManagerDto dto) { + DataScope dataScope = null; + return R.ok(hardDoorManagerService.scopePageJoin(page, dto, dataScope)); + } + + @Operation(summary = "app查询智能柜详情", description = "app查询智能柜详情") + @GetMapping("/app/detail") + public R appDetail(@RequestParam Long hardDoorId) { + return R.ok(hardDoorManagerService.getByHardDoorId(hardDoorId)); + } + + /* ************************************* start APP start ************************************* */ + @Operation(summary = "绑定设备", description = "绑定设备") @PostMapping("/bind") public R bind(@RequestBody HardDoorManagerEntity dto) { @@ -89,7 +106,7 @@ public class HardDoorManagerController { @GetMapping("/get-by-hard-id") @PreAuthorize("@pms.hasPermission('hard_hardDoorManager_view')") public R getByHardId(@RequestParam Long hardId) { - return R.ok(hardDoorManagerService.getByHardId(hardId)); + return R.ok(hardDoorManagerService.getByHardDoorId(hardId)); } @Operation(summary = "通过id删除智能柜设置", description = "通过id删除智能柜设置") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java index b6ea8a3c8..694973f98 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java @@ -13,6 +13,7 @@ import com.bsd.pjcloud.hard.api.dto.spu.HardSpuDto; import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity; import com.bsd.pjcloud.hard.api.vo.spu.HardSpuJoinVo; import com.bsd.pjcloud.hard.service.HardSpuService; +import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -40,6 +41,36 @@ public class HardSpuController { private final HardSpuService hardSpuService; + /* ************************************* start APP start ************************************* */ + + @Operation(summary = "上架", description = "上架") + @PostMapping("/app/putaway") + public R appPutaway(@Valid @RequestBody HardPutawayDto dto) { + hardSpuService.putaway(dto); + return R.ok(); + } + + @Operation(summary = "下架", description = "下架") + @PostMapping("/app/un-putaway") + public R appUnPutaway(@Valid @RequestBody HardPutawayDto dto) { + hardSpuService.unPutaway(dto); + return R.ok(); + } + + @Operation(summary = "查询货柜补货商品列表", description = "查询货柜补货商品列表") + @GetMapping("/app/cabinet-putaway-list") + public R appCabinetPutawayList(@RequestParam Long hardDoorId, @RequestParam String cabinetNo) { + return R.ok(hardSpuService.appCabinetPutawayList(hardDoorId, cabinetNo)); + } + + @Operation(summary = "查询货柜商品列表", description = "查询货柜商品列表") + @GetMapping("/app/cabinet-list") + public R appCabinetList(@RequestParam Long hardId, @RequestParam String cabinetNo) { + return R.ok(hardSpuService.getByCabinetNo(hardId, cabinetNo)); + } + + /* ************************************* end APP end ************************************* */ + @Operation(summary = "拉取旷世商品", description = "拉取旷世商品") @GetMapping("/async-all") public R asyncAll() { 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 894c97338..e8d4b5ba6 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 @@ -10,9 +10,11 @@ import com.bsd.pjcloud.common.data.datascope.DataScope; 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.spu.DeductionSpuRepertoryDto; import com.bsd.pjcloud.hard.api.dto.spu.HardSpuRepertoryDto; import com.bsd.pjcloud.hard.api.entity.spu.HardSpuRepertoryEntity; import com.bsd.pjcloud.hard.service.HardSpuRepertoryService; +import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -25,7 +27,6 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.Objects; /** * 硬件商品库存更新记录 @@ -39,10 +40,16 @@ public class HardSpuRepertoryController { private final HardSpuRepertoryService hardSpuRepertoryService; - /* ************************************* start app start ************************************* */ + /* ************************************* start APP start ************************************* */ + @Operation(summary = "app上架完成", description = "app上架完成") + @PostMapping("/app/repertory-done") + public R appRepertoryDone(@Valid @RequestBody DeductionSpuRepertoryDto body) { + PjcloudUser user = SecurityUtils.getUser(); + return R.ok(hardSpuRepertoryService.appRepertoryDone(body, user.getId())); + } - /* ************************************* end app end ************************************* */ + /* ************************************* end APP end ************************************* */ @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java index 33f5352fd..5d1a0bae3 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java @@ -55,7 +55,6 @@ public interface HardDoorFlowService extends IService { */ void disposeVideoCallback(DoorVideoCallbackDto dto); - /** * 处理旷世识别回调 */ 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 index 8b0eab83b..7dcc203e8 100644 --- 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 @@ -15,7 +15,7 @@ public interface HardDoorManagerService extends IService /** * 根据硬件id查询详情 */ - HardDoorManagerVo getByHardId(Long hardId); + HardDoorManagerVo getByHardDoorId(Long hardId); /** * 根据硬件设备编号查询详情 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 8092bfb6c..305023251 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 @@ -4,9 +4,11 @@ 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.common.security.service.PjcloudUser; +import com.bsd.pjcloud.hard.api.dto.spu.DeductionSpuRepertoryDto; 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 jakarta.validation.Valid; import java.util.ArrayList; @@ -28,4 +30,9 @@ public interface HardSpuRepertoryService extends IService list); + + /** + * app上架完成 + */ + Boolean appRepertoryDone(DeductionSpuRepertoryDto body, Long userId); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuService.java index f4e458a3b..185a27b7e 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuService.java @@ -45,6 +45,11 @@ public interface HardSpuService extends IService { */ List>> getByCabinetNo(Long hardId, String cabinetNo); + /** + * 查询货柜补货商品列表 + */ + List appCabinetPutawayList(Long hardDoorId, String cabinetNo); + /** * 上架 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java index 20980c8ce..3d52dd5b5 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java @@ -97,7 +97,7 @@ public class HardAuthServiceImpl extends ServiceImpl { + updateObj.setPayTime(LocalDateTime.now()); + break; + } } baseMapper.updateById(updateObj); } 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 index fe7d0f6e0..b4df51f42 100644 --- 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 @@ -5,13 +5,18 @@ 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.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.hard.api.dto.manager.HardDoorManagerDto; +import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto; import com.bsd.pjcloud.hard.api.dto.spu.HardChangeVolume; import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity; 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.manager.HardDoorManagerVo; import com.bsd.pjcloud.hard.mapper.manager.HardDoorManagerMapper; +import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper; import com.bsd.pjcloud.hard.service.HardDoorCabinetService; import com.bsd.pjcloud.hard.service.HardDoorManagerService; import com.bsd.pjcloud.thirdparty.api.feign.RemoterThirdDoorApiService; @@ -39,18 +44,22 @@ public class HardDoorManagerServiceImpl extends ServiceImpl scopePageJoin(Page page, HardDoorManagerDto dto, DataScope dataScope) { - return baseMapper.scopePageJoin(page, dto, dataScope); + Page pageList = baseMapper.scopePageJoin(page, dto, dataScope); + disposeList(pageList.getRecords(), dto); + return pageList; } /** * 根据硬件id查询详情 */ @Override - public HardDoorManagerVo getByHardId(Long hardId) { + public HardDoorManagerVo getByHardDoorId(Long hardId) { HardDoorManagerVo hardDoor = baseMapper.pageJoin(hardId); if (ObjectUtil.isNotEmpty(hardDoor)) { List cabinetList = hardDoorCabinetService.getListByHardDoorId(hardDoor.getId()); @@ -84,7 +93,7 @@ public class HardDoorManagerServiceImpl extends ServiceImpl list, HardDoorManagerDto dto) { + if (ObjectUtil.isEmpty(list)) return; + // 设备 + List hardIds = list.stream().map(HardDoorManagerVo::getHardId).filter(ObjectUtil::isNotEmpty).distinct().toList(); + if (ObjectUtil.isNotEmpty(hardIds)) { + HardManagerDto hardManagerDto = new HardManagerDto(); + hardManagerDto.setIds(hardIds); + List hardList = hardManagerMapper.list(hardManagerDto); + if (ObjectUtil.isNotEmpty(hardList)) { + HardUtil.convertHardList(list, CollectionUtils.convertMap(hardList, HardManagerEntity::getId)); + } + } + } } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuJoinServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuJoinServiceImpl.java index ca367b026..964afd299 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuJoinServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuJoinServiceImpl.java @@ -38,6 +38,7 @@ public class HardSpuJoinServiceImpl extends ServiceImpl(); 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 34e3bfdb5..579dc19e4 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 @@ -13,6 +13,7 @@ import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.hard.api.constant.spu.HardSpuRepertoryTypeEnum; import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto; +import com.bsd.pjcloud.hard.api.dto.spu.DeductionSpuRepertoryDto; import com.bsd.pjcloud.hard.api.dto.spu.HardSpuRepertoryDto; import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity; import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity; @@ -148,6 +149,49 @@ public class HardSpuRepertoryServiceImpl extends ServiceImpl list = body.getList().stream().filter(v -> v.getPlusCount() > 0).toList(); + if (ObjectUtil.isEmpty(list)) { + throw new RuntimeException("上架商品不能为空"); + } + // 查询商品列表 + List spuIds = list.stream().map(DeductionSpuRepertoryDto.Item::getHardSpuId).toList(); + List spuList = hardSpuService.listByIds(spuIds); + // 更新上架记录 + List spuRepertoryList = new ArrayList<>(); + List spuUpdateList = new ArrayList<>(); + for (DeductionSpuRepertoryDto.Item i : list) { + spuList.stream().filter(v -> v.getId().equals(i.getHardSpuId())).findFirst().ifPresent(spu -> { + HardSpuRepertoryEntity entity = new HardSpuRepertoryEntity(); + Integer beforeCount = 0; + if (ObjectUtil.isNotEmpty(spu.getRepertoryCount())) { + beforeCount = spu.getRepertoryCount(); + } + entity.setSpuId(spu.getId()); + entity.setUserId(userId); + entity.setBeforeCount(beforeCount); + entity.setCount(i.getPlusCount() + beforeCount); + entity.setBizType(HardSpuRepertoryTypeEnum.PERSION.getType()); + spuRepertoryList.add(entity); + + HardSpuEntity spuEntity = new HardSpuEntity(); + spuEntity.setId(spu.getId()); + spuEntity.setRepertoryCount(entity.getCount()); + spuUpdateList.add(spuEntity); + }); + } + // 添加上架记录 + baseMapper.insert(spuRepertoryList); + // 更新商品库存 + hardSpuService.updateBatchById(spuUpdateList); + return false; + } + private void disposeList(List list, HardSpuRepertoryDto dto) { if (ObjectUtil.isEmpty(list)) return; // 商户 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 dea31db28..f1b46ce3f 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 @@ -121,7 +121,7 @@ public class HardSpuServiceImpl extends ServiceImpl>> getByCabinetNo(Long hardId, String cabinetNo) { List>> result = new LinkedList<>(); // 查询设备 - HardDoorManagerVo doorManagerVo = hardDoorManagerService.getByHardId(hardId); + HardDoorManagerVo doorManagerVo = hardDoorManagerService.getByHardDoorId(hardId); if (ObjectUtil.isEmpty(doorManagerVo)) return result; int doorCount = 6; int storeySpuMaxCount = 10; @@ -158,6 +158,17 @@ public class HardSpuServiceImpl extends ServiceImpl appCabinetPutawayList(Long hardDoorId, String cabinetNo) { + HardSpuJoinDto spuJoinDto = new HardSpuJoinDto(); + spuJoinDto.setHardDoorId(hardDoorId); + spuJoinDto.setCabinetNo(cabinetNo); + return hardSpuJoinService.scopeList(spuJoinDto); + } + /** * 上架id */ From a255c59dfac7892e34c5b6cc793eeb94a7b852db Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 17 Apr 2025 19:30:34 +0800 Subject: [PATCH 30/78] =?UTF-8?q?feat:=E6=99=BA=E8=83=BD=E6=9F=9C=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_hardware.sql | 1 + .../api/dto/spu/DeductionSpuRepertoryDto.java | 12 +++------- .../entity/spu/HardSpuRepertoryEntity.java | 6 +++++ .../controller/HardDoorFlowController.java | 12 +++++----- .../controller/spu/HardSpuController.java | 8 +++---- .../hard/service/HardDoorFlowService.java | 4 +++- .../service/impl/HardDoorFlowServiceImpl.java | 24 ++++++++++++++++--- .../impl/spu/HardSpuRepertoryServiceImpl.java | 18 ++++++++++---- 8 files changed, 57 insertions(+), 28 deletions(-) diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index ecd71f99c..79a2c69fe 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -481,6 +481,7 @@ CREATE TABLE hard_spu_repertory spu_id bigint NOT NULL COMMENT '商品id', before_count int NOT NULL COMMENT '更新前的库存数量', count int DEFAULT 0 COMMENT '更新库存数量', + biz_id bigint DEFAULT NULL COMMENT '上架业务关联id', biz_type tinytext NOT NULL COMMENT '上架类型', create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', create_time datetime DEFAULT NULL COMMENT '创建时间', diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/DeductionSpuRepertoryDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/DeductionSpuRepertoryDto.java index 795911292..2512548ac 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/DeductionSpuRepertoryDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/DeductionSpuRepertoryDto.java @@ -12,16 +12,10 @@ import java.util.List; public class DeductionSpuRepertoryDto { /** - * 智能柜编号 + * 流程id */ - @NotNull(message = "智能柜编号不能为空") - private Long hardDoorId; - - /** - * 货柜编号 - */ - @NotNull(message = "货柜编号不能为空") - private String cabinetNo; + @NotNull(message = "流程id不能为空") + private Long flowId; /** * 上架数量 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 10921b853..ce612b977 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 @@ -57,6 +57,12 @@ public class HardSpuRepertoryEntity extends Model { @Schema(description = "更新库存数量") private Integer count; + /** + * 上架业务关联id + */ + @Schema(description = "上架业务关联id") + private Long bizId; + /** * 上架类型 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java index c857320c2..56e0c2280 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java @@ -15,6 +15,7 @@ import com.bsd.pjcloud.hard.api.constant.HardDoorOpenTypeEnum; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowDto; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowOpenDto; import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity; +import com.bsd.pjcloud.hard.api.vo.HardDoorFlowVo; import com.bsd.pjcloud.hard.service.HardDoorFlowService; import com.bsd.pjcloud.thirdparty.dto.door.DoorOpenCallbackDto; import com.bsd.pjcloud.thirdparty.dto.door.DoorStatusCallbackDto; @@ -89,13 +90,12 @@ public class HardDoorFlowController { @Operation(summary = "上架开门", description = "上架开门") @PostMapping("/open-repertory") - public R openRepertory(@Validated @RequestBody HardDoorFlowOpenDto dto) { + public R openRepertory(@Validated @RequestBody HardDoorFlowOpenDto dto) { PjcloudUser user = SecurityUtils.getUser(); dto.setFlowType(HardDoorFlowBizEnum.REPERTORY_OPEN); dto.setOpenType(HardDoorOpenTypeEnum.NO_RECORD_VIDEO); dto.setUserId(user.getId()); - hardDoorFlowService.openDoorRepertory(dto); - return R.ok(); + return R.ok(hardDoorFlowService.openDoorRepertory(dto)); } /* ************************************* end app end ************************************* */ @@ -125,7 +125,7 @@ public class HardDoorFlowController { @Operation(summary = "复杂查询", description = "复杂查询") @GetMapping("/page-join") @PreAuthorize("@pms.hasPermission('dzc_hardDoorFlow_view')") - public R pageJoin(@ParameterObject Page page, @ParameterObject HardDoorFlowDto dto) { + public R> pageJoin(@ParameterObject Page page, @ParameterObject HardDoorFlowDto dto) { DataScope dataScope = null; return R.ok(hardDoorFlowService.scopePageJoin(page, dto, dataScope)); } @@ -133,8 +133,8 @@ public class HardDoorFlowController { @Operation(summary = "通过id查询", description = "通过id查询") @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('dzc_hardDoorFlow_view')") - public R getById(@PathVariable("id") Long id) { - return R.ok(hardDoorFlowService.getById(id)); + public R join(@PathVariable("id") Long id) { + return R.ok(hardDoorFlowService.join(id)); } @Operation(summary = "新增智能柜流程", description = "新增智能柜流程") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java index 694973f98..e05999487 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java @@ -43,27 +43,27 @@ public class HardSpuController { /* ************************************* start APP start ************************************* */ - @Operation(summary = "上架", description = "上架") + @Operation(summary = "app上架", description = "上架") @PostMapping("/app/putaway") public R appPutaway(@Valid @RequestBody HardPutawayDto dto) { hardSpuService.putaway(dto); return R.ok(); } - @Operation(summary = "下架", description = "下架") + @Operation(summary = "app下架", description = "下架") @PostMapping("/app/un-putaway") public R appUnPutaway(@Valid @RequestBody HardPutawayDto dto) { hardSpuService.unPutaway(dto); return R.ok(); } - @Operation(summary = "查询货柜补货商品列表", description = "查询货柜补货商品列表") + @Operation(summary = "app查询货柜补货商品列表", description = "查询货柜补货商品列表") @GetMapping("/app/cabinet-putaway-list") public R appCabinetPutawayList(@RequestParam Long hardDoorId, @RequestParam String cabinetNo) { return R.ok(hardSpuService.appCabinetPutawayList(hardDoorId, cabinetNo)); } - @Operation(summary = "查询货柜商品列表", description = "查询货柜商品列表") + @Operation(summary = "app查询货柜商品列表", description = "查询货柜商品列表") @GetMapping("/app/cabinet-list") public R appCabinetList(@RequestParam Long hardId, @RequestParam String cabinetNo) { return R.ok(hardSpuService.getByCabinetNo(hardId, cabinetNo)); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java index 5d1a0bae3..bb3ab80f6 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorFlowService.java @@ -20,6 +20,8 @@ public interface HardDoorFlowService extends IService { */ Page scopePageJoin(Page page, HardDoorFlowDto dto, DataScope dataScope); + HardDoorFlowVo join(Long id); + /** * 检修开门 */ @@ -38,7 +40,7 @@ public interface HardDoorFlowService extends IService { /** * 上架开门 */ - void openDoorRepertory(HardDoorFlowOpenDto dto); + Long openDoorRepertory(HardDoorFlowOpenDto dto); /** * 处理开门回调 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java index 089c5994f..e464484bd 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java @@ -8,6 +8,7 @@ import cn.hutool.json.JSONUtil; 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.dto.UserInfo; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; import com.bsd.pjcloud.admin.api.vo.UserVO; @@ -85,6 +86,22 @@ public class HardDoorFlowServiceImpl extends ServiceImpl usrList = remoteUserService.getUserDeptByIds(List.of(result.getUserId())).getData(); + if (ObjectUtil.isNotEmpty(usrList)) { + DataUtil.convertUserDept(result, usrList.get(0)); + } + // 设备 + HardManagerEntity hardManager = hardManagerMapper.selectById(result.getHardDoorId()); + if (ObjectUtil.isNotEmpty(hardManager)) HardUtil.convertHard(result, hardManager); + return result; + } + /** * 根据旷世识别id查询 */ @@ -98,7 +115,7 @@ public class HardDoorFlowServiceImpl extends ServiceImpl implements HardSpuRepertoryService { private final HardSpuService hardSpuService; + private final HardDoorFlowService hardDoorFlowService; private final RemoteMchService remoteMchService; private final RemoteUserService remoteUserService; - private final HardManagerMapper hardManagerMapper; - @Override public Page scopePageJoin(Page page, HardSpuRepertoryDto dto, DataScope dataScope) { Page pageList = baseMapper.scopePageJoin(page, dto, dataScope); @@ -155,6 +153,15 @@ public class HardSpuRepertoryServiceImpl extends ServiceImpl().eq(HardSpuRepertoryEntity::getBizId, body.getFlowId())); + if (count > 0) { + throw new RuntimeException("改上架已结束"); + } List list = body.getList().stream().filter(v -> v.getPlusCount() > 0).toList(); if (ObjectUtil.isEmpty(list)) { throw new RuntimeException("上架商品不能为空"); @@ -176,6 +183,7 @@ public class HardSpuRepertoryServiceImpl extends ServiceImpl Date: Fri, 18 Apr 2025 09:29:36 +0800 Subject: [PATCH 31/78] =?UTF-8?q?fix:=E7=A7=BB=E5=8A=A8=E7=AB=AF=E6=99=BA?= =?UTF-8?q?=E8=83=BD=E6=9F=9C=E4=B8=8A=E6=9E=B6=E6=8E=A5=E5=8F=A3=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{ => flow}/HardDoorFlowBizEnum.java | 4 +- .../hard/api/dto/HardDoorFlowOpenDto.java | 2 +- .../controller/HardDoorFlowController.java | 12 +++++- .../hard/mapper/HardDoorFlowMapper.java | 4 +- .../hard/service/HardDoorFlowService.java | 5 +++ .../service/impl/HardAuthServiceImpl.java | 2 +- .../service/impl/HardDoorFlowServiceImpl.java | 42 ++++++++++++++----- .../impl/spu/HardSpuJoinServiceImpl.java | 1 + .../service/impl/spu/HardSpuServiceImpl.java | 6 +-- 9 files changed, 58 insertions(+), 20 deletions(-) rename pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/{ => flow}/HardDoorFlowBizEnum.java (87%) diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardDoorFlowBizEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/flow/HardDoorFlowBizEnum.java similarity index 87% rename from pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardDoorFlowBizEnum.java rename to pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/flow/HardDoorFlowBizEnum.java index 3667a7f32..686ea367f 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/HardDoorFlowBizEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/flow/HardDoorFlowBizEnum.java @@ -1,4 +1,4 @@ -package com.bsd.pjcloud.hard.api.constant; +package com.bsd.pjcloud.hard.api.constant.flow; import cn.hutool.core.util.ObjectUtil; import lombok.AllArgsConstructor; @@ -14,7 +14,7 @@ import java.util.Arrays; public enum HardDoorFlowBizEnum { PAY_OPEN("10", "购买开门"), REPERTORY_OPEN("20", "上架开门"), - ACCESS_OPEN("20", "检修开门"), + ACCESS_OPEN("30", "检修开门"), ; private final String type; private final String description; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowOpenDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowOpenDto.java index d8ded1ab7..5f54cfff6 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowOpenDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowOpenDto.java @@ -1,6 +1,6 @@ package com.bsd.pjcloud.hard.api.dto; -import com.bsd.pjcloud.hard.api.constant.HardDoorFlowBizEnum; +import com.bsd.pjcloud.hard.api.constant.flow.HardDoorFlowBizEnum; import com.bsd.pjcloud.hard.api.constant.HardDoorOpenTypeEnum; import jakarta.validation.constraints.NotNull; import lombok.Data; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java index 56e0c2280..4af5e79ca 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardDoorFlowController.java @@ -10,7 +10,7 @@ import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; -import com.bsd.pjcloud.hard.api.constant.HardDoorFlowBizEnum; +import com.bsd.pjcloud.hard.api.constant.flow.HardDoorFlowBizEnum; import com.bsd.pjcloud.hard.api.constant.HardDoorOpenTypeEnum; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowDto; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowOpenDto; @@ -89,7 +89,7 @@ public class HardDoorFlowController { /* ************************************* start app start ************************************* */ @Operation(summary = "上架开门", description = "上架开门") - @PostMapping("/open-repertory") + @PostMapping("/app/open-repertory") public R openRepertory(@Validated @RequestBody HardDoorFlowOpenDto dto) { PjcloudUser user = SecurityUtils.getUser(); dto.setFlowType(HardDoorFlowBizEnum.REPERTORY_OPEN); @@ -137,6 +137,14 @@ public class HardDoorFlowController { return R.ok(hardDoorFlowService.join(id)); } + @Operation(summary = "通过订单id查询流程", description = "通过订单id查询流程") + @GetMapping("/get-by-order-id") + @PreAuthorize("@pms.hasPermission('dzc_hardDoorFlow_view')") + public R getByOrderId(@RequestParam Long orderId) { + return R.ok(hardDoorFlowService.getByOrderId(orderId)); + } + + @Operation(summary = "新增智能柜流程", description = "新增智能柜流程") @SysLog("新增智能柜流程") @PostMapping diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java index c36d4a6a1..41ceae530 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java @@ -23,7 +23,9 @@ public interface HardDoorFlowMapper extends PjcloudBaseMapper { HardDoorFlowVo join(Long id); + /** + * 通过订单id查询流程 + */ + HardDoorFlowVo getByOrderId(Long orderId); + /** * 检修开门 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java index 3d52dd5b5..af5333b6c 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java @@ -11,7 +11,7 @@ import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.hard.api.constant.HardAuthTypeEnum; -import com.bsd.pjcloud.hard.api.constant.HardDoorFlowBizEnum; +import com.bsd.pjcloud.hard.api.constant.flow.HardDoorFlowBizEnum; import com.bsd.pjcloud.hard.api.constant.HardDoorOpenTypeEnum; import com.bsd.pjcloud.hard.api.dto.HardAuthAppDto; import com.bsd.pjcloud.hard.api.dto.HardAuthDto; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java index e464484bd..72f794042 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java @@ -8,7 +8,6 @@ import cn.hutool.json.JSONUtil; 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.dto.UserInfo; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; import com.bsd.pjcloud.admin.api.vo.UserVO; @@ -16,7 +15,7 @@ import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; -import com.bsd.pjcloud.hard.api.constant.HardDoorFlowBizEnum; +import com.bsd.pjcloud.hard.api.constant.flow.HardDoorFlowBizEnum; import com.bsd.pjcloud.hard.api.constant.flow.HardDoorFlowEnum; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowDto; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowOpenDto; @@ -91,14 +90,19 @@ public class HardDoorFlowServiceImpl extends ServiceImpl usrList = remoteUserService.getUserDeptByIds(List.of(result.getUserId())).getData(); - if (ObjectUtil.isNotEmpty(usrList)) { - DataUtil.convertUserDept(result, usrList.get(0)); - } - // 设备 - HardManagerEntity hardManager = hardManagerMapper.selectById(result.getHardDoorId()); - if (ObjectUtil.isNotEmpty(hardManager)) HardUtil.convertHard(result, hardManager); + disposeList(result); + return result; + } + + /** + * 通过订单id查询流程 + */ + @Override + public HardDoorFlowVo getByOrderId(Long orderId) { + HardDoorFlowEntity detail = baseMapper.selectOne(new LambdaQueryWrapper().eq(HardDoorFlowEntity::getOrderId, orderId)); + if (ObjectUtil.isEmpty(detail)) return null; + HardDoorFlowVo result = BeanUtil.toBean(detail, HardDoorFlowVo.class); + disposeList(result); return result; } @@ -344,8 +348,10 @@ public class HardDoorFlowServiceImpl extends ServiceImpl { updateObj.setPayTime(LocalDateTime.now()); + if (ObjectUtil.isNotEmpty(error)) { + updateObj.setErrorDesc("商品识别响应错误"); + } break; } } @@ -477,6 +486,19 @@ public class HardDoorFlowServiceImpl extends ServiceImpl usrList = remoteUserService.getUserDeptByIds(List.of(detail.getUserId())).getData(); + if (ObjectUtil.isNotEmpty(usrList)) { + DataUtil.convertUserDept(detail, usrList.get(0)); + } + // 设备 + HardManagerEntity hardManager = hardManagerMapper.selectById(detail.getHardDoorId()); + if (ObjectUtil.isNotEmpty(hardManager)) { + HardUtil.convertHard(detail, hardManager); + } + } + private HardDoorFlowServiceImpl getSelf() { return SpringUtil.getBean(getClass()); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuJoinServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuJoinServiceImpl.java index 964afd299..0363fc7cc 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuJoinServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/spu/HardSpuJoinServiceImpl.java @@ -47,6 +47,7 @@ public class HardSpuJoinServiceImpl extends ServiceImpl spuList = hardSpuMapper.scopPageList(spuDto, null); for (HardSpuJoinVo v : joinList) { spuList.stream().filter(i -> ObjectUtil.equals(i.getId(), v.getSpuId())).findFirst().ifPresent(v::setSpuDetail); 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 f1b46ce3f..e82b5761b 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 @@ -166,6 +166,7 @@ public class HardSpuServiceImpl extends ServiceImpl updateList = new ArrayList<>(); for (HardSpuEntity i : hardSpuList) { list.stream().filter(j -> ObjectUtil.equals(i.getId(), j.getHardSpuId())).findFirst().ifPresent(hardSpu -> { if (ObjectUtil.isNotEmpty(hardSpu.getIncrCount())) { @@ -269,11 +269,11 @@ public class HardSpuServiceImpl extends ServiceImpl Date: Fri, 18 Apr 2025 10:43:37 +0800 Subject: [PATCH 32/78] =?UTF-8?q?=E8=8F=9C=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canteen/service/impl/CanteenDailyMenuServiceImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java index 4a8a9c4ee..b2eddadd9 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java @@ -189,7 +189,12 @@ public class CanteenDailyMenuServiceImpl extends ServiceImpl Date: Fri, 18 Apr 2025 10:47:52 +0800 Subject: [PATCH 33/78] =?UTF-8?q?feat:=E6=99=BA=E8=83=BD=E6=9F=9C=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=8F=96=E6=B6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_hardware.sql | 33 ++++++++++--------- .../constant/order/HardOrderStatusEnum.java | 1 + .../pjcloud/hard/api/dto/HardDoorFlowDto.java | 4 +++ .../hard/api/entity/HardAuthEntity.java | 18 ++++++++++ .../api/entity/order/HardOrderEntity.java | 8 ++++- .../hard/mapper/HardDoorFlowMapper.java | 7 ++++ .../pjcloud/hard/service/HardAuthService.java | 5 +++ .../hard/service/HardOrderService.java | 5 +++ .../service/impl/HardAuthServiceImpl.java | 15 +++++++++ .../service/impl/HardDoorFlowServiceImpl.java | 23 ++++++++++++- .../impl/order/HardOrderServiceImpl.java | 28 ++++++++++++++++ .../wallet/api/feign/RemoteWalletService.java | 3 ++ .../controller/WalletManageController.java | 11 +++++++ 13 files changed, 144 insertions(+), 17 deletions(-) diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index 79a2c69fe..e050e7d03 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -373,21 +373,24 @@ CREATE TABLE hard_broadcast DROP TABLE IF EXISTS hard_auth; CREATE TABLE hard_auth ( - id bigint NOT NULL AUTO_INCREMENT COMMENT '编号', - auth_type varchar(32) DEFAULT NULL COMMENT '授权类型如微信小程序、支付宝、浙政钉', - user_id bigint NOT NULL COMMENT '预定用户', - hard_id bigint NOT NULL COMMENT '硬件id', - cabinet_no int DEFAULT NULL COMMENT '货柜编号', - auth_status char(1) DEFAULT '0' COMMENT '是否授权', - auth_time datetime DEFAULT NULL COMMENT '授权时间', - is_done char(1) DEFAULT '0' COMMENT '是否完成', - is_done_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', + id bigint NOT NULL AUTO_INCREMENT COMMENT '编号', + auth_type varchar(32) DEFAULT NULL COMMENT '授权类型如微信小程序、支付宝、浙政钉', + user_id bigint NOT NULL COMMENT '预定用户', + hard_id bigint NOT NULL COMMENT '硬件id', + cabinet_no int DEFAULT NULL COMMENT '货柜编号', + auth_status char(1) DEFAULT '0' COMMENT '是否授权', + auth_time datetime DEFAULT NULL COMMENT '授权时间', + is_done char(1) DEFAULT '0' COMMENT '是否完成', + is_done_time datetime DEFAULT NULL COMMENT '完成时间', + is_manual_change varchar(32) DEFAULT NULL COMMENT '是否人工处理', + manual_change_time datetime DEFAULT NULL COMMENT '人工处理时间', + manual_change_remark varchar(512) 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 COMMENT ='硬件授权'; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java index 7f3596b26..dead384ac 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java @@ -19,6 +19,7 @@ public enum HardOrderStatusEnum { OFFLINE_PAY("6", "没有网络本地支付"), REFUND("10", "退款"), CANCEL("20", "已核销"), + UNFOLLOW("30", "已取消(智能柜使用)"), ; private final String type; private final String description; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowDto.java index 8a9a6421d..37ec0c8fe 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowDto.java @@ -3,7 +3,11 @@ package com.bsd.pjcloud.hard.api.dto; import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity; import lombok.Data; +import java.time.LocalDate; + @Data public class HardDoorFlowDto extends HardDoorFlowEntity { + private LocalDate[] createTimeList; + } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardAuthEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardAuthEntity.java index 131de71b3..b043e4801 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardAuthEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardAuthEntity.java @@ -77,6 +77,24 @@ public class HardAuthEntity extends Model { @Schema(description = "完成时间") private LocalDateTime isDoneTime; + /** + * 是否人工处理 + */ + @Schema(description = "是否人工处理") + private String isManualChange; + + /** + * 人工处理时间 + */ + @Schema(description = "人工处理时间") + private LocalDateTime manualChangeTime; + + /** + * 人工处理备注 + */ + @Schema(description = "人工处理时间") + private String manualChangeRemark; + /** * 创建人 */ diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardOrderEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardOrderEntity.java index 1dddd5400..89d20818b 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardOrderEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardOrderEntity.java @@ -178,11 +178,17 @@ public class HardOrderEntity extends Model { private String refundStatus; /** - * 订单取消时间 + * 订单取消时间(退款订单) */ @Schema(description = "订单取消时间") private LocalDateTime applyCancelTime; + /** + * 订单取消时间(智能柜) + */ + @Schema(description = "订单取消时间(智能柜)") + private LocalDateTime unfollowTime; + /** * 设备上的唯一订单号 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java index 41ceae530..16a988937 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java @@ -7,6 +7,7 @@ import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowDto; import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity; +import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.vo.HardDoorFlowVo; import com.github.yulichang.query.MPJLambdaQueryWrapper; import org.apache.ibatis.annotations.Mapper; @@ -24,6 +25,12 @@ public interface HardDoorFlowMapper extends PjcloudBaseMapper { * app智能柜授权 */ Long appAuthHardDoor(HardAuthAppDto dto); + + /** + * 判断当前用户信誉 + */ + boolean judgeUserCredit(Long userId); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java index 05ac020cd..be6a7b735 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java @@ -54,6 +54,11 @@ public interface HardOrderService extends IService { */ Long payHardDoorOrder(HardOrderEntity dto, List ksSpuList); + /** + * 智能柜取消订单 + */ + Long cancelHardDoorOrder(Long orderId); + /** * 快速扣款,离线订单使用 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java index af5333b6c..08e273725 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java @@ -1,6 +1,7 @@ package com.bsd.pjcloud.hard.service.impl; 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.feign.RemoteUserService; @@ -115,6 +116,20 @@ public class HardAuthServiceImpl extends ServiceImpl() + .eq(HardAuthEntity::getUserId, userId) + .eq(HardAuthEntity::getAuthStatus, YesNoEnum.YES.getCode()) + .eq(HardAuthEntity::getIsDone, YesNoEnum.NO.getCode()) + .ne(HardAuthEntity::getIsManualChange, YesNoEnum.YES.getCode()) + ); + return count <= 5; + } + private void disposeList(List list, HardAuthDto dto) { if (ObjectUtil.isEmpty(list)) return; // 设备 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java index 72f794042..f45adffc0 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java @@ -40,8 +40,10 @@ import com.bsd.pjcloud.thirdparty.dto.ks.KsRecognitionCallbackDto; import com.bsd.pjcloud.thirdparty.dto.ks.KsRecognitionDto; import com.bsd.pjcloud.thirdparty.vo.door.DoorOpenVo; import com.bsd.pjcloud.thirdparty.vo.ks.KsRecognitionVo; +import com.bsd.pjcloud.wallet.api.feign.RemoteWalletService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -67,6 +69,8 @@ public class HardDoorFlowServiceImpl extends ServiceImpl spuList = hardSpuJoinService.getSpuList(hardDoorDetail.getId(), dto.getCabinetNo()); if (ObjectUtil.isEmpty(spuList) || spuList.isEmpty()) throw new RuntimeException("货柜商品信息为空,请上架"); @@ -223,7 +238,7 @@ public class HardDoorFlowServiceImpl extends ServiceImpl 0) { + log.error("|{}|智能柜订单取消失败,订单价格大于0|{}|", TAG, orderId); + return null; + } + if (ObjectUtil.isNotEmpty(order.getOrderStatus()) && ObjectUtil.equals(order.getOrderStatus(), HardOrderStatusEnum.UNFOLLOW.getType())) { + log.error("|{}|智能柜订单取消失败,订单已核销|{}|", TAG, orderId); + return null; + } + HardOrderEntity updateObj = HardOrderEntity.builder() + .id(order.getId()) + .orderStatus(HardOrderStatusEnum.UNFOLLOW.getType()) + .unfollowTime(LocalDateTime.now()) + .build(); + baseMapper.updateById(updateObj); + return updateObj.getId(); + } + @Override @Transactional(rollbackFor = Exception.class) public void fastReduceBalance(HardOrderEntity order) { diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java index ec3118e7d..7a1510fbb 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java @@ -52,4 +52,7 @@ public interface RemoteWalletService { @GetMapping("/wallet-manage/is-del") R isDel(@RequestParam Long userId); + + @GetMapping("/wallet-manage/inner/is-use-door") + R innserIsUseDoor(@RequestParam Long userId); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java index ecb477693..96cf6bb9e 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java @@ -126,11 +126,22 @@ public class WalletManageController { return R.ok(true); } + /** + * 这个用户是否能够删除 + */ @GetMapping("/is-del") public R isDel(@RequestParam Long userId) { return R.ok(walletManageService.isDel(userId)); } + /** + * 这个用户是否能够使用智能柜 + */ + @GetMapping("/inner/is-use-door") + public R innserIsUseDoor(@RequestParam Long userId) { + return R.ok(walletManageService.isUseDoor(userId)); + } + /* ************************************* end 远程调用 end ************************************* */ From 4b2afa88006a9078aa6f4bf67ddcdcf592b759eb Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 18 Apr 2025 10:48:49 +0800 Subject: [PATCH 34/78] =?UTF-8?q?fix:=E8=AE=A2=E5=8D=95=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java index f45adffc0..1f59d1097 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java @@ -340,7 +340,7 @@ public class HardDoorFlowServiceImpl extends ServiceImpl Date: Fri, 18 Apr 2025 11:52:46 +0800 Subject: [PATCH 35/78] =?UTF-8?q?h5=E6=AF=8F=E6=97=A5=E8=8F=9C=E8=B0=B1?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E9=87=8D=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/CanteenDailyMenuMapper.java | 7 ++ .../impl/CanteenDailyMenuServiceImpl.java | 110 +++++++++--------- .../mapper/CanteenDailyMenuMapper.xml | 31 +++++ 3 files changed, 94 insertions(+), 54 deletions(-) diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenDailyMenuMapper.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenDailyMenuMapper.java index 5cecab07f..dcc9b3c59 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenDailyMenuMapper.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenDailyMenuMapper.java @@ -1,7 +1,10 @@ package com.bsd.pjcloud.canteen.mapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.canteen.dto.app.DailyMenuDTO; import com.bsd.pjcloud.canteen.vo.ADCanteenDailyMenuListVO; import com.bsd.pjcloud.canteen.vo.DailyMenuVO; +import com.bsd.pjcloud.canteen.vo.app.DailyMenuAppVO; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.canteen.entity.CanteenDailyMenuEntity; @@ -27,4 +30,8 @@ public interface CanteenDailyMenuMapper extends PjcloudBaseMapper getCanteenMenuList(@Param("day") String day, @Param("hourType") Integer hourType, @Param("categoryId") Long categoryId, @Param("merchantId") Long merchantId,DataScope dataScope); + + + + Page selectTimeFoodPage(@Param("page")Page page, DailyMenuDTO dailyMenuDTO); } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java index b2eddadd9..7ce8a7cf1 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java @@ -143,63 +143,65 @@ public class CanteenDailyMenuServiceImpl extends ServiceImpl canteenDailyMenuEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); - canteenDailyMenuEntityLambdaQueryWrapper.eq(CanteenDailyMenuEntity::getMerchantId, dailyMenuDTO.getMerchantId()); - canteenDailyMenuEntityLambdaQueryWrapper.eq(CanteenDailyMenuEntity::getStartTime, dailyMenuDTO.getStartTime()); - canteenDailyMenuEntityLambdaQueryWrapper.eq(dailyMenuDTO.getHourType() != null, - CanteenDailyMenuEntity::getHourType, dailyMenuDTO.getHourType()); +// LambdaQueryWrapper canteenDailyMenuEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); +// canteenDailyMenuEntityLambdaQueryWrapper.eq(CanteenDailyMenuEntity::getMerchantId, dailyMenuDTO.getMerchantId()); +// canteenDailyMenuEntityLambdaQueryWrapper.eq(CanteenDailyMenuEntity::getStartTime, dailyMenuDTO.getStartTime()); +// canteenDailyMenuEntityLambdaQueryWrapper.eq(dailyMenuDTO.getHourType() != null, +// CanteenDailyMenuEntity::getHourType, dailyMenuDTO.getHourType()); +// +// //查询 +// LambdaQueryWrapper onlineFoodSpuDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); +// onlineFoodSpuDOLambdaQueryWrapper.eq(null != dailyMenuDTO.getCategoryId(), CanteenSpuEntity::getCategoryId, dailyMenuDTO.getCategoryId()); +// onlineFoodSpuDOLambdaQueryWrapper.eq(CanteenSpuEntity::getIsShow, "1"); +// List spuEntities = canteenSpuService.list(onlineFoodSpuDOLambdaQueryWrapper); +// +// if (CollectionUtils.isNotEmpty(spuEntities)){ +// List spuIds = spuEntities.stream().map(CanteenSpuEntity::getId).collect(Collectors.toList()); +// canteenDailyMenuEntityLambdaQueryWrapper.notIn(CanteenDailyMenuEntity::getSpuId, spuIds); +// } +// +// Page pageData = baseMapper.selectPage(page, canteenDailyMenuEntityLambdaQueryWrapper); +// List canteenDailyMenuEntities = pageData.getRecords(); +// if (CollectionUtils.isNotEmpty(canteenDailyMenuEntities)) { +// List spuIds = canteenDailyMenuEntities.stream().map(CanteenDailyMenuEntity::getSpuId).distinct().collect(Collectors.toList()); +// LambdaQueryWrapper spuDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); +// onlineFoodSpuDOLambdaQueryWrapper.in(CanteenSpuEntity::getId, spuIds); +// List list = canteenSpuService.list(spuDOLambdaQueryWrapper); +// // 按 id 分组成 Map +// Map spuEntityMap = list.stream() +// .collect(Collectors.toMap(CanteenSpuEntity::getId, spu -> spu)); +// // 构造新的 VO 列表 +// List dailyMenuVOList = canteenDailyMenuEntities.stream() +// .map(menu -> { +// DailyMenuAppVO vo = new DailyMenuAppVO(); +// BeanUtils.copyProperties(menu, vo); // 拷贝通用属性 +// CanteenSpuEntity spuEntity = spuEntityMap.get(menu.getSpuId()); +// if (spuEntity != null) { +// vo.setSpuId(spuEntity.getId()); +// vo.setStock(spuEntity.getStock()); +// vo.setPrice(spuEntity.getPrice()); +// vo.setPicUrl(spuEntity.getPicUrl()); +// vo.setName(spuEntity.getName()); +// vo.setSort(spuEntity.getSort()); +// vo.setIsShow(spuEntity.getIsShow()); +// // 其他需要的字段 +// } +// return vo; +// }) +// .collect(Collectors.toList()); +//// dailyMenuVOList.sort(Comparator.comparing(DailyMenuAppVO::getSort)); +// // 修改排序逻辑,处理null值情况 +// dailyMenuVOList.sort(Comparator.comparing( +// DailyMenuAppVO::getSort, +// Comparator.nullsFirst(Comparator.naturalOrder()) +// )); +// pageData.setRecords(dailyMenuVOList); - //查询 - LambdaQueryWrapper onlineFoodSpuDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); - onlineFoodSpuDOLambdaQueryWrapper.eq(null != dailyMenuDTO.getCategoryId(), CanteenSpuEntity::getCategoryId, dailyMenuDTO.getCategoryId()); - onlineFoodSpuDOLambdaQueryWrapper.eq(CanteenSpuEntity::getIsShow, "1"); - List spuEntities = canteenSpuService.list(onlineFoodSpuDOLambdaQueryWrapper); - - if (CollectionUtils.isNotEmpty(spuEntities)){ - List spuIds = spuEntities.stream().map(CanteenSpuEntity::getId).collect(Collectors.toList()); - canteenDailyMenuEntityLambdaQueryWrapper.notIn(CanteenDailyMenuEntity::getSpuId, spuIds); - } - - Page pageData = baseMapper.selectPage(page, canteenDailyMenuEntityLambdaQueryWrapper); - List canteenDailyMenuEntities = pageData.getRecords(); - if (CollectionUtils.isNotEmpty(canteenDailyMenuEntities)) { - List spuIds = canteenDailyMenuEntities.stream().map(CanteenDailyMenuEntity::getSpuId).distinct().collect(Collectors.toList()); - LambdaQueryWrapper spuDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); - onlineFoodSpuDOLambdaQueryWrapper.in(CanteenSpuEntity::getId, spuIds); - List list = canteenSpuService.list(spuDOLambdaQueryWrapper); - // 按 id 分组成 Map - Map spuEntityMap = list.stream() - .collect(Collectors.toMap(CanteenSpuEntity::getId, spu -> spu)); - // 构造新的 VO 列表 - List dailyMenuVOList = canteenDailyMenuEntities.stream() - .map(menu -> { - DailyMenuAppVO vo = new DailyMenuAppVO(); - BeanUtils.copyProperties(menu, vo); // 拷贝通用属性 - CanteenSpuEntity spuEntity = spuEntityMap.get(menu.getSpuId()); - if (spuEntity != null) { - vo.setSpuId(spuEntity.getId()); - vo.setStock(spuEntity.getStock()); - vo.setPrice(spuEntity.getPrice()); - vo.setPicUrl(spuEntity.getPicUrl()); - vo.setName(spuEntity.getName()); - vo.setSort(spuEntity.getSort()); - vo.setIsShow(spuEntity.getIsShow()); - // 其他需要的字段 - } - return vo; - }) - .collect(Collectors.toList()); -// dailyMenuVOList.sort(Comparator.comparing(DailyMenuAppVO::getSort)); - // 修改排序逻辑,处理null值情况 - dailyMenuVOList.sort(Comparator.comparing( - DailyMenuAppVO::getSort, - Comparator.nullsFirst(Comparator.naturalOrder()) - )); - pageData.setRecords(dailyMenuVOList); + Page pageData=baseMapper.selectTimeFoodPage(page,dailyMenuDTO); return pageData; - } +// } - return null; +// return null; } // 发送mq消息 diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml index 22db42b53..28fe8003a 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml @@ -82,4 +82,35 @@ + \ No newline at end of file From 64afdf3917829f158445943df33748adea146210 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Fri, 18 Apr 2025 14:15:53 +0800 Subject: [PATCH 36/78] =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pjcloud-upms-biz/src/main/resources/logback-spring.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/logback-spring.xml b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/logback-spring.xml index 0cd6c2983..be47d48e2 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/logback-spring.xml +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/logback-spring.xml @@ -66,5 +66,6 @@ + From 30e61bac2fb0b16dff18547bc545371cfd4d1c1f Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 18 Apr 2025 14:35:03 +0800 Subject: [PATCH 37/78] =?UTF-8?q?feat:=E6=AF=8F=E4=B8=AA=E8=B4=A7=E6=9F=9C?= =?UTF-8?q?=E7=8B=AC=E7=AB=8B=E5=BA=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_hardware.sql | 5 ++ .../api/dto/manager/HardDoorCabinetDto.java | 8 ++ .../hard/api/dto/spu/HardSpuRepertoryDto.java | 2 + .../api/entity/spu/HardSpuJoinEntity.java | 19 +++++ .../entity/spu/HardSpuRepertoryEntity.java | 13 +++ .../api/vo/manager/HardDoorCabinetVo.java | 23 ++++++ .../hard/api/vo/spu/HardSpuRepertoryVo.java | 13 ++- .../manager/HardDoorManagerController.java | 9 +++ .../controller/spu/HardSpuController.java | 3 + .../spu/HardSpuRepertoryController.java | 11 ++- .../mapper/manager/HardDoorCabinetMapper.java | 6 ++ .../hard/service/HardDoorCabinetService.java | 6 ++ .../hard/service/HardDoorManagerService.java | 7 ++ .../hard/service/HardSpuRepertoryService.java | 2 +- .../pjcloud/hard/service/HardSpuService.java | 3 +- .../manager/HardDoorCabinetServiceImpl.java | 9 +++ .../manager/HardDoorManagerServiceImpl.java | 11 +++ .../impl/order/HardOrderServiceImpl.java | 11 ++- .../impl/spu/HardSpuRepertoryServiceImpl.java | 81 +++++++++++++------ .../service/impl/spu/HardSpuServiceImpl.java | 31 +++++-- .../mapper/manager/HardDoorCabinetMapper.xml | 47 ++++++++++- .../mapper/spu/HardSpuRepertoryMapper.xml | 12 ++- 22 files changed, 293 insertions(+), 39 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/manager/HardDoorCabinetDto.java create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/manager/HardDoorCabinetVo.java diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index e050e7d03..1b4921528 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -444,6 +444,9 @@ CREATE TABLE hard_spu_join cabinet_no varchar(32) DEFAULT NULL COMMENT '货柜编号', spu_id bigint DEFAULT NULL COMMENT '商品id', hard_door_number int DEFAULT NULL COMMENT '商品放置层数', + version bigint DEFAULT 0 COMMENT '乐观锁', + sales_count bigint DEFAULT 0 COMMENT '销量', + repertory_count bigint NOT NULL DEFAULT 0 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 '修改人', @@ -481,6 +484,8 @@ CREATE TABLE hard_spu_repertory ( id bigint NOT NULL AUTO_INCREMENT COMMENT '编号', user_id bigint NOT NULL COMMENT '用户id', + hard_door_id bigint NOT NULL COMMENT '智能柜编号', + cabinet_no int NOT NULL COMMENT '货柜编号(1,2)', spu_id bigint NOT NULL COMMENT '商品id', before_count int NOT NULL COMMENT '更新前的库存数量', count int DEFAULT 0 COMMENT '更新库存数量', diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/manager/HardDoorCabinetDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/manager/HardDoorCabinetDto.java new file mode 100644 index 000000000..ce6dc3a63 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/manager/HardDoorCabinetDto.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.hard.api.dto.manager; + +import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity; +import lombok.Data; + +@Data +public class HardDoorCabinetDto extends HardDoorCabinetEntity { +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/HardSpuRepertoryDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/HardSpuRepertoryDto.java index 20a9290e5..94e3622fc 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/HardSpuRepertoryDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/spu/HardSpuRepertoryDto.java @@ -13,4 +13,6 @@ public class HardSpuRepertoryDto extends HardSpuRepertoryEntity { private List userIds; + private Long cabinetId; + } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/spu/HardSpuJoinEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/spu/HardSpuJoinEntity.java index efc49d8d2..98c411968 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/spu/HardSpuJoinEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/spu/HardSpuJoinEntity.java @@ -51,6 +51,25 @@ public class HardSpuJoinEntity extends Model { @Schema(description = "放置层数") private Integer hardDoorNumber; + /** + * 乐观锁 + */ + @Version + private Integer version; + + /** + * 销量 + */ + @Schema(description = "销量") + private Integer salesCount; + + /** + * 库存 + */ + @Schema(description = "库存") + private Integer repertoryCount; + + /** * 创建人 */ 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 ce612b977..3f4b199e1 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 @@ -36,6 +36,19 @@ public class HardSpuRepertoryEntity extends Model { @Schema(description = "用户id") private Long userId; + /** + * 硬件柜子id + */ + @Schema(description = "硬件柜子id") + private Long hardDoorId; + + /** + * 柜门编号 + */ + @Schema(description = "柜门编号") + private Integer cabinetNo; + + /** * 商品id */ diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/manager/HardDoorCabinetVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/manager/HardDoorCabinetVo.java new file mode 100644 index 000000000..e19d15035 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/manager/HardDoorCabinetVo.java @@ -0,0 +1,23 @@ +package com.bsd.pjcloud.hard.api.vo.manager; + +import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity; +import com.bsd.pjcloud.hard.api.vo.base.BaseHardInterface; +import lombok.Data; + +import java.util.List; + +@Data +public class HardDoorCabinetVo extends HardDoorCabinetEntity implements BaseHardInterface { + + /** + * 设备相关 + */ + private Long hardId; + + private String hardName; + + private String hardType; + + private String deviceCode; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/spu/HardSpuRepertoryVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/spu/HardSpuRepertoryVo.java index 15826858f..cfbe2fcb9 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/spu/HardSpuRepertoryVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/spu/HardSpuRepertoryVo.java @@ -2,11 +2,12 @@ package com.bsd.pjcloud.hard.api.vo.spu; import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; import com.bsd.pjcloud.hard.api.entity.spu.HardSpuRepertoryEntity; +import com.bsd.pjcloud.hard.api.vo.base.BaseHardInterface; import com.bsd.pjcloud.wallet.api.vo.base.BaseMchInterface; import lombok.Data; @Data -public class HardSpuRepertoryVo extends HardSpuRepertoryEntity implements BaseMchInterface, BaseUserInterface { +public class HardSpuRepertoryVo extends HardSpuRepertoryEntity implements BaseMchInterface, BaseUserInterface, BaseHardInterface { /** * 商品相关 @@ -42,5 +43,15 @@ public class HardSpuRepertoryVo extends HardSpuRepertoryEntity implements BaseMc private String userAvatar; + /** + * 设备相关 + */ + private Long hardId; + + private String hardName; + + private String hardType; + + private String deviceCode; } 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 index d82c03d22..ae93bea06 100644 --- 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 @@ -9,9 +9,12 @@ 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.HardDoorCabinetDto; import com.bsd.pjcloud.hard.api.dto.manager.HardDoorManagerDto; import com.bsd.pjcloud.hard.api.dto.spu.HardChangeVolume; +import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity; import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity; +import com.bsd.pjcloud.hard.api.vo.manager.HardDoorCabinetVo; import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo; import com.bsd.pjcloud.hard.service.HardDoorCabinetService; import com.bsd.pjcloud.hard.service.HardDoorManagerService; @@ -79,6 +82,12 @@ public class HardDoorManagerController { return R.ok(); } + @Operation(summary = "柜门下拉查询", description = "柜门下拉查询") + @GetMapping("/select-cabinet") + public R> selectCabinet(@ParameterObject Page page, @ParameterObject HardDoorCabinetDto dto) { + return R.ok(hardDoorManagerService.selectCabinet(page, dto)); + } + @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('hard_hardDoorManager_view')") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java index e05999487..fae63dd00 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java @@ -7,6 +7,7 @@ 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.idempotent.annotation.Idempotent; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.hard.api.dto.spu.HardPutawayDto; import com.bsd.pjcloud.hard.api.dto.spu.HardSpuDto; @@ -45,6 +46,7 @@ public class HardSpuController { @Operation(summary = "app上架", description = "上架") @PostMapping("/app/putaway") + @Idempotent(expireTime = 5, info = "正在上架中,请勿重复操作") public R appPutaway(@Valid @RequestBody HardPutawayDto dto) { hardSpuService.putaway(dto); return R.ok(); @@ -52,6 +54,7 @@ public class HardSpuController { @Operation(summary = "app下架", description = "下架") @PostMapping("/app/un-putaway") + @Idempotent(expireTime = 5, info = "正在下架中,请勿重复操作") public R appUnPutaway(@Valid @RequestBody HardPutawayDto dto) { hardSpuService.unPutaway(dto); return R.ok(); 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 e8d4b5ba6..c8cd6846b 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 @@ -2,11 +2,13 @@ package com.bsd.pjcloud.hard.controller.spu; 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.idempotent.annotation.Idempotent; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; @@ -44,6 +46,7 @@ public class HardSpuRepertoryController { @Operation(summary = "app上架完成", description = "app上架完成") @PostMapping("/app/repertory-done") + @Idempotent(expireTime = 5, info = "正在操作中,请勿重复操作") public R appRepertoryDone(@Valid @RequestBody DeductionSpuRepertoryDto body) { PjcloudUser user = SecurityUtils.getUser(); return R.ok(hardSpuRepertoryService.appRepertoryDone(body, user.getId())); @@ -78,9 +81,13 @@ public class HardSpuRepertoryController { @SysLog("新增硬件商品库存更新记录") @PostMapping @PreAuthorize("@pms.hasPermission('hard_hardSpuRepertory_add')") - public R save(@Validated @RequestBody HardSpuRepertoryEntity hardSpuRepertory) { + @Idempotent(expireTime = 5, info = "正在上架中,请勿重复操作") + public R save(@Validated @RequestBody HardSpuRepertoryDto dto) { + if (ObjectUtil.isEmpty(dto.getCabinetId())) { + return R.failed("请选择所属柜门"); + } PjcloudUser user = SecurityUtils.getUser(); - return R.ok(hardSpuRepertoryService.create(hardSpuRepertory, user)); + return R.ok(hardSpuRepertoryService.create(dto, user)); } @Operation(summary = "修改硬件商品库存更新记录", description = "修改硬件商品库存更新记录") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardDoorCabinetMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardDoorCabinetMapper.java index 2ec2df75d..1ff0f4db9 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardDoorCabinetMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/manager/HardDoorCabinetMapper.java @@ -1,11 +1,17 @@ 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.HardDoorCabinetDto; import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity; +import com.bsd.pjcloud.hard.api.vo.manager.HardDoorCabinetVo; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; @Mapper public interface HardDoorCabinetMapper extends PjcloudBaseMapper { + Page scopePageJoin(Page page, @Param("dto") HardDoorCabinetDto dto, DataScope dataScope); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorCabinetService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorCabinetService.java index aea015e21..f4aabea87 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorCabinetService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorCabinetService.java @@ -1,13 +1,19 @@ 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.HardDoorCabinetDto; import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity; +import com.bsd.pjcloud.hard.api.vo.manager.HardDoorCabinetVo; import com.bsd.pjcloud.thirdparty.vo.door.DoorStatusVo; import java.util.List; public interface HardDoorCabinetService extends IService { + Page scopePageJoin(Page page, HardDoorCabinetDto dto, DataScope dataScope); + void saveOrUpdate(Long hardDoorId, List list); List getListByHardDoorId(Long hardDoorId); 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 index 7dcc203e8..4f53d5289 100644 --- 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 @@ -3,15 +3,22 @@ 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.HardDoorCabinetDto; import com.bsd.pjcloud.hard.api.dto.manager.HardDoorManagerDto; import com.bsd.pjcloud.hard.api.dto.spu.HardChangeVolume; import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity; +import com.bsd.pjcloud.hard.api.vo.manager.HardDoorCabinetVo; import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo; public interface HardDoorManagerService extends IService { Page scopePageJoin(Page page, HardDoorManagerDto dto, DataScope dataScope); + /** + * 柜门下拉查询 + */ + Page selectCabinet(Page page, HardDoorCabinetDto dto); + /** * 根据硬件id查询详情 */ 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 305023251..5e5e18865 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 @@ -19,7 +19,7 @@ public interface HardSpuRepertoryService extends IService { /** * 扣减库存 */ - Boolean deductionSpuStock(List list); + Boolean deductionSpuStock(HardDoorFlowEntity hardDoorFlow, List list); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java index eb45e6eec..01974dd53 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java @@ -4,12 +4,16 @@ import cn.hutool.core.codec.Base64; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONUtil; 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.feign.RemoteFileService; import com.bsd.pjcloud.common.core.util.QRCodeImageGenerator; import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.hard.api.dto.manager.HardDoorCabinetDto; import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity; import com.bsd.pjcloud.hard.api.vo.manager.HardDoorCabinetCodeVo; +import com.bsd.pjcloud.hard.api.vo.manager.HardDoorCabinetVo; import com.bsd.pjcloud.hard.mapper.manager.HardDoorCabinetMapper; import com.bsd.pjcloud.hard.service.HardDoorCabinetService; import com.bsd.pjcloud.thirdparty.vo.door.DoorStatusVo; @@ -36,6 +40,11 @@ public class HardDoorCabinetServiceImpl extends ServiceImpl scopePageJoin(Page page, HardDoorCabinetDto dto, DataScope dataScope) { + return baseMapper.scopePageJoin(page, dto, dataScope); + } + @Override public void saveOrUpdate(Long hardDoorId, List list) { List cabinetList = baseMapper.selectList(new LambdaQueryWrapper() 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 index b4df51f42..76e0b83d6 100644 --- 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 @@ -7,6 +7,7 @@ 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.manager.HardDoorCabinetDto; import com.bsd.pjcloud.hard.api.dto.manager.HardDoorManagerDto; import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto; import com.bsd.pjcloud.hard.api.dto.spu.HardChangeVolume; @@ -14,6 +15,7 @@ import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity; 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.manager.HardDoorCabinetVo; import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo; import com.bsd.pjcloud.hard.mapper.manager.HardDoorManagerMapper; import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper; @@ -55,6 +57,15 @@ public class HardDoorManagerServiceImpl extends ServiceImpl selectCabinet(Page page, HardDoorCabinetDto dto) { + DataScope dataScope = new DataScope(); + return hardDoorCabinetService.scopePageJoin(page, dto, dataScope); + } + /** * 根据硬件id查询详情 */ 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 815986eb0..ad4940338 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 @@ -38,6 +38,7 @@ import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.entity.order.HardParentCarEntity; import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity; import com.bsd.pjcloud.hard.api.utils.HardUtil; +import com.bsd.pjcloud.hard.api.vo.HardDoorFlowVo; import com.bsd.pjcloud.hard.api.vo.manager.HardManagerVo; import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo; @@ -93,6 +94,8 @@ public class HardOrderServiceImpl extends ServiceImpl() + .eq(HardSpuJoinEntity::getHardDoorId, dto.getHardDoorId()) + .eq(HardSpuJoinEntity::getCabinetNo, dto.getCabinetNo()) + .eq(HardSpuJoinEntity::getSpuId, dto.getSpuId()) + ); + if (ObjectUtil.isEmpty(cabinetSpu)) { + throw new RuntimeException("货柜中没有这个商品"); + } Integer beforeCount = 0; if (ObjectUtil.isNotEmpty(spuDetail.getRepertoryCount())) { beforeCount = spuDetail.getRepertoryCount(); } - entity.setBeforeCount(beforeCount); - entity.setUserId(user.getId()); - entity.setBizType(HardSpuRepertoryTypeEnum.HANDLER.getType()); - baseMapper.insert(entity); - // 更新商品库存 + dto.setBeforeCount(beforeCount); + dto.setUserId(user.getId()); + dto.setBizType(HardSpuRepertoryTypeEnum.HANDLER.getType()); + baseMapper.insert(dto); + // 更新商品总库存 HardSpuEntity spu = new HardSpuEntity(); spu.setId(spuDetail.getId()); - spu.setRepertoryCount(entity.getCount() + beforeCount); + spu.setRepertoryCount(dto.getCount() + beforeCount); + spu.setVersion(spuDetail.getVersion()); hardSpuService.updateById(spu); - return entity.getId(); + // 更新柜门商品库存 + HardSpuJoinEntity cabinetSpuJoin = new HardSpuJoinEntity(); + cabinetSpuJoin.setId(cabinetSpu.getId()); + cabinetSpuJoin.setVersion(cabinetSpu.getVersion()); + cabinetSpuJoin.setRepertoryCount(dto.getCount() + cabinetSpu.getRepertoryCount()); + hardSpuJoinService.updateById(cabinetSpuJoin); + return dto.getId(); } /** @@ -169,9 +193,13 @@ public class HardSpuRepertoryServiceImpl extends ServiceImpl spuIds = list.stream().map(DeductionSpuRepertoryDto.Item::getHardSpuId).toList(); List spuList = hardSpuService.listByIds(spuIds); + // 查询货柜商品列表 + List spuJoinList = hardSpuJoinService.list(new LambdaQueryWrapper() + .in(HardSpuJoinEntity::getSpuId, spuIds) + .eq(HardSpuJoinEntity::getHardDoorId, hardDoorFlow.getHardDoorId()) + .eq(HardSpuJoinEntity::getCabinetNo, hardDoorFlow.getCabinetNo()) + ); // 更新上架记录 - List spuRepertoryList = new ArrayList<>(); - List spuUpdateList = new ArrayList<>(); for (DeductionSpuRepertoryDto.Item i : list) { spuList.stream().filter(v -> v.getId().equals(i.getHardSpuId())).findFirst().ifPresent(spu -> { HardSpuRepertoryEntity entity = new HardSpuRepertoryEntity(); @@ -179,24 +207,31 @@ public class HardSpuRepertoryServiceImpl extends ServiceImpl ObjectUtil.equals(v.getSpuId(), spu.getId())).findFirst().ifPresent(spuJoin -> { + HardSpuJoinEntity spuJoinEntity = new HardSpuJoinEntity(); + spuJoinEntity.setId(spuJoin.getId()); + spuJoinEntity.setVersion(spuJoin.getVersion()); + spuJoinEntity.setRepertoryCount(entity.getCount() + spuJoin.getRepertoryCount()); + hardSpuJoinService.updateById(spuJoinEntity); + }); }); } - // 添加上架记录 - baseMapper.insert(spuRepertoryList); - // 更新商品库存 - hardSpuService.updateBatchById(spuUpdateList); return false; } 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 e82b5761b..2953bc7ea 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 @@ -15,6 +15,7 @@ import com.bsd.pjcloud.hard.api.dto.spu.DeductionSpuStockDto; import com.bsd.pjcloud.hard.api.dto.spu.HardPutawayDto; import com.bsd.pjcloud.hard.api.dto.spu.HardSpuDto; import com.bsd.pjcloud.hard.api.dto.spu.HardSpuJoinDto; +import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity; import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity; import com.bsd.pjcloud.hard.api.entity.spu.HardSpuJoinEntity; import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo; @@ -183,11 +184,8 @@ public class HardSpuServiceImpl extends ServiceImpl() - .eq(HardSpuJoinEntity::getHardDoorNumber, spuJoinDetail.getHardDoorNumber()) - .eq(HardSpuJoinEntity::getSpuId, spuDetail.getId()) - ); - if (doorCount > 0) throw new RuntimeException("该层已有相同商品"); + long doorCount = hardSpuJoinService.count(new LambdaUpdateWrapper().eq(HardSpuJoinEntity::getSpuId, spuDetail.getId())); + if (doorCount > 0) throw new RuntimeException("该货柜已有相同商品"); LambdaUpdateWrapper updateObj = new LambdaUpdateWrapper() .set(HardSpuJoinEntity::getSpuId, spuDetail.getId()) .eq(HardSpuJoinEntity::getId, dto.getId()); @@ -251,7 +249,11 @@ public class HardSpuServiceImpl extends ServiceImpl list) { + public Boolean deductionSpuStock(HardDoorFlowEntity hardDoorFlow, List list) { + if (ObjectUtil.isEmpty(hardDoorFlow)) { + log.error("|{}|扣减商品库存失败flow为空dto|{}|", TAG, JSONUtil.toJsonStr(list)); + return false; + } if (ObjectUtil.isEmpty(list)) { log.error("|{}|扣减商品库存失败list为空", TAG); return false; @@ -262,6 +264,12 @@ public class HardSpuServiceImpl extends ServiceImpl hardSpuJoinList = hardSpuJoinService.list(new LambdaQueryWrapper() + .in(HardSpuJoinEntity::getSpuId, hardSpuIdes) + .eq(HardSpuJoinEntity::getHardDoorId, hardDoorFlow.getHardDoorId()) + .eq(HardSpuJoinEntity::getCabinetNo, hardDoorFlow.getCabinetNo()) + ); for (HardSpuEntity i : hardSpuList) { list.stream().filter(j -> ObjectUtil.equals(i.getId(), j.getHardSpuId())).findFirst().ifPresent(hardSpu -> { if (ObjectUtil.isNotEmpty(hardSpu.getIncrCount())) { @@ -269,11 +277,22 @@ public class HardSpuServiceImpl extends ServiceImpl ObjectUtil.equals(v.getHardSpuId(), i.getSpuId())).findFirst().ifPresent(spu -> { + HardSpuJoinEntity spuJoinEntity = new HardSpuJoinEntity(); + spuJoinEntity.setId(i.getId()); + spuJoinEntity.setVersion(i.getVersion()); + spuJoinEntity.setRepertoryCount(i.getRepertoryCount() - spu.getIncrCount()); + hardSpuJoinService.updateById(spuJoinEntity); + }); + } return true; } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardDoorCabinetMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardDoorCabinetMapper.xml index 3f85f0c40..e5a3c1cc1 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardDoorCabinetMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/manager/HardDoorCabinetMapper.xml @@ -2,8 +2,7 @@ - - + @@ -18,5 +17,47 @@ - + + + + select a.id, + a.hard_door_id, + a.cabinet_no, + a.is_lock_online, + a.lock_status, + a.door_status, + a.sale_status, + a.qr_code, + 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_door_id = #{dto.hardDoorId} + + + and a.cabinet_no like concat('%', #{dto.cabinetNo}, '%') + + + + \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/spu/HardSpuRepertoryMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/spu/HardSpuRepertoryMapper.xml index 2d8b8f92f..1379000ca 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/spu/HardSpuRepertoryMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/spu/HardSpuRepertoryMapper.xml @@ -5,6 +5,8 @@ + + @@ -19,6 +21,8 @@ select a.id, + a.hard_door_id, + a.cabinet_no, a.user_id, a.spu_id, a.before_count, @@ -55,10 +59,16 @@ s.name as spuName, s.spu_category_id, - c.name as spuCategoryName + c.name as spuCategoryName, + hardD.device_code, + m.id as hardId, + m.name as hardName, + m.type as hardType from hard_spu_repertory a left join hard_spu s on s.id = a.spu_id left join hard_spu_category c on c.id = s.spu_category_id + left join hard_door_manager hardD on hardD.id = a.hard_door_id + left join hard_manager m on m.id = hardD.hard_id From 85a2d734d821a69de52b4d8db84b8ac176b52418 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 18 Apr 2025 16:10:57 +0800 Subject: [PATCH 38/78] =?UTF-8?q?feat:app=E5=95=86=E5=93=81=E7=B1=BB?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/HardDoorManagerController.java | 2 +- .../controller/spu/HardSpuController.java | 7 + .../admin/controller/SysRoleController.java | 289 +++++++++--------- 3 files changed, 159 insertions(+), 139 deletions(-) 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 index ae93bea06..957e62cd2 100644 --- 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 @@ -81,7 +81,7 @@ public class HardDoorManagerController { hardDoorManagerService.changeVolume(dto); return R.ok(); } - + @Operation(summary = "柜门下拉查询", description = "柜门下拉查询") @GetMapping("/select-cabinet") public R> selectCabinet(@ParameterObject Page page, @ParameterObject HardDoorCabinetDto dto) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java index fae63dd00..36fd5dda5 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/spu/HardSpuController.java @@ -72,6 +72,13 @@ public class HardSpuController { return R.ok(hardSpuService.getByCabinetNo(hardId, cabinetNo)); } + @Operation(summary = "app商品类表", description = "app商品类表") + @GetMapping("/app/page") + public R appPage(@ParameterObject Page page, @ParameterObject HardSpuDto dto) { + DataScope dataScope = null; + return R.ok(hardSpuService.scopPageJoin(page, dto, dataScope)); + } + /* ************************************* end APP end ************************************* */ @Operation(summary = "拉取旷世商品", description = "拉取旷世商品") diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysRoleController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysRoleController.java index 04f09d27c..5adf2d541 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysRoleController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysRoleController.java @@ -24,15 +24,12 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.admin.api.entity.SysRole; -import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.entity.SysUserRole; import com.bsd.pjcloud.admin.api.vo.RoleExcelVO; import com.bsd.pjcloud.admin.api.vo.RoleMenuVO; import com.bsd.pjcloud.admin.service.SysRoleService; import com.bsd.pjcloud.admin.service.SysUserRoleService; import com.bsd.pjcloud.common.core.constant.CacheConstants; -import com.bsd.pjcloud.common.core.exception.ErrorCodes; -import com.bsd.pjcloud.common.core.util.MsgUtils; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.excel.annotation.RequestExcel; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; @@ -44,7 +41,6 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.AllArgsConstructor; -import org.apache.commons.lang3.StringUtils; import org.springdoc.core.annotations.ParameterObject; import org.springframework.cache.annotation.CacheEvict; import org.springframework.http.HttpHeaders; @@ -66,153 +62,170 @@ import java.util.stream.Collectors; @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class SysRoleController { - private final SysRoleService sysRoleService; + private final SysRoleService sysRoleService; - private final SysUserRoleService sysUserRoleService; + private final SysUserRoleService sysUserRoleService; - @Inner - @PostMapping("/by-codes") - public R> findRolesByCodes(@RequestBody List codes) { - return R.ok(sysRoleService.findRolesByCodes(codes)); - } + /* ************************************* start 数据同步 start ************************************* */ - /** - * 通过ID查询角色信息 - * @param id ID - * @return 角色信息 - */ - @GetMapping("/details/{id}") - public R getById(@PathVariable Long id) { - return R.ok(sysRoleService.getById(id)); - } - /** - * 查询角色信息 - * @param query 查询条件 - * @return 角色信息 - */ - @GetMapping("/details") - public R getDetails(@ParameterObject SysRole query) { - return R.ok(sysRoleService.getOne(Wrappers.query(query), false)); - } + /* ************************************* end 数据同步 end ************************************* */ - /** - * 添加角色 - * @param sysRole 角色信息 - * @return success、false - */ - @SysLog("添加角色") - @PostMapping - @HasPermission("sys_role_add") - @CacheEvict(value = CacheConstants.ROLE_DETAILS, allEntries = true) - public R save(@Valid @RequestBody SysRole sysRole) { - return R.ok(sysRoleService.save(sysRole)); - } + @Inner + @PostMapping("/by-codes") + public R> findRolesByCodes(@RequestBody List codes) { + return R.ok(sysRoleService.findRolesByCodes(codes)); + } - /** - * 修改角色 - * @param sysRole 角色信息 - * @return success/false - */ - @SysLog("修改角色") - @PutMapping - @HasPermission("sys_role_edit") - @CacheEvict(value = CacheConstants.ROLE_DETAILS, allEntries = true) - public R update(@Valid @RequestBody SysRole sysRole) { - return R.ok(sysRoleService.updateById(sysRole)); - } + /** + * 通过ID查询角色信息 + * + * @param id ID + * @return 角色信息 + */ + @GetMapping("/details/{id}") + public R getById(@PathVariable Long id) { + return R.ok(sysRoleService.getById(id)); + } - /** - * 删除角色 - * @param ids - * @return - */ - @SysLog("删除角色") - @DeleteMapping - @HasPermission("sys_role_del") - @CacheEvict(value = CacheConstants.ROLE_DETAILS, allEntries = true) - public R removeById(@RequestBody Long[] ids) { - return R.ok(sysRoleService.removeRoleByIds(ids)); - } + /** + * 查询角色信息 + * + * @param query 查询条件 + * @return 角色信息 + */ + @GetMapping("/details") + public R getDetails(@ParameterObject SysRole query) { + return R.ok(sysRoleService.getOne(Wrappers.query(query), false)); + } - /** - * 获取角色列表 - * @return 角色列表 - */ - @GetMapping("/list") - public R listRoles() { - return R.ok(sysRoleService.list(Wrappers.emptyWrapper())); - } + /** + * 添加角色 + * + * @param sysRole 角色信息 + * @return success、false + */ + @SysLog("添加角色") + @PostMapping + @HasPermission("sys_role_add") + @CacheEvict(value = CacheConstants.ROLE_DETAILS, allEntries = true) + public R save(@Valid @RequestBody SysRole sysRole) { + return R.ok(sysRoleService.save(sysRole)); + } - @GetMapping("/isMchUser") - public R isMchUser() { - Long id = SecurityUtils.getUser().getId(); - List sysUserRoles = sysUserRoleService.list(Wrappers.lambdaQuery().eq(SysUserRole::getUserId, id)); - List roleIds = sysUserRoles.stream().map(sysUserRole -> sysUserRole.getRoleId()).collect(Collectors.toList()); - List list = sysRoleService.list(Wrappers.lambdaQuery().eq(SysRole::getRoleCode, "MCH_USER")); - if (CollectionUtils.isEmpty(list) || CollUtil.isEmpty(roleIds) || !roleIds.contains(list.get(0).getRoleId())){ - return R.ok(false); - } + /** + * 修改角色 + * + * @param sysRole 角色信息 + * @return success/false + */ + @SysLog("修改角色") + @PutMapping + @HasPermission("sys_role_edit") + @CacheEvict(value = CacheConstants.ROLE_DETAILS, allEntries = true) + public R update(@Valid @RequestBody SysRole sysRole) { + return R.ok(sysRoleService.updateById(sysRole)); + } - return R.ok(true); - } - /** - * 分页查询角色信息 - * @param page 分页对象 - * @param role 查询条件 - * @return 分页对象 - */ - @GetMapping("/page") - public R getRolePage(Page page, SysRole role) { - return R.ok(sysRoleService.page(page, Wrappers.lambdaQuery() - .like(StrUtil.isNotBlank(role.getRoleName()), SysRole::getRoleName, role.getRoleName()))); - } + /** + * 删除角色 + * + * @param ids + * @return + */ + @SysLog("删除角色") + @DeleteMapping + @HasPermission("sys_role_del") + @CacheEvict(value = CacheConstants.ROLE_DETAILS, allEntries = true) + public R removeById(@RequestBody Long[] ids) { + return R.ok(sysRoleService.removeRoleByIds(ids)); + } - /** - * 更新角色菜单 - * @param roleVo 角色对象 - * @return success、false - */ - @SysLog("更新角色菜单") - @PutMapping("/menu") - @HasPermission("sys_role_perm") - public R saveRoleMenus(@RequestBody RoleMenuVO roleVo) { - return R.ok(sysRoleService.updateRoleMenus(roleVo)); - } + /** + * 获取角色列表 + * + * @return 角色列表 + */ + @GetMapping("/list") + public R listRoles() { + return R.ok(sysRoleService.list(Wrappers.emptyWrapper())); + } - /** - * 通过角色ID 查询角色列表 - * @param roleIdList 角色ID - * @return - */ - @PostMapping("/getRoleList") - public R getRoleList(@RequestBody List roleIdList) { - return R.ok(sysRoleService.findRolesByRoleIds(roleIdList, CollUtil.join(roleIdList, StrUtil.UNDERLINE))); - } + @GetMapping("/isMchUser") + public R isMchUser() { + Long id = SecurityUtils.getUser().getId(); + List sysUserRoles = sysUserRoleService.list(Wrappers.lambdaQuery().eq(SysUserRole::getUserId, id)); + List roleIds = sysUserRoles.stream().map(sysUserRole -> sysUserRole.getRoleId()).collect(Collectors.toList()); + List list = sysRoleService.list(Wrappers.lambdaQuery().eq(SysRole::getRoleCode, "MCH_USER")); + if (CollectionUtils.isEmpty(list) || CollUtil.isEmpty(roleIds) || !roleIds.contains(list.get(0).getRoleId())) { + return R.ok(false); + } + return R.ok(true); + } - /** - * 导出excel 表格 - * @param sysRole 查询条件 - * @param ids 导出ids - * @return - */ - @ResponseExcel - @GetMapping("/export") - @HasPermission("sys_role_export") - public List export(SysRole sysRole, Long[] ids) { - return sysRoleService.listRole(sysRole, ids); - } - /** - * 导入角色 - * @param excelVOList 角色列表 - * @param bindingResult 错误信息列表 - * @return ok fail - */ - @PostMapping("/import") - @HasPermission("sys_role_export") - public R importRole(@RequestExcel List excelVOList, BindingResult bindingResult) { - return sysRoleService.importRole(excelVOList, bindingResult); - } + /** + * 分页查询角色信息 + * + * @param page 分页对象 + * @param role 查询条件 + * @return 分页对象 + */ + @GetMapping("/page") + public R getRolePage(Page page, SysRole role) { + return R.ok(sysRoleService.page(page, Wrappers.lambdaQuery() + .like(StrUtil.isNotBlank(role.getRoleName()), SysRole::getRoleName, role.getRoleName()))); + } + + /** + * 更新角色菜单 + * + * @param roleVo 角色对象 + * @return success、false + */ + @SysLog("更新角色菜单") + @PutMapping("/menu") + @HasPermission("sys_role_perm") + public R saveRoleMenus(@RequestBody RoleMenuVO roleVo) { + return R.ok(sysRoleService.updateRoleMenus(roleVo)); + } + + /** + * 通过角色ID 查询角色列表 + * + * @param roleIdList 角色ID + * @return + */ + @PostMapping("/getRoleList") + public R getRoleList(@RequestBody List roleIdList) { + return R.ok(sysRoleService.findRolesByRoleIds(roleIdList, CollUtil.join(roleIdList, StrUtil.UNDERLINE))); + } + + /** + * 导出excel 表格 + * + * @param sysRole 查询条件 + * @param ids 导出ids + * @return + */ + @ResponseExcel + @GetMapping("/export") + @HasPermission("sys_role_export") + public List export(SysRole sysRole, Long[] ids) { + return sysRoleService.listRole(sysRole, ids); + } + + /** + * 导入角色 + * + * @param excelVOList 角色列表 + * @param bindingResult 错误信息列表 + * @return ok fail + */ + @PostMapping("/import") + @HasPermission("sys_role_export") + public R importRole(@RequestExcel List excelVOList, BindingResult bindingResult) { + return sysRoleService.importRole(excelVOList, bindingResult); + } } From 76ee59386a518645848c6c8eda32785cef880e9a Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 18 Apr 2025 16:52:00 +0800 Subject: [PATCH 39/78] =?UTF-8?q?fix:=E9=80=82=E9=85=8D=E5=8F=8C=E9=97=A8?= =?UTF-8?q?=E6=99=BA=E8=83=BD=E6=9F=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/HardDoorManagerController.java | 4 ++-- .../mapper/manager/HardDoorManagerMapper.java | 4 +++- .../hard/service/HardDoorManagerService.java | 9 +++++++-- .../pjcloud/hard/service/HardSpuService.java | 2 +- .../service/impl/HardAuthServiceImpl.java | 2 +- .../manager/HardDoorManagerServiceImpl.java | 19 +++++++++++++++++-- .../service/impl/spu/HardSpuServiceImpl.java | 10 +++++++--- .../mapper/manager/HardDoorManagerMapper.xml | 9 ++++++++- 8 files changed, 46 insertions(+), 13 deletions(-) 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 index 957e62cd2..9db6b6e2b 100644 --- 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 @@ -81,7 +81,7 @@ public class HardDoorManagerController { hardDoorManagerService.changeVolume(dto); return R.ok(); } - + @Operation(summary = "柜门下拉查询", description = "柜门下拉查询") @GetMapping("/select-cabinet") public R> selectCabinet(@ParameterObject Page page, @ParameterObject HardDoorCabinetDto dto) { @@ -115,7 +115,7 @@ public class HardDoorManagerController { @GetMapping("/get-by-hard-id") @PreAuthorize("@pms.hasPermission('hard_hardDoorManager_view')") public R getByHardId(@RequestParam Long hardId) { - return R.ok(hardDoorManagerService.getByHardDoorId(hardId)); + return R.ok(hardDoorManagerService.getByHardId(hardId)); } @Operation(summary = "通过id删除智能柜设置", description = "通过id删除智能柜设置") 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 index 7623514eb..391543951 100644 --- 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 @@ -14,5 +14,7 @@ public interface HardDoorManagerMapper extends PjcloudBaseMapper scopePageJoin(Page page, @Param("dto") HardDoorManagerDto dto, DataScope dataScope); - HardDoorManagerVo pageJoin(@Param("hardId") Long hardId); + HardDoorManagerVo pageJoinByHardDoorId(@Param("hardDoorId") Long hardDoorId); + + HardDoorManagerVo pageJoinByHardId(@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/service/HardDoorManagerService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorManagerService.java index 4f53d5289..19292fb6f 100644 --- 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 @@ -14,15 +14,20 @@ public interface HardDoorManagerService extends IService Page scopePageJoin(Page page, HardDoorManagerDto dto, DataScope dataScope); - /** + /** * 柜门下拉查询 */ Page selectCabinet(Page page, HardDoorCabinetDto dto); + /** + * 根据智能硬件id查询详情 + */ + HardDoorManagerVo getByHardDoorId(Long hardDoorId); + /** * 根据硬件id查询详情 */ - HardDoorManagerVo getByHardDoorId(Long hardId); + HardDoorManagerVo getByHardId(Long hardId); /** * 根据硬件设备编号查询详情 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuService.java index b5877dadf..e4d8cfc9c 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardSpuService.java @@ -44,7 +44,7 @@ public interface HardSpuService extends IService { /** * 根据 hardwareId 和 cabinetNo 查询商品 */ - List>> getByCabinetNo(Long hardId, String cabinetNo); + List>> getByCabinetNo(Long Long, String cabinetNo); /** * 查询货柜补货商品列表 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java index 08e273725..24a5601d3 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java @@ -98,7 +98,7 @@ public class HardAuthServiceImpl extends ServiceImpl cabinetList = hardDoorCabinetService.getListByHardDoorId(hardDoor.getId()); + if (ObjectUtil.isNotEmpty(cabinetList)) { + hardDoor.setCabinetList(cabinetList); + } + } + return hardDoor; + } + + /** + * 根据硬件id查询详情 + */ + @Override + public HardDoorManagerVo getByHardId(Long hardId) { + HardDoorManagerVo hardDoor = baseMapper.pageJoinByHardId(hardId); if (ObjectUtil.isNotEmpty(hardDoor)) { List cabinetList = hardDoorCabinetService.getListByHardDoorId(hardDoor.getId()); if (ObjectUtil.isNotEmpty(cabinetList)) { 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 2953bc7ea..681e27272 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 @@ -122,9 +122,9 @@ public class HardSpuServiceImpl extends ServiceImpl>> getByCabinetNo(Long hardId, String cabinetNo) { List>> result = new LinkedList<>(); // 查询设备 - HardDoorManagerVo doorManagerVo = hardDoorManagerService.getByHardDoorId(hardId); + HardDoorManagerVo doorManagerVo = hardDoorManagerService.getByHardId(hardId); if (ObjectUtil.isEmpty(doorManagerVo)) return result; - int doorCount = 6; + int doorCount = 5; int storeySpuMaxCount = 10; if (ObjectUtil.isNotEmpty(doorCount)) { doorCount = doorManagerVo.getDoorCount().intValue(); @@ -184,7 +184,11 @@ public class HardSpuServiceImpl extends ServiceImpl().eq(HardSpuJoinEntity::getSpuId, spuDetail.getId())); + long doorCount = hardSpuJoinService.count(new LambdaUpdateWrapper() + .eq(HardSpuJoinEntity::getHardDoorId, spuJoinDetail.getHardDoorId()) + .eq(HardSpuJoinEntity::getCabinetNo, spuJoinDetail.getCabinetNo()) + .eq(HardSpuJoinEntity::getSpuId, spuDetail.getId()) + ); if (doorCount > 0) throw new RuntimeException("该货柜已有相同商品"); LambdaUpdateWrapper updateObj = new LambdaUpdateWrapper() .set(HardSpuJoinEntity::getSpuId, spuDetail.getId()) 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 index 45745f450..a54e99383 100644 --- 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 @@ -94,7 +94,14 @@ order by a.create_time desc , a.id desc - + + + a.id = #{hardDoorId} + + + + + + + \ No newline at end of file From 7a463016ecaf0768c775c872d295781dc56e2115 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 21 Apr 2025 16:48:33 +0800 Subject: [PATCH 52/78] 111 --- .../door/ThirdDoorApiController.java | 9 ++- .../controller/ks/ThirdKsApiController.java | 6 +- .../impl/door/ThirdDoorApiServiceImpl.java | 2 +- .../admin/api/dto/SysUserTransactionDto.java | 9 +++ .../admin/api/vo/SysUserTransactionVo.java | 12 +++- .../mapper/SysUserTransactionMapper.xml | 66 ++++++++++++++++++- 6 files changed, 95 insertions(+), 9 deletions(-) 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 index f53b01539..afc238b82 100644 --- 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 @@ -85,25 +85,28 @@ public class ThirdDoorApiController { @Inner(value = false) @Operation(summary = "门锁开关通知回调") @PostMapping("/callback/open") - public void callbackOpen(HttpEntity httpEntity, @RequestHeader Map headers) { + public R callbackOpen(HttpEntity httpEntity, @RequestHeader Map headers) { String body = httpEntity.getBody(); thirdDoorApiService.callbackOpen(body, headers); + return R.ok(); } @Inner(value = false) @Operation(summary = "视频地址通知回调") @PostMapping("/callback/video") - public void callbackVideo(HttpEntity httpEntity, @RequestHeader Map headers) { + public R callbackVideo(HttpEntity httpEntity, @RequestHeader Map headers) { String body = httpEntity.getBody(); thirdDoorApiService.callbackVideo(body, headers); + return R.ok(); } @Inner(value = false) @Operation(summary = "设备状态通知回调") @PostMapping("/callback/status") - public void callbackStatus(HttpEntity httpEntity, @RequestHeader Map headers) { + public R callbackStatus(HttpEntity httpEntity, @RequestHeader Map headers) { String body = httpEntity.getBody(); thirdDoorApiService.callbackStatus(body, headers); + return R.ok(); } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ks/ThirdKsApiController.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ks/ThirdKsApiController.java index c3ddc02ef..031156c6f 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ks/ThirdKsApiController.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ks/ThirdKsApiController.java @@ -105,17 +105,19 @@ public class ThirdKsApiController { @Inner(value = false) @Operation(summary = "sku审核回调") @PostMapping("/callback/sku") - public void callbackSKu(HttpEntity httpEntity, @RequestHeader Map headers) { + public R callbackSKu(HttpEntity httpEntity, @RequestHeader Map headers) { String body = httpEntity.getBody(); thirdKsApiService.callbackSKu(body, headers); + return R.ok(); } @Inner(value = false) @Operation(summary = "识别回调") @PostMapping("/callback/recognition") - public void callbackRecognition(HttpEntity httpEntity, @RequestHeader Map headers) { + public R callbackRecognition(HttpEntity httpEntity, @RequestHeader Map headers) { String body = httpEntity.getBody(); thirdKsApiService.callbackRecognition(body, headers); + return R.ok(); } /* ************************************* end 回调 end ************************************* */ 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 index 96456cba1..fd7617d0e 100644 --- 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 @@ -213,10 +213,10 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { DoorBaseVo doorBaseVo = new DoorBaseVo(); DoorApi.Api api = DoorApi.OPEN.setBaseUrl(doorConfig.getBaseUrl()); ThirdDoorLogEntity logEntity = api.getInitLogEntity(); - logEntity.setReq(JSONUtil.toJsonStr(dto)); try { dto.setLockNotifyUrl(doorConfig.getCallbackBaseUrl() + doorConfig.getCallbackLockUrl()); dto.setVideoNotifyUrl(doorConfig.getCallbackBaseUrl() + doorConfig.getCallbackVideoUrl()); + logEntity.setReq(JSONUtil.toJsonStr(dto)); String body = JSONUtil.toJsonStr(dto); String res = api.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); if (ObjectUtil.isEmpty(res)) throw new RuntimeException("response响应为空"); diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/SysUserTransactionDto.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/SysUserTransactionDto.java index 13abcc964..b1b8937ad 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/SysUserTransactionDto.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/SysUserTransactionDto.java @@ -3,6 +3,15 @@ package com.bsd.pjcloud.admin.api.dto; import com.bsd.pjcloud.admin.api.entity.SysUserTransactionEntity; import lombok.Data; +import java.time.LocalDateTime; + @Data public class SysUserTransactionDto extends SysUserTransactionEntity { + + private LocalDateTime[] createTimeList; + + private LocalDateTime[] walletTransactionTimeList; + + private LocalDateTime[] processTimeList; + } diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/SysUserTransactionVo.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/SysUserTransactionVo.java index f04148792..ae8c9385e 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/SysUserTransactionVo.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/vo/SysUserTransactionVo.java @@ -1,10 +1,11 @@ package com.bsd.pjcloud.admin.api.vo; import com.bsd.pjcloud.admin.api.entity.SysUserTransactionEntity; +import com.bsd.pjcloud.admin.api.vo.base.BaseUserInterface; import lombok.Data; @Data -public class SysUserTransactionVo extends SysUserTransactionEntity { +public class SysUserTransactionVo extends SysUserTransactionEntity implements BaseUserInterface { /** * 源部门名称 @@ -16,4 +17,13 @@ public class SysUserTransactionVo extends SysUserTransactionEntity { */ private String targetDeptName; + /** + * 用户相关 + */ + private String username; + + private String userMobile; + + private String userAvatar; + } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserTransactionMapper.xml b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserTransactionMapper.xml index d65c73b00..82d53427f 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserTransactionMapper.xml +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/resources/mapper/SysUserTransactionMapper.xml @@ -23,13 +23,75 @@ - + select a.id, + a.user_id, + a.biz_id, + a.biz_type, + a.source_dept_id, + a.target_dept_id, + a.is_wallet_transaction, + a.wallet_transaction_time, + a.process_id, + a.process_status, + a.process_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.user_id = #{dto.userId} + + + AND a.biz_id = #{dto.bizId} + + + AND a.biz_id = #{dto.bizId} + + + AND a.biz_type = #{dto.bizType} + + + AND a.source_dept_id = #{dto.sourceDeptId} + + + AND a.target_dept_id = #{dto.targetDeptId} + + + AND a.is_wallet_transaction = #{dto.isWalletTransaction} + + + AND a.process_status = #{dto.processStatus} + + + and a.create_time between #{dto.createTimeList[0]} and #{dto.createTimeList[1]} + + + and a.wallet_transaction_time between #{dto.walletTransactionTimeList[0]} and #{dto.walletTransactionTimeList[1]} + + + and a.create_time between #{dto.processTimeList[0]} and #{dto.processTimeList[1]} + \ No newline at end of file From f478ad10ea617f9ca6078398d9d7138ac9ff6d8d Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 21 Apr 2025 20:04:45 +0800 Subject: [PATCH 53/78] =?UTF-8?q?fix:=E5=AE=8C=E5=96=84=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java | 1 + .../pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java | 1 + .../service/impl/door/ThirdDoorApiServiceImpl.java | 6 +++--- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java index d51fba8ad..c53ad4724 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java @@ -92,6 +92,7 @@ public class HardAuthServiceImpl extends ServiceImpl Date: Mon, 21 Apr 2025 20:19:40 +0800 Subject: [PATCH 54/78] 11 --- .../service/impl/door/ThirdDoorApiServiceImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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 index f69a22d07..067607181 100644 --- 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 @@ -388,9 +388,10 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { return false; } String appid = headers.get("appId"); - String noncestr = headers.get("Noncestr"); - String timestamp = headers.get("Timestamp"); + String noncestr = headers.get("noncestr"); + String timestamp = headers.get("timestamp"); String sign = headers.get("sign"); + if (ObjectUtil.notEqual(doorConfig.getAppId(), appid)) { log.error("|{}|apiParseSign 接口解签错误appId错误dto|{}|headers|{}|appid|{}|noncestr|{}|timestamp|{}|sign|{}|", TAG, json, JSONUtil.toJsonStr(headers), appid, noncestr, timestamp, sign); return false; @@ -404,7 +405,7 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { successSign += json; String successSignMd5 = DigestUtils.md5Hex(successSign); if (ObjectUtil.notEqual(successSignMd5.toLowerCase(), sign.toLowerCase())) { - log.error("|{}|apiParseSign 接口解签错误sign错误dto|{}|headers|{}|", TAG, json, JSONUtil.toJsonStr(headers)); + log.error("|{}|apiParseSign 接口解签错误sign错误dto|{}|headers|{}|appid|{}|noncestr|{}|timestamp|{}|sign|{}|", TAG, json, JSONUtil.toJsonStr(headers), appid, noncestr, timestamp, sign); return false; } return true; From ea6d52eb2304a10058e2ee5117e1f77ecc229673 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Mon, 21 Apr 2025 20:28:17 +0800 Subject: [PATCH 55/78] =?UTF-8?q?feat:=E6=94=AF=E4=BB=98=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/order/HardOrderMapper.xml | 7 ------- 1 file changed, 7 deletions(-) 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 386bb1ea2..16788db46 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 @@ -283,13 +283,6 @@ group by a.pay_type - CASE a.merchant_type - WHEN 10 THEN 1 - WHEN 30 THEN 2 - WHEN 0 THEN 3 - WHEN 20 THEN 4 - ELSE 5 - END;