diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardApptDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardApptDto.java index 1725de8c0..3f14cb103 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardApptDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardApptDto.java @@ -3,6 +3,11 @@ package com.bsd.pjcloud.hard.api.dto; import com.bsd.pjcloud.hard.api.entity.HardApptEntity; import lombok.Data; +import java.util.List; + @Data public class HardApptDto extends HardApptEntity { + + private List reserveTimeList; + } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java index 3e6103736..8327c6e0d 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java @@ -4,6 +4,7 @@ import com.bsd.pjcloud.hard.api.entity.order.HardCarEntity; import lombok.Data; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; @Data @@ -13,6 +14,8 @@ public class HardCarDto extends HardCarEntity { private String createTimeStr; + private String orderApptUseDateStr; + private LocalDate[] createTimeList; private List orderStatusCodes; @@ -23,4 +26,6 @@ public class HardCarDto extends HardCarEntity { private List mchIds; + private LocalDateTime[] apptUseDateTimeList; + } 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 73f39f1dd..919f786be 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 @@ -42,6 +42,8 @@ public class HardOrderDto extends HardOrderEntity implements BaseIsIncludeTreeIn private LocalDateTime[] refundTimeList; + private LocalDateTime[] apptUseDateTimeList; + private List orderTypeCodes; private List orderPayTypeCodes; @@ -67,6 +69,8 @@ public class HardOrderDto extends HardOrderEntity implements BaseIsIncludeTreeIn private String createTimeStr; + private String orderApptUseDateStr; + private List saleStatusCodes; /** diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java index 61eaa5cb3..b511e45ff 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java @@ -50,6 +50,9 @@ public class HardAppCreateOrderDto { // 预约id private Long apptId; + // 预约时间类型 + private String apptTimeType; + // 地址 private HardAppTakeOutAddressDto address; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardApptEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardApptEntity.java index 8e21162d4..267b1991e 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardApptEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardApptEntity.java @@ -7,6 +7,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import com.bsd.pjcloud.common.core.util.TenantTable; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardApptTimeEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardApptTimeEntity.java index e2bea5d2b..8ee7f3df2 100755 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardApptTimeEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardApptTimeEntity.java @@ -27,6 +27,12 @@ public class HardApptTimeEntity extends Model { @Schema(description = "编号") private Long id; + /** + * 商户ID + */ + @Schema(description = "商户ID") + private Long mchId; + /** * appt_id */ @@ -35,6 +41,7 @@ public class HardApptTimeEntity extends Model { /** * 预约时间类型(昨天、今天、明天、自定义) + * * @see com.bsd.pjcloud.hard.api.constant.HardApptTimeTypeEnum */ @Schema(description = "预约时间类型(昨天、今天、明天、自定义)") diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/address/HardUserMapAddressEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/address/HardUserMapAddressEntity.java index ec6c26d60..d5f74723e 100755 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/address/HardUserMapAddressEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/address/HardUserMapAddressEntity.java @@ -105,6 +105,12 @@ public class HardUserMapAddressEntity extends Model { @Schema(description = "tag") private String tag; + /** + * 是否为默认地址 + */ + @Schema(description = "是否为默认地址") + private String isDefault; + /** * 创建人 */ 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 10680da77..1b4aaf07b 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 @@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import com.bsd.pjcloud.common.core.util.TenantTable; +import java.time.LocalDate; import java.time.LocalDateTime; /** @@ -68,7 +69,6 @@ public class HardOrderEntity extends Model { @Schema(description = "商户绑定的部门id") private Long merchantDeptId; - /** * 设备id */ @@ -129,6 +129,12 @@ public class HardOrderEntity extends Model { @Schema(description = "预约时间段id") private Long apptId; + /** + * 预约使用时间(天) + */ + @Schema(description = "预约使用时间(天)") + private LocalDate apptUseDate; + /** * 订单设备类型 */ diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardApptTimeCascadeVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardApptTimeCascadeVo.java new file mode 100644 index 000000000..04a3986bb --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardApptTimeCascadeVo.java @@ -0,0 +1,18 @@ +package com.bsd.pjcloud.hard.api.vo; + +import com.bsd.pjcloud.hard.api.entity.HardApptEntity; +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; + +@Data +public class HardApptTimeCascadeVo { + + private String apptTimeType; + + private LocalDate apptTimeWeekStr; + + private List apptList; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardApptTimeTypeVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardApptTimeTypeVo.java new file mode 100644 index 000000000..d12134380 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardApptTimeTypeVo.java @@ -0,0 +1,12 @@ +package com.bsd.pjcloud.hard.api.vo; + +import lombok.Data; + +@Data +public class HardApptTimeTypeVo { + + private Long mchId; + + private Long type; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardApptVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardApptVo.java index fa10aca6e..fa9118f01 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardApptVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/HardApptVo.java @@ -3,6 +3,11 @@ package com.bsd.pjcloud.hard.api.vo; import com.bsd.pjcloud.hard.api.entity.HardApptEntity; import lombok.Data; +import java.util.List; + @Data public class HardApptVo extends HardApptEntity { + + private List reserveTimeList; + } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardApptController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardApptController.java index cb179c191..a0c75441f 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardApptController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardApptController.java @@ -12,9 +12,15 @@ import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; 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.constant.HardApptTimeTypeEnum; import com.bsd.pjcloud.hard.api.dto.HardApptDto; import com.bsd.pjcloud.hard.api.entity.HardApptEntity; +import com.bsd.pjcloud.hard.api.entity.HardApptTimeEntity; +import com.bsd.pjcloud.hard.api.vo.HardApptTimeCascadeVo; +import com.bsd.pjcloud.hard.api.vo.HardApptTimeTypeVo; +import com.bsd.pjcloud.hard.api.vo.HardApptVo; import com.bsd.pjcloud.hard.service.HardApptService; +import com.bsd.pjcloud.hard.service.HardApptTimeService; 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 +31,12 @@ import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.time.LocalDate; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; /** * 设备预约管理 @@ -38,6 +49,7 @@ import java.util.List; public class HardApptController { private final HardApptService hardApptService; + private final HardApptTimeService hardApptTimeService; /* ************************************* start app start ************************************* */ @@ -54,12 +66,50 @@ public class HardApptController { return R.ok(list); } + @Operation(summary = "app预约时间列表v2", description = "app预约时间列表v2") + @ApiCryptoAes + @GetMapping("/app/v2/list") + public R> appV2List(@ParameterObject HardApptDto dto) { + if (ObjectUtil.isEmpty(dto.getMchId())) throw new RuntimeException("商户ID不能为空"); + + ArrayList resultList = new ArrayList<>(); + + List apptTimeList = hardApptTimeService.list(new LambdaQueryWrapper() + .eq(HardApptTimeEntity::getMchId, dto.getMchId()) + ); + if (ObjectUtil.isEmpty(apptTimeList)) return R.ok(resultList); + // 查询mch商户下所有的预约 + List apptList = hardApptService.list(new LambdaQueryWrapper().eq(HardApptEntity::getMchId, dto.getMchId())); + // 分组 + Map> apptTimeTypeMap = apptTimeList.stream().collect(Collectors.groupingBy(HardApptTimeEntity::getType)); + + LocalDate now = LocalDate.now(); + + for (Map.Entry> entries : apptTimeTypeMap.entrySet()) { + String key = entries.getKey(); + + HardApptTimeCascadeVo entity = new HardApptTimeCascadeVo(); + + HardApptTimeTypeEnum apptTimeType = HardApptTimeTypeEnum.valueOfByTypeOrToday(key); + entity.setApptTimeType(apptTimeType.getType()); + entity.setApptTimeWeekStr(now.plusDays(apptTimeType.getDay())); + + List appTIdList = apptTimeList.stream().filter(v -> ObjectUtil.equals(key, v.getType())).map(HardApptTimeEntity::getApptId).toList(); + List targetApptList = apptList.stream().filter(v -> appTIdList.contains(v.getId())).toList(); + entity.setApptList(targetApptList); + resultList.add(entity); + } + + + return R.ok(resultList); + } + /* ************************************* end app end ************************************* */ @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('hard_hardAppt_view')") - public R getHardApptPage(@ParameterObject Page page, @ParameterObject HardApptDto dto) { + public R> getHardApptPage(@ParameterObject Page page, @ParameterObject HardApptDto dto) { return R.ok(hardApptService.scopePage(page, dto, DataScope.of())); } @@ -74,7 +124,7 @@ public class HardApptController { @SysLog("新增设备预约管理") @PostMapping @PreAuthorize("@pms.hasPermission('hard_hardAppt_add')") - public R save(@RequestBody HardApptEntity hardAppt) { + public R save(@RequestBody HardApptDto hardAppt) { return R.ok(hardApptService.create(hardAppt)); } @@ -82,7 +132,7 @@ public class HardApptController { @SysLog("修改设备预约管理") @PutMapping @PreAuthorize("@pms.hasPermission('hard_hardAppt_edit')") - public R updateById(@RequestBody HardApptEntity hardAppt) { + public R updateById(@RequestBody HardApptDto hardAppt) { return R.ok(hardApptService.edit(hardAppt)); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/address/HardUserMapAddressController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/address/HardUserMapAddressController.java index 694f2e4d8..ef2130fb5 100755 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/address/HardUserMapAddressController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/address/HardUserMapAddressController.java @@ -50,6 +50,14 @@ public class HardUserMapAddressController { return R.ok(hardUserMapAddressService.scopePageList(page, dto, null)); } + @Operation(summary = "app查询默认地址(没有默认地址就查询第一个地址)", description = "查询默认地址(没有默认地址就查询第一个地址)") + @ApiCryptoAes + @GetMapping("/app/default-address") + public R appDefaultAddress() { + PjcloudUser user = SecurityUtils.getUser(); + return R.ok(hardUserMapAddressService.defaultAddress(user.getId())); + } + @Operation(summary = "app新增或者修改地址", description = "app新增或者修改地址") @ApiCryptoAes @PostMapping("/app/createOrUpdate") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenApptTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenApptTotalController.java new file mode 100644 index 000000000..60f72ce76 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenApptTotalController.java @@ -0,0 +1,60 @@ +package com.bsd.pjcloud.hard.controller.order; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.core.constant.enums.MerchantTypeEnum; +import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; +import com.bsd.pjcloud.hard.api.dto.order.HardCarDto; +import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; +import com.bsd.pjcloud.hard.api.vo.order.HardCanteenProductTotalVo; +import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; +import com.bsd.pjcloud.hard.service.HardCanteenApptTotalService; +import com.bsd.pjcloud.hard.service.HardCanteenTotalService; +import com.bsd.pjcloud.wallet.api.dto.MchManageDto; +import com.bsd.pjcloud.wallet.api.feign.RemoteMchService; +import com.bsd.pjcloud.wallet.api.vo.MchManageVo; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.http.HttpHeaders; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 食堂预约统计 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/hard-canteen-appt-total-log") +@Tag(description = "hard-canteen-appt-total-log", name = "食堂预约统计") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class HardCanteenApptTotalController { + + private final HardCanteenApptTotalService canteenApptTotalService; + + private final RemoteMchService remoteMchService; + + @Operation(summary = "食堂菜品预约统计", description = "食堂菜品预约统计") + @PostMapping("/proudct-reserv-total") + public R> productReservTotal(@ParameterObject Page page, @RequestBody HardOrderDto dto) { + // 查询商户 + MchManageDto mchManageDto = new MchManageDto(); + mchManageDto.setTypesList(List.of(MerchantTypeEnum.CANTEEN.getType())); + List mchList = remoteMchService.scopeList(mchManageDto).getData(); + if (ObjectUtil.isNotEmpty(mchList) && ObjectUtil.isEmpty(dto.getMchIds())) { + dto.setMchIds(mchList.stream().map(MchManageVo::getId).toList()); + } + dto.setOrderType(HardOrderTypeEnum.RESERVE.getType()); + dto.setApptIdNotNull(true); + return R.ok(canteenApptTotalService.productReservTotal(page, dto, null)); + } + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenDeptTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenDeptTotalController.java index 38830a989..8229b05ee 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenDeptTotalController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenDeptTotalController.java @@ -1,4 +1,5 @@ package com.bsd.pjcloud.hard.controller.order; + import com.bsd.pjcloud.common.api.encrypt.annotation.crypto.ApiCryptoAes; import com.bsd.pjcloud.common.core.util.R; @@ -42,6 +43,7 @@ public class HardCanteenDeptTotalController { PjcloudUser user = SecurityUtils.getUser(); dto.setTotalIsFindChildren(true); + dto.setApptIdNotNull(true); return R.ok(canteenTotalService.listByDept(dto, user, dataScope)); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java index 852f8defd..34988fafb 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java @@ -142,5 +142,4 @@ public class HardCanteenTotalController { } return R.ok(canteenTotalService.proudctMchQuery(page, dto)); } - } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardApptTimeMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardApptTimeMapper.java index 6d33b7b0e..c1b4cbe34 100755 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardApptTimeMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardApptTimeMapper.java @@ -2,10 +2,15 @@ package com.bsd.pjcloud.hard.mapper; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.hard.api.entity.HardApptTimeEntity; +import com.bsd.pjcloud.hard.api.vo.HardApptTimeTypeVo; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; @Mapper public interface HardApptTimeMapper extends PjcloudBaseMapper { + List getTypeListByMchId(@Param("mchId") Long mchId); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java index 85c6cb09b..40f4ac682 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java @@ -35,6 +35,8 @@ public interface HardCarMapper extends PjcloudBaseMapper { Page productTotal(Page page, @Param("dto") HardOrderDto dto, DataScope dataScope); + Page productTotalByApptUseDate(Page page, @Param("dto") HardOrderDto dto, DataScope dataScope); + Page proudctQuery(Page page, @Param("dto") HardCarDto dto); /** diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardApptService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardApptService.java index 1c2daff1f..6a7e63e97 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardApptService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardApptService.java @@ -9,18 +9,19 @@ import com.bsd.pjcloud.hard.api.entity.HardApptEntity; import com.bsd.pjcloud.hard.api.vo.HardApptVo; import java.util.ArrayList; +import java.util.List; public interface HardApptService extends IService { /** * 新增 */ - Long create(HardApptEntity hardAppt); + Long create(HardApptDto hardAppt); /** * 修改 */ - Long edit(HardApptEntity hardAppt); + Long edit(HardApptDto hardAppt); /** * 删除 @@ -31,4 +32,6 @@ public interface HardApptService extends IService { * 分页查询 */ Page scopePage(Page page, HardApptDto dto, DataScope of); + + List scopeList(HardApptDto dto, DataScope of); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardApptTimeService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardApptTimeService.java index f4b29a9e8..2eba96b47 100755 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardApptTimeService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardApptTimeService.java @@ -2,7 +2,12 @@ package com.bsd.pjcloud.hard.service; import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.hard.api.entity.HardApptTimeEntity; +import com.bsd.pjcloud.hard.api.vo.HardApptTimeTypeVo; + +import java.util.List; public interface HardApptTimeService extends IService { + List getTypeListByMchId(Long mchId); + } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenApptTotalService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenApptTotalService.java new file mode 100644 index 000000000..a7b429eab --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenApptTotalService.java @@ -0,0 +1,12 @@ +package com.bsd.pjcloud.hard.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; +import com.bsd.pjcloud.hard.api.vo.order.HardCanteenProductTotalVo; + +public interface HardCanteenApptTotalService { + + Page productReservTotal(Page page, HardOrderDto dto, DataScope dataScope); + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardUserMapAddressService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardUserMapAddressService.java index 73ad25815..ef0d686cf 100755 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardUserMapAddressService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardUserMapAddressService.java @@ -14,4 +14,9 @@ public interface HardUserMapAddressService extends IService implements HardApptService { + private final HardApptTimeMapper hardApptTimeMapper; + private final RemoteMchService remoteMchService; /** * 新增 */ @Override - public Long create(HardApptEntity dto) { + public Long create(HardApptDto dto) { // title不能重复 if (existTitle(dto.getTitle(), dto.getMchId(), null)) { throw new RuntimeException("标题不能重复"); @@ -45,14 +52,15 @@ public class HardApptServiceImpl extends ServiceImpl hardApptVos = BeanUtil.copyToList(pageList.getRecords(), HardApptVo.class); + pageList.setRecords(hardApptVos); + + if (ObjectUtil.isNotEmpty(pageList)) { + disposePageList(pageList.getRecords()); + } + return pageList; + } + + @Override + public List scopeList(HardApptDto dto, DataScope of) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .eq(ObjectUtil.isNotEmpty(dto.getDeptId()), HardApptEntity::getDeptId, dto.getDeptId()) + .like(ObjectUtil.isNotEmpty(dto.getTitle()), HardApptEntity::getTitle, dto.getTitle()) + .orderByAsc(HardApptEntity::getHourType); + List list = baseMapper.selectListByScope(wrapper, of); + + List resultList = BeanUtil.copyToList(list, HardApptVo.class); + + if (ObjectUtil.isNotEmpty(resultList)) { + disposePageList(resultList); + } + return resultList; + } + + // 创建预约时间 + private void createApptTime(HardApptEntity apptEntity, List reserveTimeList) { + if (!ObjectUtil.isAllNotEmpty(apptEntity.getId(), apptEntity.getMchId(), reserveTimeList)) { + return; + } + hardApptTimeMapper.delete(new LambdaQueryWrapper() + .eq(HardApptTimeEntity::getApptId, apptEntity.getId()) + .eq(HardApptTimeEntity::getMchId, apptEntity.getMchId()) + ); + ArrayList addList = new ArrayList<>(); + reserveTimeList.forEach(v -> { + HardApptTimeEntity entity = new HardApptTimeEntity(); + entity.setMchId(apptEntity.getMchId()); + entity.setApptId(apptEntity.getId()); + entity.setType(v); + addList.add(entity); + }); + hardApptTimeMapper.insert(addList); } private boolean existTitle(String title, Long mchId, Long id) { @@ -99,4 +152,19 @@ public class HardApptServiceImpl extends ServiceImpl 0; } + private void disposePageList(List records) { + if (ObjectUtil.isEmpty(records)) return; + List ids = records.stream().map(HardApptVo::getId).filter(ObjectUtil::isNotNull).distinct().toList(); + if (ObjectUtil.isNotEmpty(ids)) { + List targetList = hardApptTimeMapper.selectList(new LambdaQueryWrapper().in(HardApptTimeEntity::getApptId, ids)); + for (HardApptVo item : records) { + List apptTimeList = targetList.stream().filter(v -> ObjectUtil.equals(item.getId(), v.getApptId())).toList(); + if (ObjectUtil.isNotEmpty(apptTimeList)) { + List typeList = apptTimeList.stream().map(HardApptTimeEntity::getType).toList(); + item.setReserveTimeList(typeList); + } + } + } + } + } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardApptTimeServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardApptTimeServiceImpl.java index 120e0d66e..259d48653 100755 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardApptTimeServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardApptTimeServiceImpl.java @@ -2,6 +2,7 @@ package com.bsd.pjcloud.hard.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.hard.api.entity.HardApptTimeEntity; +import com.bsd.pjcloud.hard.api.vo.HardApptTimeTypeVo; import com.bsd.pjcloud.hard.mapper.HardApptTimeMapper; import com.bsd.pjcloud.hard.service.HardApptTimeService; import lombok.RequiredArgsConstructor; @@ -9,6 +10,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.util.List; + /** * 设备预约时间管理 */ @@ -18,4 +21,9 @@ import org.springframework.validation.annotation.Validated; @Service public class HardApptTimeServiceImpl extends ServiceImpl implements HardApptTimeService { + @Override + public List getTypeListByMchId(Long mchId) { + return baseMapper.getTypeListByMchId(mchId); + } + } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/address/HardUserMapAddressServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/address/HardUserMapAddressServiceImpl.java index 9aa14f0ab..363d46b0c 100755 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/address/HardUserMapAddressServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/address/HardUserMapAddressServiceImpl.java @@ -6,6 +6,7 @@ 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.common.core.constant.enums.YesNoEnum; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.hard.api.dto.address.HardUserMapAddressDto; @@ -72,4 +73,26 @@ public class HardUserMapAddressServiceImpl extends ServiceImpl() + .eq(HardUserMapAddressEntity::getUserId, userId) + .eq(HardUserMapAddressEntity::getIsDefault, YesNoEnum.YES.getCode()) + .last("limit 1") + ); + if (ObjectUtil.isNotEmpty(defaultAddress)) { + return BeanUtils.toBean(defaultAddress, HardUserMapAddressVo.class); + } + // 没有默认就查询第一个 + HardUserMapAddressEntity firstAddress = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(HardUserMapAddressEntity::getUserId, userId) + .orderByDesc(HardUserMapAddressEntity::getCreateTime) + .last("limit 1") + ); + if (ObjectUtil.isNotEmpty(firstAddress)) { + return BeanUtils.toBean(firstAddress, HardUserMapAddressVo.class); + } + return null; + } } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenApptTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenApptTotalServiceImpl.java new file mode 100644 index 000000000..947b56ad0 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenApptTotalServiceImpl.java @@ -0,0 +1,42 @@ +package com.bsd.pjcloud.hard.service.impl.order; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.common.data.datascope.DataScope; +import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum; +import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; +import com.bsd.pjcloud.hard.api.vo.order.HardCanteenProductTotalVo; +import com.bsd.pjcloud.hard.mapper.order.HardCarMapper; +import com.bsd.pjcloud.hard.service.HardCanteenApptTotalService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.time.LocalDate; + +/** + * 食堂统计 + */ +@Validated +@Slf4j +@RequiredArgsConstructor +@Service +public class HardCanteenApptTotalServiceImpl implements HardCanteenApptTotalService { + + private final HardCarMapper hardCarMapper; + + @Override + public Page productReservTotal(Page page, HardOrderDto dto, DataScope dataScope) { + dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + Page pageList = hardCarMapper.productTotalByApptUseDate(page, dto, null); + if (ObjectUtil.isNotEmpty(pageList)) { + for (HardCanteenProductTotalVo v : pageList.getRecords()) { + LocalDate localDate = v.getCreateTime().toLocalDate(); + v.setUniqueCode(localDate + "_" + v.getHourType()); + } + } + return pageList; + } + +} 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 8bcdbfcd8..9e75f6ca7 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 @@ -573,6 +573,7 @@ public class HardOrderServiceImpl extends ServiceImpl + + \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/address/HardUserMapAddressMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/address/HardUserMapAddressMapper.xml index ca2998679..9bccfb722 100755 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/address/HardUserMapAddressMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/address/HardUserMapAddressMapper.xml @@ -18,6 +18,7 @@ a.username, a.user_moblie, a.tag, + a.is_default, a.create_by, a.create_time, a.update_by, diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml index 0cc339c64..e4320600b 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml @@ -47,6 +47,12 @@ and o.create_time between #{dto.createTimeList[0]} and #{dto.createTimeList[1]} + + and o.appt_use_date between #{dto.apptUseDateTimeList[0]} and #{dto.apptUseDateTimeList[1]} + + + and DATE_FORMAT(o.appt_use_date, '%Y-%m-%d') = #{dto.orderApptUseDateStr} + + +