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] =?UTF-8?q?feat:app=E4=B8=8A=E6=9E=B6=E5=91=98=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 */