diff --git a/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeBikeOrderMapper.java b/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeBikeOrderMapper.java index 0dcc81c..8c813d0 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeBikeOrderMapper.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeBikeOrderMapper.java @@ -1,7 +1,13 @@ package com.cdzy.operations.mapper; +import com.cdzy.operations.model.dto.EbikeBikeOrderDayCountDto; +import com.cdzy.operations.model.dto.EbikeBikeOrderMonthCountDto; +import com.cdzy.operations.model.dto.EbikeBikeOrderWeekCountDto; import com.mybatisflex.core.BaseMapper; import com.cdzy.operations.model.entity.EbikeBikeOrder; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; /** * 工单信息 映射层。 @@ -11,4 +17,24 @@ import com.cdzy.operations.model.entity.EbikeBikeOrder; */ public interface EbikeBikeOrderMapper extends BaseMapper { + /** + * 员工月单量统计 + * @param receiverId 员工ID + * @return 列表 + */ + List monthCount(@RequestParam Long receiverId); + + /** + * 员工周单量统计 + * @param receiverId 员工ID + * @return 列表 + */ + List weekCount(@RequestParam Long receiverId); + + /** + * 员工日单量统计 + * @param receiverId 员工ID + * @return 列表 + */ + List dayCount(@RequestParam Long receiverId); } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeBikeOrderDayCountDto.java b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeBikeOrderDayCountDto.java new file mode 100644 index 0000000..4e4fb57 --- /dev/null +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeBikeOrderDayCountDto.java @@ -0,0 +1,45 @@ +package com.cdzy.operations.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 工单信息 实体类。 + * + * @author attiya + * @since 2025-11-24 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EbikeBikeOrderDayCountDto implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工单类型:1 巡检工单 2 换电工单 3 调度工单 4 维修工单 + */ + private String orderType; + + /** + * 处理人ID + */ + private Long receiverId; + + /** + * 当日完成量 + */ + private Integer todayCount; + + /** + * 昨天完成量 + */ + private Integer yesterdayCount; +} diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeBikeOrderMonthCountDto.java b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeBikeOrderMonthCountDto.java new file mode 100644 index 0000000..29d7ef1 --- /dev/null +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeBikeOrderMonthCountDto.java @@ -0,0 +1,45 @@ +package com.cdzy.operations.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 工单信息 实体类。 + * + * @author attiya + * @since 2025-11-24 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EbikeBikeOrderMonthCountDto implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工单类型:1 巡检工单 2 换电工单 3 调度工单 4 维修工单 + */ + private String orderType; + + /** + * 处理人ID + */ + private Long receiverId; + + /** + * 本月完成量 + */ + private Integer thisMonthCount; + + /** + * 上月完成量 + */ + private Integer lastMonthCount; +} diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeBikeOrderWeekCountDto.java b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeBikeOrderWeekCountDto.java new file mode 100644 index 0000000..3e179ba --- /dev/null +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeBikeOrderWeekCountDto.java @@ -0,0 +1,45 @@ +package com.cdzy.operations.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 工单信息 实体类。 + * + * @author attiya + * @since 2025-11-24 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EbikeBikeOrderWeekCountDto implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 工单类型:1 巡检工单 2 换电工单 3 调度工单 4 维修工单 + */ + private String orderType; + + /** + * 处理人ID + */ + private Long receiverId; + + /** + * 本周完成量 + */ + private Integer thisWeekCount; + + /** + * 上周完成量 + */ + private Integer lastWeekCount; +} diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeOrderBulletinBoardInfo.java b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeOrderBulletinBoardInfo.java index 5928f1c..4bdc1ff 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeOrderBulletinBoardInfo.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeOrderBulletinBoardInfo.java @@ -1,22 +1,12 @@ package com.cdzy.operations.model.dto; -import com.cdzy.operations.handler.PointDeserializer; -import com.cdzy.operations.handler.PointSerializer; -import com.cdzy.operations.handler.PointTypeHandler; -import com.cdzy.operations.model.entity.EbikeOrderPart; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.mybatisflex.annotation.Column; -import com.mybatisflex.annotation.RelationOneToMany; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.locationtech.jts.geom.Point; import java.io.Serial; import java.io.Serializable; -import java.time.LocalDateTime; import java.util.List; /** @@ -34,52 +24,18 @@ public class EbikeOrderBulletinBoardInfo implements Serializable { @Serial private static final long serialVersionUID = 1L; + /** + * 本月与上月单量统计 + */ + List monthCountList; /** - * 工单ID + * 本周与上周单量统计 */ - private Long orderId; + List weekCountList; /** - * 工单类型 + * 今日与昨日单量统计 */ - private Integer orderType; - - /** - * 车辆编号 - */ - private String bikeCode; - - /** - * 定位 - */ - @Column(typeHandler = PointTypeHandler.class) - @JsonSerialize(using = PointSerializer.class) - @JsonDeserialize(using = PointDeserializer.class) - private Point location; - - - - private LocalDateTime createdAt; - - /** - * 故障内容 - */ - private String remark; - - /** - * SN - */ - private String ecuSn; - - /** - * 电量 - */ - private Integer soc; - - /** - * 故障部位 - */ - @RelationOneToMany(selfField = "orderId", targetField = "orderId") - private List parts; + List dayCountList; } diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java index 95e8b61..42167b3 100644 --- a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java @@ -760,7 +760,18 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl monthCountDtos = ebikeBikeOrderMapper.monthCount(staffId); + List weekCountDtos = ebikeBikeOrderMapper.weekCount(staffId); + List dayCountDtos = ebikeBikeOrderMapper.dayCount(staffId); + return EbikeOrderBulletinBoardInfo.builder() + .monthCountList(monthCountDtos) + .weekCountList(weekCountDtos) + .dayCountList(dayCountDtos) + .build(); } @Override diff --git a/ebike-operations/src/main/resources/mapper/EbikeBikeOrderMapper.xml b/ebike-operations/src/main/resources/mapper/EbikeBikeOrderMapper.xml new file mode 100644 index 0000000..da60321 --- /dev/null +++ b/ebike-operations/src/main/resources/mapper/EbikeBikeOrderMapper.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + diff --git a/ebike-operations/src/test/java/com/cdzy/operations/EbikeOperationsApplicationTests.java b/ebike-operations/src/test/java/com/cdzy/operations/EbikeOperationsApplicationTests.java index 1c5b7d7..b4b1af6 100644 --- a/ebike-operations/src/test/java/com/cdzy/operations/EbikeOperationsApplicationTests.java +++ b/ebike-operations/src/test/java/com/cdzy/operations/EbikeOperationsApplicationTests.java @@ -1,23 +1,43 @@ package com.cdzy.operations; -import com.cdzy.operations.utils.RedisUtil; +import com.cdzy.operations.mapper.EbikeBikeOrderMapper; +import com.cdzy.operations.model.dto.EbikeBikeOrderDayCountDto; +import com.cdzy.operations.model.dto.EbikeBikeOrderMonthCountDto; +import com.cdzy.operations.model.dto.EbikeBikeOrderWeekCountDto; import jakarta.annotation.Resource; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; -import java.util.concurrent.TimeUnit; +import java.util.List; @SpringBootTest class EbikeOperationsApplicationTests { @Resource - RedisUtil redisUtil; - + private EbikeBikeOrderMapper orderMapper; @Test - void contextLoads() { - redisUtil.saveDispatchOrder(360977412682211328L,null,10L, TimeUnit.SECONDS); -// redisUtil.releaseDispatchLock("bike:dispatch:lock:360967408603103232"); + void monthCount() { + List monthCountDtos = orderMapper.monthCount(320131029184712704L); + for (EbikeBikeOrderMonthCountDto monthCountDto : monthCountDtos) { + System.out.println(monthCountDto); + } + } + + @Test + void dayCount() { + List dayCountDtos = orderMapper.dayCount(320131029184712704L); + for (EbikeBikeOrderDayCountDto dayCountDto : dayCountDtos) { + System.out.println(dayCountDto); + } + } + + @Test + void weekCount() { + List weekCountDtos = orderMapper.weekCount(320131029184712704L); + for (EbikeBikeOrderWeekCountDto weekCountDto : weekCountDtos) { + System.out.println(weekCountDto); + } }