diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java index 660183834..cc52d5152 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java @@ -55,6 +55,11 @@ public class HardOrderDto extends HardOrderEntity implements BaseIsIncludeTreeIn */ private Boolean isFindCarList = false; + /** + * 是否查询预约相关 + */ + private Boolean isFindApptList = false; + /** * 退款相关 */ diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderVo.java index 815aea19c..11d936db6 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardOrderVo.java @@ -8,6 +8,7 @@ import com.bsd.pjcloud.wallet.api.vo.base.BaseWalletInterface; import com.bsd.pjcloud.wallet.api.vo.base.BaseWalletTypeInterface; import lombok.Data; +import java.time.LocalTime; import java.util.List; @Data @@ -69,4 +70,14 @@ public class HardOrderVo extends HardOrderEntity implements BaseUserDeptInterfac */ private String walletTypeUniqueCode; + /** + * 预约时间相关 + */ + private String apptTitle; + + private String apptHourType; + + private LocalTime apptStartTime; + + private LocalTime apptEndTime; } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java index d486cd2e9..6de6b6512 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java @@ -68,6 +68,7 @@ import java.io.IOException; import java.time.LocalDate; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -125,6 +126,28 @@ public class HardOrderController { /* ************************************* end 远程调用 ************************************* */ /* ************************************* start app start ************************************* */ + @Operation(summary = "app查询当前用户的预约订单", description = "app查询当前用户的预约订单") + @GetMapping("/app/user-appt-list") + public R> userApptList() { + HardOrderDto dto = new HardOrderDto(); + + LocalDateTime now = LocalDateTime.now(); + + PjcloudUser user = SecurityUtils.getUser(); + dto.setUserId(user.getId()); + dto.setIsFindCarList(true); + dto.setIsFindApptList(true); + dto.setCreateTimeList( + new LocalDateTime[]{ + now.withHour(0).withMinute(0).withSecond(0), + now.withHour(23).withMinute(59).withSecond(59) + } + ); + dto.setOrderType(HardOrderTypeEnum.RESERVE.getType()); + return R.ok(hardwareOrderService.scopeList(dto, null)); + } + + @Operation(summary = "app查询订单列表", description = "app查询订单列表") @GetMapping("/app/page-join") public R appPageJoin(@ParameterObject Page page, @ParameterObject HardOrderDto dto) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardApptServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardApptServiceImpl.java index 5ed3aff7e..9b93ebb72 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardApptServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardApptServiceImpl.java @@ -36,7 +36,7 @@ public class HardApptServiceImpl extends ServiceImpl() .eq(ObjectUtil.isNotEmpty(title), HardApptEntity::getTitle, title) + .eq(ObjectUtil.isNotEmpty(mchId), HardApptEntity::getMchId, mchId) .ne(ObjectUtil.isNotEmpty(id), HardApptEntity::getId, id) ); if (ObjectUtil.isNotEmpty(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 596135d90..a54f39974 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 @@ -2097,13 +2097,33 @@ public class HardOrderServiceImpl extends ServiceImpl carList = hardCarService.getByParentCarId(v.getParentCarId()); - List carVoList = BeanUtils.toBean(carList, HardCarVo.class); - v.setCarList(carVoList); + CompletableFuture findCarListFuture = CompletableFuture.runAsync(() -> { + if (dto.getIsFindCarList()) { + for (HardOrderVo v : list) { + List carList = hardCarService.getByParentCarId(v.getParentCarId()); + List carVoList = BeanUtils.toBean(carList, HardCarVo.class); + v.setCarList(carVoList); + } } - } - CompletableFuture.allOf(deptFuture, mchFuture, deviceFuture, currentDeptFuture, walletFuture).join(); + }); + // 预约订单 + CompletableFuture findApptListFuture = CompletableFuture.runAsync(() -> { + if (dto.getIsFindApptList()) { + List apptList = list.stream().map(HardOrderVo::getApptId).filter(ObjectUtil::isNotEmpty).distinct().toList(); + if (ObjectUtil.isEmpty(apptList)) return; + List apptOrderList = hardApptService.listByIds(apptList); + if (ObjectUtil.isEmpty(apptOrderList)) return; + Map apptMap = CollectionUtils.convertMap(apptOrderList, HardApptEntity::getId); + for (HardOrderVo v : list) { + HardApptEntity target = apptMap.get(v.getApptId()); + if (ObjectUtil.isEmpty(target)) continue; + v.setApptTitle(target.getTitle()); + v.setApptHourType(target.getHourType()); + v.setApptStartTime(target.getStartTime()); + v.setApptEndTime(target.getEndTime()); + } + } + }); + CompletableFuture.allOf(deptFuture, mchFuture, deviceFuture, currentDeptFuture, walletFuture, findCarListFuture, findApptListFuture).join(); } } \ No newline at end of file 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 bf61295ff..fa4b7b049 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 @@ -58,6 +58,7 @@ a.order_status, a.pay_type, a.hour_type, + a.appt_id, a.sys_type, a.total_price, a.extra_price, diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysDeptServiceImpl.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysDeptServiceImpl.java index 8a58b531d..e25a405db 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysDeptServiceImpl.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysDeptServiceImpl.java @@ -219,6 +219,10 @@ public class SysDeptServiceImpl extends ServiceImpl impl treeNode.setWeight(dept.getSortOrder()); return treeNode; }).toList(), 0L); + if (ObjectUtil.isEmpty(user) || ObjectUtil.isEmpty(user.getDeptId()) || CollUtil.isEmpty(deptAllTree)) { + return Collections.emptyList(); + } + Tree currentDeptTree = null; for (Tree rootNode : deptAllTree) { currentDeptTree = TreeUtil.getNode(rootNode, user.getDeptId()); @@ -226,8 +230,26 @@ public class SysDeptServiceImpl extends ServiceImpl impl break; } } - // List> currentDeptAllNodes = getSubTreeNodes(currentDeptTree); - return List.of(currentDeptTree); + if (currentDeptTree == null) { + return Collections.emptyList(); + } + + Tree child = currentDeptTree; + Tree ancestor = currentDeptTree.getParent(); + while (ancestor != null) { + List> children = ancestor.getChildren(); + if (children != null) { + Long childId = child.getId(); + children.removeIf(item -> !Objects.equals(item.getId(), childId)); + } + child = ancestor; + ancestor = ancestor.getParent(); + } + + if (Objects.equals(child.getId(), 0L)) { + return Optional.ofNullable(child.getChildren()).orElseGet(Collections::emptyList); + } + return List.of(child); } public List> getSubTreeNodes(Tree node) { 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 b27de4db9..23231b6e0 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 @@ -654,14 +654,14 @@ public class SysUserServiceImpl extends ServiceImpl impl if (ObjectUtil.isNotEmpty(v.getUsername())) { long repetitionUsername = usernameList.stream().filter(i -> ObjectUtil.equals(i, v.getUsername())).count(); if (repetitionUsername > 1) { - errorMsg.add("用户名 <" + v.getUsername() + "> 重复"); + // errorMsg.add("用户名 <" + v.getUsername() + "> 重复"); } } // 判断输入的编制是否合法 String staffingType = null; if (ObjectUtil.isEmpty(v.getStaffingType())) { - errorMsg.add("请选择编制"); + // errorMsg.add("请选择编制"); } else { UserStaffingTypeEnum staffingTypeEnum = UserStaffingTypeEnum.valueOfByDescription(v.getStaffingType()); if (ObjectUtil.isEmpty(staffingTypeEnum)) { diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/MchManageDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/MchManageDto.java index 65717433e..6ee2b7e45 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/MchManageDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/MchManageDto.java @@ -14,8 +14,12 @@ import java.util.List; @Data public class MchManageDto extends MchManageEntity { + private Long parentDeptId; + private List deptIds; + private List excludeIds; + private List ids; private List notIds; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveDto.java index 43fcc7713..a9049225e 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletActiveDto.java @@ -25,6 +25,8 @@ public class WalletActiveDto extends WalletActiveEntity { private List userIds; + private List deptIds; + /** * 是否绑定用户 */ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java index 394d99c0c..54fd623af 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java @@ -6,6 +6,10 @@ 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.admin.api.dto.UserInfo; +import com.bsd.pjcloud.admin.api.entity.SysDept; +import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; +import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.core.validation.Group; import com.bsd.pjcloud.common.excel.annotation.RequestExcel; @@ -19,7 +23,9 @@ import com.bsd.pjcloud.wallet.api.dto.WalletRemoteOpenCardListDto; import com.bsd.pjcloud.wallet.api.dto.WalletActiveBindCardDto; import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; +import com.bsd.pjcloud.wallet.api.vo.MchManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletActiveVo; +import com.bsd.pjcloud.wallet.service.MchManageService; import com.bsd.pjcloud.wallet.service.WalletActiveService; import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; @@ -51,7 +57,10 @@ import java.util.List; public class WalletActiveController { private final WalletActiveService walletActiveService; + private final MchManageService mchManageService; + private final RemoteDeptService remoteDeptService; + private final RemoteUserService remoteUserService; /* ************************************* start 远程调用 start ************************************* */ @@ -77,7 +86,20 @@ public class WalletActiveController { @GetMapping("/ad/open-card-list") @Operation(summary = "android开卡列表") public R> AdOpenCardList(@ParameterObject Page page, @ParameterObject WalletActiveDto dto) { - return R.ok(walletActiveService.pageJoin(page, dto)); + PjcloudUser user = SecurityUtils.getUser(); + if (ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getDeptId())) { + UserInfo userInfo = remoteUserService.getInnerByUserId(user.getId()).getData(); + MchManageVo targetMch = mchManageService.getViewsCanteenMchByDeptId(userInfo.getSysUser().getDeptId()); + if (ObjectUtil.isNotEmpty(targetMch)) { + dto.setDeptIds(List.of(targetMch.getId())); + } else { + List deptIdList = remoteDeptService.getDescendantList(userInfo.getSysUser().getDeptId()).getData(); + if (ObjectUtil.isNotEmpty(deptIdList)) { + dto.setDeptIds(deptIdList.stream().map(SysDept::getDeptId).toList()); + } + } + } + return R.ok(walletActiveService.scopePageList(page, dto)); } @GetMapping("/ad/open-card-success") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchManageController.java index 05ed9ab86..a2dbc8698 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchManageController.java @@ -33,6 +33,7 @@ import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; /** @@ -145,6 +146,11 @@ public class MchManageController { MchManageVo targetMch = mchManageService.getViewsCanteenMchByDeptId(userInfo.getSysUser().getDeptId()); if (ObjectUtil.isNotEmpty(targetMch)) { dto.setIds(List.of(targetMch.getId())); + } else { + List deptIdList = remoteDeptService.getDescendantList(userInfo.getSysUser().getDeptId()).getData(); + if (ObjectUtil.isNotEmpty(deptIdList)) { + dto.setDeptIds(deptIdList.stream().map(SysDept::getDeptId).toList()); + } } } else { R.ok(new Page<>()); @@ -212,6 +218,17 @@ public class MchManageController { @GetMapping("/select") public R getSelect(@ParameterObject Page page, @ParameterObject MchManageDto dto) { DataScope dataScope = null; + if (ObjectUtil.isNotEmpty(dto.getParentDeptId())) { + List deptIdList = remoteDeptService.getDescendantList(dto.getParentDeptId()).getData(); + if (ObjectUtil.isNotEmpty(deptIdList)) { + List deptIds = dto.getDeptIds(); + if (ObjectUtil.isEmpty(deptIds)) { + deptIds = new ArrayList<>(); + } + deptIds.addAll(deptIdList.stream().map(SysDept::getDeptId).toList()); + dto.setDeptIds(deptIds); + } + } return R.ok(mchManageService.scopePageList(page, dto, dataScope)); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java index 90715edf5..f02d50047 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java @@ -34,6 +34,7 @@ public interface WalletActiveMapper extends PjcloudBaseMapper + + and a.id not in + + #{v} + + and a.id in