diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/erp/CanteenErpMaterialSaveDTO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/erp/CanteenErpMaterialSaveDTO.java index 78908eef7..8c2f58b17 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/erp/CanteenErpMaterialSaveDTO.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/erp/CanteenErpMaterialSaveDTO.java @@ -37,4 +37,8 @@ public class CanteenErpMaterialSaveDTO { */ @Schema(description="库存下限") private Integer inventoryLowerLimit; + + + @Schema(description="采购价格") + private Integer purchasePrice; } diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/erp/CanteenInventoryRecordEditDTO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/erp/CanteenInventoryRecordEditDTO.java index dede1cc6a..c26a51a52 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/erp/CanteenInventoryRecordEditDTO.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/erp/CanteenInventoryRecordEditDTO.java @@ -86,7 +86,7 @@ public class CanteenInventoryRecordEditDTO { /** * @Link SmCgPlanEditItemDTO */ - @Schema(description="item") + @Schema(description="items") private List items; diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/erp/CanteenInventoryRecordsdDTO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/erp/CanteenInventoryRecordsdDTO.java index a8af8727d..72d14a3c6 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/erp/CanteenInventoryRecordsdDTO.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/erp/CanteenInventoryRecordsdDTO.java @@ -67,7 +67,7 @@ public class CanteenInventoryRecordsdDTO { @Schema(description="入库明细") - private List canteenInventoryRecordsItemDTOS; + private List items; } diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenErpMaterialEntity.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenErpMaterialEntity.java index da4d71057..708868fd8 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenErpMaterialEntity.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/entity/CanteenErpMaterialEntity.java @@ -90,5 +90,10 @@ public class CanteenErpMaterialEntity extends Model { private Long tenantId; + /** + * 采购价格 + */ + @Schema(description="采购价格") + private Integer purchasePrice; } \ No newline at end of file diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/erp/CanteenErpMaterialVO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/erp/CanteenErpMaterialVO.java index 57b79cb6e..62e60afec 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/erp/CanteenErpMaterialVO.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/erp/CanteenErpMaterialVO.java @@ -43,4 +43,8 @@ public class CanteenErpMaterialVO { @Schema(description="当前总库存") private Double currentStock; + + + @Schema(description="采购价格") + private Integer purchasePrice; } diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/erp/ErpMaterialPageVo.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/erp/ErpMaterialPageVo.java index fc34a2492..c65626eab 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/erp/ErpMaterialPageVo.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/erp/ErpMaterialPageVo.java @@ -33,4 +33,8 @@ public class ErpMaterialPageVo { */ @Schema(description="当前库存数量") private Double stock; + + + @Schema(description="采购价格") + private Integer purchasePrice; } diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/erp/InventoryRecordItemVo.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/erp/InventoryRecordItemVo.java index ea57c65c0..bc9d7ec0e 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/erp/InventoryRecordItemVo.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/erp/InventoryRecordItemVo.java @@ -22,6 +22,9 @@ public class InventoryRecordItemVo { @Schema(description="食材id") private Long erpMaterialId; + @Schema(description="食材名称") + private String name; + /** * 主表id */ @@ -45,6 +48,12 @@ public class InventoryRecordItemVo { @Schema(description="累计总金额") private Integer totalAmount; + /** + * 累计数量 + */ + @Schema(description="累计数量") + private Integer totalNumber; + /** * 备注 */ diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenErpMaterialServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenErpMaterialServiceImpl.java index 561929812..c4caac5cd 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenErpMaterialServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenErpMaterialServiceImpl.java @@ -44,6 +44,7 @@ public class CanteenErpMaterialServiceImpl extends ServiceImpl canteenStockEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); canteenStockEntityLambdaQueryWrapper.eq(CanteenStockEntity::getItemId, id); @@ -75,7 +77,6 @@ public class CanteenErpMaterialServiceImpl extends ServiceImpl().eq(CanteenStockEntity::getItemId, id)); @@ -103,6 +104,7 @@ public class CanteenErpMaterialServiceImpl extends ServiceImpl canteenInventoryRecordsItemDTOS = canteenInventoryRecordsdDTO.getCanteenInventoryRecordsItemDTOS(); + List canteenInventoryRecordsItemDTOS = canteenInventoryRecordsdDTO.getItems(); List canteenInventoryRecordsItemEntityList = BeanUtils.toBean(canteenInventoryRecordsItemDTOS, CanteenInventoryRecordsItemEntity.class); @@ -185,6 +185,10 @@ public class CanteenInventoryRecordsServiceImpl extends ServiceImpl { List smeErpCgPlanItemVos = BeanUtils.toBean(list, InventoryRecordItemVo.class); + smeErpCgPlanItemVos.stream().forEach(item -> { + CanteenErpMaterialEntity canteenErpMaterialEntity = canteenErpMaterialMapper.selectById(item.getErpMaterialId()); + item.setName(canteenErpMaterialEntity.getName()); + }); source.setItems(smeErpCgPlanItemVos); }); diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java index 81d62dde0..375ce5e0d 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenSpuServiceImpl.java @@ -151,7 +151,11 @@ public class CanteenSpuServiceImpl extends ServiceImpl canteenSpuSimpleVOList = BeanUtils.toBean(pageData.getRecords(), CanteenSpuSimpleVO.class); Page canteenSpuSimpleVOPage = new Page<>(); canteenSpuSimpleVOPage.setRecords(canteenSpuSimpleVOList); - org.springframework.beans.BeanUtils.copyProperties(pageData, pageData, "records"); // 复制分页参数 + pageData.setCurrent(pageData.getCurrent()); + canteenSpuSimpleVOPage.setPages(pageData.getPages()); + canteenSpuSimpleVOPage.setSize(pageData.getSize()); + canteenSpuSimpleVOPage.setTotal(pageData.getTotal()); + // 复制分页参数 return canteenSpuSimpleVOPage; } diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenStockServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenStockServiceImpl.java index 7a3124e5e..f109d0a5d 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenStockServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenStockServiceImpl.java @@ -47,7 +47,7 @@ public class CanteenStockServiceImpl extends ServiceImpl canteenErpMaterialEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); canteenErpMaterialEntityLambdaQueryWrapper.eq(CanteenErpMaterialEntity::getId,item.getId()); CanteenErpMaterialEntity canteenErpMaterialEntity = canteenErpMaterialMapper.selectOne(canteenErpMaterialEntityLambdaQueryWrapper); diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenErpMaterialMapper.xml b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenErpMaterialMapper.xml index 24818d5bf..05660e129 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenErpMaterialMapper.xml +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenErpMaterialMapper.xml @@ -14,12 +14,14 @@ + \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/meeting/app/EquipmentVo.java b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/meeting/app/EquipmentVo.java new file mode 100644 index 000000000..79bfe6893 --- /dev/null +++ b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/meeting/app/EquipmentVo.java @@ -0,0 +1,21 @@ +package com.bsd.pjcloud.integrated.vo.meeting.app; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + + +@Data +public class EquipmentVo { + + /** + * 设备名称 + */ + @Schema(description="设备名称") + private String name; + + /** + * 设备数量 + */ + @Schema(description="设备数量") + private Integer quantity; +} diff --git a/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/meeting/app/MeetingRoomPageVo.java b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/meeting/app/MeetingRoomPageVo.java index 702b3cd56..a955a412a 100644 --- a/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/meeting/app/MeetingRoomPageVo.java +++ b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/meeting/app/MeetingRoomPageVo.java @@ -68,6 +68,8 @@ public class MeetingRoomPageVo { private String availableTime; + @Schema(description="设备名称") + private List equipmentNames; } diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/MeetingRoomController.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/MeetingRoomController.java index edbcd8624..4e3065fe5 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/MeetingRoomController.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/MeetingRoomController.java @@ -143,10 +143,10 @@ public class MeetingRoomController { /**---------------------------APP------------------------------*/ - @GetMapping("/app/list") + @GetMapping("/app/page") public R> appList(@ParameterObject Page page, @ParameterObject MeetingRoomEntity meetingRoom) { LambdaQueryWrapper meetingRoomEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); - meetingRoomEntityLambdaQueryWrapper.eq(MeetingRoomEntity::getStatus, YesNoEnum.YES.getCode()); + meetingRoomEntityLambdaQueryWrapper.eq(MeetingRoomEntity::getStatus, YesNoEnum.NO.getCode()); meetingRoomEntityLambdaQueryWrapper.orderByDesc(MeetingRoomEntity::getSort).orderByDesc(MeetingRoomEntity::getId); Page pageData = meetingRoomService.MeetingRoomPageScope(page, meetingRoomEntityLambdaQueryWrapper); diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/mapper/MeetingBookingMapper.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/mapper/MeetingBookingMapper.java index a530c5e1d..52a02d75e 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/mapper/MeetingBookingMapper.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/mapper/MeetingBookingMapper.java @@ -4,8 +4,14 @@ import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.integrated.entity.MeetingBookingEntity; import org.apache.ibatis.annotations.Mapper; +import java.time.LocalDate; +import java.util.List; + @Mapper public interface MeetingBookingMapper extends PjcloudBaseMapper { + + + List findByRoomIdAndDate(Long roomId, LocalDate date); } \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/MeetingRoomServiceImpl.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/MeetingRoomServiceImpl.java index 726d98b9d..28990e28d 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/MeetingRoomServiceImpl.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/MeetingRoomServiceImpl.java @@ -4,13 +4,16 @@ 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.data.datascope.DataScope; +import com.bsd.pjcloud.integrated.entity.MeetingBookingEntity; import com.bsd.pjcloud.integrated.entity.MeetingEquipmentEntity; import com.bsd.pjcloud.integrated.entity.MeetingRoomEntity; import com.bsd.pjcloud.integrated.entity.MeetingRoomEquipmentEntity; +import com.bsd.pjcloud.integrated.mapper.MeetingBookingMapper; import com.bsd.pjcloud.integrated.mapper.MeetingEquipmentMapper; import com.bsd.pjcloud.integrated.mapper.MeetingRoomEquipmentMapper; import com.bsd.pjcloud.integrated.mapper.MeetingRoomMapper; import com.bsd.pjcloud.integrated.service.MeetingRoomService; +import com.bsd.pjcloud.integrated.vo.meeting.app.EquipmentVo; import com.bsd.pjcloud.integrated.vo.meeting.app.MeetingRoomPageVo; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; @@ -18,10 +21,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.time.LocalDate; +import java.util.*; import java.util.stream.Collectors; /** @@ -37,6 +38,7 @@ public class MeetingRoomServiceImpl extends ServiceImpl wrapper) { return baseMapper.selectPageByScope(page, wrapper, DataScope.of()); @@ -157,21 +159,31 @@ public class MeetingRoomServiceImpl extends ServiceImpl> equipmentMap = getRoomEquipmentMap(roomIds); + Map> equipmentMap = getRoomEquipmentMap(roomIds); + LocalDate today = LocalDate.now(); // 4. 转换记录列表 List voRecords = entityPage.getRecords().stream().map(entity -> { + List timeline = buildTimelineForRoom(entity.getId(), today); + MeetingRoomPageVo vo = new MeetingRoomPageVo(); // 4.1 基础字段拷贝 BeanUtils.copyProperties(entity, vo); // 4.2 设置设备信息 -// List equipments = equipmentMap.get(entity.getId()); -// if (!CollectionUtils.isEmpty(equipments)) { -// vo.setEquipmentNames(equipments.stream() -// .map(MeetingRoomEquipmentEntity::getEquipmentName) -// .collect(Collectors.toList())); -// } + List equipments = equipmentMap.get(entity.getId()); + List equipmentVos = new ArrayList(); + + if (!CollectionUtils.isEmpty(equipments)) { + equipments.forEach(roomEquip -> { + EquipmentVo equipmentVo = new EquipmentVo(); + equipmentVo.setName(roomEquip.getEquipmentName()); + equipmentVo.setQuantity(roomEquip.getQuantity()); + equipmentVos.add(equipmentVo); + }); + + } + vo.setEquipmentNames(equipmentVos); return vo; }).collect(Collectors.toList()); @@ -179,6 +191,7 @@ public class MeetingRoomServiceImpl extends ServiceImpl buildTimelineForRoom(Long roomId, LocalDate date) { + int startHour = 8, endHour = 24, slotCount = endHour - startHour; + List timeline = new ArrayList<>(Collections.nCopies(slotCount, "free")); + List bookings = meetingBookingMapper.findByRoomIdAndDate(roomId, date); + for (MeetingBookingEntity booking : bookings) { + int bookingStart = booking.getStartTime().getHour(); + int bookingEnd = booking.getEndTime().getHour(); + for (int h = bookingStart; h < bookingEnd; h++) { + int idx = h - startHour; + if (idx >= 0 && idx < slotCount) { + timeline.set(idx, "busy"); + } + } + } + // 例:12:00-13:00 不可用 + timeline.set(4, "disabled"); + return timeline; + } } \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/MeetingBookingMapper.xml b/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/MeetingBookingMapper.xml index d8dae8019..6a0536664 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/MeetingBookingMapper.xml +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/MeetingBookingMapper.xml @@ -21,4 +21,7 @@ + \ No newline at end of file