From b506a0a10cdf3ac34cfdae2b82da4dae49b41567 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 20 一月 2026 11:10:33 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/estate_expert
---
admin-server/src/main/java/com/estate/expert/admin/domain/common/request/AddCheckInfoRequest.java | 44 +++
admin-server/src/main/java/com/estate/expert/admin/controller/admin/RecordController.java | 153 +++++++++++
admin-server/src/main/java/com/estate/expert/admin/domain/business/check/Check.java | 24 +
admin-server/src/main/java/com/estate/expert/admin/domain/common/request/EditOnDutyRequest.java | 40 +++
admin-server/src/main/java/com/estate/expert/admin/service/CheckService.java | 39 ++
admin-server/src/main/java/com/estate/expert/admin/service/impl/OnDutyServiceImpl.java | 139 ++++++++++
admin-server/src/main/java/com/estate/expert/admin/domain/business/onduty/OnDuty.java | 12
admin-server/src/main/java/com/estate/expert/admin/domain/common/request/EditCheckInfoRequest.java | 36 ++
admin-server/src/main/java/com/estate/expert/admin/service/OnDutyService.java | 40 +++
admin-server/src/main/java/com/estate/expert/admin/service/impl/CheckServiceImpl.java | 84 ++++++
admin-server/src/main/java/com/estate/expert/admin/domain/common/request/AddOnDutyRequest.java | 44 +++
admin-server/src/main/java/com/estate/expert/admin/domain/common/response/PageRespMp.java | 78 ++++++
12 files changed, 725 insertions(+), 8 deletions(-)
diff --git a/admin-server/src/main/java/com/estate/expert/admin/controller/admin/RecordController.java b/admin-server/src/main/java/com/estate/expert/admin/controller/admin/RecordController.java
index dadabc9..f2fa471 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/controller/admin/RecordController.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/controller/admin/RecordController.java
@@ -1,9 +1,17 @@
package com.estate.expert.admin.controller.admin;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.estate.expert.admin.domain.business.check.Check;
+import com.estate.expert.admin.domain.business.position.Position;
+import com.estate.expert.admin.domain.common.request.AddCheckInfoRequest;
+import com.estate.expert.admin.domain.common.request.AddOnDutyRequest;
import com.estate.expert.admin.domain.common.request.BatchReq;
+import com.estate.expert.admin.domain.common.request.EditCheckInfoRequest;
+import com.estate.expert.admin.domain.common.request.EditOnDutyRequest;
import com.estate.expert.admin.domain.common.request.PageReq;
import com.estate.expert.admin.domain.common.request.RecordPageRequest;
import com.estate.expert.admin.domain.common.response.PageResp;
+import com.estate.expert.admin.domain.common.response.PageRespMp;
import com.estate.expert.admin.domain.exam.record.error.ErrorRecord;
import com.estate.expert.admin.domain.exam.record.error.ErrorRecordDto;
import com.estate.expert.admin.domain.exam.record.info.SetResponsibleDto;
@@ -11,8 +19,7 @@
import com.estate.expert.admin.domain.exam.record.warning.WarningRecord;
import com.estate.expert.admin.domain.exam.record.warning.WarningRecordDto;
import com.estate.expert.admin.domain.user.User;
-import com.estate.expert.admin.service.ErrorRecordService;
-import com.estate.expert.admin.service.WarningRecordService;
+import com.estate.expert.admin.service.*;
import com.estate.expert.common.domain.Session;
import com.estate.expert.common.rpc.Result;
import io.swagger.annotations.Api;
@@ -37,6 +44,15 @@
@Resource
private WarningRecordService warningRecordService;
+
+ @Resource
+ private PositionService positionService;
+
+ @Resource
+ private OnDutyService onDutyService;
+
+ @Resource
+ private CheckService checkService;
//////// 问题清单 ////////
@@ -205,4 +221,137 @@
return Result.success();
}
+ //////// 在岗情况 ////////
+
+ /**
+ * 在岗情况列表查询
+ * 支持"全部/我创建的"筛选
+ */
+ @ApiOperation("【APP】在岗情况列表")
+ @PostMapping("/onduty/list")
+ public Result listOnDutyRecords(@ApiParam(hidden = true) Session session,
+ @RequestParam(value = "planId", required = false) Integer planId,
+ @RequestParam(value = "mine", required = false) Boolean mine,
+ @Validated @RequestBody PageReq pageReq) {
+ // 根据 mine 参数决定是否筛选"我创建的"
+ var creatorId = mine != null && mine ? ((User) session.getUser()).getId() : null;
+
+ // 调用 Service 层的 JPA 查询方法
+ return Result.success(onDutyService.listOnDutyRecords(planId, creatorId, pageReq));
+ }
+
+ /**
+ * 添加在岗情况
+ */
+ @ApiOperation("【APP】添加在岗情况")
+ @PostMapping("/onduty/add")
+ public Result addOnDuty(@ApiParam(hidden = true) Session session,
+ @Validated @RequestBody AddOnDutyRequest request) {
+ onDutyService.add((User) session.getUser(), request);
+ return Result.success();
+ }
+
+ /**
+ * 编辑在岗情况
+ */
+ @ApiOperation("【APP】编辑在岗情况")
+ @PostMapping("/onduty/edit")
+ public Result editOnDuty(@Validated @RequestBody EditOnDutyRequest request) {
+ onDutyService.edit(request);
+ return Result.success();
+ }
+
+ /**
+ * 删除在岗情况
+ */
+ @ApiOperation("【APP】删除在岗情况")
+ @PostMapping("/onduty/del")
+ public Result deleteOnDuty(@Validated @RequestBody BatchReq request) {
+ onDutyService.deleteByIds(request.getIds());
+ return Result.success();
+ }
+
+ @ApiOperation(value = "【APP】岗位列表")
+ @PostMapping("/position/list")
+ public Result list(@Validated @RequestBody PageReq pageReq) {
+ Page<Position> page = positionService.lambdaQuery().page(new Page<>(pageReq.getPage(), pageReq.getSize()));
+ return Result.success(PageRespMp.of(page));
+ }
+
+ /**
+ * 岗位详情
+ */
+ @ApiOperation(value = "【APP】岗位详情")
+ @GetMapping("/position/detail")
+ public Result getPositionDetail(@RequestParam("id") Integer id) {
+ Position position = positionService.getById(id);
+ if (position == null) {
+ throw new RuntimeException("岗位不存在");
+ }
+ return Result.success(position);
+ }
+
+ //////// 检查情况 ////////
+
+ /**
+ * 检查情况列表查询
+ * 支持"全部/我创建的"筛选
+ */
+ @ApiOperation("【APP】检查情况列表")
+ @PostMapping("/checkinfo/list")
+ public Result listCheckInfoRecords(@ApiParam(hidden = true) Session session,
+ @RequestParam(value = "planId", required = false) Integer planId,
+ @RequestParam(value = "mine", required = false) Boolean mine,
+ @Validated @RequestBody PageReq pageReq) {
+ // 根据 mine 参数决定是否筛选"我创建的"
+ var creatorId = mine != null && mine ? ((User) session.getUser()).getId() : null;
+
+ // 调用 Service 层的 JPA 查询方法
+ return Result.success(checkService.listCheckInfoRecords(planId, creatorId, pageReq));
+ }
+
+ /**
+ * 添加检查信息
+ */
+ @ApiOperation("【APP】添加检查信息")
+ @PostMapping("/checkinfo/add")
+ public Result addCheckInfo(@ApiParam(hidden = true) Session session,
+ @Validated @RequestBody AddCheckInfoRequest request) {
+ checkService.addCheckInfo((User) session.getUser(), request);
+ return Result.success();
+ }
+
+ /**
+ * 检查信息详情
+ */
+ @ApiOperation("【APP】检查信息详情")
+ @GetMapping("/checkinfo/detail")
+ public Result getCheckInfoDetail(@RequestParam("id") Integer id) {
+ Check check = checkService.getById(id);
+ if (check == null) {
+ throw new RuntimeException("检查信息不存在");
+ }
+ return Result.success(check);
+ }
+
+ /**
+ * 编辑检查信息
+ */
+ @ApiOperation("【APP】编辑检查信息")
+ @PostMapping("/checkinfo/edit")
+ public Result editCheckInfo(@Validated @RequestBody EditCheckInfoRequest request) {
+ checkService.editCheckInfo(request);
+ return Result.success();
+ }
+
+ /**
+ * 删除检查信息
+ */
+ @ApiOperation("【APP】删除检查信息")
+ @PostMapping("/checkinfo/del")
+ public Result deleteCheckInfo(@Validated @RequestBody BatchReq request) {
+ checkService.deleteCheckInfoByIds(request.getIds());
+ return Result.success();
+ }
+
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/business/check/Check.java b/admin-server/src/main/java/com/estate/expert/admin/domain/business/check/Check.java
index 7cb299e..37f839f 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/business/check/Check.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/business/check/Check.java
@@ -5,11 +5,17 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.estate.expert.admin.domain.user.User;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
+import javax.persistence.Column;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
import java.io.Serializable;
import java.util.Date;
@@ -69,4 +75,22 @@
private Date createTime;
+ /**
+ * 检查标题
+ */
+ @TableField("title")
+ @ApiModelProperty("检查标题")
+ private String title;
+
+ /**
+ * 创建者
+ */
+ @TableField("creator_id")
+ @ApiModelProperty("创建人id")
+ private Integer creatorId;
+
+ @TableField("deleted")
+ @TableLogic
+ @ApiModelProperty("是否删除 false正常true删除")
+ private Boolean deleted;
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/business/onduty/OnDuty.java b/admin-server/src/main/java/com/estate/expert/admin/domain/business/onduty/OnDuty.java
index 3636ffd..1bbb862 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/domain/business/onduty/OnDuty.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/business/onduty/OnDuty.java
@@ -1,10 +1,7 @@
package com.estate.expert.admin.domain.business.onduty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
@@ -103,6 +100,13 @@
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
+ @TableField("creator_id")
+ private Integer creatorId;
+
+ @TableField("deleted")
+ @TableLogic
+ private Boolean deleted;
+
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/common/request/AddCheckInfoRequest.java b/admin-server/src/main/java/com/estate/expert/admin/domain/common/request/AddCheckInfoRequest.java
new file mode 100644
index 0000000..f87e723
--- /dev/null
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/common/request/AddCheckInfoRequest.java
@@ -0,0 +1,44 @@
+package com.estate.expert.admin.domain.common.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 添加检查信息请求
+ *
+ * @author administrator
+ * @since 2026-01-20
+ */
+@Data
+@ApiModel("添加检查信息请求")
+public class AddCheckInfoRequest {
+
+ @ApiModelProperty(value = "计划ID", required = true)
+ @NotNull(message = "计划ID不能为空")
+ private Integer planId;
+
+ @ApiModelProperty(value = "项目ID", required = true)
+ @NotNull(message = "项目ID不能为空")
+ private Integer projectId;
+
+ @ApiModelProperty(value = "委托方ID", required = true)
+ @NotNull(message = "委托方ID不能为空")
+ private Integer clientId;
+
+ @ApiModelProperty(value = "检查标题", required = true)
+ @NotBlank(message = "检查标题不能为空")
+ private String title;
+
+ @ApiModelProperty(value = "安全告知单(图片URL,多张用逗号分隔)")
+ private String safetySlip;
+
+ @ApiModelProperty(value = "检查人员照片(图片URL,多张用逗号分隔)")
+ private String checkUserImg;
+
+ @ApiModelProperty(value = "廉政告知单(图片URL,多张用逗号分隔)")
+ private String integrityNotification;
+}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/common/request/AddOnDutyRequest.java b/admin-server/src/main/java/com/estate/expert/admin/domain/common/request/AddOnDutyRequest.java
new file mode 100644
index 0000000..90464e2
--- /dev/null
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/common/request/AddOnDutyRequest.java
@@ -0,0 +1,44 @@
+package com.estate.expert.admin.domain.common.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Value;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * 添加在岗情况请求
+ */
+@ApiModel("添加在岗情况请求")
+@Value
+@Builder
+public class AddOnDutyRequest {
+
+ @ApiModelProperty(value = "项目ID", required = true)
+ @NotNull(message = "项目ID不能为空")
+ Integer projectId;
+
+ @ApiModelProperty(value = "计划ID", required = true)
+ @NotNull(message = "计划ID不能为空")
+ Integer planId;
+
+ @ApiModelProperty(value = "岗位ID", required = true)
+ @NotNull(message = "岗位ID不能为空")
+ Integer positionId;
+
+ @ApiModelProperty(value = "在岗状态:1-在岗,2-未在岗,3-请假", required = true)
+ @NotNull(message = "在岗状态不能为空")
+ @Min(value = 1, message = "在岗状态值必须在1-3之间")
+ @Max(value = 3, message = "在岗状态值必须在1-3之间")
+ Integer state;
+
+ @ApiModelProperty(value = "问题说明")
+ String remark;
+
+ @ApiModelProperty(value = "图片URL列表(多张)")
+ List<String> images;
+}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/common/request/EditCheckInfoRequest.java b/admin-server/src/main/java/com/estate/expert/admin/domain/common/request/EditCheckInfoRequest.java
new file mode 100644
index 0000000..2ef2644
--- /dev/null
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/common/request/EditCheckInfoRequest.java
@@ -0,0 +1,36 @@
+package com.estate.expert.admin.domain.common.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 编辑检查信息请求
+ *
+ * @author administrator
+ * @since 2026-01-20
+ */
+@Data
+@ApiModel("编辑检查信息请求")
+public class EditCheckInfoRequest {
+
+ @ApiModelProperty(value = "检查信息ID", required = true)
+ @NotNull(message = "检查信息ID不能为空")
+ private Integer id;
+
+ @ApiModelProperty(value = "检查标题", required = true)
+ @NotBlank(message = "检查标题不能为空")
+ private String title;
+
+ @ApiModelProperty(value = "安全告知单(图片URL,多张用逗号分隔)")
+ private String safetySlip;
+
+ @ApiModelProperty(value = "检查人员照片(图片URL,多张用逗号分隔)")
+ private String checkUserImg;
+
+ @ApiModelProperty(value = "廉政告知单(图片URL,多张用逗号分隔)")
+ private String integrityNotification;
+}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/common/request/EditOnDutyRequest.java b/admin-server/src/main/java/com/estate/expert/admin/domain/common/request/EditOnDutyRequest.java
new file mode 100644
index 0000000..415f808
--- /dev/null
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/common/request/EditOnDutyRequest.java
@@ -0,0 +1,40 @@
+package com.estate.expert.admin.domain.common.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Value;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * 编辑在岗情况请求
+ */
+@ApiModel("编辑在岗情况请求")
+@Value
+@Builder
+public class EditOnDutyRequest {
+
+ @ApiModelProperty(value = "在岗记录ID", required = true)
+ @NotNull(message = "在岗记录ID不能为空")
+ Integer id;
+
+ @ApiModelProperty(value = "岗位ID", required = true)
+ @NotNull(message = "岗位ID不能为空")
+ Integer positionId;
+
+ @ApiModelProperty(value = "在岗状态:1-在岗,2-未在岗,3-请假", required = true)
+ @NotNull(message = "在岗状态不能为空")
+ @Min(value = 1, message = "在岗状态值必须在1-3之间")
+ @Max(value = 3, message = "在岗状态值必须在1-3之间")
+ Integer state;
+
+ @ApiModelProperty(value = "问题说明")
+ String remark;
+
+ @ApiModelProperty(value = "图片URL列表(多张)")
+ List<String> images;
+}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/domain/common/response/PageRespMp.java b/admin-server/src/main/java/com/estate/expert/admin/domain/common/response/PageRespMp.java
new file mode 100644
index 0000000..d4c5486
--- /dev/null
+++ b/admin-server/src/main/java/com/estate/expert/admin/domain/common/response/PageRespMp.java
@@ -0,0 +1,78 @@
+package com.estate.expert.admin.domain.common.response;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+import java.util.List;
+
+/**
+ * mybatis plus 分页响应
+ * @param <T>
+ */
+@ApiModel("分页响应")
+@Data
+public class PageRespMp<T> {
+
+ @ApiModelProperty("总页数")
+ private int totalPages;
+
+ @ApiModelProperty("总记录数")
+ private long totalElements;
+
+ @ApiModelProperty("每页大小")
+ private int pageSize;
+
+ @ApiModelProperty("当前页码, 从0开始")
+ private int number;
+
+ @ApiModelProperty("数据列表")
+ private List<T> list;
+
+ public PageRespMp(Page<?> page, List<T> list) {
+ this.totalPages = (int) page.getPages();
+ this.totalElements = page.getTotal();
+ this.pageSize = (int) page.getSize();
+ this.number = (int) page.getCurrent();
+ this.list = list;
+ }
+
+ public PageRespMp(Page<T> page) {
+ this.totalPages = (int) page.getPages();
+ this.totalElements = page.getTotal();
+ this.pageSize = (int) page.getSize();
+ this.number = (int) page.getCurrent();
+ this.list = page.getRecords();
+ }
+
+ public PageRespMp(List<T> list) {
+ this.list = list;
+ this.totalPages = 1;
+ this.totalElements = list.size();
+ this.pageSize = list.size();
+ this.number = 0;
+ }
+
+ // of
+ public static <T> PageRespMp<T> of(Page<?> page, List<T> list) {
+ return new PageRespMp<>(page, list);
+ }
+
+ // of
+ public static <T> PageRespMp<T> of(Page<T> page) {
+ return new PageRespMp<>(page);
+ }
+
+ // of
+ public static <T> PageRespMp<T> of(List<T> list) {
+ return new PageRespMp<>(list);
+ }
+
+
+ // empty
+ public static <T> PageRespMp<T> empty() {
+ return new PageRespMp<>(new Page<>());
+ }
+}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/service/CheckService.java b/admin-server/src/main/java/com/estate/expert/admin/service/CheckService.java
index 62395cf..d669e8e 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/service/CheckService.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/service/CheckService.java
@@ -5,7 +5,12 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.estate.expert.admin.domain.business.check.Check;
import com.estate.expert.admin.domain.business.check.CheckVo;
+import com.estate.expert.admin.domain.common.request.AddCheckInfoRequest;
+import com.estate.expert.admin.domain.common.request.EditCheckInfoRequest;
import com.estate.expert.admin.domain.common.request.OnDutyRequest;
+import com.estate.expert.admin.domain.common.request.PageReq;
+import com.estate.expert.admin.domain.common.response.PageRespMp;
+import com.estate.expert.admin.domain.user.User;
import java.util.List;
@@ -21,7 +26,39 @@
List<CheckVo> pageList(Page<CheckVo> page, OnDutyRequest request);
-
CheckVo detail(Integer id);
+ /**
+ * 分页查询检查情况列表(JPA 实现)
+ * 用于新的列表查询接口,支持"全部/我创建的"筛选
+ *
+ * @param planId 计划ID(可选)
+ * @param creatorId 创建者ID(null表示查询全部)
+ * @param pageReq 分页请求
+ * @return 检查情况分页结果
+ */
+ PageRespMp<Check> listCheckInfoRecords(Integer planId, Integer creatorId, PageReq pageReq);
+
+ /**
+ * 添加检查信息
+ *
+ * @param creator 创建者
+ * @param request 添加请求
+ */
+ void addCheckInfo(User creator, AddCheckInfoRequest request);
+
+ /**
+ * 编辑检查信息
+ *
+ * @param request 编辑请求
+ */
+ void editCheckInfo(EditCheckInfoRequest request);
+
+ /**
+ * 批量删除检查信息
+ *
+ * @param ids 检查信息ID列表
+ */
+ void deleteCheckInfoByIds(List<Integer> ids);
+
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/service/OnDutyService.java b/admin-server/src/main/java/com/estate/expert/admin/service/OnDutyService.java
index 42b0e97..7f26869 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/service/OnDutyService.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/service/OnDutyService.java
@@ -5,7 +5,12 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.estate.expert.admin.domain.business.onduty.OnDuty;
import com.estate.expert.admin.domain.business.onduty.OnDutyVo;
+import com.estate.expert.admin.domain.common.request.AddOnDutyRequest;
+import com.estate.expert.admin.domain.common.request.EditOnDutyRequest;
import com.estate.expert.admin.domain.common.request.OnDutyRequest;
+import com.estate.expert.admin.domain.common.request.PageReq;
+import com.estate.expert.admin.domain.common.response.PageRespMp;
+import com.estate.expert.admin.domain.user.User;
import java.util.List;
@@ -24,4 +29,39 @@
OnDutyVo detail(Integer id);
+ /**
+ * 添加在岗情况记录
+ *
+ * @param creator 创建者
+ * @param request 添加请求
+ * @return 在岗情况实体
+ */
+ OnDuty add(User creator, AddOnDutyRequest request);
+
+ /**
+ * 分页查询在岗情况列表(JPA 实现)
+ * 用于新的列表查询接口,支持"全部/我创建的"筛选
+ *
+ * @param planId 计划ID(可选)
+ * @param creatorId 创建者ID(null表示查询全部)
+ * @param pageReq 分页请求
+ * @return 在岗情况分页结果
+ */
+ PageRespMp<OnDuty> listOnDutyRecords(Integer planId, Integer creatorId, PageReq pageReq);
+
+ /**
+ * 编辑在岗情况记录
+ *
+ * @param request 编辑请求
+ * @return 更新后的在岗情况实体
+ */
+ OnDuty edit(EditOnDutyRequest request);
+
+ /**
+ * 批量删除在岗情况记录
+ *
+ * @param ids 在岗记录ID列表
+ */
+ void deleteByIds(List<Integer> ids);
+
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/service/impl/CheckServiceImpl.java b/admin-server/src/main/java/com/estate/expert/admin/service/impl/CheckServiceImpl.java
index 60cd065..24e2706 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/service/impl/CheckServiceImpl.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/service/impl/CheckServiceImpl.java
@@ -5,13 +5,22 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.estate.expert.admin.domain.business.check.Check;
import com.estate.expert.admin.domain.business.check.CheckVo;
-import com.estate.expert.admin.domain.business.onduty.OnDutyVo;
+import com.estate.expert.admin.domain.common.request.AddCheckInfoRequest;
+import com.estate.expert.admin.domain.common.request.EditCheckInfoRequest;
import com.estate.expert.admin.domain.common.request.OnDutyRequest;
+import com.estate.expert.admin.domain.common.request.PageReq;
+import com.estate.expert.admin.domain.common.response.PageRespMp;
import com.estate.expert.admin.domain.repository.CheckMapper;
+import com.estate.expert.admin.domain.user.User;
import com.estate.expert.admin.service.CheckService;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.Date;
import java.util.List;
+import java.util.Objects;
/**
* <p>
@@ -40,4 +49,77 @@
public CheckVo detail(Integer id) {
return this.baseMapper.detail(id);
}
+
+ @Override
+ public PageRespMp<Check> listCheckInfoRecords(Integer planId, Integer creatorId, PageReq pageReq) {
+ Page<Check> page = lambdaQuery().eq(Check::getPlanId, planId).eq(Objects.nonNull(creatorId), Check::getCreatorId, creatorId)
+ .page(new Page<>(pageReq.getPage(), pageReq.getSize()));
+ // 将 Spring Data Page 转换为自定义 PageResp
+ return PageRespMp.of(page);
+ }
+
+ /**
+ * 添加检查信息(MyBatis Plus 方式)
+ */
+ @Override
+ @Transactional
+ public void addCheckInfo(User creator, AddCheckInfoRequest request) {
+ // 1. 创建 Check 实体对象(MyBatis Plus 实体)
+ Check check = new Check();
+
+ // 2. 设置基本字段
+ check.setTitle(request.getTitle());
+ check.setSafetySlip(request.getSafetySlip());
+ check.setCheckUserImg(request.getCheckUserImg());
+ check.setIntegrityNotification(request.getIntegrityNotification());
+
+ // 3. 设置关联字段
+ check.setPlanId(request.getPlanId());
+ check.setProjectId(request.getProjectId());
+ check.setClientId(request.getClientId());
+
+ // 4. 设置创建者ID(MyBatis Plus 使用 creatorId 字段)
+ check.setCreatorId(creator.getId());
+
+ // 5. 设置时间字段
+ check.setTime(new Date());
+
+ // createTime: 当前时间戳
+ check.setCreateTime(new Date());
+
+ // 6. 保存到数据库(MyBatis Plus 方式)
+ save(check);
+ }
+
+ /**
+ * 编辑检查信息(MyBatis Plus 方式)
+ */
+ @Override
+ @Transactional
+ public void editCheckInfo(EditCheckInfoRequest request) {
+ // 1. 根据 id 查询现有的 Check 实体
+ Check check = getById(request.getId());
+ if (check == null) {
+ throw new RuntimeException("检查信息不存在");
+ }
+
+ // 2. 更新字段
+ check.setTitle(request.getTitle());
+ check.setSafetySlip(request.getSafetySlip());
+ check.setCheckUserImg(request.getCheckUserImg());
+ check.setIntegrityNotification(request.getIntegrityNotification());
+
+ // 3. 保存更新(MyBatis Plus 方式)
+ updateById(check);
+ }
+
+ /**
+ * 批量删除检查信息(MyBatis Plus 方式)
+ */
+ @Override
+ @Transactional
+ public void deleteCheckInfoByIds(List<Integer> ids) {
+ // 使用 MyBatis Plus 的批量删除方法(逻辑删除,因为 Check 实体有 @TableLogic 注解)
+ removeByIds(ids);
+ }
}
diff --git a/admin-server/src/main/java/com/estate/expert/admin/service/impl/OnDutyServiceImpl.java b/admin-server/src/main/java/com/estate/expert/admin/service/impl/OnDutyServiceImpl.java
index 1b6a229..7c4e588 100644
--- a/admin-server/src/main/java/com/estate/expert/admin/service/impl/OnDutyServiceImpl.java
+++ b/admin-server/src/main/java/com/estate/expert/admin/service/impl/OnDutyServiceImpl.java
@@ -5,12 +5,28 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.estate.expert.admin.domain.business.onduty.OnDuty;
import com.estate.expert.admin.domain.business.onduty.OnDutyVo;
+import com.estate.expert.admin.domain.business.position.Position;
+import com.estate.expert.admin.domain.common.request.AddOnDutyRequest;
+import com.estate.expert.admin.domain.common.request.EditOnDutyRequest;
import com.estate.expert.admin.domain.common.request.OnDutyRequest;
+import com.estate.expert.admin.domain.common.request.PageReq;
+import com.estate.expert.admin.domain.common.response.PageRespMp;
+import com.estate.expert.admin.domain.project.Project;
+import com.estate.expert.admin.domain.project.ProjectRepository;
import com.estate.expert.admin.domain.repository.OnDutyMapper;
+import com.estate.expert.admin.domain.user.User;
import com.estate.expert.admin.service.OnDutyService;
+import com.estate.expert.admin.service.PositionService;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.Date;
import java.util.List;
+import java.util.Objects;
/**
* <p>
@@ -22,6 +38,12 @@
*/
@Service
public class OnDutyServiceImpl extends ServiceImpl<OnDutyMapper, OnDuty> implements OnDutyService {
+
+ @Resource
+ private ProjectRepository projectRepository;
+
+ @Resource
+ private PositionService positionService;
@Override
public List<OnDutyVo> pageList(Page<OnDutyVo> page, OnDutyRequest request) {
@@ -39,4 +61,121 @@
public OnDutyVo detail(Integer id) {
return this.baseMapper.detail(id);
}
+
+ @Override
+ @Transactional
+ public OnDuty add(User creator, AddOnDutyRequest request) {
+ // 1. 查询项目信息,获取 clientId
+ Project project = projectRepository.findById(request.getProjectId())
+ .orElseThrow(() -> new RuntimeException("项目不存在"));
+
+ if (project.getClient() == null) {
+ throw new RuntimeException("项目未关联委托方");
+ }
+ Integer clientId = project.getClient().getId();
+
+ // 2. 查询岗位信息,获取 positionName(MyBatis Plus 方式)
+ Position position = positionService.getById(request.getPositionId());
+ if (position == null) {
+ throw new RuntimeException("岗位不存在");
+ }
+ String positionName = position.getName();
+
+ // 3. 处理图片列表(逗号分隔)
+ String imgStr = null;
+ if (!CollectionUtils.isEmpty(request.getImages())) {
+ imgStr = String.join(",", request.getImages());
+ }
+
+ // 4. 构建 OnDuty 实体
+ OnDuty onDuty = new OnDuty();
+ onDuty.setPlanId(request.getPlanId());
+ onDuty.setProjectId(request.getProjectId());
+ onDuty.setClientId(clientId);
+ onDuty.setContent("人员在岗"); // 固定值
+ onDuty.setPositionId(request.getPositionId());
+ onDuty.setPositionName(positionName);
+ onDuty.setRemark(request.getRemark());
+ onDuty.setImg(imgStr);
+ onDuty.setState(request.getState());
+
+ // 5. 设置创建者
+ onDuty.setCreatorId(creator.getId());
+
+ // 6. 设置时间字段
+ // time: 当前日期(00:00:00)
+ LocalDate today = LocalDate.now();
+ Date timeDate = Date.from(today.atStartOfDay(ZoneId.systemDefault()).toInstant());
+ onDuty.setTime(timeDate);
+
+ // createTime: 当前时间戳
+ onDuty.setCreateTime(new Date());
+
+ // 6. 保存到数据库
+ this.save(onDuty);
+
+ return onDuty;
+ }
+
+ /**
+ * 分页查询在岗情况列表(JPA 实现)
+ * 用于新的列表查询接口,支持"全部/我创建的"筛选
+ */
+ @Override
+ public PageRespMp<OnDuty> listOnDutyRecords(Integer planId, Integer creatorId, PageReq pageReq) {
+ Page<OnDuty> page = lambdaQuery().eq(OnDuty::getPlanId, planId).eq(Objects.nonNull(creatorId), OnDuty::getCreatorId, creatorId)
+ .page(new Page<>(pageReq.getPage(), pageReq.getSize()));
+ //转换为 PageRespMp
+ return PageRespMp.of(page);
+ }
+
+ /**
+ * 编辑在岗情况记录
+ */
+ @Override
+ @Transactional
+ public OnDuty edit(EditOnDutyRequest request) {
+ // 1. 查询现有记录
+ OnDuty onDuty = this.getById(request.getId());
+ if (onDuty == null) {
+ throw new RuntimeException("在岗记录不存在");
+ }
+
+ // 2. 如果岗位ID发生变化,需要更新岗位名称(MyBatis Plus 方式)
+ if (!onDuty.getPositionId().equals(request.getPositionId())) {
+ Position position = positionService.getById(request.getPositionId());
+ if (position == null) {
+ throw new RuntimeException("岗位不存在");
+ }
+ onDuty.setPositionName(position.getName());
+ }
+
+ // 3. 更新可编辑字段
+ onDuty.setPositionId(request.getPositionId());
+ onDuty.setState(request.getState());
+ onDuty.setRemark(request.getRemark());
+
+ // 4. 处理图片列表(逗号分隔)
+ String imgStr = null;
+ if (!CollectionUtils.isEmpty(request.getImages())) {
+ imgStr = String.join(",", request.getImages());
+ }
+ onDuty.setImg(imgStr);
+
+ // 5. 保存更新(MyBatis-Plus 的 updateById)
+ this.updateById(onDuty);
+
+ return onDuty;
+ }
+
+ /**
+ * 批量删除在岗情况记录
+ */
+ @Override
+ @Transactional
+ public void deleteByIds(List<Integer> ids) {
+ // 使用 MyBatis-Plus 的批量删除方法(物理删除)
+ this.removeByIds(ids);
+ }
}
+
--
Gitblit v1.7.1