From 34d7b406455fe7cef90177790af079309631a06f Mon Sep 17 00:00:00 2001
From: dy <2389062315@qq.com>
Date: Mon, 21 Jul 2025 10:04:56 +0800
Subject: [PATCH 1/4] =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=A0=BC=E5=BC=8F?=
=?UTF-8?q?=E5=8C=96=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 22 ++++++++++---------
.../property/domain/AttendanceShift.java | 8 +++----
.../property/domain/bo/AttendanceShiftBo.java | 8 +++----
.../property/domain/vo/AttendanceShiftVo.java | 8 +++----
4 files changed, 24 insertions(+), 22 deletions(-)
diff --git a/pom.xml b/pom.xml
index f2ed45bd..456be637 100644
--- a/pom.xml
+++ b/pom.xml
@@ -93,6 +93,8 @@
dev
192.168.24.101:8848
192.168.24.101:4560
+
+
DEFAULT_GROUP
DEFAULT_GROUP
nacos
@@ -367,17 +369,17 @@
${mapstruct-plus.version}
-
- com.hik
- examples
- ${hik-sdk.version}
-
+
+
+
+
+
-
- com.hik
- jna
- ${hik-sdk.version}
-
+
+
+
+
+
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceShift.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceShift.java
index d71f694b..459ae578 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceShift.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/AttendanceShift.java
@@ -41,12 +41,12 @@ public class AttendanceShift extends TenantEntity {
/**
* 考勤开始时间
*/
- private DateTime startTime;
+ private LocalTime startTime;
/**
* 考勤结束时间
*/
- private DateTime endTime;
+ private LocalTime endTime;
/**
* 状态(0:off,1:on)
@@ -61,12 +61,12 @@ public class AttendanceShift extends TenantEntity {
/**
* 休息开始时间
*/
- private DateTime restStartTime;
+ private LocalTime restStartTime;
/**
* 休息结束时间
*/
- private DateTime restEndTime;
+ private LocalTime restEndTime;
}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceShiftBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceShiftBo.java
index cded8be8..cf4f513d 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceShiftBo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/AttendanceShiftBo.java
@@ -42,13 +42,13 @@ public class AttendanceShiftBo extends BaseEntity {
* 考勤开始时间
*/
@DateTimeFormat(pattern = "HH:mm:ss")
- private DateTime startTime;
+ private LocalTime startTime;
/**
* 考勤结束时间
*/
@DateTimeFormat(pattern = "HH:mm:ss")
- private DateTime endTime;
+ private LocalTime endTime;
/**
* 状态(0:off,1:on)
@@ -64,13 +64,13 @@ public class AttendanceShiftBo extends BaseEntity {
* 休息开始时间
*/
@DateTimeFormat(pattern = "HH:mm:ss")
- private DateTime restStartTime;
+ private LocalTime restStartTime;
/**
* 休息结束时间
*/
@DateTimeFormat(pattern = "HH:mm:ss")
- private DateTime restEndTime;
+ private LocalTime restEndTime;
}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceShiftVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceShiftVo.java
index ac256f93..6bf0f594 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceShiftVo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/AttendanceShiftVo.java
@@ -49,13 +49,13 @@ public class AttendanceShiftVo implements Serializable {
* 考勤开始时间
*/
@ExcelProperty(value = "考勤开始时间")
- private DateTime startTime;
+ private LocalTime startTime;
/**
* 考勤结束时间
*/
@ExcelProperty(value = "考勤结束时间")
- private DateTime endTime;
+ private LocalTime endTime;
/**
* 状态(0:off,1:on)
@@ -75,13 +75,13 @@ public class AttendanceShiftVo implements Serializable {
* 休息开始时间
*/
@ExcelProperty(value = "休息开始时间")
- private DateTime restStartTime;
+ private LocalTime restStartTime;
/**
* 休息结束时间
*/
@ExcelProperty(value = "休息结束时间")
- private DateTime restEndTime;
+ private LocalTime restEndTime;
}
From 4010cc7dfa0210aff98407012c611e616f5124a2 Mon Sep 17 00:00:00 2001
From: dy <2389062315@qq.com>
Date: Mon, 21 Jul 2025 10:10:30 +0800
Subject: [PATCH 2/4] 1
---
pom.xml | 1 +
1 file changed, 1 insertion(+)
diff --git a/pom.xml b/pom.xml
index 2a53d42b..fd5c0f8f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -99,6 +99,7 @@
nacos
+
prod
From 0b90663d3d2153f54d29f9bebdf4cf015eae81b6 Mon Sep 17 00:00:00 2001
From: yuyongle <1150359267@qq.com>
Date: Mon, 21 Jul 2025 14:37:15 +0800
Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E5=B7=A5?=
=?UTF-8?q?=E5=8D=95bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../property/domain/ServiceWorkOrders.java | 24 +++----
.../domain/ServiceWorkOrdersRecord.java | 45 ++++++++++++++
.../domain/ServiceWorkOrdersType.java | 10 ---
.../domain/bo/ServiceWorkOrdersBo.java | 18 +-----
.../domain/bo/ServiceWorkOrdersRecordBo.java | 53 ++++++++++++++++
.../domain/bo/ServiceWorkOrdersTypeBo.java | 15 -----
.../domain/vo/ServiceWorkOrdersInfoVo.java | 14 ++++-
.../vo/ServiceWorkOrdersRecordInfoVo.java | 55 ++++++++++++++++
.../domain/vo/ServiceWorkOrdersRecordVo.java | 62 +++++++++++++++++++
.../domain/vo/ServiceWorkOrdersTypeVo.java | 11 ----
.../domain/vo/ServiceWorkOrdersVo.java | 37 +++++------
.../mapper/ServiceWorkOrdersRecordMapper.java | 17 +++++
.../impl/ServiceWorkOrdersServiceImpl.java | 58 +++++++++++++++--
.../ServiceWorkOrdersRecordMapper.xml | 7 +++
14 files changed, 329 insertions(+), 97 deletions(-)
create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersRecord.java
create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersRecordBo.java
create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersRecordInfoVo.java
create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersRecordVo.java
create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/ServiceWorkOrdersRecordMapper.java
create mode 100644 ruoyi-modules/Property/src/main/resources/mapper/Property/ServiceWorkOrdersRecordMapper.xml
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java
index ed5a881c..7dc875ee 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java
@@ -47,7 +47,7 @@ public class ServiceWorkOrders extends TenantEntity {
/**
* 状态
*/
- private Integer status;
+ private String status;
/**
* 派单时间
@@ -55,15 +55,19 @@ public class ServiceWorkOrders extends TenantEntity {
private Date dispatchTime;
/**
- * 发起人姓名
+ * 发起人
*/
- private String initiatorName;
+ private long initiatorPeople;
/**
* 处理人姓名
*/
- private String handler;
+ private long handler;
+ /**
+ * 抄送人
+ */
+ private long ccPeople;
/**
* 地址
@@ -88,17 +92,7 @@ public class ServiceWorkOrders extends TenantEntity {
/**
* 是否超时
*/
- private Integer isTimeOut;
-
- /**
- * 创建人id
- */
- private Long createById;
-
- /**
- * 更新人id
- */
- private Long updateById;
+ private String isTimeOut;
}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersRecord.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersRecord.java
new file mode 100644
index 00000000..9e35cc17
--- /dev/null
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersRecord.java
@@ -0,0 +1,45 @@
+package org.dromara.property.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 工单接单记录对象 service_work_orders_record
+ *
+ * @author mocheng
+ * @date 2025-07-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("service_work_orders_record")
+public class ServiceWorkOrdersRecord extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * id
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 工单id
+ */
+ private Long orderId;
+
+
+ /**
+ * 状态(0创建工单,1已派单2已抢单3处理中,4已完成)
+ */
+ private String status;
+
+ /**
+ * 处理人
+ */
+ private Long handler;
+}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java
index ea18036f..95677afb 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrdersType.java
@@ -57,16 +57,6 @@ public class ServiceWorkOrdersType extends TenantEntity {
*/
private Integer isTransfers;
- /**
- * 创建人id
- */
- private Long createById;
-
- /**
- * 更新人id
- */
- private Long updateById;
-
/**
* 搜索值
*/
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersBo.java
index 4fbf80cf..7e0dd8b9 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersBo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersBo.java
@@ -46,7 +46,7 @@ public class ServiceWorkOrdersBo extends BaseEntity {
/**
* 状态
*/
- private Integer status;
+ private String status;
/**
* 派单时间
@@ -62,7 +62,7 @@ public class ServiceWorkOrdersBo extends BaseEntity {
/**
* 处理人姓名
*/
- private String handler;
+ private Long handler;
/**
* 地址
@@ -87,18 +87,6 @@ public class ServiceWorkOrdersBo extends BaseEntity {
/**
* 是否超时
*/
- private Integer isTimeOut;
-
- /**
- * 创建人id
- */
- private Long createById;
-
- /**
- * 更新人id
- */
- private Long updateById;
-
-
+ private String isTimeOut;
}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersRecordBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersRecordBo.java
new file mode 100644
index 00000000..0575d095
--- /dev/null
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersRecordBo.java
@@ -0,0 +1,53 @@
+package org.dromara.property.domain.bo;
+
+import org.dromara.property.domain.ServiceWorkOrdersRecord;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 工单接单记录业务对象 service_work_orders_record
+ *
+ * @author mocheng
+ * @date 2025-07-21
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ServiceWorkOrdersRecord.class, reverseConvertGenerate = false)
+public class ServiceWorkOrdersRecordBo extends BaseEntity {
+
+ /**
+ * id
+ */
+ @NotNull(message = "id不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 工单id
+ */
+ @NotBlank(message = "工单id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private long orderId;
+
+ /**
+ * 状态(0创建工单,1已派单2已抢单3处理中,4已完成)
+ */
+ @NotBlank(message = "状态(0创建工单,1已派单2已抢单3处理中,4已完成)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String status;
+
+ /**
+ * 处理人
+ */
+ @NotNull(message = "处理人不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long handler;
+
+ /**
+ * 搜索值
+ */
+ private String searchValue;
+
+
+}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java
index d02facda..ab0d9a20 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersTypeBo.java
@@ -60,19 +60,4 @@ public class ServiceWorkOrdersTypeBo extends BaseEntity {
*/
private Integer isTransfers;
- /**
- * 创建人id
- */
- private Long createById;
-
- /**
- * 更新人id
- */
- private Long updateById;
-
- /**
- * 搜索值
- */
- private String searchValue;
-
}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java
index 72ebaada..3e2b2498 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java
@@ -5,10 +5,12 @@ import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.property.domain.ServiceWorkOrders;
+import org.dromara.property.domain.ServiceWorkOrdersRecord;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
+import java.util.List;
/**
* @Author:yuyongle
@@ -51,7 +53,7 @@ public class ServiceWorkOrdersInfoVo implements Serializable {
* 状态
*/
@ExcelProperty(value = "状态")
- private Integer status;
+ private String status;
/**
* 派单时间
@@ -80,7 +82,7 @@ public class ServiceWorkOrdersInfoVo implements Serializable {
* 处理人姓名
*/
@ExcelProperty(value = "处理人姓名")
- private String handler;
+ private Long handler;
/**
* 处理人姓名文本
*/
@@ -120,7 +122,7 @@ public class ServiceWorkOrdersInfoVo implements Serializable {
* 是否超时
*/
@ExcelProperty(value = "是否超时")
- private Integer isTimeOut;
+ private String isTimeOut;
/**
* 类型名称
*/
@@ -131,4 +133,10 @@ public class ServiceWorkOrdersInfoVo implements Serializable {
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
+ /**
+ *工单记录
+ */
+ private List workOrdersRecordVoList;
+
+
}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersRecordInfoVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersRecordInfoVo.java
new file mode 100644
index 00000000..dbae9eac
--- /dev/null
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersRecordInfoVo.java
@@ -0,0 +1,55 @@
+package org.dromara.property.domain.vo;
+
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.property.domain.ServiceWorkOrdersRecord;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * 工单接单记录视图对象 service_work_orders_record
+ *
+ * @author mocheng
+ * @date 2025-07-21
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ServiceWorkOrdersRecord.class)
+public class ServiceWorkOrdersRecordInfoVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * id
+ */
+ @ExcelProperty(value = "id")
+ private Long id;
+
+ /**
+ * 状态(0创建工单,1已派单2已抢单3处理中,4已完成)
+ */
+ @ExcelProperty(value = "状态(0创建工单,1已派单2已抢单3处理中,4已完成)")
+ private String status;
+
+ /**
+ * 处理人
+ */
+ @ExcelProperty(value = "处理人")
+ private Long handler;
+ /**
+ * 处理人
+ */
+ @ExcelProperty(value = "处理人")
+ private String handlerName;
+ /**
+ * 创建时间
+ */
+ @ExcelProperty(value = "创建时间")
+ private Date createTime;
+}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersRecordVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersRecordVo.java
new file mode 100644
index 00000000..8471f476
--- /dev/null
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersRecordVo.java
@@ -0,0 +1,62 @@
+package org.dromara.property.domain.vo;
+
+import org.dromara.property.domain.ServiceWorkOrdersRecord;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 工单接单记录视图对象 service_work_orders_record
+ *
+ * @author mocheng
+ * @date 2025-07-21
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ServiceWorkOrdersRecord.class)
+public class ServiceWorkOrdersRecordVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * id
+ */
+ @ExcelProperty(value = "id")
+ private Long id;
+
+ /**
+ * 工单id
+ */
+ @ExcelProperty(value = "工单id")
+ private String orderId;
+
+ /**
+ * 状态(0创建工单,1已派单2已抢单3处理中,4已完成)
+ */
+ @ExcelProperty(value = "状态(0创建工单,1已派单2已抢单3处理中,4已完成)")
+ private String status;
+
+ /**
+ * 处理人
+ */
+ @ExcelProperty(value = "处理人")
+ private Long handler;
+
+ /**
+ * 创建时间
+ */
+ @ExcelProperty(value = "创建时间")
+ private Date createTime;
+
+
+}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java
index a590211e..b56c3c54 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersTypeVo.java
@@ -68,17 +68,6 @@ public class ServiceWorkOrdersTypeVo implements Serializable {
@ExcelProperty(value = "是否支持转单(0支持,1不支持)")
private Integer isTransfers;
- /**
- * 创建人id
- */
- @ExcelProperty(value = "创建人id")
- private Long createById;
-
- /**
- * 更新人id
- */
- @ExcelProperty(value = "更新人id")
- private Long updateById;
/**
* 搜索值
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java
index 163becd8..17f30a4e 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java
@@ -59,7 +59,7 @@ public class ServiceWorkOrdersVo implements Serializable {
* 状态
*/
@ExcelProperty(value = "状态")
- private int status;
+ private String status;
/**
* 派单时间
@@ -68,10 +68,19 @@ public class ServiceWorkOrdersVo implements Serializable {
private Date dispatchTime;
/**
- * 发起人姓名
+ * 发起人
*/
- @ExcelProperty(value = "发起人姓名")
- private String initiatorName;
+ private long initiatorPeople;
+
+
+ /**
+ * 处理人姓名
+ */
+ private long handler;
+ /**
+ * 抄送人
+ */
+ private long ccPeople;
/**
* 发起人姓名文本
*/
@@ -83,12 +92,6 @@ public class ServiceWorkOrdersVo implements Serializable {
*/
@ExcelProperty(value = "发起人手机号")
private String initiatorPhone;
-
- /**
- * 处理人姓名
- */
- @ExcelProperty(value = "处理人姓名")
- private String handler;
/**
* 处理人姓名文本
*/
@@ -124,19 +127,7 @@ public class ServiceWorkOrdersVo implements Serializable {
* 是否超时
*/
@ExcelProperty(value = "是否超时")
- private int isTimeOut;
-
- /**
- * 创建人id
- */
- @ExcelProperty(value = "创建人id")
- private Long createById;
-
- /**
- * 更新人id
- */
- @ExcelProperty(value = "更新人id")
- private Long updateById;
+ private String isTimeOut;
/**
* 搜索值
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/ServiceWorkOrdersRecordMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/ServiceWorkOrdersRecordMapper.java
new file mode 100644
index 00000000..6fcaff3b
--- /dev/null
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/ServiceWorkOrdersRecordMapper.java
@@ -0,0 +1,17 @@
+package org.dromara.property.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.dromara.property.domain.ServiceWorkOrdersRecord;
+import org.dromara.property.domain.vo.ServiceWorkOrdersRecordVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 工单接单记录Mapper接口
+ *
+ * @author mocheng
+ * @date 2025-07-21
+ */
+@Mapper
+public interface ServiceWorkOrdersRecordMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java
index 866ef1d5..ca4cdcc5 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java
@@ -1,6 +1,7 @@
package org.dromara.property.service.impl;
import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -12,12 +13,15 @@ import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.property.domain.ResidentPerson;
import org.dromara.property.domain.ServiceWorkOrders;
+import org.dromara.property.domain.ServiceWorkOrdersRecord;
import org.dromara.property.domain.ServiceWorkOrdersType;
import org.dromara.property.domain.bo.ServiceWorkOrdersBo;
import org.dromara.property.domain.vo.*;
import org.dromara.property.mapper.ResidentPersonMapper;
import org.dromara.property.mapper.ServiceWorkOrdersMapper;
+import org.dromara.property.mapper.ServiceWorkOrdersRecordMapper;
import org.dromara.property.mapper.ServiceWorkOrdersTypeMapper;
import org.dromara.property.service.IServiceWorkOrdersService;
import org.springframework.stereotype.Service;
@@ -40,6 +44,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
private final ServiceWorkOrdersMapper baseMapper;
private final ServiceWorkOrdersTypeMapper typesMapper;
private final ResidentPersonMapper residentPersonMapper;
+ private final ServiceWorkOrdersRecordMapper workOrdersRecordMapper;
/**
* 查询【工单处理】
@@ -55,7 +60,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
if (Objects.nonNull(serviceWorkOrdersTypeVo)) {
serviceWorkOrdersInfoVo.setTypeName(serviceWorkOrdersTypeVo.getOrderTypeName());
}
- ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(Long.valueOf(serviceWorkOrdersVo.getInitiatorName()));
+ ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(Long.valueOf(serviceWorkOrdersVo.getInitiatorPeople()));
if (Objects.nonNull(residentPersonVo)) {
serviceWorkOrdersInfoVo.setInitiatorNameText(residentPersonVo.getUserName());
serviceWorkOrdersInfoVo.setInitiatorPhone(residentPersonVo.getPhone());
@@ -65,6 +70,23 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
serviceWorkOrdersInfoVo.setHandlerText(residentPersonHandler.getUserName());
serviceWorkOrdersInfoVo.setHandlerPhone(residentPersonHandler.getPhone());
}
+ //查询工单处理记录
+ List serviceWorkOrdersRecordVoList = workOrdersRecordMapper.selectVoList(new LambdaQueryWrapper()
+ .eq(ServiceWorkOrdersRecord::getOrderId, id));
+ if (CollUtil.isNotEmpty(serviceWorkOrdersRecordVoList)) {
+ List serviceWorkOrdersRecordInfoVos = BeanUtil.copyToList(serviceWorkOrdersRecordVoList, ServiceWorkOrdersRecordInfoVo.class);
+ ListresidentPersonIdList = serviceWorkOrdersRecordInfoVos.stream()
+ .map(vo -> vo.getHandler())
+ .distinct()
+ .collect(Collectors.toList());
+ List residentPeople = residentPersonMapper.selectByIds(residentPersonIdList);
+ serviceWorkOrdersRecordInfoVos.stream().forEach(workOrdersRecordVo->{
+ ResidentPerson residentPerson = residentPeople.stream()
+ .filter(vo -> vo.getId() != null && vo.getId().equals(serviceWorkOrdersVo.getHandler())).findFirst().orElse(null);
+ workOrdersRecordVo.setHandlerName(residentPerson.getUserName());
+ });
+ serviceWorkOrdersInfoVo.setWorkOrdersRecordVoList(serviceWorkOrdersRecordInfoVos);
+ }
return serviceWorkOrdersInfoVo;
}
@@ -87,11 +109,15 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
.distinct()
.collect(Collectors.toList());
List serviceWorkOrdersTypeVoList = typesMapper.selectVoByIds(typeList);
+ if (ObjectUtil.isEmpty(serviceWorkOrdersTypeVoList)) {
+ return TableDataInfo.build(result);
+ }
List serviceWorkOrdersVoList = new ArrayList<>();
result.getRecords().stream().forEach(s -> {
ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = serviceWorkOrdersTypeVoList.stream()
.filter(vo -> vo.getId() != null && vo.getId().equals(s.getType())).findFirst().orElse(null);
- s.setTypeName(serviceWorkOrdersTypeVo.getOrderTypeName());
+
+ s.setTypeName(ObjectUtil.isNotNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersTypeVo.getOrderTypeName() : null);
serviceWorkOrdersVoList.add(s);
});
return TableDataInfo.build(new Page().setRecords(serviceWorkOrdersVoList));
@@ -116,8 +142,8 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), ServiceWorkOrders::getOrderNo, bo.getOrderNo());
lqw.like(StringUtils.isNotBlank(bo.getOrderName()), ServiceWorkOrders::getOrderName, bo.getOrderName());
lqw.eq(bo.getDispatchTime() != null, ServiceWorkOrders::getDispatchTime, bo.getDispatchTime());
- lqw.like(StringUtils.isNotBlank(bo.getInitiatorName()), ServiceWorkOrders::getInitiatorName, bo.getInitiatorName());
- lqw.eq(StringUtils.isNotBlank(bo.getHandler()), ServiceWorkOrders::getHandler, bo.getHandler());
+ lqw.like(StringUtils.isNotBlank(bo.getInitiatorName()), ServiceWorkOrders::getInitiatorPeople, bo.getInitiatorName());
+ lqw.eq(ObjectUtil.isNotEmpty(bo.getHandler()), ServiceWorkOrders::getHandler, bo.getHandler());
lqw.eq(StringUtils.isNotBlank(bo.getLocation()), ServiceWorkOrders::getLocation, bo.getLocation());
lqw.eq(bo.getPlanCompleTime() != null, ServiceWorkOrders::getPlanCompleTime, bo.getPlanCompleTime());
lqw.eq(bo.getCompleTime() != null, ServiceWorkOrders::getCompleTime, bo.getCompleTime());
@@ -138,10 +164,16 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
public Boolean insertByBo(ServiceWorkOrdersBo bo) {
ServiceWorkOrders add = MapstructUtils.convert(bo, ServiceWorkOrders.class);
add.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr());
+ add.setStatus("0");
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
+ ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
+ serviceWorkOrdersRecord.setOrderId(add.getId());
+ serviceWorkOrdersRecord.setStatus(add.getStatus());
+ serviceWorkOrdersRecord.setHandler(add.getHandler());
+ workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
}
return flag;
}
@@ -156,7 +188,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(ServiceWorkOrdersBo bo) {
ServiceWorkOrders update = MapstructUtils.convert(bo, ServiceWorkOrders.class);
- validEntityBeforeSave(update);
+ validEntityBeforeUpdate(update);
return baseMapper.updateById(update) > 0;
}
@@ -166,6 +198,22 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
private void validEntityBeforeSave(ServiceWorkOrders entity) {
//TODO 做一些数据校验,如唯一约束
+
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeUpdate(ServiceWorkOrders entity) {
+ ServiceWorkOrders serviceWorkOrders = baseMapper.selectById(entity.getId());
+ //TODO 做一些数据校验,如唯一约束
+ if (!entity.getStatus().equals(serviceWorkOrders.getStatus())) {
+ ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
+ serviceWorkOrdersRecord.setOrderId(serviceWorkOrders.getId());
+ serviceWorkOrdersRecord.setStatus(serviceWorkOrders.getStatus());
+ serviceWorkOrdersRecord.setHandler(serviceWorkOrders.getHandler());
+ workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
+ }
}
/**
diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/ServiceWorkOrdersRecordMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/ServiceWorkOrdersRecordMapper.xml
new file mode 100644
index 00000000..d32d4771
--- /dev/null
+++ b/ruoyi-modules/Property/src/main/resources/mapper/Property/ServiceWorkOrdersRecordMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
From 1e9efc77edbe9873ed0f296d2891572d92bde162 Mon Sep 17 00:00:00 2001
From: yuyongle <1150359267@qq.com>
Date: Mon, 21 Jul 2025 20:56:46 +0800
Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E5=B7=A5?=
=?UTF-8?q?=E5=8D=95bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../controller/CostMeterWaterController.java | 10 ++
.../controller/ServeceCustomerController.java | 36 +++++++
.../property/domain/ServiceWorkOrders.java | 2 +-
.../domain/bo/CostReturnPayFeeBo.java | 9 +-
.../domain/bo/ServiceWorkOrdersBo.java | 5 +
.../domain/vo/ServeceCustomerCountVo.java | 52 ++++++++++
.../domain/vo/ServiceWorkOrdersInfoVo.java | 10 +-
.../vo/ServiceWorkOrdersRecordInfoVo.java | 4 +
.../domain/vo/ServiceWorkOrdersVo.java | 9 +-
.../service/ICostMeterWaterService.java | 6 ++
.../service/IServiceWorkOrdersService.java | 7 ++
.../impl/CostCarChargeServiceImpl.java | 1 +
.../impl/CostMeterWaterServiceImpl.java | 15 +++
.../impl/ResidentPersonServiceImpl.java | 11 ++-
.../impl/ServiceWorkOrdersServiceImpl.java | 94 +++++++++++++------
15 files changed, 225 insertions(+), 46 deletions(-)
create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServeceCustomerController.java
create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServeceCustomerCountVo.java
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CostMeterWaterController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CostMeterWaterController.java
index f63a9fb4..9cd89f4f 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CostMeterWaterController.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CostMeterWaterController.java
@@ -68,7 +68,17 @@ public class CostMeterWaterController extends BaseController {
@PathVariable("id") Long id) {
return R.ok(costMeterWaterService.queryById(id));
}
+ /**
+ * 获取上月费用详情
+ *
+ *
+ */
+ @GetMapping("/ultimoWater/{roomId}")
+ public R getUltimoWater(@NotNull(message = "房间id不能为空")
+ @PathVariable("roomId") Long roomId) {
+ return R.ok(costMeterWaterService.getUltimoWater(roomId));
+ }
/**
* 新增费用-水电抄
*/
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServeceCustomerController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServeceCustomerController.java
new file mode 100644
index 00000000..65e0362a
--- /dev/null
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/ServeceCustomerController.java
@@ -0,0 +1,36 @@
+package org.dromara.property.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.property.domain.bo.ServerBookingBo;
+import org.dromara.property.domain.vo.ServeceCustomerCountVo;
+import org.dromara.property.domain.vo.ServerBookingVo;
+import org.dromara.property.service.IServiceWorkOrdersService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author:yuyongle
+ * @Date:2025/7/21 15:25
+ * @Description:客户服务控制器
+ **/
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/serveceCustomer")
+public class ServeceCustomerController {
+ private final IServiceWorkOrdersService serviceWorkOrdersService;
+ /**
+ * 查询客户服务工单看板统计
+ */
+ @GetMapping("/counts")
+ public R counts() {
+ return R.ok(serviceWorkOrdersService.counts());
+ }
+
+}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java
index 7dc875ee..5fe92a6b 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/ServiceWorkOrders.java
@@ -57,7 +57,7 @@ public class ServiceWorkOrders extends TenantEntity {
/**
* 发起人
*/
- private long initiatorPeople;
+ private String initiatorPeople;
/**
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CostReturnPayFeeBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CostReturnPayFeeBo.java
index 9106436d..3e5b944d 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CostReturnPayFeeBo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CostReturnPayFeeBo.java
@@ -34,7 +34,14 @@ public class CostReturnPayFeeBo extends BaseEntity {
*/
@NotBlank(message = "退款单号不能为空", groups = { AddGroup.class, EditGroup.class })
private String returnNo;
-
+ /**
+ * 收费id
+ */
+ private Long chargeId;
+ /**
+ * 收费类型
+ */
+ private String chargeType;
/**
* 支付单号
*/
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersBo.java
index 7e0dd8b9..dc33ecea 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersBo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ServiceWorkOrdersBo.java
@@ -36,11 +36,13 @@ public class ServiceWorkOrdersBo extends BaseEntity {
/**
* 工单名称
*/
+ @NotNull(message = "工单名称不能为空", groups = { EditGroup.class })
private String orderName;
/**
* 工单类型
*/
+ @NotNull(message = "工单类型不能为空", groups = { EditGroup.class })
private Long type;
/**
@@ -67,11 +69,14 @@ public class ServiceWorkOrdersBo extends BaseEntity {
/**
* 地址
*/
+ @NotNull(message = "地址不能为空", groups = { EditGroup.class })
+
private String location;
/**
* 计划完成时间
*/
+ @NotNull(message = "计划完成时间不能为空", groups = { EditGroup.class })
private Date planCompleTime;
/**
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServeceCustomerCountVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServeceCustomerCountVo.java
new file mode 100644
index 00000000..60034545
--- /dev/null
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServeceCustomerCountVo.java
@@ -0,0 +1,52 @@
+package org.dromara.property.domain.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @Author:yuyongle
+ * @Date:2025/7/21 15:29
+ * @Description:客户服务工单统计看板
+ **/
+@Data
+@Accessors(chain = true)
+public class ServeceCustomerCountVo implements Serializable {
+ /**
+ * 工单总数
+ */
+ private Integer workOrdersTotal;
+ /**
+ * 未派工单总数
+ */
+ private Integer notWorkOrdersTotal;
+ /**
+ * 未半结超时工单
+ */
+ private Integer novertimeOrdersTotal;
+ /**
+ * 处理中工单
+ */
+ private Integer InHandOrdersTotal;
+ /**
+ * 当月工单超时率
+ */
+ private Integer novertimeOrdersRate;
+ /**
+ * 当月工单数
+ */
+ private Integer monthOrdersTotal;
+ /**
+ * 超时工单数
+ */
+ private Integer outTimeOrdersTotal;
+ /**
+ * 当月满意度
+ */
+ private Integer monthoSatisfaction;
+ /**
+ * 满意数
+ */
+ private Integer satisfaction;
+}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java
index 3e2b2498..40eca36b 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersInfoVo.java
@@ -62,15 +62,9 @@ public class ServiceWorkOrdersInfoVo implements Serializable {
private Date dispatchTime;
/**
- * 发起人姓名
+ * 发起人
*/
- @ExcelProperty(value = "发起人姓名")
- private String initiatorName;
- /**
- * 发起人姓名文本
- */
- @ExcelProperty(value = "发起人姓名文本")
- private String initiatorNameText;
+ private String initiatorPeople;
/**
* 发起人手机号
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersRecordInfoVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersRecordInfoVo.java
index dbae9eac..2a3b1b79 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersRecordInfoVo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersRecordInfoVo.java
@@ -47,6 +47,10 @@ public class ServiceWorkOrdersRecordInfoVo implements Serializable {
*/
@ExcelProperty(value = "处理人")
private String handlerName;
+ /**
+ * 发起人
+ */
+ private String initiatorPeople;
/**
* 创建时间
*/
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java
index 17f30a4e..ac45e2f2 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrdersVo.java
@@ -70,8 +70,7 @@ public class ServiceWorkOrdersVo implements Serializable {
/**
* 发起人
*/
- private long initiatorPeople;
-
+ private String initiatorPeople;
/**
* 处理人姓名
@@ -81,12 +80,6 @@ public class ServiceWorkOrdersVo implements Serializable {
* 抄送人
*/
private long ccPeople;
- /**
- * 发起人姓名文本
- */
- @ExcelProperty(value = "发起人姓名文本")
- private String initiatorNameText;
-
/**
* 发起人手机号
*/
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICostMeterWaterService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICostMeterWaterService.java
index e301107c..3370a0ce 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICostMeterWaterService.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICostMeterWaterService.java
@@ -66,4 +66,10 @@ public interface ICostMeterWaterService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+ /**
+ * 获取上月水电详情
+ * @return
+ */
+ CostMeterWaterVo getUltimoWater(Long roomId);
}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersService.java
index 08d66aef..9906d476 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersService.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/IServiceWorkOrdersService.java
@@ -3,6 +3,7 @@ package org.dromara.property.service;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.property.domain.bo.ServiceWorkOrdersBo;
+import org.dromara.property.domain.vo.ServeceCustomerCountVo;
import org.dromara.property.domain.vo.ServiceWorkOrdersInfoVo;
import org.dromara.property.domain.vo.ServiceWorkOrdersVo;
@@ -66,4 +67,10 @@ public interface IServiceWorkOrdersService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+ /**
+ * 工单服务看板
+ * @return
+ */
+ ServeceCustomerCountVo counts();
}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostCarChargeServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostCarChargeServiceImpl.java
index 731f8e7a..b775aa92 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostCarChargeServiceImpl.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostCarChargeServiceImpl.java
@@ -119,6 +119,7 @@ public class CostCarChargeServiceImpl implements ICostCarChargeService {
CostItemsVo costItemsVo = costItemsMapper.selectVoById(add.getCostItemsId());
BigDecimal unitPrice = costItemsVo.getUnitPrice();
add.setAmountReceivable(unitPrice);
+ add.setChargeStatus(ChargeStatusEnum.PAYMENT_IS_SUBJECT_TO_REVIEW.getValue());
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostMeterWaterServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostMeterWaterServiceImpl.java
index c8f8dcb1..777b0a06 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostMeterWaterServiceImpl.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CostMeterWaterServiceImpl.java
@@ -1,5 +1,6 @@
package org.dromara.property.service.impl;
+import cn.hutool.core.bean.BeanUtil;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -136,4 +137,18 @@ public class CostMeterWaterServiceImpl implements ICostMeterWaterService {
}
return baseMapper.deleteByIds(ids) > 0;
}
+
+ /**
+ * 获取上月水电详情
+ * @return
+ */
+ @Override
+ public CostMeterWaterVo getUltimoWater(Long roomId) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(CostMeterWater::getRoomId, roomId);
+ wrapper.orderByDesc(CostMeterWater::getCreateTime);
+ wrapper.last("LIMIT 1");
+ CostMeterWater latestRecord = baseMapper.selectOne(wrapper);
+ return BeanUtil.copyProperties(latestRecord,CostMeterWaterVo.class);
+ }
}
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ResidentPersonServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ResidentPersonServiceImpl.java
index c37d0989..7a4668e9 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ResidentPersonServiceImpl.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ResidentPersonServiceImpl.java
@@ -1,5 +1,6 @@
package org.dromara.property.service.impl;
+import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@@ -115,15 +116,23 @@ public class ResidentPersonServiceImpl implements IResidentPersonService {
@Override
public Boolean updateByBo(ResidentPersonBo bo) {
ResidentPerson update = MapstructUtils.convert(bo, ResidentPerson.class);
- validEntityBeforeSave(update);
+ validEntityBeforeUpdate(update);
return baseMapper.updateById(update) > 0;
}
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeUpdate(ResidentPerson entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(ResidentPerson entity){
//TODO 做一些数据校验,如唯一约束
+ boolean exists = baseMapper.exists(new LambdaQueryWrapper().eq(ResidentPerson::getUserId, entity.getUserId()));
+ Assert.isTrue(!exists,"该用户已入住!");
}
/**
diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java
index ca4cdcc5..de1569f5 100644
--- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java
+++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java
@@ -4,7 +4,9 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
+import cn.idev.excel.event.Order;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
@@ -13,6 +15,7 @@ import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.property.domain.ResidentPerson;
import org.dromara.property.domain.ServiceWorkOrders;
import org.dromara.property.domain.ServiceWorkOrdersRecord;
@@ -24,6 +27,7 @@ import org.dromara.property.mapper.ServiceWorkOrdersMapper;
import org.dromara.property.mapper.ServiceWorkOrdersRecordMapper;
import org.dromara.property.mapper.ServiceWorkOrdersTypeMapper;
import org.dromara.property.service.IServiceWorkOrdersService;
+import org.dromara.system.api.model.LoginUser;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -56,34 +60,33 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
public ServiceWorkOrdersInfoVo queryById(Long id) {
ServiceWorkOrdersVo serviceWorkOrdersVo = baseMapper.selectVoById(id);
ServiceWorkOrdersInfoVo serviceWorkOrdersInfoVo = BeanUtil.copyProperties(serviceWorkOrdersVo, ServiceWorkOrdersInfoVo.class);
+ if(Objects.isNull(serviceWorkOrdersInfoVo)){
+ return serviceWorkOrdersInfoVo;
+ }
ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = typesMapper.selectVoById(serviceWorkOrdersVo.getType());
if (Objects.nonNull(serviceWorkOrdersTypeVo)) {
serviceWorkOrdersInfoVo.setTypeName(serviceWorkOrdersTypeVo.getOrderTypeName());
}
- ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(Long.valueOf(serviceWorkOrdersVo.getInitiatorPeople()));
- if (Objects.nonNull(residentPersonVo)) {
- serviceWorkOrdersInfoVo.setInitiatorNameText(residentPersonVo.getUserName());
- serviceWorkOrdersInfoVo.setInitiatorPhone(residentPersonVo.getPhone());
- }
ResidentPersonVo residentPersonHandler = residentPersonMapper.selectVoById(Long.valueOf(serviceWorkOrdersVo.getHandler()));
if (Objects.nonNull(residentPersonHandler)) {
serviceWorkOrdersInfoVo.setHandlerText(residentPersonHandler.getUserName());
serviceWorkOrdersInfoVo.setHandlerPhone(residentPersonHandler.getPhone());
}
//查询工单处理记录
- List serviceWorkOrdersRecordVoList = workOrdersRecordMapper.selectVoList(new LambdaQueryWrapper()
- .eq(ServiceWorkOrdersRecord::getOrderId, id));
+ List serviceWorkOrdersRecordVoList = workOrdersRecordMapper.selectVoList(new LambdaQueryWrapper().eq(ServiceWorkOrdersRecord::getOrderId, id));
if (CollUtil.isNotEmpty(serviceWorkOrdersRecordVoList)) {
List serviceWorkOrdersRecordInfoVos = BeanUtil.copyToList(serviceWorkOrdersRecordVoList, ServiceWorkOrdersRecordInfoVo.class);
- ListresidentPersonIdList = serviceWorkOrdersRecordInfoVos.stream()
- .map(vo -> vo.getHandler())
- .distinct()
- .collect(Collectors.toList());
+ List residentPersonIdList = serviceWorkOrdersRecordInfoVos.stream().map(vo -> vo.getHandler()).distinct().collect(Collectors.toList());
List residentPeople = residentPersonMapper.selectByIds(residentPersonIdList);
- serviceWorkOrdersRecordInfoVos.stream().forEach(workOrdersRecordVo->{
- ResidentPerson residentPerson = residentPeople.stream()
- .filter(vo -> vo.getId() != null && vo.getId().equals(serviceWorkOrdersVo.getHandler())).findFirst().orElse(null);
- workOrdersRecordVo.setHandlerName(residentPerson.getUserName());
+ serviceWorkOrdersRecordInfoVos.stream().forEach(workOrdersRecordVo -> {
+ ResidentPerson residentPerson = residentPeople.stream().filter(vo -> vo.getId() != null && vo.getId().equals(serviceWorkOrdersVo.getHandler())).findFirst().orElse(null);
+ workOrdersRecordVo.setHandlerName(Objects.nonNull(residentPerson) ? residentPerson.getUserName() : null);
+ if (Objects.nonNull(serviceWorkOrdersTypeVo)) {
+ workOrdersRecordVo.setInitiatorPeople(serviceWorkOrdersVo.getInitiatorPeople());
+ }
+ if(workOrdersRecordVo.getStatus().equals("1")||workOrdersRecordVo.getStatus().equals("2")){
+ serviceWorkOrdersInfoVo.setDispatchTime(workOrdersRecordVo.getCreateTime());
+ }
});
serviceWorkOrdersInfoVo.setWorkOrdersRecordVoList(serviceWorkOrdersRecordInfoVos);
}
@@ -104,18 +107,14 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
if (ObjectUtil.isEmpty(result.getRecords())) {
return TableDataInfo.build(result);
}
- List typeList = result.getRecords().stream()
- .map(vo -> vo.getType())
- .distinct()
- .collect(Collectors.toList());
+ List typeList = result.getRecords().stream().map(vo -> vo.getType()).distinct().collect(Collectors.toList());
List serviceWorkOrdersTypeVoList = typesMapper.selectVoByIds(typeList);
if (ObjectUtil.isEmpty(serviceWorkOrdersTypeVoList)) {
return TableDataInfo.build(result);
}
List serviceWorkOrdersVoList = new ArrayList<>();
result.getRecords().stream().forEach(s -> {
- ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = serviceWorkOrdersTypeVoList.stream()
- .filter(vo -> vo.getId() != null && vo.getId().equals(s.getType())).findFirst().orElse(null);
+ ServiceWorkOrdersTypeVo serviceWorkOrdersTypeVo = serviceWorkOrdersTypeVoList.stream().filter(vo -> vo.getId() != null && vo.getId().equals(s.getType())).findFirst().orElse(null);
s.setTypeName(ObjectUtil.isNotNull(serviceWorkOrdersTypeVo) ? serviceWorkOrdersTypeVo.getOrderTypeName() : null);
serviceWorkOrdersVoList.add(s);
@@ -163,8 +162,10 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(ServiceWorkOrdersBo bo) {
ServiceWorkOrders add = MapstructUtils.convert(bo, ServiceWorkOrders.class);
+ LoginUser user = LoginHelper.getLoginUser();
add.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr());
add.setStatus("0");
+ add.setInitiatorPeople(user.getNickname());
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
@@ -202,16 +203,19 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
}
/**
- * 保存前的数据校验
+ * 修改前的数据校验
*/
private void validEntityBeforeUpdate(ServiceWorkOrders entity) {
- ServiceWorkOrders serviceWorkOrders = baseMapper.selectById(entity.getId());
+ LambdaQueryWrapper ordersLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ ordersLambdaQueryWrapper.eq(ServiceWorkOrdersRecord::getOrderId, entity.getId());
+ ordersLambdaQueryWrapper.eq(ServiceWorkOrdersRecord::getStatus, entity.getStatus());
+ boolean exists = workOrdersRecordMapper.exists(ordersLambdaQueryWrapper);
//TODO 做一些数据校验,如唯一约束
- if (!entity.getStatus().equals(serviceWorkOrders.getStatus())) {
+ if (!exists) {
ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
- serviceWorkOrdersRecord.setOrderId(serviceWorkOrders.getId());
- serviceWorkOrdersRecord.setStatus(serviceWorkOrders.getStatus());
- serviceWorkOrdersRecord.setHandler(serviceWorkOrders.getHandler());
+ serviceWorkOrdersRecord.setOrderId(entity.getId());
+ serviceWorkOrdersRecord.setStatus(entity.getStatus());
+ serviceWorkOrdersRecord.setHandler(entity.getHandler());
workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
}
}
@@ -231,4 +235,40 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
}
return baseMapper.deleteByIds(ids) > 0;
}
+
+ /**
+ * 工单服务看板
+ * @return
+ */
+ @Override
+ public ServeceCustomerCountVo counts() {
+ List serviceWorkOrdersList = baseMapper.selectList(new QueryWrapper<>());
+ // 总工单数
+ int workOrdersTotal = serviceWorkOrdersList.size();
+
+ // 待派送工单
+ int notWorkOrdersTotal = (int) serviceWorkOrdersList.stream().filter(order -> "0".equals(order.getStatus())).count();
+ //未半结超时工单
+ int novertimeOrdersTotal = (int) serviceWorkOrdersList.stream().filter(order -> !"4".equals(order.getStatus()) && "1".equals(order.getIsTimeOut())).count();
+ // 处理中工单
+ int inHandOrdersTotal = (int) serviceWorkOrdersList.stream().filter(order -> "3".equals(order.getStatus())).count();
+ // 当月工单超时率
+ int novertimeOrdersRate = (int) serviceWorkOrdersList.stream().filter(order -> "3".equals(order.getStatus())).count();
+ // 当月工单数
+ int monthOrdersTotal = (int) serviceWorkOrdersList.stream().filter(order -> "3".equals(order.getStatus())).count();
+ // 超时工单数
+ int outTimeOrdersTotal = (int) serviceWorkOrdersList.stream().filter(order -> "3".equals(order.getStatus())).count();
+ // 当月满意度
+ int monthoSatisfaction = (int) serviceWorkOrdersList.stream().filter(order -> "3".equals(order.getStatus())).count();
+ // 满意数
+ int satisfaction = (int) serviceWorkOrdersList.stream().filter(order -> "3".equals(order.getStatus())).count();
+
+ new ServeceCustomerCountVo()
+ .setWorkOrdersTotal(workOrdersTotal)
+ .setNotWorkOrdersTotal(notWorkOrdersTotal)
+ .setNovertimeOrdersTotal(novertimeOrdersTotal)
+ .setInHandOrdersTotal(inHandOrdersTotal);
+
+ return null;
+ }
}