diff --git a/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/dto/visitor/app/VisitorsReceiveAppDTO.java b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/dto/visitor/app/VisitorsReceiveAppDTO.java new file mode 100644 index 000000000..d7dcb88be --- /dev/null +++ b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/dto/visitor/app/VisitorsReceiveAppDTO.java @@ -0,0 +1,27 @@ +package com.bsd.pjcloud.integrated.dto.visitor.app; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 访客表 + * + * @author zjf + * @date 2025-04-09 15:22:47 + */ +@Data +@Schema(description = "app访客dto") +public class VisitorsReceiveAppDTO { + + private Long id; + + private String checkStatus; + + private VisitorsAppDTO visitorsAppDTO; + +} \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorController.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorController.java index adf4c46f6..f8f898c9c 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorController.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorController.java @@ -12,6 +12,7 @@ import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum; import com.bsd.pjcloud.integrated.dto.visitor.app.VisitorsAppDTO; +import com.bsd.pjcloud.integrated.dto.visitor.app.VisitorsReceiveAppDTO; import com.bsd.pjcloud.integrated.entity.CarInfoEntity; import com.bsd.pjcloud.integrated.entity.VisitorUserEntity; import com.bsd.pjcloud.integrated.entity.VisitorsEntity; @@ -106,6 +107,13 @@ public class AppVisitorController { return R.ok(visitorsService.getByToken(token)); } + @PostMapping("/app/receiveYY") + @SysLog("访客接收邀约更新状态" ) + @Operation(summary = "访客接收邀约" , description = "访客接收邀约" ) + public R receiveYY(@RequestBody VisitorsReceiveAppDTO visitorsReceiveAppDTO) { + return R.ok( visitorsService.receiveYY(visitorsReceiveAppDTO)); + } + /** * 扫码发送请求确认是否能通过 * 通过token查询访客表 diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/entity/VisitorsEntity.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/entity/VisitorsEntity.java index 36230a00d..f75d1ce52 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/entity/VisitorsEntity.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/entity/VisitorsEntity.java @@ -201,4 +201,8 @@ public class VisitorsEntity extends Model { @Schema(description="到访单位名称") private String deptName; + + + @Schema(description="访客用户id") + private Long visitorUserId; } \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/VisitorsService.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/VisitorsService.java index c54c0667e..eb3442ad9 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/VisitorsService.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/VisitorsService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.admin.api.entity.SysDictItem; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.integrated.dto.visitor.app.VisitorsAppDTO; +import com.bsd.pjcloud.integrated.dto.visitor.app.VisitorsReceiveAppDTO; import com.bsd.pjcloud.integrated.dto.visitor.app.VisitorsYYAppDTO; import com.bsd.pjcloud.integrated.entity.VisitorsEntity; import com.bsd.pjcloud.integrated.vo.visitor.app.VisitorsAppVo; @@ -82,4 +83,7 @@ public interface VisitorsService extends IService { * @return */ R> getDictListByType(Long type); + + + Object receiveYY(VisitorsReceiveAppDTO visitorsReceiveAppDTO); } \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/VisitorsServiceImpl.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/VisitorsServiceImpl.java index a04f281d5..acf4a836e 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/VisitorsServiceImpl.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/VisitorsServiceImpl.java @@ -26,10 +26,7 @@ import com.bsd.pjcloud.integrated.constant.DictTypeEnum; import com.bsd.pjcloud.integrated.constant.IntegratedFlowConstant; import com.bsd.pjcloud.integrated.constant.VisitorTypeEnum; import com.bsd.pjcloud.integrated.controller.AppVisitorUserController; -import com.bsd.pjcloud.integrated.dto.visitor.app.VisitorsAppDTO; -import com.bsd.pjcloud.integrated.dto.visitor.app.VisitorsCarAppDTO; -import com.bsd.pjcloud.integrated.dto.visitor.app.VisitorsPeopleAppDTO; -import com.bsd.pjcloud.integrated.dto.visitor.app.VisitorsYYAppDTO; +import com.bsd.pjcloud.integrated.dto.visitor.app.*; import com.bsd.pjcloud.integrated.entity.VisitorUserEntity; import com.bsd.pjcloud.integrated.entity.VisitorsCarEntity; import com.bsd.pjcloud.integrated.entity.VisitorsEntity; @@ -454,5 +451,91 @@ public class VisitorsServiceImpl extends ServiceImpl visitorsCarAppDTOList = visitorsAppDTO.getCarList(); + if (!CollectionUtils.isEmpty(visitorsCarAppDTOList)){ + List visitorsCarEntities = BeanUtils.toBean(visitorsCarAppDTOList, VisitorsCarEntity.class); + visitorsCarEntities.forEach(i->{ + i.setVisitorsId(dataVisitors.getId()); + }); + visitorsCarMapper.insert(visitorsCarEntities); + } + } + if (isOtherPeople.equals("1")){ + + List visitorsPeopleAppDTOList =visitorsAppDTO.getOtherPeople(); +// if (!CollectionUtils.isEmpty(visitorsPeopleAppDTOList)){ +// visitorsPeopleAppDTOList.forEach(i->{ +// VisitorInfo itemVisitorInfo = new VisitorInfo(); +// itemVisitorInfo.setVisitorName(i.getName()); +// itemVisitorInfo.setPhoneNo(i.getMobile()); +// itemVisitorInfo.setvis +// }); +// } + if (!CollectionUtils.isEmpty(visitorsPeopleAppDTOList)){ + List visitorsPeopleEntities = BeanUtils.toBean(visitorsPeopleAppDTOList, VisitorsPeopleEntity.class); + for (int i = 0; i < visitorsPeopleEntities.size(); i++){ + VisitorsPeopleEntity visitorsPeopleEntity = visitorsPeopleEntities.get(i); + visitorsPeopleEntity.setVisitorsId(dataVisitors.getId()); + + } + visitorsPeopleMapper.insert(visitorsPeopleEntities); + } + + } + return dataVisitors.getId(); + + } + + //拒绝 + VisitorsEntity visitorsEntity = new VisitorsEntity(); + visitorsEntity.setId(id); + visitorsEntity.setCheckStatus(TaskCheckStatusEnum.REJECT.getCode()); + return baseMapper.updateById(visitorsEntity); + + } + } \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/VisitorsMapper.xml b/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/VisitorsMapper.xml index f075f9bf2..371ca8fda 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/VisitorsMapper.xml +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/VisitorsMapper.xml @@ -36,5 +36,7 @@ + + \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/api/feign/RemoteShopSkuService.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/api/feign/RemoteShopSkuService.java index 363979e5d..b7379048a 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/api/feign/RemoteShopSkuService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/api/feign/RemoteShopSkuService.java @@ -20,13 +20,9 @@ package com.bsd.pjcloud.supermarket.api.feign; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; import com.bsd.pjcloud.common.core.util.R; -import com.bsd.pjcloud.supermarket.dto.SupermarketSpuQueryDTO; import com.bsd.pjcloud.supermarket.entity.ShopSkuEntity; -import com.bsd.pjcloud.supermarket.vo.app.ShopSpuDetailAppVo; -import com.bsd.pjcloud.supermarket.vo.app.ShopSpuListAppVo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -34,6 +30,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; +import com.bsd.pjcloud.supermarket.dto.SkuStockChangeDTO; /** * @author zjf @@ -45,17 +42,10 @@ public interface RemoteShopSkuService { /** - * 更新库存 - * @return - */ - /** - * 根据skuId和数量扣减库存 - * @param skuId - * @param num * 正数:增加库存,负数:扣减库存 - * @return + * 批量扣减/增减库存(正数增加,负数扣减) */ @PostMapping("/app/shopSpu/deductStock") - R deductStock(@RequestParam Long skuId, @RequestParam Integer num); + R deductStock(@RequestBody SkuStockChangeDTO changes); /** diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/SkuStockChangeDTO.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/SkuStockChangeDTO.java new file mode 100644 index 000000000..a07b2f900 --- /dev/null +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/dto/SkuStockChangeDTO.java @@ -0,0 +1,28 @@ +package com.bsd.pjcloud.supermarket.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +@Data +public class SkuStockChangeDTO { + + @NotNull(message = "商品 SPU 不能为空") + private List items; + + @Schema(description = "下单设备类型,0默认安卓机,1移动端") + private int deviceType; + + @Data + public static class Item { + @NotNull(message = "包装单位unit 编号不能为空") + private Long id; + + @NotNull(message = "库存变化数量不能为空") + private Double incrCount; + } +} + + diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/ShopSpuEntity.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/ShopSpuEntity.java index 9b613b07a..36e4f7e71 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/ShopSpuEntity.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/ShopSpuEntity.java @@ -166,6 +166,12 @@ public class ShopSpuEntity extends Model { @Schema(description="是否删除") private String delFlag; + /** + * 商品性质(字典) + */ + @Schema(description="商品性质(字典)") + private String productNature; + /** * 租户编号 */ diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/app/ShopSpuDetailAppVo.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/app/ShopSpuDetailAppVo.java index a4cbe538b..84d730739 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/app/ShopSpuDetailAppVo.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/app/ShopSpuDetailAppVo.java @@ -75,6 +75,9 @@ public class ShopSpuDetailAppVo { @Schema(description="单人限购数量") private Integer limitNum; + @Schema(description="商品性质(字典)") + private String productNature; + private List skuList; } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/app/ShopSpuListAppVo.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/app/ShopSpuListAppVo.java index 82c56f4df..32e044008 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/app/ShopSpuListAppVo.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/vo/app/ShopSpuListAppVo.java @@ -49,4 +49,11 @@ public class ShopSpuListAppVo { @Schema(description="总销量") private Double salesCount; + /** + * 商品性质(字典) + */ + @Schema(description="商品性质(字典)") + private String productNature; + + } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/AppShopSpuController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/AppShopSpuController.java index 239e79bf5..f407104b3 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/AppShopSpuController.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/AppShopSpuController.java @@ -25,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; +import com.bsd.pjcloud.supermarket.dto.SkuStockChangeDTO; @RestController @RequestMapping("/app/shopSpu") @@ -105,9 +106,9 @@ public class AppShopSpuController { } @PostMapping("/deductStock") - @Operation(summary = "扣减库存", description = "根据skuId和数量扣减库存") - public R deductStock(@RequestParam Long skuId, @RequestParam Integer num) { - boolean result = shopSkuService.deductStock(skuId, num); + @Operation(summary = "批量增减库存", description = "正加负减,任一失败全失败") + public R deductStock(@RequestBody SkuStockChangeDTO changes) { + boolean result = shopSkuService.deductStockBatch(changes); return result ? R.ok(true) : R.failed("库存不足或扣减失败"); } diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/ShopSkuMapper.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/ShopSkuMapper.java index a746ed325..bee177629 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/ShopSkuMapper.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/mapper/ShopSkuMapper.java @@ -15,6 +15,6 @@ public interface ShopSkuMapper extends PjcloudBaseMapper { * @param version 当前版本号 * @return 影响行数 */ - int deductStock(Long skuId, Integer num, Integer version); + int deductStock(Long skuId, Double num, Integer version); } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/ShopSkuService.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/ShopSkuService.java index 4510992fd..374ef3ea3 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/ShopSkuService.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/ShopSkuService.java @@ -12,5 +12,10 @@ public interface ShopSkuService extends IService { * @param num 增减数量(正数加,负数减) * @return 是否成功 */ - boolean deductStock(Long skuId, Integer num); + boolean deductStock(Long skuId, Double num); + + /** + * 批量增减库存(正数增加,负数扣减),任一失败则返回false + */ + boolean deductStockBatch(com.bsd.pjcloud.supermarket.dto.SkuStockChangeDTO changes); } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/ShopSkuServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/ShopSkuServiceImpl.java index 84e1b00c1..85a018c8b 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/ShopSkuServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/ShopSkuServiceImpl.java @@ -7,6 +7,8 @@ import com.bsd.pjcloud.supermarket.mapper.ShopSkuMapper; import com.bsd.pjcloud.supermarket.mapper.ShopSpuMapper; import com.bsd.pjcloud.supermarket.service.ShopSkuService; import lombok.AllArgsConstructor; +import org.springframework.transaction.annotation.Transactional; +import com.bsd.pjcloud.supermarket.dto.SkuStockChangeDTO; import org.springframework.stereotype.Service; /** * sku @@ -24,7 +26,7 @@ public class ShopSkuServiceImpl extends ServiceImpl 0) return true; } return false; } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean deductStockBatch(SkuStockChangeDTO changes) { + if (changes == null || changes.getItems() == null || changes.getItems().isEmpty()) { + return true; + } + for (SkuStockChangeDTO.Item item : changes.getItems()) { + if (item == null || item.getId() == null || item.getIncrCount() == null) return false; + boolean ok = deductStock(item.getId(), item.getIncrCount()); + if (!ok) { + throw new RuntimeException("扣减库存失败,skuId=" + item.getId()); + } + } + return true; + } } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuImportPDNewDto.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuImportPDNewDto.java index 57ded10bd..4e1d2154e 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuImportPDNewDto.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuImportPDNewDto.java @@ -95,3 +95,4 @@ public class SmErpSpuImportPDNewDto { + diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ShopSpuMapper.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ShopSpuMapper.xml index 7ea83d126..900c327f9 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ShopSpuMapper.xml +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/resources/mapper/ShopSpuMapper.xml @@ -27,6 +27,7 @@ + UPDATE shop_spu