refactor: 物业报修模块重构
1. 重命名物业报修相关类,统一添加Hq前缀 2. 更新相关文档和SQL文件 3. 优化前端样式和视图 4. 清理无用的测试文件 Issue #123
No files matched your search
@@ -15,9 +15,9 @@ import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.hq.domain.bo.PmRepairAttachmentBo;
|
||||
import org.dromara.hq.domain.vo.PmRepairAttachmentVo;
|
||||
import org.dromara.hq.service.IPmRepairAttachmentService;
|
||||
import org.dromara.hq.domain.bo.HqPmRepairAttachmentBo;
|
||||
import org.dromara.hq.domain.vo.HqPmRepairAttachmentVo;
|
||||
import org.dromara.hq.service.IHqPmRepairAttachmentService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@@ -35,16 +35,16 @@ import java.util.List;
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/hq/pm/attachment")
|
||||
public class PmRepairAttachmentController extends BaseController {
|
||||
public class HqPmRepairAttachmentController extends BaseController {
|
||||
|
||||
private final IPmRepairAttachmentService attachmentService;
|
||||
private final IHqPmRepairAttachmentService attachmentService;
|
||||
|
||||
/**
|
||||
* 查询报修附件列表
|
||||
*/
|
||||
// @SaCheckPermission("pm:attachment:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<PmRepairAttachmentVo> list(PmRepairAttachmentBo bo, PageQuery pageQuery) {
|
||||
public TableDataInfo<HqPmRepairAttachmentVo> list(HqPmRepairAttachmentBo bo, PageQuery pageQuery) {
|
||||
return attachmentService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
@@ -53,8 +53,8 @@ public class PmRepairAttachmentController extends BaseController {
|
||||
*/
|
||||
// @SaCheckPermission("pm:attachment:list")
|
||||
@GetMapping("/order/{orderId}")
|
||||
public R<List<PmRepairAttachmentVo>> getByOrderId(@PathVariable("orderId") Long orderId) {
|
||||
List<PmRepairAttachmentVo> list = attachmentService.queryByOrderId(orderId);
|
||||
public R<List<HqPmRepairAttachmentVo>> getByOrderId(@PathVariable("orderId") Long orderId) {
|
||||
List<HqPmRepairAttachmentVo> list = attachmentService.queryByOrderId(orderId);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ public class PmRepairAttachmentController extends BaseController {
|
||||
*/
|
||||
// @SaCheckPermission("pm:attachment:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<PmRepairAttachmentVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
public R<HqPmRepairAttachmentVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(attachmentService.queryById(id));
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ public class PmRepairAttachmentController extends BaseController {
|
||||
@Log(title = "报修附件", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody PmRepairAttachmentBo bo) {
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody HqPmRepairAttachmentBo bo) {
|
||||
return toAjax(attachmentService.insertByBo(bo));
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ public class PmRepairAttachmentController extends BaseController {
|
||||
@Log(title = "报修附件", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PmRepairAttachmentBo bo) {
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody HqPmRepairAttachmentBo bo) {
|
||||
return toAjax(attachmentService.updateByBo(bo));
|
||||
}
|
||||
|
||||
@@ -106,7 +106,7 @@ public class PmRepairAttachmentController extends BaseController {
|
||||
// @SaCheckPermission("pm:attachment:upload")
|
||||
@Log(title = "上传报修附件", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/upload")
|
||||
public R<PmRepairAttachmentVo> uploadFile(
|
||||
public R<HqPmRepairAttachmentVo> uploadFile(
|
||||
@RequestParam("orderId") Long orderId,
|
||||
@RequestParam(value = "uploadStage", defaultValue = "1") String uploadStage,
|
||||
@RequestParam("file") MultipartFile file,
|
||||
@@ -117,7 +117,7 @@ public class PmRepairAttachmentController extends BaseController {
|
||||
}
|
||||
|
||||
try {
|
||||
PmRepairAttachmentVo result = attachmentService.uploadFile(orderId, uploadStage, file, description);
|
||||
HqPmRepairAttachmentVo result = attachmentService.uploadFile(orderId, uploadStage, file, description);
|
||||
return R.ok(result);
|
||||
} catch (Exception e) {
|
||||
return R.fail("上传失败: " + e.getMessage());
|
||||
@@ -130,7 +130,7 @@ public class PmRepairAttachmentController extends BaseController {
|
||||
// @SaCheckPermission("pm:attachment:upload")
|
||||
@Log(title = "批量上传报修附件", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/upload/batch")
|
||||
public R<List<PmRepairAttachmentVo>> uploadFiles(
|
||||
public R<List<HqPmRepairAttachmentVo>> uploadFiles(
|
||||
@RequestParam("orderId") Long orderId,
|
||||
@RequestParam(value = "uploadStage", defaultValue = "1") String uploadStage,
|
||||
@RequestParam("files") MultipartFile[] files,
|
||||
@@ -141,7 +141,7 @@ public class PmRepairAttachmentController extends BaseController {
|
||||
}
|
||||
|
||||
try {
|
||||
List<PmRepairAttachmentVo> results = attachmentService.uploadFiles(orderId, uploadStage, files,
|
||||
List<HqPmRepairAttachmentVo> results = attachmentService.uploadFiles(orderId, uploadStage, files,
|
||||
descriptions);
|
||||
return R.ok(results);
|
||||
} catch (Exception e) {
|
||||
@@ -165,7 +165,7 @@ public class PmRepairAttachmentController extends BaseController {
|
||||
// @SaCheckPermission("pm:attachment:download")
|
||||
@GetMapping("/download/{id}")
|
||||
public void downloadFile(@PathVariable("id") Long id, HttpServletResponse response) {
|
||||
PmRepairAttachmentVo attachment = attachmentService.queryById(id);
|
||||
HqPmRepairAttachmentVo attachment = attachmentService.queryById(id);
|
||||
if (attachment == null) {
|
||||
return;
|
||||
}
|
||||
@@ -17,9 +17,9 @@ import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.hq.domain.vo.PmRepairCategoryVo;
|
||||
import org.dromara.hq.domain.bo.PmRepairCategoryBo;
|
||||
import org.dromara.hq.service.IPmRepairCategoryService;
|
||||
import org.dromara.hq.domain.vo.HqPmRepairCategoryVo;
|
||||
import org.dromara.hq.domain.bo.HqPmRepairCategoryBo;
|
||||
import org.dromara.hq.service.IHqPmRepairCategoryService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
@@ -32,16 +32,16 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/hq/pm/repairCategory")
|
||||
public class PmRepairCategoryController extends BaseController {
|
||||
public class HqPmRepairCategoryController extends BaseController {
|
||||
|
||||
private final IPmRepairCategoryService repairCategoryService;
|
||||
private final IHqPmRepairCategoryService repairCategoryService;
|
||||
|
||||
/**
|
||||
* 查询维修类型列表
|
||||
*/
|
||||
@SaCheckPermission("pm:category:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<PmRepairCategoryVo> list(PmRepairCategoryBo bo, PageQuery pageQuery) {
|
||||
public TableDataInfo<HqPmRepairCategoryVo> list(HqPmRepairCategoryBo bo, PageQuery pageQuery) {
|
||||
return repairCategoryService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
@@ -51,9 +51,9 @@ public class PmRepairCategoryController extends BaseController {
|
||||
@SaCheckPermission("pm:category:export")
|
||||
@Log(title = "维修类型", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(PmRepairCategoryBo bo, HttpServletResponse response) {
|
||||
List<PmRepairCategoryVo> list = repairCategoryService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "维修类型", PmRepairCategoryVo.class, response);
|
||||
public void export(HqPmRepairCategoryBo bo, HttpServletResponse response) {
|
||||
List<HqPmRepairCategoryVo> list = repairCategoryService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "维修类型", HqPmRepairCategoryVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -61,7 +61,7 @@ public class PmRepairCategoryController extends BaseController {
|
||||
*/
|
||||
@SaCheckPermission("pm:category:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<PmRepairCategoryVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
public R<HqPmRepairCategoryVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(repairCategoryService.queryById(id));
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ public class PmRepairCategoryController extends BaseController {
|
||||
@Log(title = "维修类型", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody PmRepairCategoryBo bo) {
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody HqPmRepairCategoryBo bo) {
|
||||
return toAjax(repairCategoryService.insertByBo(bo));
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ public class PmRepairCategoryController extends BaseController {
|
||||
@Log(title = "维修类型", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PmRepairCategoryBo bo) {
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody HqPmRepairCategoryBo bo) {
|
||||
return toAjax(repairCategoryService.updateByBo(bo));
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ public class PmRepairCategoryController extends BaseController {
|
||||
*/
|
||||
@SaCheckPermission("pm:category:tree")
|
||||
@GetMapping("/tree")
|
||||
public R<List<PmRepairCategoryVo>> tree() {
|
||||
public R<List<HqPmRepairCategoryVo>> tree() {
|
||||
return R.ok(repairCategoryService.queryTree());
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ public class PmRepairCategoryController extends BaseController {
|
||||
@SaCheckPermission("pm:category:options")
|
||||
@GetMapping("/options")
|
||||
public R<List<java.util.Map<String, Object>>> options() {
|
||||
List<PmRepairCategoryVo> list = repairCategoryService.queryTree();
|
||||
List<HqPmRepairCategoryVo> list = repairCategoryService.queryTree();
|
||||
List<java.util.Map<String, Object>> options = buildCategoryOptions(list);
|
||||
return R.ok(options);
|
||||
}
|
||||
@@ -120,9 +120,9 @@ public class PmRepairCategoryController extends BaseController {
|
||||
/**
|
||||
* 构建维修类型下拉选项
|
||||
*/
|
||||
private List<java.util.Map<String, Object>> buildCategoryOptions(List<PmRepairCategoryVo> list) {
|
||||
private List<java.util.Map<String, Object>> buildCategoryOptions(List<HqPmRepairCategoryVo> list) {
|
||||
List<java.util.Map<String, Object>> result = new java.util.ArrayList<>();
|
||||
for (PmRepairCategoryVo item : list) {
|
||||
for (HqPmRepairCategoryVo item : list) {
|
||||
java.util.Map<String, Object> option = new java.util.HashMap<>();
|
||||
option.put("value", item.getId());
|
||||
option.put("label", item.getCategoryName());
|
||||
@@ -17,11 +17,11 @@ import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.hq.domain.vo.PmRepairOrderVo;
|
||||
import org.dromara.hq.domain.bo.PmRepairOrderBo;
|
||||
import org.dromara.hq.domain.vo.PmRepairAttachmentVo;
|
||||
import org.dromara.hq.service.IPmRepairOrderService;
|
||||
import org.dromara.hq.service.IPmRepairAttachmentService;
|
||||
import org.dromara.hq.domain.vo.HqPmRepairOrderVo;
|
||||
import org.dromara.hq.domain.bo.HqPmRepairOrderBo;
|
||||
import org.dromara.hq.domain.vo.HqPmRepairAttachmentVo;
|
||||
import org.dromara.hq.service.IHqPmRepairOrderService;
|
||||
import org.dromara.hq.service.IHqPmRepairAttachmentService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
@@ -34,18 +34,18 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/hq/pm/repairOrder")
|
||||
public class PmRepairOrderController extends BaseController {
|
||||
public class HqPmRepairOrderController extends BaseController {
|
||||
|
||||
private final IPmRepairOrderService repairOrderService;
|
||||
private final IPmRepairAttachmentService attachmentService;
|
||||
private final IHqPmRepairOrderService repairOrderService;
|
||||
private final IHqPmRepairAttachmentService attachmentService;
|
||||
|
||||
/**
|
||||
* 查询报修工单列表
|
||||
*/
|
||||
@SaCheckPermission("pm:repairOrder:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<PmRepairOrderVo> list(PmRepairOrderBo bo, PageQuery pageQuery) {
|
||||
TableDataInfo<PmRepairOrderVo> result = repairOrderService.queryPageList(bo, pageQuery);
|
||||
public TableDataInfo<HqPmRepairOrderVo> list(HqPmRepairOrderBo bo, PageQuery pageQuery) {
|
||||
TableDataInfo<HqPmRepairOrderVo> result = repairOrderService.queryPageList(bo, pageQuery);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -55,9 +55,9 @@ public class PmRepairOrderController extends BaseController {
|
||||
@SaCheckPermission("pm:repairOrder:export")
|
||||
@Log(title = "报修工单", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(PmRepairOrderBo bo, HttpServletResponse response) {
|
||||
List<PmRepairOrderVo> list = repairOrderService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "报修工单", PmRepairOrderVo.class, response);
|
||||
public void export(HqPmRepairOrderBo bo, HttpServletResponse response) {
|
||||
List<HqPmRepairOrderVo> list = repairOrderService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "报修工单", HqPmRepairOrderVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -65,7 +65,7 @@ public class PmRepairOrderController extends BaseController {
|
||||
*/
|
||||
@SaCheckPermission("pm:repairOrder:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<PmRepairOrderVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
public R<HqPmRepairOrderVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(repairOrderService.queryById(id));
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ public class PmRepairOrderController extends BaseController {
|
||||
@Log(title = "报修工单", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Long> add(@Validated(AddGroup.class) @RequestBody PmRepairOrderBo bo) {
|
||||
public R<Long> add(@Validated(AddGroup.class) @RequestBody HqPmRepairOrderBo bo) {
|
||||
boolean success = repairOrderService.insertByBo(bo);
|
||||
if (success) {
|
||||
// 返回创建的工单ID,供前端上传附件使用
|
||||
@@ -93,7 +93,7 @@ public class PmRepairOrderController extends BaseController {
|
||||
@Log(title = "报修工单", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PmRepairOrderBo bo) {
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody HqPmRepairOrderBo bo) {
|
||||
return toAjax(repairOrderService.updateByBo(bo));
|
||||
}
|
||||
|
||||
@@ -323,9 +323,9 @@ public class PmRepairOrderController extends BaseController {
|
||||
*/
|
||||
@SaCheckPermission("pm:repairOrder:query")
|
||||
@GetMapping("/{orderId}/attachments")
|
||||
public R<List<PmRepairAttachmentVo>> getRepairAttachments(
|
||||
public R<List<HqPmRepairAttachmentVo>> getRepairAttachments(
|
||||
@NotNull(message = "工单ID不能为空") @PathVariable Long orderId) {
|
||||
List<PmRepairAttachmentVo> attachments = attachmentService.queryByOrderId(orderId);
|
||||
List<HqPmRepairAttachmentVo> attachments = attachmentService.queryByOrderId(orderId);
|
||||
return R.ok(attachments);
|
||||
}
|
||||
|
||||
@@ -10,15 +10,15 @@ import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 报修附件对象 pm_repair_attachment
|
||||
* 报修附件对象 hq_pm_repair_attachment
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("pm_repair_attachment")
|
||||
public class PmRepairAttachment extends TenantEntity {
|
||||
@TableName("hq_pm_repair_attachment")
|
||||
public class HqPmRepairAttachment extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -30,7 +30,7 @@ public class PmRepairAttachment extends TenantEntity {
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 报修工单ID,关联pm_repair_order.id
|
||||
* 报修工单ID,关联hq_pm_repair_order.id
|
||||
*/
|
||||
private Long orderId;
|
||||
|
||||
@@ -11,15 +11,15 @@ import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 维修类型对象 pm_repair_category
|
||||
* 维修类型对象 hq_pm_repair_category
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("pm_repair_category")
|
||||
public class PmRepairCategory extends TenantEntity {
|
||||
@TableName("hq_pm_repair_category")
|
||||
public class HqPmRepairCategory extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -11,15 +11,15 @@ import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 报修工单对象 pm_repair_order
|
||||
* 报修工单对象 hq_pm_repair_order
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("pm_repair_order")
|
||||
public class PmRepairOrder extends TenantEntity {
|
||||
@TableName("hq_pm_repair_order")
|
||||
public class HqPmRepairOrder extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -51,7 +51,7 @@ public class PmRepairOrder extends TenantEntity {
|
||||
private String repairLocation;
|
||||
|
||||
/**
|
||||
* 维修类型ID,关联pm_repair_category.id
|
||||
* 维修类型ID,关联hq_pm_repair_category.id
|
||||
*/
|
||||
private Long categoryId;
|
||||
|
||||
@@ -18,8 +18,8 @@ import java.io.Serial;
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("pm_repair_progress")
|
||||
public class PmRepairProgress extends TenantEntity {
|
||||
@TableName("hq_pm_repair_progress")
|
||||
public class HqPmRepairProgress extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -31,7 +31,7 @@ public class PmRepairProgress extends TenantEntity {
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 报修工单ID,关联pm_repair_order.id
|
||||
* 报修工单ID,关联hq_pm_repair_order.id
|
||||
*/
|
||||
private Long orderId;
|
||||
|
||||
@@ -11,15 +11,15 @@ import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 服务评价对象 pm_service_evaluation
|
||||
* 服务评价对象 hq_pm_service_evaluation
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("pm_service_evaluation")
|
||||
public class PmServiceEvaluation extends TenantEntity {
|
||||
@TableName("hq_pm_service_evaluation")
|
||||
public class HqPmServiceEvaluation extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -31,7 +31,7 @@ public class PmServiceEvaluation extends TenantEntity {
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 报修工单ID,关联pm_repair_order.id
|
||||
* 报修工单ID,关联hq_pm_repair_order.id
|
||||
*/
|
||||
private Long orderId;
|
||||
|
||||
@@ -9,20 +9,20 @@ import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.hq.domain.PmRepairAttachment;
|
||||
import org.dromara.hq.domain.HqPmRepairAttachment;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 报修附件业务对象 pm_repair_attachment
|
||||
* 报修附件业务对象 hq_pm_repair_attachment
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-26
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = PmRepairAttachment.class, reverseConvertGenerate = false)
|
||||
public class PmRepairAttachmentBo extends BaseEntity {
|
||||
@AutoMapper(target = HqPmRepairAttachment.class, reverseConvertGenerate = false)
|
||||
public class HqPmRepairAttachmentBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
@@ -1,6 +1,6 @@
|
||||
package org.dromara.hq.domain.bo;
|
||||
|
||||
import org.dromara.hq.domain.PmRepairCategory;
|
||||
import org.dromara.hq.domain.HqPmRepairCategory;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
@@ -14,15 +14,15 @@ import java.util.List;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
* 维修类型业务对象 pm_repair_category
|
||||
* 维修类型业务对象 hq_pm_repair_category
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = PmRepairCategory.class, reverseConvertGenerate = false)
|
||||
public class PmRepairCategoryBo extends BaseEntity {
|
||||
@AutoMapper(target = HqPmRepairCategory.class, reverseConvertGenerate = false)
|
||||
public class HqPmRepairCategoryBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
@@ -1,6 +1,6 @@
|
||||
package org.dromara.hq.domain.bo;
|
||||
|
||||
import org.dromara.hq.domain.PmRepairOrder;
|
||||
import org.dromara.hq.domain.HqPmRepairOrder;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
@@ -14,15 +14,15 @@ import java.util.List;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
* 报修工单业务对象 pm_repair_order
|
||||
* 报修工单业务对象 hq_pm_repair_order
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = PmRepairOrder.class, reverseConvertGenerate = false)
|
||||
public class PmRepairOrderBo extends BaseEntity {
|
||||
@AutoMapper(target = HqPmRepairOrder.class, reverseConvertGenerate = false)
|
||||
public class HqPmRepairOrderBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
@@ -0,0 +1,124 @@
|
||||
package org.dromara.hq.domain.bo;
|
||||
|
||||
import org.dromara.hq.domain.HqPmRepairProgress;
|
||||
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.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 维修进度记录业务对象 hq_pm_repair_progress
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = HqPmRepairProgress.class, reverseConvertGenerate = false)
|
||||
public class HqPmRepairProgressBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 报修工单ID,关联hq_pm_repair_order.id
|
||||
*/
|
||||
@NotNull(message = "报修工单ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long orderId;
|
||||
|
||||
/**
|
||||
* 进度类型:1-工单分派,2-接收确认,3-到达现场,4-开始维修,5-进度更新,6-完成维修,7-用户评价,8-工单归档,9-其他
|
||||
*/
|
||||
@NotBlank(message = "进度类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String progressType;
|
||||
|
||||
/**
|
||||
* 进度状态描述
|
||||
*/
|
||||
@NotBlank(message = "进度状态描述不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String progressStatus;
|
||||
|
||||
/**
|
||||
* 进度详细描述
|
||||
*/
|
||||
private String progressDetail;
|
||||
|
||||
/**
|
||||
* 操作人ID,关联sys_user.id
|
||||
*/
|
||||
@NotNull(message = "操作人ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long operatorId;
|
||||
|
||||
/**
|
||||
* 操作人姓名
|
||||
*/
|
||||
@NotBlank(message = "操作人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String operatorName;
|
||||
|
||||
/**
|
||||
* 操作人角色:user-用户,admin-管理员,worker-维修员
|
||||
*/
|
||||
@NotBlank(message = "操作人角色不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String operatorRole;
|
||||
|
||||
/**
|
||||
* 操作位置信息
|
||||
*/
|
||||
private String locationInfo;
|
||||
|
||||
/**
|
||||
* GPS纬度
|
||||
*/
|
||||
private BigDecimal gpsLatitude;
|
||||
|
||||
/**
|
||||
* GPS经度
|
||||
*/
|
||||
private BigDecimal gpsLongitude;
|
||||
|
||||
/**
|
||||
* 操作时间
|
||||
*/
|
||||
@NotNull(message = "操作时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date operationTime;
|
||||
|
||||
/**
|
||||
* 预计耗时(分钟)
|
||||
*/
|
||||
private Integer estimatedDuration;
|
||||
|
||||
/**
|
||||
* 关联附件ID列表(逗号分隔)
|
||||
*/
|
||||
private String attachmentIds;
|
||||
|
||||
/**
|
||||
* 下一步计划
|
||||
*/
|
||||
private String nextStep;
|
||||
|
||||
/**
|
||||
* 遇到的问题
|
||||
*/
|
||||
private String issuesEncountered;
|
||||
|
||||
/**
|
||||
* 需要的材料
|
||||
*/
|
||||
private String materialsNeeded;
|
||||
|
||||
/**
|
||||
* 备注信息
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,160 @@
|
||||
package org.dromara.hq.domain.bo;
|
||||
|
||||
import org.dromara.hq.domain.HqPmServiceEvaluation;
|
||||
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.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 服务评价业务对象 hq_pm_service_evaluation
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = HqPmServiceEvaluation.class, reverseConvertGenerate = false)
|
||||
public class HqPmServiceEvaluationBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 报修工单ID,关联hq_pm_repair_order.id
|
||||
*/
|
||||
@NotNull(message = "报修工单ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long orderId;
|
||||
|
||||
/**
|
||||
* 评价人ID,关联sys_user.id
|
||||
*/
|
||||
@NotNull(message = "评价人ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long evaluatorId;
|
||||
|
||||
/**
|
||||
* 评价人姓名
|
||||
*/
|
||||
@NotBlank(message = "评价人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String evaluatorName;
|
||||
|
||||
/**
|
||||
* 被评价维修员ID,关联sys_user.id
|
||||
*/
|
||||
@NotNull(message = "被评价维修员ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long evaluatedWorkerId;
|
||||
|
||||
/**
|
||||
* 被评价维修员姓名
|
||||
*/
|
||||
@NotBlank(message = "被评价维修员姓名不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String evaluatedWorkerName;
|
||||
|
||||
/**
|
||||
* 综合评价得分(1.0-5.0)
|
||||
*/
|
||||
@NotNull(message = "综合评价得分不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@DecimalMin(value = "1.0", message = "综合评价得分不能小于1.0")
|
||||
@DecimalMax(value = "5.0", message = "综合评价得分不能大于5.0")
|
||||
private BigDecimal overallScore;
|
||||
|
||||
/**
|
||||
* 维修质量得分(1.0-5.0)
|
||||
*/
|
||||
@DecimalMin(value = "1.0", message = "维修质量得分不能小于1.0")
|
||||
@DecimalMax(value = "5.0", message = "维修质量得分不能大于5.0")
|
||||
private BigDecimal qualityScore;
|
||||
|
||||
/**
|
||||
* 服务态度得分(1.0-5.0)
|
||||
*/
|
||||
@DecimalMin(value = "1.0", message = "服务态度得分不能小于1.0")
|
||||
@DecimalMax(value = "5.0", message = "服务态度得分不能大于5.0")
|
||||
private BigDecimal attitudeScore;
|
||||
|
||||
/**
|
||||
* 响应速度得分(1.0-5.0)
|
||||
*/
|
||||
@DecimalMin(value = "1.0", message = "响应速度得分不能小于1.0")
|
||||
@DecimalMax(value = "5.0", message = "响应速度得分不能大于5.0")
|
||||
private BigDecimal responseSpeedScore;
|
||||
|
||||
/**
|
||||
* 沟通效果得分(1.0-5.0)
|
||||
*/
|
||||
@DecimalMin(value = "1.0", message = "沟通效果得分不能小于1.0")
|
||||
@DecimalMax(value = "5.0", message = "沟通效果得分不能大于5.0")
|
||||
private BigDecimal communicationScore;
|
||||
|
||||
/**
|
||||
* 文字评价内容
|
||||
*/
|
||||
private String evaluationContent;
|
||||
|
||||
/**
|
||||
* 满意度等级:1-非常满意,2-满意,3-一般,4-不满意,5-非常不满意
|
||||
*/
|
||||
@NotBlank(message = "满意度等级不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String satisfactionLevel;
|
||||
|
||||
/**
|
||||
* 是否匿名评价(0-实名,1-匿名)
|
||||
*/
|
||||
private Integer isAnonymous;
|
||||
|
||||
/**
|
||||
* 是否公开显示(0-不公开,1-公开)
|
||||
*/
|
||||
private Integer isPublic;
|
||||
|
||||
/**
|
||||
* 评价时间
|
||||
*/
|
||||
@NotNull(message = "评价时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date evaluationTime;
|
||||
|
||||
/**
|
||||
* 服务开始时间
|
||||
*/
|
||||
private Date serviceStartTime;
|
||||
|
||||
/**
|
||||
* 服务结束时间
|
||||
*/
|
||||
private Date serviceEndTime;
|
||||
|
||||
/**
|
||||
* 服务时长(分钟)
|
||||
*/
|
||||
private Integer serviceDuration;
|
||||
|
||||
/**
|
||||
* 正面标签(逗号分隔)
|
||||
*/
|
||||
private String positiveTags;
|
||||
|
||||
/**
|
||||
* 负面标签(逗号分隔)
|
||||
*/
|
||||
private String negativeTags;
|
||||
|
||||
/**
|
||||
* 改进建议
|
||||
*/
|
||||
private String improvementSuggestions;
|
||||
|
||||
/**
|
||||
* 备注信息
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
@@ -5,22 +5,22 @@ import cn.idev.excel.annotation.ExcelProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.hq.domain.PmRepairAttachment;
|
||||
import org.dromara.hq.domain.HqPmRepairAttachment;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 报修附件视图对象 pm_repair_attachment
|
||||
* 报修附件视图对象 hq_pm_repair_attachment
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-26
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = PmRepairAttachment.class)
|
||||
public class PmRepairAttachmentVo implements Serializable {
|
||||
@AutoMapper(target = HqPmRepairAttachment.class)
|
||||
public class HqPmRepairAttachmentVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -4,7 +4,7 @@ import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.hq.domain.PmRepairCategory;
|
||||
import org.dromara.hq.domain.HqPmRepairCategory;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
@@ -16,15 +16,15 @@ import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 维修类型视图对象 pm_repair_category
|
||||
* 维修类型视图对象 hq_pm_repair_category
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = PmRepairCategory.class)
|
||||
public class PmRepairCategoryVo implements Serializable {
|
||||
@AutoMapper(target = HqPmRepairCategory.class)
|
||||
public class HqPmRepairCategoryVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -156,6 +156,6 @@ public class PmRepairCategoryVo implements Serializable {
|
||||
/**
|
||||
* 子分类列表(用于树形结构)
|
||||
*/
|
||||
private List<PmRepairCategoryVo> children;
|
||||
private List<HqPmRepairCategoryVo> children;
|
||||
|
||||
}
|
||||
@@ -3,7 +3,7 @@ package org.dromara.hq.domain.vo;
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.hq.domain.PmRepairOrder;
|
||||
import org.dromara.hq.domain.HqPmRepairOrder;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
@@ -15,15 +15,15 @@ import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 报修工单视图对象 pm_repair_order
|
||||
* 报修工单视图对象 hq_pm_repair_order
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = PmRepairOrder.class)
|
||||
public class PmRepairOrderVo implements Serializable {
|
||||
@AutoMapper(target = HqPmRepairOrder.class)
|
||||
public class HqPmRepairOrderVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -0,0 +1,171 @@
|
||||
package org.dromara.hq.domain.vo;
|
||||
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.hq.domain.HqPmRepairProgress;
|
||||
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;
|
||||
|
||||
/**
|
||||
* 维修进度记录视图对象 hq_pm_repair_progress
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = HqPmRepairProgress.class)
|
||||
public class HqPmRepairProgressVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 报修工单ID,关联hq_pm_repair_order.id
|
||||
*/
|
||||
@ExcelProperty(value = "报修工单ID")
|
||||
private Long orderId;
|
||||
|
||||
/**
|
||||
* 进度类型:1-工单分派,2-接收确认,3-到达现场,4-开始维修,5-进度更新,6-完成维修,7-用户评价,8-工单归档,9-其他
|
||||
*/
|
||||
@ExcelProperty(value = "进度类型", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "pm_progress_type")
|
||||
private String progressType;
|
||||
|
||||
/**
|
||||
* 进度状态描述
|
||||
*/
|
||||
@ExcelProperty(value = "进度状态描述")
|
||||
private String progressStatus;
|
||||
|
||||
/**
|
||||
* 进度详细描述
|
||||
*/
|
||||
@ExcelProperty(value = "进度详细描述")
|
||||
private String progressDetail;
|
||||
|
||||
/**
|
||||
* 操作人ID,关联sys_user.id
|
||||
*/
|
||||
@ExcelProperty(value = "操作人ID")
|
||||
private Long operatorId;
|
||||
|
||||
/**
|
||||
* 操作人姓名
|
||||
*/
|
||||
@ExcelProperty(value = "操作人姓名")
|
||||
private String operatorName;
|
||||
|
||||
/**
|
||||
* 操作人角色:user-用户,admin-管理员,worker-维修员
|
||||
*/
|
||||
@ExcelProperty(value = "操作人角色", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "pm_operator_role")
|
||||
private String operatorRole;
|
||||
|
||||
/**
|
||||
* 操作位置信息
|
||||
*/
|
||||
@ExcelProperty(value = "操作位置信息")
|
||||
private String locationInfo;
|
||||
|
||||
/**
|
||||
* GPS纬度
|
||||
*/
|
||||
@ExcelProperty(value = "GPS纬度")
|
||||
private BigDecimal gpsLatitude;
|
||||
|
||||
/**
|
||||
* GPS经度
|
||||
*/
|
||||
@ExcelProperty(value = "GPS经度")
|
||||
private BigDecimal gpsLongitude;
|
||||
|
||||
/**
|
||||
* 操作时间
|
||||
*/
|
||||
@ExcelProperty(value = "操作时间")
|
||||
private Date operationTime;
|
||||
|
||||
/**
|
||||
* 预计耗时(分钟)
|
||||
*/
|
||||
@ExcelProperty(value = "预计耗时(分钟)")
|
||||
private Integer estimatedDuration;
|
||||
|
||||
/**
|
||||
* 关联附件ID列表(逗号分隔)
|
||||
*/
|
||||
@ExcelProperty(value = "关联附件ID列表")
|
||||
private String attachmentIds;
|
||||
|
||||
/**
|
||||
* 下一步计划
|
||||
*/
|
||||
@ExcelProperty(value = "下一步计划")
|
||||
private String nextStep;
|
||||
|
||||
/**
|
||||
* 遇到的问题
|
||||
*/
|
||||
@ExcelProperty(value = "遇到的问题")
|
||||
private String issuesEncountered;
|
||||
|
||||
/**
|
||||
* 需要的材料
|
||||
*/
|
||||
@ExcelProperty(value = "需要的材料")
|
||||
private String materialsNeeded;
|
||||
|
||||
/**
|
||||
* 备注信息
|
||||
*/
|
||||
@ExcelProperty(value = "备注信息")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
private String tenantId;
|
||||
|
||||
/**
|
||||
* 创建部门
|
||||
*/
|
||||
private Long createDept;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,207 @@
|
||||
package org.dromara.hq.domain.vo;
|
||||
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.hq.domain.HqPmServiceEvaluation;
|
||||
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;
|
||||
|
||||
/**
|
||||
* 服务评价视图对象 hq_pm_service_evaluation
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = HqPmServiceEvaluation.class)
|
||||
public class HqPmServiceEvaluationVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 报修工单ID,关联hq_pm_repair_order.id
|
||||
*/
|
||||
@ExcelProperty(value = "报修工单ID")
|
||||
private Long orderId;
|
||||
|
||||
/**
|
||||
* 评价人ID,关联sys_user.id
|
||||
*/
|
||||
@ExcelProperty(value = "评价人ID")
|
||||
private Long evaluatorId;
|
||||
|
||||
/**
|
||||
* 评价人姓名
|
||||
*/
|
||||
@ExcelProperty(value = "评价人姓名")
|
||||
private String evaluatorName;
|
||||
|
||||
/**
|
||||
* 被评价维修员ID,关联sys_user.id
|
||||
*/
|
||||
@ExcelProperty(value = "维修员ID")
|
||||
private Long evaluatedWorkerId;
|
||||
|
||||
/**
|
||||
* 被评价维修员姓名
|
||||
*/
|
||||
@ExcelProperty(value = "维修员姓名")
|
||||
private String evaluatedWorkerName;
|
||||
|
||||
/**
|
||||
* 综合评价得分(1.0-5.0)
|
||||
*/
|
||||
@ExcelProperty(value = "综合评价得分")
|
||||
private BigDecimal overallScore;
|
||||
|
||||
/**
|
||||
* 维修质量得分(1.0-5.0)
|
||||
*/
|
||||
@ExcelProperty(value = "维修质量得分")
|
||||
private BigDecimal qualityScore;
|
||||
|
||||
/**
|
||||
* 服务态度得分(1.0-5.0)
|
||||
*/
|
||||
@ExcelProperty(value = "服务态度得分")
|
||||
private BigDecimal attitudeScore;
|
||||
|
||||
/**
|
||||
* 响应速度得分(1.0-5.0)
|
||||
*/
|
||||
@ExcelProperty(value = "响应速度得分")
|
||||
private BigDecimal responseSpeedScore;
|
||||
|
||||
/**
|
||||
* 沟通效果得分(1.0-5.0)
|
||||
*/
|
||||
@ExcelProperty(value = "沟通效果得分")
|
||||
private BigDecimal communicationScore;
|
||||
|
||||
/**
|
||||
* 文字评价内容
|
||||
*/
|
||||
@ExcelProperty(value = "文字评价内容")
|
||||
private String evaluationContent;
|
||||
|
||||
/**
|
||||
* 满意度等级:1-非常满意,2-满意,3-一般,4-不满意,5-非常不满意
|
||||
*/
|
||||
@ExcelProperty(value = "满意度等级", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "pm_satisfaction_level")
|
||||
private String satisfactionLevel;
|
||||
|
||||
/**
|
||||
* 是否匿名评价(0-实名,1-匿名)
|
||||
*/
|
||||
@ExcelProperty(value = "是否匿名评价", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Integer isAnonymous;
|
||||
|
||||
/**
|
||||
* 是否公开显示(0-不公开,1-公开)
|
||||
*/
|
||||
@ExcelProperty(value = "是否公开显示", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_yes_no")
|
||||
private Integer isPublic;
|
||||
|
||||
/**
|
||||
* 评价时间
|
||||
*/
|
||||
@ExcelProperty(value = "评价时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date evaluationTime;
|
||||
|
||||
/**
|
||||
* 服务开始时间
|
||||
*/
|
||||
@ExcelProperty(value = "服务开始时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date serviceStartTime;
|
||||
|
||||
/**
|
||||
* 服务结束时间
|
||||
*/
|
||||
@ExcelProperty(value = "服务结束时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date serviceEndTime;
|
||||
|
||||
/**
|
||||
* 服务时长(分钟)
|
||||
*/
|
||||
@ExcelProperty(value = "服务时长(分钟)")
|
||||
private Integer serviceDuration;
|
||||
|
||||
/**
|
||||
* 正面标签(逗号分隔)
|
||||
*/
|
||||
@ExcelProperty(value = "正面标签")
|
||||
private String positiveTags;
|
||||
|
||||
/**
|
||||
* 负面标签(逗号分隔)
|
||||
*/
|
||||
@ExcelProperty(value = "负面标签")
|
||||
private String negativeTags;
|
||||
|
||||
/**
|
||||
* 改进建议
|
||||
*/
|
||||
@ExcelProperty(value = "改进建议")
|
||||
private String improvementSuggestions;
|
||||
|
||||
/**
|
||||
* 备注信息
|
||||
*/
|
||||
@ExcelProperty(value = "备注信息")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
private String tenantId;
|
||||
|
||||
/**
|
||||
* 创建部门
|
||||
*/
|
||||
private Long createDept;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package org.dromara.hq.mapper;
|
||||
|
||||
import org.dromara.hq.domain.HqPmRepairAttachment;
|
||||
import org.dromara.hq.domain.vo.HqPmRepairAttachmentVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 报修附件Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-26
|
||||
*/
|
||||
public interface HqPmRepairAttachmentMapper extends BaseMapperPlus<HqPmRepairAttachment, HqPmRepairAttachmentVo> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package org.dromara.hq.mapper;
|
||||
|
||||
import org.dromara.hq.domain.HqPmRepairCategory;
|
||||
import org.dromara.hq.domain.vo.HqPmRepairCategoryVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 维修类型Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
public interface HqPmRepairCategoryMapper extends BaseMapperPlus<HqPmRepairCategory, HqPmRepairCategoryVo> {
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.dromara.hq.mapper;
|
||||
|
||||
import org.dromara.hq.domain.PmRepairOrder;
|
||||
import org.dromara.hq.domain.vo.PmRepairOrderVo;
|
||||
import org.dromara.hq.domain.HqPmRepairOrder;
|
||||
import org.dromara.hq.domain.vo.HqPmRepairOrderVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
import java.util.List;
|
||||
@@ -13,7 +13,7 @@ import java.util.Map;
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
public interface PmRepairOrderMapper extends BaseMapperPlus<PmRepairOrder, PmRepairOrderVo> {
|
||||
public interface HqPmRepairOrderMapper extends BaseMapperPlus<HqPmRepairOrder, HqPmRepairOrderVo> {
|
||||
|
||||
/**
|
||||
* 查询拥有"维修人员"角色的用户列表
|
||||
@@ -1,6 +1,6 @@
|
||||
package org.dromara.hq.mapper;
|
||||
|
||||
import org.dromara.hq.domain.PmRepairProgress;
|
||||
import org.dromara.hq.domain.HqPmRepairProgress;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
@@ -9,6 +9,6 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-26
|
||||
*/
|
||||
public interface PmRepairProgressMapper extends BaseMapperPlus<PmRepairProgress, PmRepairProgress> {
|
||||
public interface HqPmRepairProgressMapper extends BaseMapperPlus<HqPmRepairProgress, HqPmRepairProgress> {
|
||||
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package org.dromara.hq.mapper;
|
||||
|
||||
import org.dromara.hq.domain.PmServiceEvaluation;
|
||||
import org.dromara.hq.domain.HqPmServiceEvaluation;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
@@ -9,6 +9,6 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-26
|
||||
*/
|
||||
public interface PmServiceEvaluationMapper extends BaseMapperPlus<PmServiceEvaluation, PmServiceEvaluation> {
|
||||
public interface HqPmServiceEvaluationMapper extends BaseMapperPlus<HqPmServiceEvaluation, HqPmServiceEvaluation> {
|
||||
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package org.dromara.hq.mapper;
|
||||
|
||||
import org.dromara.hq.domain.PmRepairAttachment;
|
||||
import org.dromara.hq.domain.vo.PmRepairAttachmentVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 报修附件Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-26
|
||||
*/
|
||||
public interface PmRepairAttachmentMapper extends BaseMapperPlus<PmRepairAttachment, PmRepairAttachmentVo> {
|
||||
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package org.dromara.hq.mapper;
|
||||
|
||||
import org.dromara.hq.domain.PmRepairCategory;
|
||||
import org.dromara.hq.domain.vo.PmRepairCategoryVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 维修类型Mapper接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
public interface PmRepairCategoryMapper extends BaseMapperPlus<PmRepairCategory, PmRepairCategoryVo> {
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.dromara.hq.service;
|
||||
|
||||
import org.dromara.hq.domain.vo.PmRepairAttachmentVo;
|
||||
import org.dromara.hq.domain.bo.PmRepairAttachmentBo;
|
||||
import org.dromara.hq.domain.vo.HqPmRepairAttachmentVo;
|
||||
import org.dromara.hq.domain.bo.HqPmRepairAttachmentBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@@ -15,37 +15,37 @@ import java.util.List;
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-26
|
||||
*/
|
||||
public interface IPmRepairAttachmentService {
|
||||
public interface IHqPmRepairAttachmentService {
|
||||
|
||||
/**
|
||||
* 查询报修附件
|
||||
*/
|
||||
PmRepairAttachmentVo queryById(Long id);
|
||||
HqPmRepairAttachmentVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询报修附件列表
|
||||
*/
|
||||
TableDataInfo<PmRepairAttachmentVo> queryPageList(PmRepairAttachmentBo bo, PageQuery pageQuery);
|
||||
TableDataInfo<HqPmRepairAttachmentVo> queryPageList(HqPmRepairAttachmentBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询报修附件列表
|
||||
*/
|
||||
List<PmRepairAttachmentVo> queryList(PmRepairAttachmentBo bo);
|
||||
List<HqPmRepairAttachmentVo> queryList(HqPmRepairAttachmentBo bo);
|
||||
|
||||
/**
|
||||
* 根据工单ID查询附件列表
|
||||
*/
|
||||
List<PmRepairAttachmentVo> queryByOrderId(Long orderId);
|
||||
List<HqPmRepairAttachmentVo> queryByOrderId(Long orderId);
|
||||
|
||||
/**
|
||||
* 新增报修附件
|
||||
*/
|
||||
Boolean insertByBo(PmRepairAttachmentBo bo);
|
||||
Boolean insertByBo(HqPmRepairAttachmentBo bo);
|
||||
|
||||
/**
|
||||
* 修改报修附件
|
||||
*/
|
||||
Boolean updateByBo(PmRepairAttachmentBo bo);
|
||||
Boolean updateByBo(HqPmRepairAttachmentBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除报修附件信息
|
||||
@@ -55,12 +55,12 @@ public interface IPmRepairAttachmentService {
|
||||
/**
|
||||
* 上传附件文件
|
||||
*/
|
||||
PmRepairAttachmentVo uploadFile(Long orderId, String uploadStage, MultipartFile file, String description);
|
||||
HqPmRepairAttachmentVo uploadFile(Long orderId, String uploadStage, MultipartFile file, String description);
|
||||
|
||||
/**
|
||||
* 批量上传附件文件
|
||||
*/
|
||||
List<PmRepairAttachmentVo> uploadFiles(Long orderId, String uploadStage, MultipartFile[] files,
|
||||
List<HqPmRepairAttachmentVo> uploadFiles(Long orderId, String uploadStage, MultipartFile[] files,
|
||||
List<String> descriptions);
|
||||
|
||||
/**
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.dromara.hq.service;
|
||||
|
||||
import org.dromara.hq.domain.vo.PmRepairCategoryVo;
|
||||
import org.dromara.hq.domain.bo.PmRepairCategoryBo;
|
||||
import org.dromara.hq.domain.vo.HqPmRepairCategoryVo;
|
||||
import org.dromara.hq.domain.bo.HqPmRepairCategoryBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.util.List;
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
public interface IPmRepairCategoryService {
|
||||
public interface IHqPmRepairCategoryService {
|
||||
|
||||
/**
|
||||
* 查询维修类型
|
||||
@@ -22,7 +22,7 @@ public interface IPmRepairCategoryService {
|
||||
* @param id 主键
|
||||
* @return 维修类型
|
||||
*/
|
||||
PmRepairCategoryVo queryById(Long id);
|
||||
HqPmRepairCategoryVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询维修类型列表
|
||||
@@ -31,7 +31,7 @@ public interface IPmRepairCategoryService {
|
||||
* @param pageQuery 分页参数
|
||||
* @return 维修类型分页列表
|
||||
*/
|
||||
TableDataInfo<PmRepairCategoryVo> queryPageList(PmRepairCategoryBo bo, PageQuery pageQuery);
|
||||
TableDataInfo<HqPmRepairCategoryVo> queryPageList(HqPmRepairCategoryBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的维修类型列表
|
||||
@@ -39,7 +39,7 @@ public interface IPmRepairCategoryService {
|
||||
* @param bo 查询条件
|
||||
* @return 维修类型列表
|
||||
*/
|
||||
List<PmRepairCategoryVo> queryList(PmRepairCategoryBo bo);
|
||||
List<HqPmRepairCategoryVo> queryList(HqPmRepairCategoryBo bo);
|
||||
|
||||
/**
|
||||
* 新增维修类型
|
||||
@@ -47,7 +47,7 @@ public interface IPmRepairCategoryService {
|
||||
* @param bo 维修类型
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(PmRepairCategoryBo bo);
|
||||
Boolean insertByBo(HqPmRepairCategoryBo bo);
|
||||
|
||||
/**
|
||||
* 修改维修类型
|
||||
@@ -55,7 +55,7 @@ public interface IPmRepairCategoryService {
|
||||
* @param bo 维修类型
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(PmRepairCategoryBo bo);
|
||||
Boolean updateByBo(HqPmRepairCategoryBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除维修类型信息
|
||||
@@ -71,7 +71,7 @@ public interface IPmRepairCategoryService {
|
||||
*
|
||||
* @return 维修类型树形列表
|
||||
*/
|
||||
List<PmRepairCategoryVo> queryTree();
|
||||
List<HqPmRepairCategoryVo> queryTree();
|
||||
|
||||
/**
|
||||
* 更新使用次数
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.dromara.hq.service;
|
||||
|
||||
import org.dromara.hq.domain.vo.PmRepairOrderVo;
|
||||
import org.dromara.hq.domain.bo.PmRepairOrderBo;
|
||||
import org.dromara.hq.domain.vo.HqPmRepairOrderVo;
|
||||
import org.dromara.hq.domain.bo.HqPmRepairOrderBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.util.List;
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
public interface IPmRepairOrderService {
|
||||
public interface IHqPmRepairOrderService {
|
||||
|
||||
/**
|
||||
* 查询报修工单
|
||||
@@ -22,7 +22,7 @@ public interface IPmRepairOrderService {
|
||||
* @param id 主键
|
||||
* @return 报修工单
|
||||
*/
|
||||
PmRepairOrderVo queryById(Long id);
|
||||
HqPmRepairOrderVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询报修工单列表
|
||||
@@ -31,7 +31,7 @@ public interface IPmRepairOrderService {
|
||||
* @param pageQuery 分页参数
|
||||
* @return 报修工单分页列表
|
||||
*/
|
||||
TableDataInfo<PmRepairOrderVo> queryPageList(PmRepairOrderBo bo, PageQuery pageQuery);
|
||||
TableDataInfo<HqPmRepairOrderVo> queryPageList(HqPmRepairOrderBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的报修工单列表
|
||||
@@ -39,7 +39,7 @@ public interface IPmRepairOrderService {
|
||||
* @param bo 查询条件
|
||||
* @return 报修工单列表
|
||||
*/
|
||||
List<PmRepairOrderVo> queryList(PmRepairOrderBo bo);
|
||||
List<HqPmRepairOrderVo> queryList(HqPmRepairOrderBo bo);
|
||||
|
||||
/**
|
||||
* 新增报修工单
|
||||
@@ -47,7 +47,7 @@ public interface IPmRepairOrderService {
|
||||
* @param bo 报修工单
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(PmRepairOrderBo bo);
|
||||
Boolean insertByBo(HqPmRepairOrderBo bo);
|
||||
|
||||
/**
|
||||
* 修改报修工单
|
||||
@@ -55,7 +55,7 @@ public interface IPmRepairOrderService {
|
||||
* @param bo 报修工单
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(PmRepairOrderBo bo);
|
||||
Boolean updateByBo(HqPmRepairOrderBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除报修工单信息
|
||||
@@ -0,0 +1,64 @@
|
||||
package org.dromara.hq.service;
|
||||
|
||||
import org.dromara.hq.domain.vo.HqPmRepairProgressVo;
|
||||
import org.dromara.hq.domain.bo.HqPmRepairProgressBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 维修进度记录Service接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
public interface IHqPmRepairProgressService {
|
||||
|
||||
/**
|
||||
* 查询维修进度记录
|
||||
*/
|
||||
HqPmRepairProgressVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询维修进度记录列表
|
||||
*/
|
||||
TableDataInfo<HqPmRepairProgressVo> queryPageList(HqPmRepairProgressBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询维修进度记录列表
|
||||
*/
|
||||
List<HqPmRepairProgressVo> queryList(HqPmRepairProgressBo bo);
|
||||
|
||||
/**
|
||||
* 根据工单ID查询进度记录列表
|
||||
*/
|
||||
List<HqPmRepairProgressVo> queryListByOrderId(Long orderId);
|
||||
|
||||
/**
|
||||
* 新增维修进度记录
|
||||
*/
|
||||
Boolean insertByBo(HqPmRepairProgressBo bo);
|
||||
|
||||
/**
|
||||
* 修改维修进度记录
|
||||
*/
|
||||
Boolean updateByBo(HqPmRepairProgressBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除维修进度记录信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 批量删除维修进度记录信息
|
||||
*/
|
||||
Boolean deleteByIds(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 删除维修进度记录信息
|
||||
*/
|
||||
Boolean deleteById(Long id);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package org.dromara.hq.service;
|
||||
|
||||
import org.dromara.hq.domain.vo.HqPmServiceEvaluationVo;
|
||||
import org.dromara.hq.domain.bo.HqPmServiceEvaluationBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 服务评价Service接口
|
||||
*
|
||||
* @author Cursor AI
|
||||
* @date 2025-01-23
|
||||
*/
|
||||
public interface IHqPmServiceEvaluationService {
|
||||
|
||||
/**
|
||||
* 查询服务评价
|
||||
*/
|
||||
HqPmServiceEvaluationVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询服务评价列表
|
||||
*/
|
||||
TableDataInfo<HqPmServiceEvaluationVo> queryPageList(HqPmServiceEvaluationBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询服务评价列表
|
||||
*/
|
||||
List<HqPmServiceEvaluationVo> queryList(HqPmServiceEvaluationBo bo);
|
||||
|
||||
/**
|
||||
* 根据工单ID查询评价信息
|
||||
*/
|
||||
HqPmServiceEvaluationVo queryByOrderId(Long orderId);
|
||||
|
||||
/**
|
||||
* 根据维修员ID查询评价列表
|
||||
*/
|
||||
List<HqPmServiceEvaluationVo> queryListByWorkerId(Long workerId);
|
||||
|
||||
/**
|
||||
* 新增服务评价
|
||||
*/
|
||||
Boolean insertByBo(HqPmServiceEvaluationBo bo);
|
||||
|
||||
/**
|
||||
* 修改服务评价
|
||||
*/
|
||||
Boolean updateByBo(HqPmServiceEvaluationBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除服务评价信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 批量删除服务评价信息
|
||||
*/
|
||||
Boolean deleteByIds(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 删除服务评价信息
|
||||
*/
|
||||
Boolean deleteById(Long id);
|
||||
|
||||
}
|
||||
@@ -16,12 +16,12 @@ import org.dromara.common.oss.core.OssClient;
|
||||
import org.dromara.common.oss.entity.UploadResult;
|
||||
import org.dromara.common.oss.factory.OssFactory;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.hq.domain.PmRepairAttachment;
|
||||
import org.dromara.hq.domain.bo.PmRepairAttachmentBo;
|
||||
import org.dromara.hq.domain.vo.PmRepairAttachmentVo;
|
||||
import org.dromara.hq.mapper.PmRepairAttachmentMapper;
|
||||
import org.dromara.hq.mapper.PmRepairOrderMapper;
|
||||
import org.dromara.hq.service.IPmRepairAttachmentService;
|
||||
import org.dromara.hq.domain.HqPmRepairAttachment;
|
||||
import org.dromara.hq.domain.bo.HqPmRepairAttachmentBo;
|
||||
import org.dromara.hq.domain.vo.HqPmRepairAttachmentVo;
|
||||
import org.dromara.hq.mapper.HqPmRepairAttachmentMapper;
|
||||
import org.dromara.hq.mapper.HqPmRepairOrderMapper;
|
||||
import org.dromara.hq.service.IHqPmRepairAttachmentService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@@ -40,16 +40,16 @@ import java.util.List;
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService {
|
||||
public class HqPmRepairAttachmentServiceImpl implements IHqPmRepairAttachmentService {
|
||||
|
||||
private final PmRepairAttachmentMapper baseMapper;
|
||||
private final PmRepairOrderMapper repairOrderMapper;
|
||||
private final HqPmRepairAttachmentMapper baseMapper;
|
||||
private final HqPmRepairOrderMapper repairOrderMapper;
|
||||
|
||||
/**
|
||||
* 查询报修附件
|
||||
*/
|
||||
@Override
|
||||
public PmRepairAttachmentVo queryById(Long id) {
|
||||
public HqPmRepairAttachmentVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
@@ -57,9 +57,9 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
* 查询报修附件列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<PmRepairAttachmentVo> queryPageList(PmRepairAttachmentBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<PmRepairAttachment> lqw = buildQueryWrapper(bo);
|
||||
Page<PmRepairAttachmentVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
public TableDataInfo<HqPmRepairAttachmentVo> queryPageList(HqPmRepairAttachmentBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<HqPmRepairAttachment> lqw = buildQueryWrapper(bo);
|
||||
Page<HqPmRepairAttachmentVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
@@ -67,8 +67,8 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
* 查询报修附件列表
|
||||
*/
|
||||
@Override
|
||||
public List<PmRepairAttachmentVo> queryList(PmRepairAttachmentBo bo) {
|
||||
LambdaQueryWrapper<PmRepairAttachment> lqw = buildQueryWrapper(bo);
|
||||
public List<HqPmRepairAttachmentVo> queryList(HqPmRepairAttachmentBo bo) {
|
||||
LambdaQueryWrapper<HqPmRepairAttachment> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
@@ -76,22 +76,22 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
* 根据工单ID查询附件列表
|
||||
*/
|
||||
@Override
|
||||
public List<PmRepairAttachmentVo> queryByOrderId(Long orderId) {
|
||||
LambdaQueryWrapper<PmRepairAttachment> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(PmRepairAttachment::getOrderId, orderId);
|
||||
lqw.orderByAsc(PmRepairAttachment::getSortOrder)
|
||||
.orderByAsc(PmRepairAttachment::getCreateTime);
|
||||
public List<HqPmRepairAttachmentVo> queryByOrderId(Long orderId) {
|
||||
LambdaQueryWrapper<HqPmRepairAttachment> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(HqPmRepairAttachment::getOrderId, orderId);
|
||||
lqw.orderByAsc(HqPmRepairAttachment::getSortOrder)
|
||||
.orderByAsc(HqPmRepairAttachment::getCreateTime);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<PmRepairAttachment> buildQueryWrapper(PmRepairAttachmentBo bo) {
|
||||
LambdaQueryWrapper<PmRepairAttachment> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(bo.getOrderId() != null, PmRepairAttachment::getOrderId, bo.getOrderId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getFileName()), PmRepairAttachment::getFileName, bo.getFileName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFileType()), PmRepairAttachment::getFileType, bo.getFileType());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUploadStage()), PmRepairAttachment::getUploadStage, bo.getUploadStage());
|
||||
lqw.eq(bo.getUploaderId() != null, PmRepairAttachment::getUploaderId, bo.getUploaderId());
|
||||
lqw.orderByAsc(PmRepairAttachment::getSortOrder).orderByDesc(PmRepairAttachment::getCreateTime);
|
||||
private LambdaQueryWrapper<HqPmRepairAttachment> buildQueryWrapper(HqPmRepairAttachmentBo bo) {
|
||||
LambdaQueryWrapper<HqPmRepairAttachment> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(bo.getOrderId() != null, HqPmRepairAttachment::getOrderId, bo.getOrderId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getFileName()), HqPmRepairAttachment::getFileName, bo.getFileName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFileType()), HqPmRepairAttachment::getFileType, bo.getFileType());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUploadStage()), HqPmRepairAttachment::getUploadStage, bo.getUploadStage());
|
||||
lqw.eq(bo.getUploaderId() != null, HqPmRepairAttachment::getUploaderId, bo.getUploaderId());
|
||||
lqw.orderByAsc(HqPmRepairAttachment::getSortOrder).orderByDesc(HqPmRepairAttachment::getCreateTime);
|
||||
return lqw;
|
||||
}
|
||||
|
||||
@@ -99,8 +99,8 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
* 新增报修附件
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(PmRepairAttachmentBo bo) {
|
||||
PmRepairAttachment add = MapstructUtils.convert(bo, PmRepairAttachment.class);
|
||||
public Boolean insertByBo(HqPmRepairAttachmentBo bo) {
|
||||
HqPmRepairAttachment add = MapstructUtils.convert(bo, HqPmRepairAttachment.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
@@ -115,8 +115,8 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
* 修改报修附件
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(PmRepairAttachmentBo bo) {
|
||||
PmRepairAttachment update = MapstructUtils.convert(bo, PmRepairAttachment.class);
|
||||
public Boolean updateByBo(HqPmRepairAttachmentBo bo) {
|
||||
HqPmRepairAttachment update = MapstructUtils.convert(bo, HqPmRepairAttachment.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
@@ -124,7 +124,7 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(PmRepairAttachment entity) {
|
||||
private void validEntityBeforeSave(HqPmRepairAttachment entity) {
|
||||
// 设置默认值
|
||||
if (entity.getSortOrder() == null) {
|
||||
entity.setSortOrder(0);
|
||||
@@ -147,9 +147,9 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
// 先获取要删除的附件信息(在删除前)
|
||||
List<PmRepairAttachmentVo> attachments = new ArrayList<>();
|
||||
List<HqPmRepairAttachmentVo> attachments = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
PmRepairAttachmentVo attachment = baseMapper.selectVoById(id);
|
||||
HqPmRepairAttachmentVo attachment = baseMapper.selectVoById(id);
|
||||
if (attachment != null) {
|
||||
attachments.add(attachment);
|
||||
}
|
||||
@@ -157,7 +157,7 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
|
||||
if (isValid) {
|
||||
// 删除OSS文件
|
||||
for (PmRepairAttachmentVo attachment : attachments) {
|
||||
for (HqPmRepairAttachmentVo attachment : attachments) {
|
||||
try {
|
||||
if (StringUtils.isNotBlank(attachment.getFilePath())) {
|
||||
OssFactory.instance().delete(attachment.getFilePath());
|
||||
@@ -176,7 +176,7 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
if (flag) {
|
||||
// 更新相关工单的附件数量
|
||||
attachments.stream()
|
||||
.map(PmRepairAttachmentVo::getOrderId)
|
||||
.map(HqPmRepairAttachmentVo::getOrderId)
|
||||
.distinct()
|
||||
.forEach(this::updateOrderAttachmentCount);
|
||||
}
|
||||
@@ -188,7 +188,7 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public PmRepairAttachmentVo uploadFile(Long orderId, String uploadStage, MultipartFile file, String description) {
|
||||
public HqPmRepairAttachmentVo uploadFile(Long orderId, String uploadStage, MultipartFile file, String description) {
|
||||
try {
|
||||
// 文件基本信息
|
||||
String originalFilename = file.getOriginalFilename();
|
||||
@@ -200,7 +200,7 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
UploadResult uploadResult = OssFactory.instance().uploadSuffix(file.getBytes(), fileExtension, contentType);
|
||||
|
||||
// 构建附件信息
|
||||
PmRepairAttachmentBo bo = new PmRepairAttachmentBo();
|
||||
HqPmRepairAttachmentBo bo = new HqPmRepairAttachmentBo();
|
||||
bo.setOrderId(orderId);
|
||||
bo.setFileName(originalFilename);
|
||||
bo.setFilePath(uploadResult.getUrl());
|
||||
@@ -231,16 +231,16 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public List<PmRepairAttachmentVo> uploadFiles(Long orderId, String uploadStage, MultipartFile[] files,
|
||||
public List<HqPmRepairAttachmentVo> uploadFiles(Long orderId, String uploadStage, MultipartFile[] files,
|
||||
List<String> descriptions) {
|
||||
List<PmRepairAttachmentVo> results = new ArrayList<>();
|
||||
List<HqPmRepairAttachmentVo> results = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
MultipartFile file = files[i];
|
||||
String description = (descriptions != null && i < descriptions.size()) ? descriptions.get(i) : null;
|
||||
|
||||
try {
|
||||
PmRepairAttachmentVo result = uploadFile(orderId, uploadStage, file, description);
|
||||
HqPmRepairAttachmentVo result = uploadFile(orderId, uploadStage, file, description);
|
||||
results.add(result);
|
||||
} catch (Exception e) {
|
||||
log.error("批量上传第{}个文件失败: {}", i + 1, e.getMessage());
|
||||
@@ -257,7 +257,7 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteAttachment(Long id) {
|
||||
PmRepairAttachmentVo attachment = queryById(id);
|
||||
HqPmRepairAttachmentVo attachment = queryById(id);
|
||||
if (attachment == null) {
|
||||
return false;
|
||||
}
|
||||
@@ -292,14 +292,14 @@ public class PmRepairAttachmentServiceImpl implements IPmRepairAttachmentService
|
||||
return;
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<PmRepairAttachment> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(PmRepairAttachment::getOrderId, orderId);
|
||||
LambdaQueryWrapper<HqPmRepairAttachment> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(HqPmRepairAttachment::getOrderId, orderId);
|
||||
long count = baseMapper.selectCount(lqw);
|
||||
|
||||
// 更新工单的附件数量
|
||||
LambdaUpdateWrapper<org.dromara.hq.domain.PmRepairOrder> updateWrapper = Wrappers.lambdaUpdate();
|
||||
updateWrapper.eq(org.dromara.hq.domain.PmRepairOrder::getId, orderId)
|
||||
.set(org.dromara.hq.domain.PmRepairOrder::getAttachmentCount, (int) count);
|
||||
LambdaUpdateWrapper<org.dromara.hq.domain.HqPmRepairOrder> updateWrapper = Wrappers.lambdaUpdate();
|
||||
updateWrapper.eq(org.dromara.hq.domain.HqPmRepairOrder::getId, orderId)
|
||||
.set(org.dromara.hq.domain.HqPmRepairOrder::getAttachmentCount, (int) count);
|
||||
repairOrderMapper.update(null, updateWrapper);
|
||||
}
|
||||
|
||||
@@ -11,11 +11,11 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.hq.domain.bo.PmRepairCategoryBo;
|
||||
import org.dromara.hq.domain.vo.PmRepairCategoryVo;
|
||||
import org.dromara.hq.domain.PmRepairCategory;
|
||||
import org.dromara.hq.mapper.PmRepairCategoryMapper;
|
||||
import org.dromara.hq.service.IPmRepairCategoryService;
|
||||
import org.dromara.hq.domain.bo.HqPmRepairCategoryBo;
|
||||
import org.dromara.hq.domain.vo.HqPmRepairCategoryVo;
|
||||
import org.dromara.hq.domain.HqPmRepairCategory;
|
||||
import org.dromara.hq.mapper.HqPmRepairCategoryMapper;
|
||||
import org.dromara.hq.service.IHqPmRepairCategoryService;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
|
||||
import java.util.List;
|
||||
@@ -32,9 +32,9 @@ import java.util.stream.Collectors;
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
public class HqPmRepairCategoryServiceImpl implements IHqPmRepairCategoryService {
|
||||
|
||||
private final PmRepairCategoryMapper baseMapper;
|
||||
private final HqPmRepairCategoryMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询维修类型
|
||||
@@ -43,7 +43,7 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
* @return 维修类型
|
||||
*/
|
||||
@Override
|
||||
public PmRepairCategoryVo queryById(Long id) {
|
||||
public HqPmRepairCategoryVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
@@ -55,9 +55,9 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
* @return 维修类型分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<PmRepairCategoryVo> queryPageList(PmRepairCategoryBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<PmRepairCategory> lqw = buildQueryWrapper(bo);
|
||||
Page<PmRepairCategoryVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
public TableDataInfo<HqPmRepairCategoryVo> queryPageList(HqPmRepairCategoryBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<HqPmRepairCategory> lqw = buildQueryWrapper(bo);
|
||||
Page<HqPmRepairCategoryVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
@@ -68,26 +68,27 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
* @return 维修类型列表
|
||||
*/
|
||||
@Override
|
||||
public List<PmRepairCategoryVo> queryList(PmRepairCategoryBo bo) {
|
||||
LambdaQueryWrapper<PmRepairCategory> lqw = buildQueryWrapper(bo);
|
||||
public List<HqPmRepairCategoryVo> queryList(HqPmRepairCategoryBo bo) {
|
||||
LambdaQueryWrapper<HqPmRepairCategory> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<PmRepairCategory> buildQueryWrapper(PmRepairCategoryBo bo) {
|
||||
LambdaQueryWrapper<PmRepairCategory> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(PmRepairCategory::getSortOrder).orderByAsc(PmRepairCategory::getId);
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCategoryName()), PmRepairCategory::getCategoryName, bo.getCategoryName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCategoryCode()), PmRepairCategory::getCategoryCode, bo.getCategoryCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCategoryDescription()), PmRepairCategory::getCategoryDescription,
|
||||
private LambdaQueryWrapper<HqPmRepairCategory> buildQueryWrapper(HqPmRepairCategoryBo bo) {
|
||||
LambdaQueryWrapper<HqPmRepairCategory> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(HqPmRepairCategory::getSortOrder).orderByAsc(HqPmRepairCategory::getId);
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCategoryName()), HqPmRepairCategory::getCategoryName,
|
||||
bo.getCategoryName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCategoryCode()), HqPmRepairCategory::getCategoryCode, bo.getCategoryCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCategoryDescription()), HqPmRepairCategory::getCategoryDescription,
|
||||
bo.getCategoryDescription());
|
||||
lqw.eq(bo.getParentId() != null, PmRepairCategory::getParentId, bo.getParentId());
|
||||
lqw.eq(bo.getLevelDepth() != null, PmRepairCategory::getLevelDepth, bo.getLevelDepth());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getSkillLevel()), PmRepairCategory::getSkillLevel, bo.getSkillLevel());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), PmRepairCategory::getStatus, bo.getStatus());
|
||||
lqw.eq(bo.getParentId() != null, HqPmRepairCategory::getParentId, bo.getParentId());
|
||||
lqw.eq(bo.getLevelDepth() != null, HqPmRepairCategory::getLevelDepth, bo.getLevelDepth());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getSkillLevel()), HqPmRepairCategory::getSkillLevel, bo.getSkillLevel());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), HqPmRepairCategory::getStatus, bo.getStatus());
|
||||
|
||||
// IN查询条件
|
||||
lqw.in(CollUtil.isNotEmpty(bo.getStatusIn()), PmRepairCategory::getStatus, bo.getStatusIn());
|
||||
lqw.in(CollUtil.isNotEmpty(bo.getParentIdIn()), PmRepairCategory::getParentId, bo.getParentIdIn());
|
||||
lqw.in(CollUtil.isNotEmpty(bo.getStatusIn()), HqPmRepairCategory::getStatus, bo.getStatusIn());
|
||||
lqw.in(CollUtil.isNotEmpty(bo.getParentIdIn()), HqPmRepairCategory::getParentId, bo.getParentIdIn());
|
||||
|
||||
return lqw;
|
||||
}
|
||||
@@ -99,8 +100,8 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(PmRepairCategoryBo bo) {
|
||||
PmRepairCategory add = MapstructUtils.convert(bo, PmRepairCategory.class);
|
||||
public Boolean insertByBo(HqPmRepairCategoryBo bo) {
|
||||
HqPmRepairCategory add = MapstructUtils.convert(bo, HqPmRepairCategory.class);
|
||||
validEntityBeforeSave(add);
|
||||
|
||||
// 设置层级信息
|
||||
@@ -140,12 +141,12 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(PmRepairCategoryBo bo) {
|
||||
PmRepairCategory update = MapstructUtils.convert(bo, PmRepairCategory.class);
|
||||
public Boolean updateByBo(HqPmRepairCategoryBo bo) {
|
||||
HqPmRepairCategory update = MapstructUtils.convert(bo, HqPmRepairCategory.class);
|
||||
validEntityBeforeSave(update);
|
||||
|
||||
// 如果修改了父级,需要重新计算层级信息
|
||||
PmRepairCategory oldEntity = baseMapper.selectById(update.getId());
|
||||
HqPmRepairCategory oldEntity = baseMapper.selectById(update.getId());
|
||||
if (oldEntity != null && !oldEntity.getParentId().equals(update.getParentId())) {
|
||||
buildHierarchyInfo(update);
|
||||
// 更新新旧父级的子类数量
|
||||
@@ -159,13 +160,13 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(PmRepairCategory entity) {
|
||||
private void validEntityBeforeSave(HqPmRepairCategory entity) {
|
||||
// 校验类型编码唯一性
|
||||
if (StringUtils.isNotBlank(entity.getCategoryCode())) {
|
||||
LambdaQueryWrapper<PmRepairCategory> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(PmRepairCategory::getCategoryCode, entity.getCategoryCode());
|
||||
LambdaQueryWrapper<HqPmRepairCategory> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(HqPmRepairCategory::getCategoryCode, entity.getCategoryCode());
|
||||
if (entity.getId() != null) {
|
||||
lqw.ne(PmRepairCategory::getId, entity.getId());
|
||||
lqw.ne(HqPmRepairCategory::getId, entity.getId());
|
||||
}
|
||||
boolean exists = baseMapper.exists(lqw);
|
||||
if (exists) {
|
||||
@@ -182,13 +183,13 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
/**
|
||||
* 构建层级信息
|
||||
*/
|
||||
private void buildHierarchyInfo(PmRepairCategory entity) {
|
||||
private void buildHierarchyInfo(HqPmRepairCategory entity) {
|
||||
if (entity.getParentId() == null || entity.getParentId() == 0L) {
|
||||
entity.setParentId(0L);
|
||||
entity.setLevelDepth(1);
|
||||
entity.setAncestorIds("0");
|
||||
} else {
|
||||
PmRepairCategory parent = baseMapper.selectById(entity.getParentId());
|
||||
HqPmRepairCategory parent = baseMapper.selectById(entity.getParentId());
|
||||
if (parent != null) {
|
||||
entity.setLevelDepth(parent.getLevelDepth() + 1);
|
||||
entity.setAncestorIds(parent.getAncestorIds() + "," + parent.getId());
|
||||
@@ -204,11 +205,11 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
return;
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<PmRepairCategory> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(PmRepairCategory::getParentId, parentId);
|
||||
LambdaQueryWrapper<HqPmRepairCategory> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(HqPmRepairCategory::getParentId, parentId);
|
||||
long count = baseMapper.selectCount(lqw);
|
||||
|
||||
PmRepairCategory parent = new PmRepairCategory();
|
||||
HqPmRepairCategory parent = new HqPmRepairCategory();
|
||||
parent.setId(parentId);
|
||||
parent.setChildrenCount((int) count);
|
||||
baseMapper.updateById(parent);
|
||||
@@ -226,7 +227,7 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
if (isValid) {
|
||||
// 校验是否有子类
|
||||
for (Long id : ids) {
|
||||
PmRepairCategory category = baseMapper.selectById(id);
|
||||
HqPmRepairCategory category = baseMapper.selectById(id);
|
||||
if (category != null && category.getChildrenCount() > 0) {
|
||||
throw new ServiceException("存在子类型,不允许删除:" + category.getCategoryName());
|
||||
}
|
||||
@@ -234,10 +235,10 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
}
|
||||
|
||||
// 删除后更新父级的子类数量
|
||||
List<PmRepairCategory> categories = baseMapper.selectBatchIds(ids);
|
||||
List<HqPmRepairCategory> categories = baseMapper.selectBatchIds(ids);
|
||||
boolean flag = baseMapper.deleteByIds(ids) > 0;
|
||||
if (flag) {
|
||||
for (PmRepairCategory category : categories) {
|
||||
for (HqPmRepairCategory category : categories) {
|
||||
updateParentChildrenCount(category.getParentId());
|
||||
}
|
||||
}
|
||||
@@ -250,11 +251,11 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
* @return 维修类型树形列表
|
||||
*/
|
||||
@Override
|
||||
public List<PmRepairCategoryVo> queryTree() {
|
||||
LambdaQueryWrapper<PmRepairCategory> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(PmRepairCategory::getStatus, "1");
|
||||
lqw.orderByAsc(PmRepairCategory::getSortOrder).orderByAsc(PmRepairCategory::getId);
|
||||
List<PmRepairCategoryVo> allList = baseMapper.selectVoList(lqw);
|
||||
public List<HqPmRepairCategoryVo> queryTree() {
|
||||
LambdaQueryWrapper<HqPmRepairCategory> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(HqPmRepairCategory::getStatus, "1");
|
||||
lqw.orderByAsc(HqPmRepairCategory::getSortOrder).orderByAsc(HqPmRepairCategory::getId);
|
||||
List<HqPmRepairCategoryVo> allList = baseMapper.selectVoList(lqw);
|
||||
|
||||
return buildTree(allList, 0L);
|
||||
}
|
||||
@@ -262,11 +263,11 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
/**
|
||||
* 构建树形结构
|
||||
*/
|
||||
private List<PmRepairCategoryVo> buildTree(List<PmRepairCategoryVo> allList, Long parentId) {
|
||||
private List<HqPmRepairCategoryVo> buildTree(List<HqPmRepairCategoryVo> allList, Long parentId) {
|
||||
return allList.stream()
|
||||
.filter(item -> parentId.equals(item.getParentId()))
|
||||
.map(item -> {
|
||||
List<PmRepairCategoryVo> children = buildTree(allList, item.getId());
|
||||
List<HqPmRepairCategoryVo> children = buildTree(allList, item.getId());
|
||||
item.setChildren(children);
|
||||
return item;
|
||||
})
|
||||
@@ -281,12 +282,12 @@ public class PmRepairCategoryServiceImpl implements IPmRepairCategoryService {
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateUsageCount(Long categoryId) {
|
||||
PmRepairCategory category = baseMapper.selectById(categoryId);
|
||||
HqPmRepairCategory category = baseMapper.selectById(categoryId);
|
||||
if (category == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
PmRepairCategory update = new PmRepairCategory();
|
||||
HqPmRepairCategory update = new HqPmRepairCategory();
|
||||
update.setId(categoryId);
|
||||
update.setUsageCount(category.getUsageCount() + 1);
|
||||
update.setLastUsedTime(new Date());
|
||||
@@ -12,16 +12,16 @@ import cn.hutool.core.date.DateUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.hq.domain.bo.PmRepairOrderBo;
|
||||
import org.dromara.hq.domain.vo.PmRepairOrderVo;
|
||||
import org.dromara.hq.domain.PmRepairOrder;
|
||||
import org.dromara.hq.domain.PmRepairProgress;
|
||||
import org.dromara.hq.domain.PmServiceEvaluation;
|
||||
import org.dromara.hq.mapper.PmRepairOrderMapper;
|
||||
import org.dromara.hq.mapper.PmRepairProgressMapper;
|
||||
import org.dromara.hq.mapper.PmServiceEvaluationMapper;
|
||||
import org.dromara.hq.service.IPmRepairOrderService;
|
||||
import org.dromara.hq.service.IPmRepairCategoryService;
|
||||
import org.dromara.hq.domain.bo.HqPmRepairOrderBo;
|
||||
import org.dromara.hq.domain.vo.HqPmRepairOrderVo;
|
||||
import org.dromara.hq.domain.HqPmRepairOrder;
|
||||
import org.dromara.hq.domain.HqPmRepairProgress;
|
||||
import org.dromara.hq.domain.HqPmServiceEvaluation;
|
||||
import org.dromara.hq.mapper.HqPmRepairOrderMapper;
|
||||
import org.dromara.hq.mapper.HqPmRepairProgressMapper;
|
||||
import org.dromara.hq.mapper.HqPmServiceEvaluationMapper;
|
||||
import org.dromara.hq.service.IHqPmRepairOrderService;
|
||||
import org.dromara.hq.service.IHqPmRepairCategoryService;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.service.UserService;
|
||||
@@ -39,13 +39,13 @@ import java.util.Date;
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
public class HqPmRepairOrderServiceImpl implements IHqPmRepairOrderService {
|
||||
|
||||
private final PmRepairOrderMapper baseMapper;
|
||||
private final PmRepairProgressMapper repairProgressMapper;
|
||||
private final IPmRepairCategoryService repairCategoryService;
|
||||
private final HqPmRepairOrderMapper baseMapper;
|
||||
private final HqPmRepairProgressMapper repairProgressMapper;
|
||||
private final IHqPmRepairCategoryService repairCategoryService;
|
||||
private final UserService userService;
|
||||
private final PmServiceEvaluationMapper serviceEvaluationMapper;
|
||||
private final HqPmServiceEvaluationMapper serviceEvaluationMapper;
|
||||
|
||||
/**
|
||||
* 查询报修工单
|
||||
@@ -54,8 +54,8 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
* @return 报修工单
|
||||
*/
|
||||
@Override
|
||||
public PmRepairOrderVo queryById(Long id) {
|
||||
PmRepairOrderVo orderVo = baseMapper.selectVoById(id);
|
||||
public HqPmRepairOrderVo queryById(Long id) {
|
||||
HqPmRepairOrderVo orderVo = baseMapper.selectVoById(id);
|
||||
if (orderVo == null) {
|
||||
return null;
|
||||
}
|
||||
@@ -74,7 +74,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
* @param orderVo 工单数据
|
||||
* @return 是否有权限
|
||||
*/
|
||||
private boolean hasDataPermission(PmRepairOrderVo orderVo) {
|
||||
private boolean hasDataPermission(HqPmRepairOrderVo orderVo) {
|
||||
try {
|
||||
// 获取当前登录用户信息
|
||||
var loginUser = LoginHelper.getLoginUser();
|
||||
@@ -119,9 +119,9 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
* @return 报修工单分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<PmRepairOrderVo> queryPageList(PmRepairOrderBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<PmRepairOrder> lqw = buildQueryWrapper(bo);
|
||||
Page<PmRepairOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
public TableDataInfo<HqPmRepairOrderVo> queryPageList(HqPmRepairOrderBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<HqPmRepairOrder> lqw = buildQueryWrapper(bo);
|
||||
Page<HqPmRepairOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
@@ -132,33 +132,34 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
* @return 报修工单列表
|
||||
*/
|
||||
@Override
|
||||
public List<PmRepairOrderVo> queryList(PmRepairOrderBo bo) {
|
||||
LambdaQueryWrapper<PmRepairOrder> lqw = buildQueryWrapper(bo);
|
||||
public List<HqPmRepairOrderVo> queryList(HqPmRepairOrderBo bo) {
|
||||
LambdaQueryWrapper<HqPmRepairOrder> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<PmRepairOrder> buildQueryWrapper(PmRepairOrderBo bo) {
|
||||
LambdaQueryWrapper<PmRepairOrder> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(PmRepairOrder::getCreateTime);
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), PmRepairOrder::getOrderNo, bo.getOrderNo());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getTitle()), PmRepairOrder::getTitle, bo.getTitle());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getDescription()), PmRepairOrder::getDescription, bo.getDescription());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getRepairLocation()), PmRepairOrder::getRepairLocation,
|
||||
private LambdaQueryWrapper<HqPmRepairOrder> buildQueryWrapper(HqPmRepairOrderBo bo) {
|
||||
LambdaQueryWrapper<HqPmRepairOrder> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(HqPmRepairOrder::getCreateTime);
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), HqPmRepairOrder::getOrderNo, bo.getOrderNo());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getTitle()), HqPmRepairOrder::getTitle, bo.getTitle());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getDescription()), HqPmRepairOrder::getDescription, bo.getDescription());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getRepairLocation()), HqPmRepairOrder::getRepairLocation,
|
||||
bo.getRepairLocation());
|
||||
lqw.eq(bo.getCategoryId() != null, PmRepairOrder::getCategoryId, bo.getCategoryId());
|
||||
lqw.eq(bo.getPriorityLevel() != null, PmRepairOrder::getPriorityLevel, bo.getPriorityLevel());
|
||||
lqw.eq(bo.getReporterId() != null, PmRepairOrder::getReporterId, bo.getReporterId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getReporterName()), PmRepairOrder::getReporterName, bo.getReporterName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getReporterPhone()), PmRepairOrder::getReporterPhone, bo.getReporterPhone());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getOrderStatus()), PmRepairOrder::getOrderStatus, bo.getOrderStatus());
|
||||
lqw.eq(bo.getAssigneeId() != null, PmRepairOrder::getAssigneeId, bo.getAssigneeId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getAssigneeName()), PmRepairOrder::getAssigneeName, bo.getAssigneeName());
|
||||
lqw.eq(bo.getCategoryId() != null, HqPmRepairOrder::getCategoryId, bo.getCategoryId());
|
||||
lqw.eq(bo.getPriorityLevel() != null, HqPmRepairOrder::getPriorityLevel, bo.getPriorityLevel());
|
||||
lqw.eq(bo.getReporterId() != null, HqPmRepairOrder::getReporterId, bo.getReporterId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getReporterName()), HqPmRepairOrder::getReporterName, bo.getReporterName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getReporterPhone()), HqPmRepairOrder::getReporterPhone,
|
||||
bo.getReporterPhone());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getOrderStatus()), HqPmRepairOrder::getOrderStatus, bo.getOrderStatus());
|
||||
lqw.eq(bo.getAssigneeId() != null, HqPmRepairOrder::getAssigneeId, bo.getAssigneeId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getAssigneeName()), HqPmRepairOrder::getAssigneeName, bo.getAssigneeName());
|
||||
|
||||
// IN查询条件
|
||||
lqw.in(CollUtil.isNotEmpty(bo.getOrderStatusIn()), PmRepairOrder::getOrderStatus, bo.getOrderStatusIn());
|
||||
lqw.in(CollUtil.isNotEmpty(bo.getCategoryIdIn()), PmRepairOrder::getCategoryId, bo.getCategoryIdIn());
|
||||
lqw.in(CollUtil.isNotEmpty(bo.getReporterIdIn()), PmRepairOrder::getReporterId, bo.getReporterIdIn());
|
||||
lqw.in(CollUtil.isNotEmpty(bo.getAssigneeIdIn()), PmRepairOrder::getAssigneeId, bo.getAssigneeIdIn());
|
||||
lqw.in(CollUtil.isNotEmpty(bo.getOrderStatusIn()), HqPmRepairOrder::getOrderStatus, bo.getOrderStatusIn());
|
||||
lqw.in(CollUtil.isNotEmpty(bo.getCategoryIdIn()), HqPmRepairOrder::getCategoryId, bo.getCategoryIdIn());
|
||||
lqw.in(CollUtil.isNotEmpty(bo.getReporterIdIn()), HqPmRepairOrder::getReporterId, bo.getReporterIdIn());
|
||||
lqw.in(CollUtil.isNotEmpty(bo.getAssigneeIdIn()), HqPmRepairOrder::getAssigneeId, bo.getAssigneeIdIn());
|
||||
|
||||
// 添加数据权限控制
|
||||
addDataPermissionFilter(lqw);
|
||||
@@ -171,14 +172,14 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
*
|
||||
* @param lqw 查询条件构造器
|
||||
*/
|
||||
private void addDataPermissionFilter(LambdaQueryWrapper<PmRepairOrder> lqw) {
|
||||
private void addDataPermissionFilter(LambdaQueryWrapper<HqPmRepairOrder> lqw) {
|
||||
try {
|
||||
// 获取当前登录用户信息
|
||||
var loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
// 未登录用户不能查看任何数据
|
||||
log.warn("未登录用户尝试访问报修订单数据");
|
||||
lqw.eq(PmRepairOrder::getId, 0L);
|
||||
lqw.eq(HqPmRepairOrder::getId, 0L);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -210,16 +211,16 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
if (rolePermissions != null && rolePermissions.contains("maintenance_worker")) {
|
||||
log.debug("当前用户[{}]为维修人员,只能查看自己创建或分配给自己的报修单", currentUserId);
|
||||
lqw.and(wrapper -> wrapper
|
||||
.eq(PmRepairOrder::getReporterId, currentUserId) // 自己创建的报修单
|
||||
.eq(HqPmRepairOrder::getReporterId, currentUserId) // 自己创建的报修单
|
||||
.or()
|
||||
.eq(PmRepairOrder::getAssigneeId, currentUserId) // 分配给自己的报修单
|
||||
.eq(HqPmRepairOrder::getAssigneeId, currentUserId) // 分配给自己的报修单
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// 其他用户:只能看见自己创建的报修单
|
||||
log.debug("当前用户[{}]为普通用户,只能查看自己创建的报修单", currentUserId);
|
||||
lqw.eq(PmRepairOrder::getReporterId, currentUserId);
|
||||
lqw.eq(HqPmRepairOrder::getReporterId, currentUserId);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("数据权限过滤异常: {}", e.getMessage(), e);
|
||||
@@ -228,14 +229,14 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
Long currentUserId = LoginHelper.getUserId();
|
||||
if (currentUserId != null) {
|
||||
log.warn("权限过滤异常,回退到只查看自己创建的报修单,用户ID: {}", currentUserId);
|
||||
lqw.eq(PmRepairOrder::getReporterId, currentUserId);
|
||||
lqw.eq(HqPmRepairOrder::getReporterId, currentUserId);
|
||||
} else {
|
||||
log.error("无法获取当前用户ID,拒绝所有数据访问");
|
||||
lqw.eq(PmRepairOrder::getId, 0L);
|
||||
lqw.eq(HqPmRepairOrder::getId, 0L);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
log.error("权限过滤回退逻辑也失败了: {}", ex.getMessage(), ex);
|
||||
lqw.eq(PmRepairOrder::getId, 0L);
|
||||
lqw.eq(HqPmRepairOrder::getId, 0L);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -247,8 +248,8 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(PmRepairOrderBo bo) {
|
||||
PmRepairOrder add = MapstructUtils.convert(bo, PmRepairOrder.class);
|
||||
public Boolean insertByBo(HqPmRepairOrderBo bo) {
|
||||
HqPmRepairOrder add = MapstructUtils.convert(bo, HqPmRepairOrder.class);
|
||||
validEntityBeforeSave(add);
|
||||
|
||||
// 生成工单编号
|
||||
@@ -289,7 +290,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
*
|
||||
* @param order 报修工单
|
||||
*/
|
||||
private void fillReporterInfo(PmRepairOrder order) {
|
||||
private void fillReporterInfo(HqPmRepairOrder order) {
|
||||
try {
|
||||
// 获取当前登录用户信息
|
||||
Long userId = LoginHelper.getUserId();
|
||||
@@ -335,8 +336,8 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(PmRepairOrderBo bo) {
|
||||
PmRepairOrder update = MapstructUtils.convert(bo, PmRepairOrder.class);
|
||||
public Boolean updateByBo(HqPmRepairOrderBo bo) {
|
||||
HqPmRepairOrder update = MapstructUtils.convert(bo, HqPmRepairOrder.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
@@ -344,13 +345,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(PmRepairOrder entity) {
|
||||
private void validEntityBeforeSave(HqPmRepairOrder entity) {
|
||||
// 校验工单编号唯一性
|
||||
if (StringUtils.isNotBlank(entity.getOrderNo())) {
|
||||
LambdaQueryWrapper<PmRepairOrder> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(PmRepairOrder::getOrderNo, entity.getOrderNo());
|
||||
LambdaQueryWrapper<HqPmRepairOrder> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(HqPmRepairOrder::getOrderNo, entity.getOrderNo());
|
||||
if (entity.getId() != null) {
|
||||
lqw.ne(PmRepairOrder::getId, entity.getId());
|
||||
lqw.ne(HqPmRepairOrder::getId, entity.getId());
|
||||
}
|
||||
boolean exists = baseMapper.exists(lqw);
|
||||
if (exists) {
|
||||
@@ -371,7 +372,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
if (isValid) {
|
||||
// 校验是否可以删除
|
||||
for (Long id : ids) {
|
||||
PmRepairOrder order = baseMapper.selectById(id);
|
||||
HqPmRepairOrder order = baseMapper.selectById(id);
|
||||
if (order != null && !"1".equals(order.getOrderStatus()) && !"9".equals(order.getOrderStatus())) {
|
||||
throw new ServiceException("只能删除待分派或已取消状态的工单");
|
||||
}
|
||||
@@ -390,13 +391,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
*/
|
||||
@Override
|
||||
public Boolean assignOrder(Long orderId, Long assigneeId, String assignRemark) {
|
||||
PmRepairOrder order = baseMapper.selectById(orderId);
|
||||
HqPmRepairOrder order = baseMapper.selectById(orderId);
|
||||
if (order == null) {
|
||||
throw new ServiceException("工单不存在");
|
||||
}
|
||||
|
||||
// 数据权限验证
|
||||
PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
|
||||
HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
|
||||
if (!hasDataPermission(orderVo)) {
|
||||
throw new ServiceException("无权限操作该工单");
|
||||
}
|
||||
@@ -427,7 +428,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
}
|
||||
|
||||
// 更新工单信息
|
||||
PmRepairOrder update = new PmRepairOrder();
|
||||
HqPmRepairOrder update = new HqPmRepairOrder();
|
||||
update.setId(orderId);
|
||||
update.setAssigneeId(assigneeId);
|
||||
update.setAssigneeName(assigneeName); // 设置维修员姓名
|
||||
@@ -453,13 +454,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
*/
|
||||
@Override
|
||||
public Boolean startRepair(Long orderId) {
|
||||
PmRepairOrder order = baseMapper.selectById(orderId);
|
||||
HqPmRepairOrder order = baseMapper.selectById(orderId);
|
||||
if (order == null) {
|
||||
throw new ServiceException("工单不存在");
|
||||
}
|
||||
|
||||
// 数据权限验证
|
||||
PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
|
||||
HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
|
||||
if (!hasDataPermission(orderVo)) {
|
||||
throw new ServiceException("无权限操作该工单");
|
||||
}
|
||||
@@ -468,7 +469,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
throw new ServiceException("只能开始已分派状态的工单");
|
||||
}
|
||||
|
||||
PmRepairOrder update = new PmRepairOrder();
|
||||
HqPmRepairOrder update = new HqPmRepairOrder();
|
||||
update.setId(orderId);
|
||||
update.setStartTime(new Date());
|
||||
update.setOrderStatus("3"); // 进行中
|
||||
@@ -486,13 +487,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
*/
|
||||
@Override
|
||||
public Boolean finishRepair(Long orderId, String repairResult, String usedMaterials) {
|
||||
PmRepairOrder order = baseMapper.selectById(orderId);
|
||||
HqPmRepairOrder order = baseMapper.selectById(orderId);
|
||||
if (order == null) {
|
||||
throw new ServiceException("工单不存在");
|
||||
}
|
||||
|
||||
// 数据权限验证
|
||||
PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
|
||||
HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
|
||||
if (!hasDataPermission(orderVo)) {
|
||||
throw new ServiceException("无权限操作该工单");
|
||||
}
|
||||
@@ -510,7 +511,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
totalDuration = (int) (diff / 60000); // 转换为分钟
|
||||
}
|
||||
|
||||
PmRepairOrder update = new PmRepairOrder();
|
||||
HqPmRepairOrder update = new HqPmRepairOrder();
|
||||
update.setId(orderId);
|
||||
update.setFinishTime(finishTime);
|
||||
update.setTotalDuration(totalDuration);
|
||||
@@ -530,13 +531,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
*/
|
||||
@Override
|
||||
public Boolean cancelOrder(Long orderId, String cancelReason) {
|
||||
PmRepairOrder order = baseMapper.selectById(orderId);
|
||||
HqPmRepairOrder order = baseMapper.selectById(orderId);
|
||||
if (order == null) {
|
||||
throw new ServiceException("工单不存在");
|
||||
}
|
||||
|
||||
// 数据权限验证
|
||||
PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
|
||||
HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
|
||||
if (!hasDataPermission(orderVo)) {
|
||||
throw new ServiceException("无权限操作该工单");
|
||||
}
|
||||
@@ -546,7 +547,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
throw new ServiceException("已完成、已评价或已归档的工单不能取消");
|
||||
}
|
||||
|
||||
PmRepairOrder update = new PmRepairOrder();
|
||||
HqPmRepairOrder update = new HqPmRepairOrder();
|
||||
update.setId(orderId);
|
||||
update.setCancelReason(cancelReason);
|
||||
update.setOrderStatus("9"); // 已取消
|
||||
@@ -565,12 +566,12 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
String prefix = "RO" + dateStr;
|
||||
|
||||
// 查询当天最大序号
|
||||
LambdaQueryWrapper<PmRepairOrder> lqw = Wrappers.lambdaQuery();
|
||||
lqw.likeRight(PmRepairOrder::getOrderNo, prefix);
|
||||
lqw.orderByDesc(PmRepairOrder::getOrderNo);
|
||||
LambdaQueryWrapper<HqPmRepairOrder> lqw = Wrappers.lambdaQuery();
|
||||
lqw.likeRight(HqPmRepairOrder::getOrderNo, prefix);
|
||||
lqw.orderByDesc(HqPmRepairOrder::getOrderNo);
|
||||
lqw.last("LIMIT 1");
|
||||
|
||||
PmRepairOrder lastOrder = baseMapper.selectOne(lqw);
|
||||
HqPmRepairOrder lastOrder = baseMapper.selectOne(lqw);
|
||||
int sequence = 1;
|
||||
|
||||
if (lastOrder != null && StringUtils.isNotBlank(lastOrder.getOrderNo())) {
|
||||
@@ -611,13 +612,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
@Override
|
||||
public Boolean updateProgress(Long orderId, java.util.Map<String, Object> progressData) {
|
||||
// 1. 验证工单是否存在
|
||||
PmRepairOrder order = baseMapper.selectById(orderId);
|
||||
HqPmRepairOrder order = baseMapper.selectById(orderId);
|
||||
if (order == null) {
|
||||
throw new ServiceException("工单不存在");
|
||||
}
|
||||
|
||||
// 2. 数据权限验证
|
||||
PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
|
||||
HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
|
||||
if (!hasDataPermission(orderVo)) {
|
||||
throw new ServiceException("无权限操作该工单");
|
||||
}
|
||||
@@ -635,7 +636,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
String currentUserName = loginUser.getUsername();
|
||||
|
||||
// 5. 创建进度记录
|
||||
PmRepairProgress progress = new PmRepairProgress();
|
||||
HqPmRepairProgress progress = new HqPmRepairProgress();
|
||||
progress.setOrderId(orderId);
|
||||
progress.setProgressType(String.valueOf(progressData.get("progressType")));
|
||||
progress.setProgressStatus(String.valueOf(progressData.get("progressStatus")));
|
||||
@@ -675,7 +676,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
boolean statusUpdated = false;
|
||||
if ("2".equals(order.getOrderStatus())) {
|
||||
// 如果是首次更新进度(从已分派状态),自动将状态改为进行中
|
||||
PmRepairOrder statusUpdate = new PmRepairOrder();
|
||||
HqPmRepairOrder statusUpdate = new HqPmRepairOrder();
|
||||
statusUpdate.setId(orderId);
|
||||
statusUpdate.setStartTime(new Date());
|
||||
statusUpdate.setOrderStatus("3"); // 进行中
|
||||
@@ -707,27 +708,27 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
@Override
|
||||
public List<java.util.Map<String, Object>> getRepairProgress(Long orderId) {
|
||||
// 1. 验证工单是否存在
|
||||
PmRepairOrder order = baseMapper.selectById(orderId);
|
||||
HqPmRepairOrder order = baseMapper.selectById(orderId);
|
||||
if (order == null) {
|
||||
throw new ServiceException("工单不存在");
|
||||
}
|
||||
|
||||
// 2. 数据权限验证
|
||||
PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
|
||||
HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
|
||||
if (!hasDataPermission(orderVo)) {
|
||||
throw new ServiceException("无权限查看该工单进度");
|
||||
}
|
||||
|
||||
// 3. 查询进度记录
|
||||
LambdaQueryWrapper<PmRepairProgress> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(PmRepairProgress::getOrderId, orderId);
|
||||
lqw.orderByAsc(PmRepairProgress::getOperationTime); // 按时间正序排列
|
||||
LambdaQueryWrapper<HqPmRepairProgress> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(HqPmRepairProgress::getOrderId, orderId);
|
||||
lqw.orderByAsc(HqPmRepairProgress::getOperationTime); // 按时间正序排列
|
||||
|
||||
List<PmRepairProgress> progressList = repairProgressMapper.selectList(lqw);
|
||||
List<HqPmRepairProgress> progressList = repairProgressMapper.selectList(lqw);
|
||||
|
||||
// 4. 转换为Map格式返回
|
||||
List<java.util.Map<String, Object>> result = new java.util.ArrayList<>();
|
||||
for (PmRepairProgress progress : progressList) {
|
||||
for (HqPmRepairProgress progress : progressList) {
|
||||
java.util.Map<String, Object> map = new java.util.HashMap<>();
|
||||
map.put("id", progress.getId());
|
||||
map.put("orderId", progress.getOrderId());
|
||||
@@ -758,12 +759,12 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
private void updateProgressCount(Long orderId) {
|
||||
try {
|
||||
// 查询该工单的进度记录总数
|
||||
LambdaQueryWrapper<PmRepairProgress> countLqw = Wrappers.lambdaQuery();
|
||||
countLqw.eq(PmRepairProgress::getOrderId, orderId);
|
||||
LambdaQueryWrapper<HqPmRepairProgress> countLqw = Wrappers.lambdaQuery();
|
||||
countLqw.eq(HqPmRepairProgress::getOrderId, orderId);
|
||||
long progressCount = repairProgressMapper.selectCount(countLqw);
|
||||
|
||||
// 更新工单的进度计数
|
||||
PmRepairOrder update = new PmRepairOrder();
|
||||
HqPmRepairOrder update = new HqPmRepairOrder();
|
||||
update.setId(orderId);
|
||||
update.setProgressCount((int) progressCount);
|
||||
baseMapper.updateById(update);
|
||||
@@ -815,13 +816,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
@Override
|
||||
public Boolean completeOrder(Long orderId, String repairResult, String usedMaterials, String followSuggestions) {
|
||||
// 1. 验证工单是否存在
|
||||
PmRepairOrder order = baseMapper.selectById(orderId);
|
||||
HqPmRepairOrder order = baseMapper.selectById(orderId);
|
||||
if (order == null) {
|
||||
throw new ServiceException("工单不存在");
|
||||
}
|
||||
|
||||
// 2. 数据权限验证
|
||||
PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
|
||||
HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
|
||||
if (!hasDataPermission(orderVo)) {
|
||||
throw new ServiceException("无权限操作该工单");
|
||||
}
|
||||
@@ -841,7 +842,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
}
|
||||
|
||||
// 5. 更新工单状态和完成信息
|
||||
PmRepairOrder update = new PmRepairOrder();
|
||||
HqPmRepairOrder update = new HqPmRepairOrder();
|
||||
update.setId(orderId);
|
||||
update.setFinishTime(finishTime);
|
||||
update.setTotalDuration(totalDuration);
|
||||
@@ -858,7 +859,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
// 6. 添加完成进度记录
|
||||
try {
|
||||
var loginUser = LoginHelper.getLoginUser();
|
||||
PmRepairProgress completionProgress = new PmRepairProgress();
|
||||
HqPmRepairProgress completionProgress = new HqPmRepairProgress();
|
||||
completionProgress.setOrderId(orderId);
|
||||
completionProgress.setProgressType("6"); // 完成维修
|
||||
completionProgress.setProgressStatus("维修已完成");
|
||||
@@ -902,13 +903,13 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
Long orderId = Long.valueOf(evaluationData.get("orderId").toString());
|
||||
|
||||
// 2. 验证工单是否存在
|
||||
PmRepairOrder order = baseMapper.selectById(orderId);
|
||||
HqPmRepairOrder order = baseMapper.selectById(orderId);
|
||||
if (order == null) {
|
||||
throw new ServiceException("工单不存在");
|
||||
}
|
||||
|
||||
// 3. 数据权限验证
|
||||
PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
|
||||
HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
|
||||
if (!hasDataPermission(orderVo)) {
|
||||
throw new ServiceException("无权限评价该工单");
|
||||
}
|
||||
@@ -919,8 +920,8 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
}
|
||||
|
||||
// 5. 验证是否已经评价过
|
||||
LambdaQueryWrapper<PmServiceEvaluation> checkLqw = Wrappers.lambdaQuery();
|
||||
checkLqw.eq(PmServiceEvaluation::getOrderId, orderId);
|
||||
LambdaQueryWrapper<HqPmServiceEvaluation> checkLqw = Wrappers.lambdaQuery();
|
||||
checkLqw.eq(HqPmServiceEvaluation::getOrderId, orderId);
|
||||
boolean hasEvaluated = serviceEvaluationMapper.exists(checkLqw);
|
||||
if (hasEvaluated) {
|
||||
throw new ServiceException("该工单已经评价过,不能重复评价");
|
||||
@@ -933,7 +934,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
|
||||
// 7. 创建服务评价记录
|
||||
Date evaluationTime = new Date();
|
||||
PmServiceEvaluation evaluation = new PmServiceEvaluation();
|
||||
HqPmServiceEvaluation evaluation = new HqPmServiceEvaluation();
|
||||
evaluation.setOrderId(orderId);
|
||||
evaluation.setEvaluatorId(currentUserId);
|
||||
evaluation.setEvaluatorName(currentUserName);
|
||||
@@ -989,7 +990,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
}
|
||||
|
||||
// 9. 更新工单状态为"已评价",并设置评价得分和评价时间
|
||||
PmRepairOrder updateOrder = new PmRepairOrder();
|
||||
HqPmRepairOrder updateOrder = new HqPmRepairOrder();
|
||||
updateOrder.setId(orderId);
|
||||
updateOrder.setOrderStatus("5"); // 已评价
|
||||
updateOrder.setEvaluationScore(evaluation.getOverallScore());
|
||||
@@ -1002,7 +1003,7 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
|
||||
// 10. 添加评价进度记录
|
||||
try {
|
||||
PmRepairProgress evaluationProgress = new PmRepairProgress();
|
||||
HqPmRepairProgress evaluationProgress = new HqPmRepairProgress();
|
||||
evaluationProgress.setOrderId(orderId);
|
||||
evaluationProgress.setProgressType("7"); // 用户评价
|
||||
evaluationProgress.setProgressStatus("用户已评价");
|
||||
@@ -1043,24 +1044,24 @@ public class PmRepairOrderServiceImpl implements IPmRepairOrderService {
|
||||
public java.util.Map<String, Object> getServiceEvaluation(Long orderId) {
|
||||
try {
|
||||
// 1. 验证工单是否存在
|
||||
PmRepairOrder order = baseMapper.selectById(orderId);
|
||||
HqPmRepairOrder order = baseMapper.selectById(orderId);
|
||||
if (order == null) {
|
||||
throw new ServiceException("工单不存在");
|
||||
}
|
||||
|
||||
// 2. 数据权限验证
|
||||
PmRepairOrderVo orderVo = MapstructUtils.convert(order, PmRepairOrderVo.class);
|
||||
HqPmRepairOrderVo orderVo = MapstructUtils.convert(order, HqPmRepairOrderVo.class);
|
||||
if (!hasDataPermission(orderVo)) {
|
||||
throw new ServiceException("无权限查看该工单的评价");
|
||||
}
|
||||
|
||||
// 3. 查询评价记录
|
||||
LambdaQueryWrapper<PmServiceEvaluation> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(PmServiceEvaluation::getOrderId, orderId);
|
||||
lqw.orderByDesc(PmServiceEvaluation::getCreateTime);
|
||||
LambdaQueryWrapper<HqPmServiceEvaluation> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(HqPmServiceEvaluation::getOrderId, orderId);
|
||||
lqw.orderByDesc(HqPmServiceEvaluation::getCreateTime);
|
||||
lqw.last("LIMIT 1");
|
||||
|
||||
PmServiceEvaluation evaluation = serviceEvaluationMapper.selectOne(lqw);
|
||||
HqPmServiceEvaluation evaluation = serviceEvaluationMapper.selectOne(lqw);
|
||||
if (evaluation == null) {
|
||||
throw new ServiceException("该工单还没有评价记录");
|
||||
}
|
||||
@@ -2,9 +2,9 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.hq.mapper.PmRepairAttachmentMapper">
|
||||
<mapper namespace="org.dromara.hq.mapper.HqPmRepairAttachmentMapper">
|
||||
|
||||
<resultMap type="org.dromara.hq.domain.PmRepairAttachment" id="PmRepairAttachmentResult">
|
||||
<resultMap type="org.dromara.hq.domain.HqPmRepairAttachment" id="HqPmRepairAttachmentResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="orderId" column="order_id" />
|
||||
<result property="fileName" column="file_name" />
|
||||
@@ -30,8 +30,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="deleted" column="deleted" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectPmRepairAttachmentVo">
|
||||
select id, order_id, file_name, file_path, file_size, file_type, file_extension, file_mime_type, upload_stage, uploader_id, uploader_name, thumbnail_path, duration, resolution, description, sort_order, tenant_id, create_dept, create_by, create_time, update_by, update_time, deleted from pm_repair_attachment
|
||||
<sql id="selectHqPmRepairAttachmentVo">
|
||||
select id, order_id, file_name, file_path, file_size, file_type, file_extension, file_mime_type, upload_stage, uploader_id, uploader_name, thumbnail_path, duration, resolution, description, sort_order, tenant_id, create_dept, create_by, create_time, update_by, update_time, deleted from hq_pm_repair_attachment
|
||||
</sql>
|
||||
|
||||
</mapper>
|
||||
@@ -2,6 +2,6 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.hq.mapper.PmRepairCategoryMapper">
|
||||
<mapper namespace="org.dromara.hq.mapper.HqPmRepairCategoryMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -2,7 +2,7 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.hq.mapper.PmRepairOrderMapper">
|
||||
<mapper namespace="org.dromara.hq.mapper.HqPmRepairOrderMapper">
|
||||
|
||||
<!-- 查询拥有"维修人员"角色的用户列表 -->
|
||||
<select id="selectMaintenanceWorkers" resultType="java.util.Map">
|
||||
@@ -2,9 +2,9 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.hq.mapper.PmRepairProgressMapper">
|
||||
<mapper namespace="org.dromara.hq.mapper.HqPmRepairProgressMapper">
|
||||
|
||||
<resultMap type="org.dromara.hq.domain.PmRepairProgress" id="PmRepairProgressResult">
|
||||
<resultMap type="org.dromara.hq.domain.HqPmRepairProgress" id="HqPmRepairProgressResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="orderId" column="order_id" />
|
||||
<result property="progressType" column="progress_type" />
|
||||
@@ -32,8 +32,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="deleted" column="deleted" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectPmRepairProgressVo">
|
||||
select id, order_id, progress_type, progress_status, progress_detail, operator_id, operator_name, operator_role, location_info, gps_latitude, gps_longitude, operation_time, estimated_duration, attachment_ids, next_step, issues_encountered, materials_needed, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time, deleted from pm_repair_progress
|
||||
<sql id="selectHqPmRepairProgressVo">
|
||||
select id, order_id, progress_type, progress_status, progress_detail, operator_id, operator_name, operator_role, location_info, gps_latitude, gps_longitude, operation_time, estimated_duration, attachment_ids, next_step, issues_encountered, materials_needed, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time, deleted from hq_pm_repair_progress
|
||||
</sql>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.hq.mapper.HqPmServiceEvaluationMapper">
|
||||
|
||||
<resultMap type="org.dromara.hq.domain.HqPmServiceEvaluation" id="HqPmServiceEvaluationResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="orderId" column="order_id" />
|
||||
<result property="evaluatorId" column="evaluator_id" />
|
||||
<result property="evaluatorName" column="evaluator_name" />
|
||||
<result property="evaluatedWorkerId" column="evaluated_worker_id" />
|
||||
<result property="evaluatedWorkerName" column="evaluated_worker_name" />
|
||||
<result property="overallScore" column="overall_score" />
|
||||
<result property="qualityScore" column="quality_score" />
|
||||
<result property="attitudeScore" column="attitude_score" />
|
||||
<result property="responseSpeedScore" column="response_speed_score" />
|
||||
<result property="communicationScore" column="communication_score" />
|
||||
<result property="evaluationContent" column="evaluation_content" />
|
||||
<result property="satisfactionLevel" column="satisfaction_level" />
|
||||
<result property="isAnonymous" column="is_anonymous" />
|
||||
<result property="isPublic" column="is_public" />
|
||||
<result property="evaluationTime" column="evaluation_time" />
|
||||
<result property="serviceStartTime" column="service_start_time" />
|
||||
<result property="serviceEndTime" column="service_end_time" />
|
||||
<result property="serviceDuration" column="service_duration" />
|
||||
<result property="positiveTags" column="positive_tags" />
|
||||
<result property="negativeTags" column="negative_tags" />
|
||||
<result property="improvementSuggestions" column="improvement_suggestions" />
|
||||
<result property="remark" column="remark" />
|
||||
<result property="tenantId" column="tenant_id" />
|
||||
<result property="createDept" column="create_dept" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="deleted" column="deleted" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectHqPmServiceEvaluationVo">
|
||||
select id, order_id, evaluator_id, evaluator_name, evaluated_worker_id, evaluated_worker_name, overall_score, quality_score, attitude_score, response_speed_score, communication_score, evaluation_content, satisfaction_level, is_anonymous, is_public, evaluation_time, service_start_time, service_end_time, service_duration, positive_tags, negative_tags, improvement_suggestions, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time, deleted from hq_pm_service_evaluation
|
||||
</sql>
|
||||
|
||||
</mapper>
|
||||
@@ -273,7 +273,7 @@ sequenceDiagram
|
||||
|
||||
### 核心实体
|
||||
|
||||
#### 报修单表 (pm_repair_order)
|
||||
#### 报修单表 (hq_pm_repair_order)
|
||||
|
||||
| 字段名 | 类型 | 长度 | 非空 | 默认值 | 说明 |
|
||||
| ------------------ | ------------ | ---- | ---- | ------- | ------------- |
|
||||
@@ -303,7 +303,7 @@ sequenceDiagram
|
||||
| update_time | DATETIME | - | Y | - | 更新时间 |
|
||||
| deleted | TINYINT | - | Y | 0 | 删除标记 |
|
||||
|
||||
#### 报修附件表 (pm_repair_attachment)
|
||||
#### 报修附件表 (hq_pm_repair_attachment)
|
||||
|
||||
| 字段名 | 类型 | 长度 | 非空 | 默认值 | 说明 |
|
||||
| --------------- | -------- | ---- | ---- | ------ | --------- |
|
||||
@@ -321,7 +321,7 @@ sequenceDiagram
|
||||
| update_time | DATETIME | - | Y | - | 更新时间 |
|
||||
| deleted | TINYINT | - | Y | 0 | 删除标记 |
|
||||
|
||||
#### 维修进度记录表 (pm_repair_progress)
|
||||
#### 维修进度记录表 (hq_pm_repair_progress)
|
||||
|
||||
| 字段名 | 类型 | 长度 | 非空 | 默认值 | 说明 |
|
||||
| --------------- | -------- | ---- | ---- | ------ | ------------ |
|
||||
@@ -341,12 +341,12 @@ sequenceDiagram
|
||||
|
||||
```mermaid
|
||||
erDiagram
|
||||
PM_REPAIR_ORDER ||--o{ PM_REPAIR_ATTACHMENT : "一对多"
|
||||
PM_REPAIR_ORDER ||--o{ PM_REPAIR_PROGRESS : "一对多"
|
||||
PM_REPAIR_ORDER }o--|| SYS_USER : "报修人"
|
||||
PM_REPAIR_ORDER }o--|| SYS_USER : "维修员"
|
||||
HQ_PM_REPAIR_ORDER ||--o{ HQ_PM_REPAIR_ATTACHMENT : "一对多"
|
||||
HQ_PM_REPAIR_ORDER ||--o{ HQ_PM_REPAIR_PROGRESS : "一对多"
|
||||
HQ_PM_REPAIR_ORDER }o--|| SYS_USER : "报修人"
|
||||
HQ_PM_REPAIR_ORDER }o--|| SYS_USER : "维修员"
|
||||
|
||||
PM_REPAIR_ORDER {
|
||||
HQ_PM_REPAIR_ORDER {
|
||||
bigint id PK
|
||||
varchar order_no UK
|
||||
varchar title
|
||||
@@ -357,7 +357,7 @@ erDiagram
|
||||
datetime create_time
|
||||
}
|
||||
|
||||
PM_REPAIR_ATTACHMENT {
|
||||
HQ_PM_REPAIR_ATTACHMENT {
|
||||
bigint id PK
|
||||
bigint repair_order_id FK
|
||||
varchar file_name
|
||||
@@ -365,7 +365,7 @@ erDiagram
|
||||
varchar file_type
|
||||
}
|
||||
|
||||
PM_REPAIR_PROGRESS {
|
||||
HQ_PM_REPAIR_PROGRESS {
|
||||
bigint id PK
|
||||
bigint repair_order_id FK
|
||||
varchar status
|
||||
@@ -610,7 +610,7 @@ src/views/maintenance/
|
||||
|
||||
#### 数据库命名规范
|
||||
|
||||
- **表名**:pm_repair_order、pm_repair_attachment、pm_repair_progress
|
||||
- **表名**:hq_pm_repair_order、hq_pm_repair_attachment、hq_pm_repair_progress
|
||||
- **字段名**:repair_order_id、contact_name、urgency_level
|
||||
- **索引名**:idx_repair_order_status、idx_repair_order_assignee
|
||||
|
||||
|
||||
@@ -31,40 +31,40 @@
|
||||
### 🗂️ 表结构清单
|
||||
|
||||
| 表名 | 中文名称 | 用途 | 关联关系 |
|
||||
| ----------------------- | ---------- | ---------------------- | ------------ |
|
||||
| `pm_repair_order` | 报修工单表 | 存储报修申请的核心信息 | 核心表 |
|
||||
| `pm_repair_attachment` | 报修附件表 | 存储报修相关附件文件 | 关联报修工单 |
|
||||
| `pm_repair_progress` | 维修进度表 | 记录维修过程状态变更 | 关联报修工单 |
|
||||
| `pm_service_evaluation` | 服务评价表 | 存储用户服务质量评价 | 关联报修工单 |
|
||||
| `pm_repair_category` | 维修类型表 | 报修类型分类配置 | 字典表 |
|
||||
| `pm_system_config` | 系统配置表 | 模块系统参数配置 | 配置表 |
|
||||
| --------------------------- | ---------- | ---------------------- | ------------ |
|
||||
| `hq_pm_repair_order` | 报修工单表 | 存储报修申请的核心信息 | 核心表 |
|
||||
| `hq_pm_repair_attachment` | 报修附件表 | 存储报修相关附件文件 | 关联报修工单 |
|
||||
| `hq_pm_repair_progress` | 维修进度表 | 记录维修过程状态变更 | 关联报修工单 |
|
||||
| `hq_pm_service_evaluation` | 服务评价表 | 存储用户服务质量评价 | 关联报修工单 |
|
||||
| `hq_pm_repair_category` | 维修类型表 | 报修类型分类配置 | 字典表 |
|
||||
| `hq_pm_system_config` | 系统配置表 | 模块系统参数配置 | 配置表 |
|
||||
|
||||
### 📈 数据流转关系
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[用户提交报修] --> B[pm_repair_order 报修工单]
|
||||
B --> C[pm_repair_attachment 附件]
|
||||
B --> D[pm_repair_progress 进度]
|
||||
B --> E[pm_service_evaluation 评价]
|
||||
F[pm_repair_category 类型] --> B
|
||||
G[pm_system_config 配置] --> B
|
||||
A[用户提交报修] --> B[hq_pm_repair_order 报修工单]
|
||||
B --> C[hq_pm_repair_attachment 附件]
|
||||
B --> D[hq_pm_repair_progress 进度]
|
||||
B --> E[hq_pm_service_evaluation 评价]
|
||||
F[hq_pm_repair_category 类型] --> B
|
||||
G[hq_pm_system_config 配置] --> B
|
||||
H[sys_user 系统用户] --> B
|
||||
H --> D
|
||||
```
|
||||
|
||||
## 🏗️ 详细表结构设计
|
||||
|
||||
### 1. 报修工单表 (pm_repair_order)
|
||||
### 1. 报修工单表 (hq_pm_repair_order)
|
||||
|
||||
> **核心业务表**:存储报修申请的所有核心信息,是整个模块的数据中心
|
||||
|
||||
```sql
|
||||
-- ----------------------------
|
||||
-- Table structure for pm_repair_order
|
||||
-- Table structure for hq_pm_repair_order
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `pm_repair_order`;
|
||||
CREATE TABLE `pm_repair_order` (
|
||||
DROP TABLE IF EXISTS `hq_pm_repair_order`;
|
||||
CREATE TABLE `hq_pm_repair_order` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
@@ -82,7 +82,7 @@ CREATE TABLE `pm_repair_order` (
|
||||
`repair_location` varchar(200) NOT NULL COMMENT '报修地点',
|
||||
|
||||
-- 分类和紧急程度
|
||||
`category_id` bigint(20) NOT NULL COMMENT '维修类型ID,关联pm_repair_category.id',
|
||||
`category_id` bigint(20) NOT NULL COMMENT '维修类型ID,关联hq_pm_repair_category.id',
|
||||
`priority_level` tinyint(1) NOT NULL DEFAULT 3 COMMENT '紧急程度:1-非常紧急,2-紧急,3-一般,4-不紧急,5-可延后',
|
||||
`expected_finish_time` datetime DEFAULT NULL COMMENT '期望完成时间',
|
||||
|
||||
@@ -138,16 +138,16 @@ CREATE TABLE `pm_repair_order` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报修工单表';
|
||||
```
|
||||
|
||||
### 2. 报修附件表 (pm_repair_attachment)
|
||||
### 2. 报修附件表 (hq_pm_repair_attachment)
|
||||
|
||||
> **附件管理表**:存储报修过程中上传的图片、视频等多媒体文件信息
|
||||
|
||||
```sql
|
||||
-- ----------------------------
|
||||
-- Table structure for pm_repair_attachment
|
||||
-- Table structure for hq_pm_repair_attachment
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `pm_repair_attachment`;
|
||||
CREATE TABLE `pm_repair_attachment` (
|
||||
DROP TABLE IF EXISTS `hq_pm_repair_attachment`;
|
||||
CREATE TABLE `hq_pm_repair_attachment` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
@@ -159,7 +159,7 @@ CREATE TABLE `pm_repair_attachment` (
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 关联信息
|
||||
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联pm_repair_order.id',
|
||||
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联hq_pm_repair_order.id',
|
||||
|
||||
-- 文件信息
|
||||
`file_name` varchar(200) NOT NULL COMMENT '文件原始名称',
|
||||
@@ -196,16 +196,16 @@ CREATE TABLE `pm_repair_attachment` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报修附件表';
|
||||
```
|
||||
|
||||
### 3. 维修进度表 (pm_repair_progress)
|
||||
### 3. 维修进度表 (hq_pm_repair_progress)
|
||||
|
||||
> **进度跟踪表**:记录维修过程中的每一个状态变更和进度更新
|
||||
|
||||
```sql
|
||||
-- ----------------------------
|
||||
-- Table structure for pm_repair_progress
|
||||
-- Table structure for hq_pm_repair_progress
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `pm_repair_progress`;
|
||||
CREATE TABLE `pm_repair_progress` (
|
||||
DROP TABLE IF EXISTS `hq_pm_repair_progress`;
|
||||
CREATE TABLE `hq_pm_repair_progress` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
@@ -217,7 +217,7 @@ CREATE TABLE `pm_repair_progress` (
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 关联信息
|
||||
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联pm_repair_order.id',
|
||||
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联hq_pm_repair_order.id',
|
||||
|
||||
-- 进度信息
|
||||
`progress_type` char(1) NOT NULL COMMENT '进度类型:1-工单分派,2-接收确认,3-到达现场,4-开始维修,5-进度更新,6-完成维修,7-用户评价,8-工单归档,9-其他',
|
||||
@@ -260,16 +260,16 @@ CREATE TABLE `pm_repair_progress` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维修进度表';
|
||||
```
|
||||
|
||||
### 4. 服务评价表 (pm_service_evaluation)
|
||||
### 4. 服务评价表 (hq_pm_service_evaluation)
|
||||
|
||||
> **评价反馈表**:存储用户对维修服务的多维度评价和反馈信息
|
||||
|
||||
```sql
|
||||
-- ----------------------------
|
||||
-- Table structure for pm_service_evaluation
|
||||
-- Table structure for hq_pm_service_evaluation
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `pm_service_evaluation`;
|
||||
CREATE TABLE `pm_service_evaluation` (
|
||||
DROP TABLE IF EXISTS `hq_pm_service_evaluation`;
|
||||
CREATE TABLE `hq_pm_service_evaluation` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
@@ -281,7 +281,7 @@ CREATE TABLE `pm_service_evaluation` (
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 关联信息
|
||||
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联pm_repair_order.id',
|
||||
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联hq_pm_repair_order.id',
|
||||
`evaluator_id` bigint(20) NOT NULL COMMENT '评价人ID,关联sys_user.id',
|
||||
`evaluator_name` varchar(50) NOT NULL COMMENT '评价人姓名',
|
||||
`evaluated_worker_id` bigint(20) NOT NULL COMMENT '被评价维修员ID,关联sys_user.id',
|
||||
@@ -330,16 +330,16 @@ CREATE TABLE `pm_service_evaluation` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务评价表';
|
||||
```
|
||||
|
||||
### 5. 维修类型表 (pm_repair_category)
|
||||
### 5. 维修类型表 (hq_pm_repair_category)
|
||||
|
||||
> **分类字典表**:存储维修类型的分类信息,支持层级结构
|
||||
|
||||
```sql
|
||||
-- ----------------------------
|
||||
-- Table structure for pm_repair_category
|
||||
-- Table structure for hq_pm_repair_category
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `pm_repair_category`;
|
||||
CREATE TABLE `pm_repair_category` (
|
||||
DROP TABLE IF EXISTS `hq_pm_repair_category`;
|
||||
CREATE TABLE `hq_pm_repair_category` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
@@ -395,16 +395,16 @@ CREATE TABLE `pm_repair_category` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维修类型表';
|
||||
```
|
||||
|
||||
### 6. 系统配置表 (pm_system_config)
|
||||
### 6. 系统配置表 (hq_pm_system_config)
|
||||
|
||||
> **配置管理表**:存储物业报修模块的系统参数和配置信息
|
||||
|
||||
```sql
|
||||
-- ----------------------------
|
||||
-- Table structure for pm_system_config
|
||||
-- Table structure for hq_pm_system_config
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `pm_system_config`;
|
||||
CREATE TABLE `pm_system_config` (
|
||||
DROP TABLE IF EXISTS `hq_pm_system_config`;
|
||||
CREATE TABLE `hq_pm_system_config` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
@@ -510,16 +510,16 @@ CREATE TABLE `pm_system_config` (
|
||||
```sql
|
||||
-- 报修工单表的核心查询索引
|
||||
-- 1. 按状态和时间查询(管理员常用)
|
||||
CREATE INDEX idx_status_time ON pm_repair_order (order_status, create_time);
|
||||
CREATE INDEX idx_status_time ON hq_pm_repair_order (order_status, create_time);
|
||||
|
||||
-- 2. 按维修员查询其工单(维修员常用)
|
||||
CREATE INDEX idx_assignee_status ON pm_repair_order (assignee_id, order_status);
|
||||
CREATE INDEX idx_assignee_status ON hq_pm_repair_order (assignee_id, order_status);
|
||||
|
||||
-- 3. 按报修人查询(用户查看自己的工单)
|
||||
CREATE INDEX idx_reporter_time ON pm_repair_order (reporter_id, create_time);
|
||||
CREATE INDEX idx_reporter_time ON hq_pm_repair_order (reporter_id, create_time);
|
||||
|
||||
-- 4. 按紧急程度和分派时间查询(工单分派)
|
||||
CREATE INDEX idx_priority_assign ON pm_repair_order (priority_level, assign_time);
|
||||
CREATE INDEX idx_priority_assign ON hq_pm_repair_order (priority_level, assign_time);
|
||||
```
|
||||
|
||||
### 2. 附件查询索引
|
||||
@@ -527,10 +527,10 @@ CREATE INDEX idx_priority_assign ON pm_repair_order (priority_level, assign_time
|
||||
```sql
|
||||
-- 附件表的查询索引
|
||||
-- 1. 按工单查询附件(最常用)
|
||||
CREATE INDEX idx_order_stage ON pm_repair_attachment (order_id, upload_stage);
|
||||
CREATE INDEX idx_order_stage ON hq_pm_repair_attachment (order_id, upload_stage);
|
||||
|
||||
-- 2. 按上传者查询附件
|
||||
CREATE INDEX idx_uploader_time ON pm_repair_attachment (uploader_id, create_time);
|
||||
CREATE INDEX idx_uploader_time ON hq_pm_repair_attachment (uploader_id, create_time);
|
||||
```
|
||||
|
||||
### 3. 进度查询索引
|
||||
@@ -538,10 +538,10 @@ CREATE INDEX idx_uploader_time ON pm_repair_attachment (uploader_id, create_time
|
||||
```sql
|
||||
-- 进度表的查询索引
|
||||
-- 1. 按工单查询进度(时间线显示)
|
||||
CREATE INDEX idx_order_operation_time ON pm_repair_progress (order_id, operation_time);
|
||||
CREATE INDEX idx_order_operation_time ON hq_pm_repair_progress (order_id, operation_time);
|
||||
|
||||
-- 2. 按操作人查询进度
|
||||
CREATE INDEX idx_operator_time ON pm_repair_progress (operator_id, operation_time);
|
||||
CREATE INDEX idx_operator_time ON hq_pm_repair_progress (operator_id, operation_time);
|
||||
```
|
||||
|
||||
## 📊 数据存储预估
|
||||
@@ -549,13 +549,13 @@ CREATE INDEX idx_operator_time ON pm_repair_progress (operator_id, operation_tim
|
||||
### 表数据量预估
|
||||
|
||||
| 表名 | 日增长量 | 年数据量 | 存储空间预估 |
|
||||
| --------------------- | ---------- | ------------ | ------------ |
|
||||
| pm_repair_order | 50-100 条 | 2-4 万条 | 50-100MB |
|
||||
| pm_repair_attachment | 200-400 条 | 8-16 万条 | 100-200MB |
|
||||
| pm_repair_progress | 300-600 条 | 12-24 万条 | 150-300MB |
|
||||
| pm_service_evaluation | 40-80 条 | 1.6-3.2 万条 | 20-40MB |
|
||||
| pm_repair_category | 0-5 条 | 100-200 条 | <1MB |
|
||||
| pm_system_config | 0-2 条 | 50-100 条 | <1MB |
|
||||
| --------------------------- | ---------- | ------------ | ------------ |
|
||||
| hq_pm_repair_order | 50-100 条 | 2-4 万条 | 50-100MB |
|
||||
| hq_pm_repair_attachment | 200-400 条 | 8-16 万条 | 100-200MB |
|
||||
| hq_pm_repair_progress | 300-600 条 | 12-24 万条 | 150-300MB |
|
||||
| hq_pm_service_evaluation | 40-80 条 | 1.6-3.2 万条 | 20-40MB |
|
||||
| hq_pm_repair_category | 0-5 条 | 100-200 条 | <1MB |
|
||||
| hq_pm_system_config | 0-2 条 | 50-100 条 | <1MB |
|
||||
|
||||
### 存储优化建议
|
||||
|
||||
@@ -570,7 +570,7 @@ CREATE INDEX idx_operator_time ON pm_repair_progress (operator_id, operation_tim
|
||||
|
||||
```sql
|
||||
-- 插入基础维修类型分类
|
||||
INSERT INTO `pm_repair_category` (
|
||||
INSERT INTO `hq_pm_repair_category` (
|
||||
`id`, `tenant_id`, `category_name`, `category_code`, `category_description`,
|
||||
`parent_id`, `level_depth`, `required_skills`, `skill_level`,
|
||||
`estimated_duration`, `icon_url`, `color_code`, `sort_order`, `status`,
|
||||
@@ -588,7 +588,7 @@ INSERT INTO `pm_repair_category` (
|
||||
|
||||
```sql
|
||||
-- 插入系统配置参数
|
||||
INSERT INTO `pm_system_config` (
|
||||
INSERT INTO `hq_pm_system_config` (
|
||||
`id`, `tenant_id`, `config_key`, `config_value`, `config_type`, `config_group`,
|
||||
`config_name`, `config_description`, `default_value`, `is_system`, `is_editable`,
|
||||
`sort_order`, `status`, `create_time`, `create_by`
|
||||
|
||||
@@ -1,321 +1,244 @@
|
||||
# 代码调整记录 - 2025-01-23 - wuzilong
|
||||
# 代码调整记录 - 2025-01-23
|
||||
|
||||
## 📋 本次变更概述
|
||||
## 📋 变更概述
|
||||
|
||||
**变更类型**: 🏗️ 架构重构 - 后端模块工程统一管理
|
||||
**变更时间**: 2025-01-23 15:00:00
|
||||
**影响范围**: 后端模块架构、开发规范、工程结构
|
||||
**变更日期**: 2025-01-23
|
||||
**操作人员**: wuzilong
|
||||
**变更类型**: 数据库表名规范化调整
|
||||
**影响模块**: 物业报修管理模块
|
||||
**优先级**: 高
|
||||
|
||||
## 🎯 变更背景
|
||||
## 🎯 变更目标
|
||||
|
||||
基于ruoyi-hq工程的成功实践,为了规范化管理后端业务模块,建立统一的工程管理标准,便于后续各业务模块的开发和维护。
|
||||
将物业报修管理模块的数据库表名从 `pm_*` 格式调整为 `hq_pm_*` 格式,符合项目数据库表名规范要求(后勤管理模块使用 `hq_` 前缀)。
|
||||
|
||||
## 🔧 变更详情
|
||||
## 📊 变更详情
|
||||
|
||||
### 1. 📋 后端开发规范更新
|
||||
### 1. SQL文件调整
|
||||
|
||||
**文件**: `.cursor/cursorrules-backend.md`
|
||||
|
||||
**新增内容**:
|
||||
- ✅ **模块工程管理规范(强制性)**
|
||||
- ✅ **模块命名和位置规范**
|
||||
- ✅ **Maven配置标准模板**
|
||||
- ✅ **包结构规范标准**
|
||||
- ✅ **代码规范要求**
|
||||
- ✅ **权限命名规范**
|
||||
- ✅ **模块开发最佳实践**
|
||||
- ✅ **模块创建检查清单**
|
||||
|
||||
**已规划模块列表**:
|
||||
- ✅ `ruoyi-hq` - 后勤管理模块 (已完成)
|
||||
- 🚧 `ruoyi-rs` - 人事管理模块
|
||||
- 🚧 `ruoyi-cw` - 财务管理模块
|
||||
- 🚧 `ruoyi-aqbw` - 安全保卫管理模块
|
||||
- 🚧 `ruoyi-zsjy` - 招生就业管理模块
|
||||
- 🚧 `ruoyi-xg` - 学工管理模块
|
||||
|
||||
### 2. 🏗️ 新增业务模块工程
|
||||
|
||||
**创建的5个标准业务模块**:
|
||||
|
||||
#### 📁 ruoyi-rs (人事管理模块)
|
||||
```
|
||||
backend/ruoyi-modules/ruoyi-rs/
|
||||
├── pom.xml # Maven配置
|
||||
└── src/main/
|
||||
├── java/org/dromara/rs/
|
||||
│ ├── controller/ # 控制器层
|
||||
│ ├── service/ # 服务接口层
|
||||
│ │ └── impl/ # 服务实现层
|
||||
│ ├── mapper/ # 数据访问层
|
||||
│ └── domain/ # 数据对象层
|
||||
│ ├── bo/ # 业务对象
|
||||
│ └── vo/ # 视图对象
|
||||
└── resources/
|
||||
└── mapper/ # MyBatis映射文件
|
||||
```
|
||||
|
||||
#### 📁 ruoyi-cw (财务管理模块)
|
||||
```
|
||||
backend/ruoyi-modules/ruoyi-cw/
|
||||
├── pom.xml # Maven配置
|
||||
└── src/main/
|
||||
├── java/org/dromara/cw/
|
||||
│ ├── controller/ # 控制器层
|
||||
│ ├── service/ # 服务接口层
|
||||
│ │ └── impl/ # 服务实现层
|
||||
│ ├── mapper/ # 数据访问层
|
||||
│ └── domain/ # 数据对象层
|
||||
│ ├── bo/ # 业务对象
|
||||
│ └── vo/ # 视图对象
|
||||
└── resources/
|
||||
└── mapper/ # MyBatis映射文件
|
||||
```
|
||||
|
||||
#### 📁 ruoyi-aqbw (安全保卫管理模块)
|
||||
```
|
||||
backend/ruoyi-modules/ruoyi-aqbw/
|
||||
├── pom.xml # Maven配置
|
||||
└── src/main/
|
||||
├── java/org/dromara/aqbw/
|
||||
│ ├── controller/ # 控制器层
|
||||
│ ├── service/ # 服务接口层
|
||||
│ │ └── impl/ # 服务实现层
|
||||
│ ├── mapper/ # 数据访问层
|
||||
│ └── domain/ # 数据对象层
|
||||
│ ├── bo/ # 业务对象
|
||||
│ └── vo/ # 视图对象
|
||||
└── resources/
|
||||
└── mapper/ # MyBatis映射文件
|
||||
```
|
||||
|
||||
#### 📁 ruoyi-zsjy (招生就业管理模块)
|
||||
```
|
||||
backend/ruoyi-modules/ruoyi-zsjy/
|
||||
├── pom.xml # Maven配置
|
||||
└── src/main/
|
||||
├── java/org/dromara/zsjy/
|
||||
│ ├── controller/ # 控制器层
|
||||
│ ├── service/ # 服务接口层
|
||||
│ │ └── impl/ # 服务实现层
|
||||
│ ├── mapper/ # 数据访问层
|
||||
│ └── domain/ # 数据对象层
|
||||
│ ├── bo/ # 业务对象
|
||||
│ └── vo/ # 视图对象
|
||||
└── resources/
|
||||
└── mapper/ # MyBatis映射文件
|
||||
```
|
||||
|
||||
#### 📁 ruoyi-xg (学工管理模块)
|
||||
```
|
||||
backend/ruoyi-modules/ruoyi-xg/
|
||||
├── pom.xml # Maven配置
|
||||
└── src/main/
|
||||
├── java/org/dromara/xg/
|
||||
│ ├── controller/ # 控制器层
|
||||
│ ├── service/ # 服务接口层
|
||||
│ │ └── impl/ # 服务实现层
|
||||
│ ├── mapper/ # 数据访问层
|
||||
│ └── domain/ # 数据对象层
|
||||
│ ├── bo/ # 业务对象
|
||||
│ └── vo/ # 视图对象
|
||||
└── resources/
|
||||
└── mapper/ # MyBatis映射文件
|
||||
```
|
||||
|
||||
### 3. ⚙️ Maven配置更新
|
||||
|
||||
**文件**: `backend/ruoyi-modules/pom.xml`
|
||||
**文件**: `docs/设计文档/database/07-property-maintenance-module.sql`
|
||||
|
||||
**变更内容**:
|
||||
```xml
|
||||
<modules>
|
||||
<module>ruoyi-demo</module>
|
||||
<module>ruoyi-generator</module>
|
||||
<module>ruoyi-job</module>
|
||||
<module>ruoyi-system</module>
|
||||
<module>ruoyi-workflow</module>
|
||||
<module>ruoyi-hq</module>
|
||||
+ <module>ruoyi-rs</module>
|
||||
+ <module>ruoyi-cw</module>
|
||||
+ <module>ruoyi-aqbw</module>
|
||||
+ <module>ruoyi-zsjy</module>
|
||||
+ <module>ruoyi-xg</module>
|
||||
</modules>
|
||||
- 将所有表名从 `pm_*` 调整为 `hq_pm_*`
|
||||
- 更新相关注释和关联引用
|
||||
- 版本号更新至 V1.0.2
|
||||
|
||||
**具体表名变更**:
|
||||
| 原表名 | 新表名 |
|
||||
|--------|--------|
|
||||
| `pm_repair_order` | `hq_pm_repair_order` |
|
||||
| `pm_repair_attachment` | `hq_pm_repair_attachment` |
|
||||
| `pm_repair_progress` | `hq_pm_repair_progress` |
|
||||
| `pm_service_evaluation` | `hq_pm_service_evaluation` |
|
||||
| `pm_repair_category` | `hq_pm_repair_category` |
|
||||
| `pm_system_config` | `hq_pm_system_config` |
|
||||
|
||||
### 2. 数据库重命名脚本
|
||||
|
||||
**新增文件**: `docs/设计文档/database/08-property-maintenance-table-rename.sql`
|
||||
|
||||
**功能**:
|
||||
- 智能检测现有表是否存在
|
||||
- 批量重命名所有物业报修相关表
|
||||
- 提供验证结果显示
|
||||
- 支持幂等操作
|
||||
|
||||
### 3. 规范文档更新
|
||||
|
||||
**更新文件**:
|
||||
- `docs/业务模块/property-maintenance/技术设计/数据库设计.md`
|
||||
- `docs/业务模块/property-maintenance/README.md`
|
||||
|
||||
**变更内容**:
|
||||
- 更新所有表名引用
|
||||
- 修正实体关系图
|
||||
- 更新数据流转图
|
||||
|
||||
### 4. 后端代码调整
|
||||
|
||||
**Entity实体类更新**:
|
||||
- `PmRepairOrder.java` - @TableName("hq_pm_repair_order")
|
||||
- `PmRepairAttachment.java` - @TableName("hq_pm_repair_attachment")
|
||||
- `PmRepairProgress.java` - @TableName("hq_pm_repair_progress")
|
||||
- `PmServiceEvaluation.java` - @TableName("hq_pm_service_evaluation")
|
||||
- `PmRepairCategory.java` - @TableName("hq_pm_repair_category")
|
||||
|
||||
**Mapper XML文件更新**:
|
||||
- `PmRepairAttachmentMapper.xml` - selectVo中的表名更新
|
||||
- `PmRepairProgressMapper.xml` - selectVo中的表名更新
|
||||
- `PmServiceEvaluationMapper.xml` - 新创建完整的Mapper XML
|
||||
|
||||
**VO类和BO类完善**:
|
||||
- 新增:`PmRepairProgressVo.java`、`PmServiceEvaluationVo.java`
|
||||
- 新增:`PmRepairProgressBo.java`、`PmServiceEvaluationBo.java`
|
||||
- 更新:所有VO/BO类中的注释表名引用
|
||||
|
||||
**Service接口完善**:
|
||||
- 新增:`IPmRepairProgressService.java`
|
||||
- 新增:`IPmServiceEvaluationService.java`
|
||||
|
||||
**涉及文件**:
|
||||
```
|
||||
backend/ruoyi-modules/ruoyi-hq/src/main/java/org/dromara/hq/
|
||||
├── domain/
|
||||
│ ├── PmRepairOrder.java ✅
|
||||
│ ├── PmRepairAttachment.java ✅
|
||||
│ ├── PmRepairProgress.java ✅
|
||||
│ ├── PmServiceEvaluation.java ✅
|
||||
│ ├── PmRepairCategory.java ✅
|
||||
│ ├── vo/
|
||||
│ │ ├── PmRepairProgressVo.java ✅ (新增)
|
||||
│ │ ├── PmServiceEvaluationVo.java ✅ (新增)
|
||||
│ │ ├── PmRepairOrderVo.java ✅ (注释更新)
|
||||
│ │ ├── PmRepairAttachmentVo.java ✅ (注释更新)
|
||||
│ │ └── PmRepairCategoryVo.java ✅ (注释更新)
|
||||
│ └── bo/
|
||||
│ ├── PmRepairProgressBo.java ✅ (新增)
|
||||
│ ├── PmServiceEvaluationBo.java ✅ (新增)
|
||||
│ ├── PmRepairOrderBo.java ✅ (注释更新)
|
||||
│ ├── PmRepairAttachmentBo.java ✅ (注释更新)
|
||||
│ └── PmRepairCategoryBo.java ✅ (注释更新)
|
||||
├── service/
|
||||
│ ├── IPmRepairProgressService.java ✅ (新增)
|
||||
│ └── IPmServiceEvaluationService.java ✅ (新增)
|
||||
└── resources/mapper/
|
||||
├── PmRepairAttachmentMapper.xml ✅ (表名更新)
|
||||
├── PmRepairProgressMapper.xml ✅ (表名更新)
|
||||
└── PmServiceEvaluationMapper.xml ✅ (新增)
|
||||
```
|
||||
|
||||
### 4. 📂 目录结构说明文件
|
||||
## 🛠️ 执行步骤
|
||||
|
||||
**为每个模块的各层级目录添加了.gitkeep文件**,包含详细的目录用途说明:
|
||||
- controller/ - REST API控制器层
|
||||
- service/ - 业务服务接口层
|
||||
- service/impl/ - 业务服务实现层
|
||||
- mapper/ - 数据访问层
|
||||
- domain/ - 实体类
|
||||
- domain/bo/ - 业务对象
|
||||
- domain/vo/ - 视图对象
|
||||
- resources/mapper/ - MyBatis映射文件
|
||||
### 步骤1: SQL文件调整 ✅
|
||||
- [x] 更新表结构定义
|
||||
- [x] 更新关联引用
|
||||
- [x] 更新索引定义
|
||||
- [x] 更新初始化数据
|
||||
|
||||
## 🎯 模块工程标准化规范
|
||||
### 步骤2: 数据库表重命名 🔄
|
||||
- [x] 创建重命名脚本
|
||||
- [ ] 执行数据库重命名(需手动执行)
|
||||
|
||||
### 📋 统一的Maven依赖配置
|
||||
所有新模块都采用统一的依赖配置,包括:
|
||||
- **通用工具**: core、doc、mybatis、log、security、web、excel、idempotent、tenant、social、ratelimiter、mail
|
||||
- **系统模块**: system、job
|
||||
- **扩展模块**: generator、demo、workflow
|
||||
### 步骤3: 文档更新 ✅
|
||||
- [x] 数据库设计文档
|
||||
- [x] 模块总览文档
|
||||
- [x] 实体关系图
|
||||
|
||||
### 🏛️ 统一的包结构规范
|
||||
- **包名格式**: `org.dromara.{模块简称}`
|
||||
- **分层架构**: controller → service → mapper → domain
|
||||
- **对象分离**: Entity(实体) + BO(业务对象) + VO(视图对象)
|
||||
### 步骤4: 代码调整 ✅
|
||||
- [x] Entity类@TableName注解
|
||||
- [x] 注释中的表名引用
|
||||
- [x] Mapper XML文件表名更新
|
||||
- [x] 创建缺失的VO和BO类
|
||||
- [x] 创建缺失的Service接口
|
||||
- [x] 创建缺失的Mapper XML文件
|
||||
|
||||
### 🔐 统一的权限命名规范
|
||||
- **权限编码格式**: `{模块简称}:{功能}:{操作}`
|
||||
- **示例**:
|
||||
- `rs:employee:list` - 人事模块员工列表查询权限
|
||||
- `cw:budget:add` - 财务模块预算新增权限
|
||||
## 📋 验证清单
|
||||
|
||||
## ✅ 验证和测试
|
||||
### 数据库层面
|
||||
- [ ] 确认旧表名不存在
|
||||
- [ ] 确认新表名存在且结构正确
|
||||
- [ ] 确认索引重建成功
|
||||
- [ ] 确认数据完整性
|
||||
|
||||
### 🔧 编译验证
|
||||
- ✅ 所有新模块Maven配置正确
|
||||
- ✅ 父模块pom.xml更新成功
|
||||
- ✅ 目录结构符合标准规范
|
||||
### 代码层面
|
||||
- [x] Entity类编译通过
|
||||
- [x] Mapper XML语法正确
|
||||
- [x] VO/BO类创建完成
|
||||
- [x] Service接口定义完成
|
||||
- [ ] Service实现类创建(待完成)
|
||||
- [ ] Controller类创建(待完成)
|
||||
- [ ] 单元测试执行成功
|
||||
- [ ] API接口调用正常
|
||||
- [ ] 前端页面显示正常
|
||||
|
||||
### 📁 文件结构验证
|
||||
- ✅ 5个新模块目录结构完整
|
||||
- ✅ 每个目录都有说明文件
|
||||
- ✅ 包结构符合ruoyi-hq标准
|
||||
### 文档层面
|
||||
- [x] 所有文档表名更新完成
|
||||
- [x] 图表和示例代码正确
|
||||
- [x] 变更记录完整
|
||||
|
||||
## 🎯 后续计划
|
||||
## ⚠️ 注意事项
|
||||
|
||||
### 🚧 短期计划 (1-2周)
|
||||
1. **业务需求梳理**: 为每个模块梳理详细的业务需求
|
||||
2. **数据库设计**: 设计各模块的数据表结构
|
||||
3. **API设计**: 制定标准的API接口规范
|
||||
### 数据库操作
|
||||
1. **备份重要性**: 执行表重命名前务必备份数据库
|
||||
2. **停机时间**: 重命名操作需要停止相关服务
|
||||
3. **权限验证**: 确保有足够的数据库操作权限
|
||||
|
||||
### 📋 中期计划 (1个月)
|
||||
1. **核心功能开发**: 优先开发人事管理(rs)和财务管理(cw)模块的核心功能
|
||||
2. **权限配置**: 完善各模块的菜单和权限配置
|
||||
3. **测试用例**: 编写完整的测试用例
|
||||
### 代码部署
|
||||
1. **同步部署**: 数据库重命名与代码部署需同步进行
|
||||
2. **回滚预案**: 准备回滚脚本以防意外情况
|
||||
3. **测试验证**: 部署后需全面测试业务功能
|
||||
|
||||
### 🎯 长期计划 (3个月)
|
||||
1. **功能完善**: 完成所有5个模块的核心功能开发
|
||||
2. **系统集成**: 各模块之间的数据交互和业务流程打通
|
||||
3. **性能优化**: 系统性能优化和并发处理能力提升
|
||||
### 数据一致性
|
||||
1. **外键约束**: 确认没有外键约束冲突
|
||||
2. **应用层关联**: 验证应用层关联逻辑正确
|
||||
3. **缓存刷新**: 清理相关缓存数据
|
||||
|
||||
## 📝 注意事项
|
||||
## 🔧 执行命令
|
||||
|
||||
### ⚠️ 开发规范
|
||||
1. **严格遵循**: 必须按照`.cursor/cursorrules-backend.md`中的模块工程管理规范进行开发
|
||||
2. **代码质量**: 所有代码必须符合Alibaba Java开发手册规范
|
||||
3. **文档同步**: 每次代码变更必须同步更新相关文档
|
||||
### 数据库重命名
|
||||
```bash
|
||||
# 连接到MySQL数据库
|
||||
mysql -h 47.99.164.66 -P 3306 -u root -p hzdyjs_xg
|
||||
|
||||
### 🔐 权限管理
|
||||
1. **权限前缀**: 每个模块的权限前缀不能冲突
|
||||
2. **菜单配置**: 需要在数据库中配置对应的菜单和权限
|
||||
3. **接口权限**: 每个API接口必须添加@SaCheckPermission注解
|
||||
# 执行重命名脚本
|
||||
source docs/设计文档/database/08-property-maintenance-table-rename.sql;
|
||||
```
|
||||
|
||||
### 📊 数据库规范
|
||||
1. **基础字段**: 必须包含统一的基础字段(id、tenant_id、create_by等)
|
||||
2. **逻辑删除**: 统一使用逻辑删除,禁止物理删除
|
||||
3. **多租户**: 所有业务表必须支持多租户
|
||||
### 代码重新编译
|
||||
```bash
|
||||
# 后端重新编译
|
||||
cd backend
|
||||
mvn clean compile
|
||||
```
|
||||
|
||||
## 🏆 变更价值
|
||||
## 📈 影响评估
|
||||
|
||||
### 📈 技术价值
|
||||
1. **架构统一**: 建立了标准的模块工程架构,便于后续开发和维护
|
||||
2. **开发效率**: 标准化的结构可以大幅提升新模块的开发效率
|
||||
3. **代码质量**: 统一的规范保证了代码质量和一致性
|
||||
### 正面影响
|
||||
1. **规范统一**: 符合项目数据库命名规范
|
||||
2. **维护性提升**: 表名更清晰易理解
|
||||
3. **模块区分**: 清晰区分后勤管理模块表
|
||||
|
||||
### 🎯 业务价值
|
||||
1. **功能扩展**: 为后续各业务模块的开发提供了坚实的基础
|
||||
2. **系统完整性**: 逐步完善校园管理系统的各个业务模块
|
||||
3. **运维便利**: 统一的架构降低了系统运维的复杂度
|
||||
### 风险评估
|
||||
1. **低风险**: 仅表名变更,表结构不变
|
||||
2. **影响范围**: 仅限物业报修模块
|
||||
3. **恢复时间**: 如有问题可快速回滚
|
||||
|
||||
### 👥 团队价值
|
||||
1. **开发规范**: 为团队建立了统一的开发标准和最佳实践
|
||||
2. **知识沉淀**: 将ruoyi-hq的成功经验规范化并推广到其他模块
|
||||
3. **协作效率**: 标准化的结构提升了团队协作效率
|
||||
## ✅ 验证结果
|
||||
|
||||
## 🔄 相关文件变更
|
||||
### 文件变更统计
|
||||
- SQL文件: 2个(1个更新,1个新增)
|
||||
- 文档文件: 2个更新
|
||||
- Entity类: 5个更新(@TableName注解和注释)
|
||||
- Mapper XML: 3个(2个更新,1个新增)
|
||||
- VO类: 7个(2个新增,5个注释更新)
|
||||
- BO类: 7个(2个新增,5个注释更新)
|
||||
- Service接口: 2个新增
|
||||
- 总变更行数: 约800行
|
||||
|
||||
### 📝 新增文件
|
||||
1. `.cursor/cursorrules-backend.md` - 新增模块工程管理规范
|
||||
2. `backend/ruoyi-modules/ruoyi-rs/` - 人事管理模块完整工程
|
||||
3. `backend/ruoyi-modules/ruoyi-cw/` - 财务管理模块完整工程
|
||||
4. `backend/ruoyi-modules/ruoyi-aqbw/` - 安全保卫管理模块完整工程
|
||||
5. `backend/ruoyi-modules/ruoyi-zsjy/` - 招生就业管理模块完整工程
|
||||
6. `backend/ruoyi-modules/ruoyi-xg/` - 学工管理模块完整工程
|
||||
### 测试状态
|
||||
- [ ] 本地环境测试
|
||||
- [ ] 开发环境验证
|
||||
- [ ] 功能回归测试
|
||||
|
||||
### ✏️ 修改文件
|
||||
1. `backend/ruoyi-modules/pom.xml` - 添加5个新模块到模块列表
|
||||
## 📝 后续任务
|
||||
|
||||
### 📋 新增前端文件(2025-01-23 15:30:00更新)
|
||||
1. **数据库执行**: 在测试环境执行表重命名脚本
|
||||
2. **完善代码层**:
|
||||
- 创建 `PmRepairProgressServiceImpl.java` 和 `PmServiceEvaluationServiceImpl.java`
|
||||
- 创建 `PmRepairProgressController.java` 和 `PmServiceEvaluationController.java`
|
||||
- 完善Mapper接口方法
|
||||
3. **代码测试**: 验证所有API接口正常工作
|
||||
4. **前端联调**: 确认前端页面数据显示正常
|
||||
5. **文档同步**: 更新相关API文档和使用说明
|
||||
|
||||
**前端界面文件夹** (web/src/views/):
|
||||
- ✅ `web/src/views/rs/` - 人事管理界面文件夹 + README.md
|
||||
- ✅ `web/src/views/cw/` - 财务管理界面文件夹 + README.md
|
||||
- ✅ `web/src/views/xg/` - 学工管理界面文件夹 + README.md
|
||||
- ✅ `web/src/views/zsjy/` - 招生就业管理界面文件夹 + README.md
|
||||
- ✅ `web/src/views/aqbw/` - 安全保卫管理界面文件夹 + README.md
|
||||
## 🔗 相关文档
|
||||
|
||||
**前端API文件夹** (web/src/api/):
|
||||
- ✅ `web/src/api/rs/` - 人事管理API文件夹 + index.ts + README.md
|
||||
- ✅ `web/src/api/cw/` - 财务管理API文件夹 + index.ts + README.md
|
||||
- ✅ `web/src/api/xg/` - 学工管理API文件夹 + index.ts + README.md
|
||||
- ✅ `web/src/api/zsjy/` - 招生就业管理API文件夹 + index.ts + README.md
|
||||
- ✅ `web/src/api/aqbw/` - 安全保卫管理API文件夹 + index.ts + README.md
|
||||
|
||||
### 📋 影响评估
|
||||
- **编译构建**: ✅ 正常,新模块已正确集成到Maven构建流程
|
||||
- **运行时**: ✅ 正常,新模块目前为空工程,不影响现有功能
|
||||
- **依赖关系**: ✅ 正常,所有依赖配置正确
|
||||
- **前端构建**: ✅ 正常,新增的TypeScript文件不会影响编译
|
||||
|
||||
## 🔄 数据库表命名规范补充更新 (2025-01-23 16:30:00)
|
||||
|
||||
### 📋 变更背景
|
||||
为了配合新创建的5个业务模块,需要建立统一的数据库表命名规范,确保不同模块的数据库表有清晰的命名区分,便于后续开发和维护。
|
||||
|
||||
### 🔴 新增表命名规范(强制性)
|
||||
|
||||
**文件**: `.cursor/cursorrules-backend.md`
|
||||
|
||||
**新增内容**: 在数据库规范章节添加了完整的表命名规范
|
||||
|
||||
**模块表名前缀规范**:
|
||||
- **后勤管理**:`hq_` 开头 (如:`hq_repair`, `hq_maintenance`)
|
||||
- **人事管理**:`rs_` 开头 (如:`rs_employee`, `rs_department`)
|
||||
- **财务管理**:`cw_` 开头 (如:`cw_budget`, `cw_expense`)
|
||||
- **学工管理**:`xg_` 开头 (如:`xg_student`, `xg_dormitory`)
|
||||
- **招生就业**:`zsjy_` 开头 (如:`zsjy_application`, `zsjy_job`)
|
||||
- **安全保卫**:`aqbw_` 开头 (如:`aqbw_security`, `aqbw_patrol`)
|
||||
- **系统公共**:`common_` 开头 (如:`common_dict`, `common_config`)
|
||||
|
||||
### ✅ 规范内容要点
|
||||
|
||||
1. **命名示例**: 提供了7个模块的完整CREATE TABLE示例
|
||||
2. **强制性要求**: 明确了6个强制性命名要求和4个禁止事项
|
||||
3. **实体类映射**: 提供了表名到Java实体类的命名对应规则
|
||||
4. **规范位置**: 放置在数据库规范的强制性核心规范之后,基础字段模板之前
|
||||
|
||||
### 🔄 后勤管理模块补充更新 (2025-01-23 16:35:00)
|
||||
|
||||
**补充内容**: 添加后勤管理模块的表命名规范
|
||||
- ✅ **后勤管理**: `hq_` 开头 (如:`hq_repair`, `hq_maintenance`)
|
||||
- ✅ **命名示例**: 添加了后勤管理模块的CREATE TABLE示例
|
||||
- ✅ **实体类映射**: 添加了 `hq_repair` → `HqRepair` 的命名对应示例
|
||||
|
||||
**更新说明**: 现在表命名规范涵盖完整的7个业务模块,包括已开发的后勤管理模块和5个新规划模块。
|
||||
|
||||
### 🎯 规范价值
|
||||
|
||||
1. **模块区分**: 清晰区分不同业务模块的数据表
|
||||
2. **开发效率**: 标准化命名减少开发时的困惑
|
||||
3. **维护便利**: 便于后续数据库维护和权限管理
|
||||
4. **团队协作**: 为团队提供统一的数据库命名标准
|
||||
- [项目数据库命名规范](docs/设计文档/database/mysql-database-standard.md)
|
||||
- [物业报修模块文档](docs/业务模块/property-maintenance/README.md)
|
||||
- [数据库设计文档](docs/业务模块/property-maintenance/技术设计/数据库设计.md)
|
||||
|
||||
---
|
||||
|
||||
**总结**: 本次变更成功建立了前后端模块工程的统一管理规范,创建了5个后端业务模块和对应的前端文件夹结构,并补充完善了包含7个业务模块的完整数据库表命名规范(后勤、人事、财务、学工、招生就业、安全保卫、系统公共),为后续各业务模块的全栈开发奠定了坚实的架构基础。所有变更都经过仔细验证,确保系统稳定性不受影响。
|
||||
**变更完成时间**: 2025-01-23 18:45:00
|
||||
**最后更新**: 2025-01-23 18:45:00 - 完成所有表名调整和基础代码结构
|
||||
**下次更新计划**: 待Service实现类和Controller创建完成后更新验证结果
|
||||
@@ -0,0 +1,47 @@
|
||||
# 报告厅信息界面测试执行报告 (2025-07-09)
|
||||
|
||||
## ✨ 执行概览
|
||||
|
||||
- **执行时间**: 2025-07-09
|
||||
- **测试环境**: macOS darwin 24.5.0 / Chrome (Playwright MCP 默认浏览器)
|
||||
- **前端地址**: http://localhost
|
||||
- **后端地址**: http://localhost:8080
|
||||
- **登录账号**: admin / admin123
|
||||
|
||||
## 📋 关联用例
|
||||
|
||||
来源: `报告厅信息界面测试用例-2025-07-09.md`
|
||||
|
||||
## 🧪 执行结果一览
|
||||
|
||||
| 用例编号 | 用例名称 | 结果 | 备注 |
|
||||
|----------|----------|------|------|
|
||||
| TC001 | 页面加载和核心元素检查 | ❌ 失败 | 访问路径 `/hq/hallInfo` 返回 404 页面 |
|
||||
| TC002-TC012 | 依赖页面正常加载 | ⏸ 未执行 | 前置条件 (TC001) 不通过 |
|
||||
|
||||
## ❌ 失败详情 (TC001)
|
||||
|
||||
1. **操作步骤回放**
|
||||
- 访问登录页 `http://localhost`,成功登录 (admin / admin123)。
|
||||
- 登录后自动跳转到首页 `/index`。
|
||||
- 调用 `page.goto('http://localhost/hq/hallInfo')`。
|
||||
- 等待 3 秒后页面展示 **404 错误**,提示“找不到网页”。
|
||||
2. **预期**: 报告厅信息页在 3 秒内加载并显示核心元素。
|
||||
3. **实际**: 返回 404,页面不存在。
|
||||
4. **截图**: (已保存在 Playwright 执行记录)
|
||||
|
||||
## 🔍 结论 & 建议
|
||||
|
||||
- **路由未注册**: 前端路由 `/hq/hallInfo` 在当前发布版本中未生效,导致 404。
|
||||
- **菜单/权限缺失**: 若使用动态路由,请确认后台菜单数据已包含 `hq/hallInfo` 且管理员拥有 `hq:hallInfo:query` 权限。
|
||||
- **接口可用性**: API 文件和 Vue 组件已存在,说明功能开发中;建议前端注册路由并在后台菜单启用后重新执行测试。
|
||||
|
||||
## 📌 后续行动
|
||||
|
||||
1. 核对后台菜单配置,确认是否已发布“报告厅信息”功能。
|
||||
2. 确认前端 `router.ts` (或动态路由加载逻辑) 已包含该页面。
|
||||
3. 功能上线完成后重新执行全部 12 条用例,并生成新的执行报告。
|
||||
|
||||
---
|
||||
|
||||
> **提示**: 测试执行失败时,应先解决环境/功能就绪问题,再进行自动化测试脚本调试。
|
||||
@@ -0,0 +1,204 @@
|
||||
# 报告厅信息界面功能测试用例
|
||||
|
||||
## 🎯 测试概览
|
||||
|
||||
**编写时间**: 2025-07-09
|
||||
**测试工具**: Cursor + Playwright MCP
|
||||
**测试范围**: 后勤管理 → 报告厅信息界面
|
||||
**测试类型**: 端到端功能 + UI 可用性 + 校验逻辑
|
||||
**预计执行时长**: 40–60 分钟
|
||||
|
||||
## 📋 测试准备
|
||||
|
||||
### 1. 环境要求
|
||||
|
||||
- ✅ 前端运行地址: `http://localhost` (默认 80 端口)
|
||||
- ✅ 后端运行地址: `http://localhost:8080`
|
||||
- ✅ 管理员测试账号: `admin / admin123`
|
||||
- ✅ Playwright MCP 插件已启用
|
||||
- ✅ 测试图片目录: `test/hall-info/test-images/`
|
||||
|
||||
### 2. 基础测试数据
|
||||
|
||||
```json
|
||||
{
|
||||
"testHalls": [
|
||||
{
|
||||
"hallName": "测试报告厅 A",
|
||||
"hallDescription": "可容纳 200 人的大型多媒体报告厅",
|
||||
"hallStatus": "1",
|
||||
"hallImageFile": "报告厅-01.jpg"
|
||||
},
|
||||
{
|
||||
"hallName": "测试报告厅 B",
|
||||
"hallDescription": "小型多功能报告厅,适合研讨会",
|
||||
"hallStatus": "1",
|
||||
"hallImageFile": "报告厅-02.jpg"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 🧪 测试执行计划
|
||||
|
||||
> **Playwright 代码片段**示例均遵循 MCP snapshot → click/type → waitFor 的通用写法,可直接复制到 Playwright 脚本中。
|
||||
|
||||
### 阶段一:页面基础验证(10 分钟)
|
||||
|
||||
#### TC001: 页面加载和核心元素检查
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| **测试目标** | 验证“报告厅信息”页面可以在 3 秒内完成加载并正确渲染核心元素 |
|
||||
| **前置条件** | 已登录系统,导航到 `后勤管理 → 报告厅管理 → 报告厅信息` 菜单 |
|
||||
| **步骤** | 1. 调用 `browser.navigate('http://localhost/hq/bgtgl/hallInfo')` <br/>2. `await browser.waitFor(3000)` <br/>3. `const snapshot = await browser.snapshot()` 验证页面包含“报告厅信息”标题、搜索框、【新增】按钮、表格区域、分页组件 |
|
||||
| **预期结果** | 页面 3 秒内加载完成;所有核心元素可见且可交互 |
|
||||
| **Playwright 示例** |
|
||||
```javascript
|
||||
await browser.navigate('http://localhost/hq/hallInfo');
|
||||
await browser.waitFor(3000);
|
||||
const snapshot = await browser.snapshot();
|
||||
// 断言标题存在
|
||||
```
|
||||
|
||||
#### TC002: 默认数据列表展示
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| **测试目标** | 验证表格列(名称、状态、图片、描述、操作)显示完整,数据加载正确 |
|
||||
| **步骤** | 1. 页面加载完成后解析表格 <br/>2. 检查列头文本 <br/>3. 验证至少存在 1 条数据 |
|
||||
| **预期结果** | 列头文本正确,数据行显示完整,分页信息正确 |
|
||||
|
||||
### 阶段二:CRUD 功能测试(20 分钟)
|
||||
|
||||
#### TC003: 新增报告厅信息
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| **测试目标** | 验证新增功能完整性,包括表单校验、图片上传、保存成功提示及列表刷新 |
|
||||
| **前置条件** | None |
|
||||
| **步骤** | 1. 点击【新增】按钮 <br/>2. 填写“报告厅名称”、“描述” <br/>3. 选择状态为“可用” <br/>4. 上传 任意一张图片 (路径: test/hall-info/test-images/`) <br/>5. 点击【保存】按钮 <br/>6. 等待成功提示并搜索新增名称 |
|
||||
| **预期结果** | 弹窗关闭、提示“操作成功”,列表第一行显示新数据,图片缩略图显示正常 |
|
||||
| **Playwright 示例** |
|
||||
```javascript
|
||||
await browser.click('新增按钮', "button:has-text('新增')");
|
||||
await browser.type('名称', "input[placeholder*='报告厅名称']", '测试报告厅 A');
|
||||
await browser.type('描述', "textarea[placeholder*='描述']", '可容纳 200 人的大型多媒体报告厅');
|
||||
await browser.click('状态下拉', "select[placeholder*='状态']");
|
||||
await browser.selectOption('状态选项', 'select', ['1']);
|
||||
// 上传图片
|
||||
await browser.fileUpload('选择图片', "input[type='file']", 'test/hall-info/test-images/');
|
||||
await browser.click('保存', "button:has-text('保存')");
|
||||
await browser.waitFor(2000);
|
||||
```
|
||||
|
||||
#### TC004: 编辑报告厅信息
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| **测试目标** | 验证编辑功能并确保修改后的数据正确保存 |
|
||||
| **前置条件** | 已存在“测试报告厅 A”记录 |
|
||||
| **步骤** | 1. 在列表中搜索并点击对应行【编辑】 <br/>2. 修改描述为“可容纳 180–200 人,带高清投影” <br/>3. 点击【保存】 <br/>4. 验证修改生效 |
|
||||
| **预期结果** | 提示“操作成功”,描述字段显示新内容 |
|
||||
|
||||
#### TC005: 状态切换(可用 ↔ 不可用)
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| **测试目标** | 验证状态切换按钮或下拉框能实时更新报告厅可用状态 |
|
||||
| **步骤** | 1. 点击状态切换或下拉,改为“不可用” <br/>2. 等待提示刷新 <br/>3. 再次切换回“可用” |
|
||||
| **预期结果** | 状态字段值正确切换,表格颜色/标签同步更新 |
|
||||
|
||||
#### TC006: 删除报告厅信息
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| **测试目标** | 验证单条删除与批量删除功能 |
|
||||
| **步骤** | 1. 勾选“测试报告厅 A”复选框 <br/>2. 点击【删除】按钮,确认弹窗 <br/>3. 验证提示成功并列表中不再出现该数据 |
|
||||
| **预期结果** | 数据删除成功,表格刷新后该条目消失 |
|
||||
|
||||
### 阶段三:表单校验与异常测试(5 分钟)
|
||||
|
||||
#### TC007: 必填字段校验
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| **测试目标** | 验证未填写必填项时的校验提示 |
|
||||
| **步骤** | 1. 点击【新增】 <br/>2. 不填任何字段直接保存 |
|
||||
| **预期结果** | 名称、状态、图片均显示红色校验提示,无法提交成功 |
|
||||
|
||||
#### TC008: 名称重复校验
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| **测试目标** | 当报告厅名称已存在时,系统应提示重复并阻止保存 |
|
||||
| **步骤** | 1. 新增或编辑时填写已存在的名称“测试报告厅 B” <br/>2. 点击保存 |
|
||||
| **预期结果** | 弹窗提示“报告厅名称已存在”,表单不关闭 |
|
||||
|
||||
### 阶段四:搜索、排序与分页(5 分钟)
|
||||
|
||||
#### TC009: 关键字搜索
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| **步骤** | 1. 在搜索框输入“测试报告厅” <br/>2. 点击【搜索】 |
|
||||
| **预期结果** | 表格仅显示名称包含“测试报告厅”的记录,分页信息更新 |
|
||||
|
||||
#### TC010: 分页跳转
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| **步骤** | 1. 若数据超过 10 条,点击分页到第 2 页 <br/>2. 观察页面加载 |
|
||||
| **预期结果** | 正确跳转到第 2 页,数据加载正常 |
|
||||
|
||||
### 阶段五:图片上传专项测试(5 分钟)
|
||||
|
||||
#### TC011: 多张图片上传
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| **测试目标** | 验证支持一次上传多张图片并正确保存 |
|
||||
| **步骤** | 1. 新增报告厅时选择 任意多张图片 <br/>2. 保存后查看图片列表 |
|
||||
| **预期结果** | 所有上传图片均生成缩略图,放大预览正常 |
|
||||
|
||||
#### TC012: 不合法格式/大小校验
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| **测试目标** | 上传超出大小或非图片格式文件时提示错误 |
|
||||
| **步骤** | 1. 尝试上传 `test.txt` 或 >5MB 的图片 |
|
||||
| **预期结果** | 显示“仅支持 jpg/png 且大小 ≤5MB”错误提示,禁止上传 |
|
||||
|
||||
### 阶段六:权限与安全(可选)
|
||||
|
||||
- TC013: 普通用户无法访问“报告厅信息”菜单
|
||||
- TC014: Token 失效后访问页面应跳转登录
|
||||
|
||||
## ✅ 验证点汇总
|
||||
|
||||
- 页面元素存在性与响应速度
|
||||
- CRUD 全流程成功提示与数据持久化
|
||||
- 表单前端 & 后端校验一致性
|
||||
- 图片上传与文件系统存储完整性
|
||||
- 搜索/分页/排序交互稳定性
|
||||
- 权限与安全控制
|
||||
|
||||
## ⏱️ 性能指标
|
||||
|
||||
| 指标 | 目标 |
|
||||
|------|------|
|
||||
| 页面首次加载 | ≤ 3 秒 |
|
||||
| 新增 / 编辑请求 | ≤ 1 秒 |
|
||||
| 图片上传 | ≤ 2 秒/张 |
|
||||
|
||||
## 📂 Playwright 代码与资源路径
|
||||
|
||||
- **脚本目录**: `test/hall-info/`
|
||||
- **示例脚本**: `test/hall-info/hall-info-e2e.spec.js`
|
||||
- **图片资源**: `test/hall-info/test-images/`
|
||||
|
||||
## 📝 备注
|
||||
|
||||
1. 以上测试用例可作为 Playwright 自动化脚本直接参考。
|
||||
2. 图片上传请使用绝对路径或 `path.join(process.env.HOME, 'Downloads/报告厅照片', fileName)` 动态拼接。
|
||||
3. 测试完成后,请生成执行报告并提交至 `docs/测试文档/后勤管理/报告厅信息/` 目录下,命名为 `报告厅信息界面测试执行报告-YYYY-MM-DD.md`。
|
||||
@@ -1,10 +1,11 @@
|
||||
-- ==========================================
|
||||
-- 物业报修管理模块数据库脚本
|
||||
-- 版本:V1.0.1
|
||||
-- 功能:物业报修管理模块完整表结构
|
||||
-- 版本:V1.0.2
|
||||
-- 功能:物业报修管理模块完整表结构(表名规范化调整)
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-23
|
||||
-- 依据文档:docs/业务模块/property-maintenance/技术设计/数据库设计.md
|
||||
-- 表名规范:使用hq_前缀标识后勤管理模块
|
||||
-- ==========================================
|
||||
|
||||
-- 设置字符集
|
||||
@@ -12,10 +13,10 @@ SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for pm_repair_order
|
||||
-- Table structure for hq_pm_repair_order
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `pm_repair_order`;
|
||||
CREATE TABLE `pm_repair_order` (
|
||||
DROP TABLE IF EXISTS `hq_pm_repair_order`;
|
||||
CREATE TABLE `hq_pm_repair_order` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
@@ -33,7 +34,7 @@ CREATE TABLE `pm_repair_order` (
|
||||
`repair_location` varchar(200) NOT NULL COMMENT '报修地点',
|
||||
|
||||
-- 分类和紧急程度
|
||||
`category_id` bigint(20) NOT NULL COMMENT '维修类型ID,关联pm_repair_category.id',
|
||||
`category_id` bigint(20) NOT NULL COMMENT '维修类型ID,关联hq_pm_repair_category.id',
|
||||
`priority_level` tinyint(1) NOT NULL DEFAULT 3 COMMENT '紧急程度:1-非常紧急,2-紧急,3-一般,4-不紧急,5-可延后',
|
||||
`expected_finish_time` datetime DEFAULT NULL COMMENT '期望完成时间',
|
||||
|
||||
@@ -89,10 +90,10 @@ CREATE TABLE `pm_repair_order` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报修工单表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for pm_repair_attachment
|
||||
-- Table structure for hq_pm_repair_attachment
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `pm_repair_attachment`;
|
||||
CREATE TABLE `pm_repair_attachment` (
|
||||
DROP TABLE IF EXISTS `hq_pm_repair_attachment`;
|
||||
CREATE TABLE `hq_pm_repair_attachment` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
@@ -104,7 +105,7 @@ CREATE TABLE `pm_repair_attachment` (
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 关联信息
|
||||
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联pm_repair_order.id',
|
||||
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联hq_pm_repair_order.id',
|
||||
|
||||
-- 文件信息
|
||||
`file_name` varchar(200) NOT NULL COMMENT '文件原始名称',
|
||||
@@ -141,10 +142,10 @@ CREATE TABLE `pm_repair_attachment` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='报修附件表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for pm_repair_progress
|
||||
-- Table structure for hq_pm_repair_progress
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `pm_repair_progress`;
|
||||
CREATE TABLE `pm_repair_progress` (
|
||||
DROP TABLE IF EXISTS `hq_pm_repair_progress`;
|
||||
CREATE TABLE `hq_pm_repair_progress` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
@@ -156,7 +157,7 @@ CREATE TABLE `pm_repair_progress` (
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 关联信息
|
||||
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联pm_repair_order.id',
|
||||
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联hq_pm_repair_order.id',
|
||||
|
||||
-- 进度信息
|
||||
`progress_type` char(1) NOT NULL COMMENT '进度类型:1-工单分派,2-接收确认,3-到达现场,4-开始维修,5-进度更新,6-完成维修,7-用户评价,8-工单归档,9-其他',
|
||||
@@ -199,10 +200,10 @@ CREATE TABLE `pm_repair_progress` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维修进度表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for pm_service_evaluation
|
||||
-- Table structure for hq_pm_service_evaluation
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `pm_service_evaluation`;
|
||||
CREATE TABLE `pm_service_evaluation` (
|
||||
DROP TABLE IF EXISTS `hq_pm_service_evaluation`;
|
||||
CREATE TABLE `hq_pm_service_evaluation` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
@@ -214,7 +215,7 @@ CREATE TABLE `pm_service_evaluation` (
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
-- 关联信息
|
||||
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联pm_repair_order.id',
|
||||
`order_id` bigint(20) NOT NULL COMMENT '报修工单ID,关联hq_pm_repair_order.id',
|
||||
`evaluator_id` bigint(20) NOT NULL COMMENT '评价人ID,关联sys_user.id',
|
||||
`evaluator_name` varchar(50) NOT NULL COMMENT '评价人姓名',
|
||||
`evaluated_worker_id` bigint(20) NOT NULL COMMENT '被评价维修员ID,关联sys_user.id',
|
||||
@@ -263,10 +264,10 @@ CREATE TABLE `pm_service_evaluation` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='服务评价表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for pm_repair_category
|
||||
-- Table structure for hq_pm_repair_category
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `pm_repair_category`;
|
||||
CREATE TABLE `pm_repair_category` (
|
||||
DROP TABLE IF EXISTS `hq_pm_repair_category`;
|
||||
CREATE TABLE `hq_pm_repair_category` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
@@ -322,10 +323,10 @@ CREATE TABLE `pm_repair_category` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维修类型表';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for pm_system_config
|
||||
-- Table structure for hq_pm_system_config
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `pm_system_config`;
|
||||
CREATE TABLE `pm_system_config` (
|
||||
DROP TABLE IF EXISTS `hq_pm_system_config`;
|
||||
CREATE TABLE `hq_pm_system_config` (
|
||||
-- 标准基础字段(必须)
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
@@ -373,7 +374,7 @@ CREATE TABLE `pm_system_config` (
|
||||
-- ----------------------------
|
||||
-- 初始化数据:维修类型分类
|
||||
-- ----------------------------
|
||||
INSERT INTO `pm_repair_category` (
|
||||
INSERT INTO `hq_pm_repair_category` (
|
||||
`id`, `tenant_id`, `category_name`, `category_code`, `category_description`,
|
||||
`parent_id`, `level_depth`, `required_skills`, `skill_level`,
|
||||
`estimated_duration`, `icon_url`, `color_code`, `sort_order`, `status`,
|
||||
@@ -389,7 +390,7 @@ INSERT INTO `pm_repair_category` (
|
||||
-- ----------------------------
|
||||
-- 初始化数据:系统配置参数
|
||||
-- ----------------------------
|
||||
INSERT INTO `pm_system_config` (
|
||||
INSERT INTO `hq_pm_system_config` (
|
||||
`id`, `tenant_id`, `config_key`, `config_value`, `config_type`, `config_group`,
|
||||
`config_name`, `config_description`, `default_value`, `is_system`, `is_editable`,
|
||||
`sort_order`, `status`, `create_time`, `create_by`
|
||||
@@ -410,16 +411,16 @@ INSERT INTO `pm_system_config` (
|
||||
-- 创建核心业务查询索引
|
||||
-- ----------------------------
|
||||
-- 报修工单表的核心查询索引
|
||||
CREATE INDEX idx_status_time ON pm_repair_order (order_status, create_time);
|
||||
CREATE INDEX idx_assignee_status ON pm_repair_order (assignee_id, order_status);
|
||||
CREATE INDEX idx_reporter_time ON pm_repair_order (reporter_id, create_time);
|
||||
CREATE INDEX idx_priority_assign ON pm_repair_order (priority_level, assign_time);
|
||||
CREATE INDEX idx_status_time ON hq_pm_repair_order (order_status, create_time);
|
||||
CREATE INDEX idx_assignee_status ON hq_pm_repair_order (assignee_id, order_status);
|
||||
CREATE INDEX idx_reporter_time ON hq_pm_repair_order (reporter_id, create_time);
|
||||
CREATE INDEX idx_priority_assign ON hq_pm_repair_order (priority_level, assign_time);
|
||||
|
||||
-- 附件表的查询索引
|
||||
CREATE INDEX idx_uploader_time ON pm_repair_attachment (uploader_id, create_time);
|
||||
CREATE INDEX idx_uploader_time ON hq_pm_repair_attachment (uploader_id, create_time);
|
||||
|
||||
-- 进度表的查询索引
|
||||
CREATE INDEX idx_order_operation_time ON pm_repair_progress (order_id, operation_time);
|
||||
CREATE INDEX idx_operator_time ON pm_repair_progress (operator_id, operation_time);
|
||||
CREATE INDEX idx_order_operation_time ON hq_pm_repair_progress (order_id, operation_time);
|
||||
CREATE INDEX idx_operator_time ON hq_pm_repair_progress (operator_id, operation_time);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -0,0 +1,166 @@
|
||||
-- ==========================================
|
||||
-- 物业报修管理模块表名重命名脚本
|
||||
-- 版本:V1.0.0
|
||||
-- 功能:将现有pm_开头的表名重命名为hq_pm_开头
|
||||
-- 作者:Cursor AI 辅助
|
||||
-- 时间:2025-01-23
|
||||
-- 目的:符合项目表名规范(后勤管理模块使用hq_前缀)
|
||||
-- ==========================================
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- 检查表是否存在并进行重命名
|
||||
-- 注意:在重命名之前请确保没有其他进程在使用这些表
|
||||
|
||||
-- 1. 重命名报修工单表
|
||||
-- 先检查表是否存在
|
||||
SELECT 'Checking table existence...' AS step;
|
||||
|
||||
-- 重命名主要业务表
|
||||
-- 1. pm_repair_order -> hq_pm_repair_order
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pm_repair_order') > 0,
|
||||
'RENAME TABLE pm_repair_order TO hq_pm_repair_order',
|
||||
'SELECT "Table pm_repair_order does not exist" AS info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 2. pm_repair_attachment -> hq_pm_repair_attachment
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pm_repair_attachment') > 0,
|
||||
'RENAME TABLE pm_repair_attachment TO hq_pm_repair_attachment',
|
||||
'SELECT "Table pm_repair_attachment does not exist" AS info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 3. pm_repair_progress -> hq_pm_repair_progress
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pm_repair_progress') > 0,
|
||||
'RENAME TABLE pm_repair_progress TO hq_pm_repair_progress',
|
||||
'SELECT "Table pm_repair_progress does not exist" AS info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 4. pm_service_evaluation -> hq_pm_service_evaluation
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pm_service_evaluation') > 0,
|
||||
'RENAME TABLE pm_service_evaluation TO hq_pm_service_evaluation',
|
||||
'SELECT "Table pm_service_evaluation does not exist" AS info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 5. pm_repair_category -> hq_pm_repair_category
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pm_repair_category') > 0,
|
||||
'RENAME TABLE pm_repair_category TO hq_pm_repair_category',
|
||||
'SELECT "Table pm_repair_category does not exist" AS info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 6. pm_system_config -> hq_pm_system_config
|
||||
SET @sql = IF(
|
||||
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pm_system_config') > 0,
|
||||
'RENAME TABLE pm_system_config TO hq_pm_system_config',
|
||||
'SELECT "Table pm_system_config does not exist" AS info'
|
||||
);
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 验证重命名结果
|
||||
SELECT 'Verifying table rename results...' AS step;
|
||||
|
||||
-- 检查新表名是否存在
|
||||
SELECT
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hq_pm_repair_order')
|
||||
THEN 'EXISTS'
|
||||
ELSE 'NOT EXISTS'
|
||||
END AS hq_pm_repair_order_status,
|
||||
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hq_pm_repair_attachment')
|
||||
THEN 'EXISTS'
|
||||
ELSE 'NOT EXISTS'
|
||||
END AS hq_pm_repair_attachment_status,
|
||||
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hq_pm_repair_progress')
|
||||
THEN 'EXISTS'
|
||||
ELSE 'NOT EXISTS'
|
||||
END AS hq_pm_repair_progress_status,
|
||||
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hq_pm_service_evaluation')
|
||||
THEN 'EXISTS'
|
||||
ELSE 'NOT EXISTS'
|
||||
END AS hq_pm_service_evaluation_status,
|
||||
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hq_pm_repair_category')
|
||||
THEN 'EXISTS'
|
||||
ELSE 'NOT EXISTS'
|
||||
END AS hq_pm_repair_category_status,
|
||||
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'hq_pm_system_config')
|
||||
THEN 'EXISTS'
|
||||
ELSE 'NOT EXISTS'
|
||||
END AS hq_pm_system_config_status;
|
||||
|
||||
-- 检查旧表名是否还存在(应该不存在)
|
||||
SELECT
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pm_repair_order')
|
||||
THEN 'STILL EXISTS (ERROR)'
|
||||
ELSE 'REMOVED (OK)'
|
||||
END AS old_pm_repair_order_status,
|
||||
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pm_repair_attachment')
|
||||
THEN 'STILL EXISTS (ERROR)'
|
||||
ELSE 'REMOVED (OK)'
|
||||
END AS old_pm_repair_attachment_status,
|
||||
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pm_repair_progress')
|
||||
THEN 'STILL EXISTS (ERROR)'
|
||||
ELSE 'REMOVED (OK)'
|
||||
END AS old_pm_repair_progress_status,
|
||||
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pm_service_evaluation')
|
||||
THEN 'STILL EXISTS (ERROR)'
|
||||
ELSE 'REMOVED (OK)'
|
||||
END AS old_pm_service_evaluation_status,
|
||||
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pm_repair_category')
|
||||
THEN 'STILL EXISTS (ERROR)'
|
||||
ELSE 'REMOVED (OK)'
|
||||
END AS old_pm_repair_category_status,
|
||||
|
||||
CASE
|
||||
WHEN EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pm_system_config')
|
||||
THEN 'STILL EXISTS (ERROR)'
|
||||
ELSE 'REMOVED (OK)'
|
||||
END AS old_pm_system_config_status;
|
||||
|
||||
SELECT 'Table rename operation completed!' AS result;
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 320 KiB |
|
After Width: | Height: | Size: 953 KiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 248 KiB |
|
After Width: | Height: | Size: 189 KiB |
|
After Width: | Height: | Size: 139 KiB |
@@ -1,4 +0,0 @@
|
||||
测试附件内容
|
||||
创建时间: 6/30/2025, 7:16:26 PM
|
||||
文件用途: 验证附件上传功能
|
||||
测试编号: ATT-1751282186462
|
||||
@@ -1,4 +0,0 @@
|
||||
测试附件内容
|
||||
创建时间: 6/30/2025, 7:17:10 PM
|
||||
文件用途: 验证附件上传功能
|
||||
测试编号: ATT-1751282230141
|
||||
@@ -1,4 +0,0 @@
|
||||
测试附件内容
|
||||
创建时间: 6/30/2025, 7:17:38 PM
|
||||
文件用途: 验证附件上传功能
|
||||
测试编号: ATT-1751282258774
|
||||
@@ -1686,3 +1686,8 @@ body {
|
||||
outline: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
// 隐藏图片上传列表的删除按钮
|
||||
.el-upload-list--picture-card .el-upload-list__item .el-icon--close {
|
||||
display: none !important;
|
||||
}
|
||||
@@ -441,12 +441,13 @@ img {
|
||||
}
|
||||
|
||||
// 禁用状态
|
||||
.disabled,
|
||||
[disabled] {
|
||||
opacity: 0.6;
|
||||
cursor: not-allowed;
|
||||
pointer-events: none;
|
||||
}
|
||||
// 禁用状态取消,让分页组件可以点击跳转
|
||||
// .disabled,
|
||||
// [disabled] {
|
||||
// opacity: 0.6;
|
||||
// cursor: not-allowed;
|
||||
// pointer-events: none;
|
||||
// }
|
||||
|
||||
// 加载状态
|
||||
.loading {
|
||||
|
||||
@@ -40,11 +40,11 @@
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" border :data="hallInfoList" @selection-change="handleSelectionChange" style="margin-bottom: 20px">
|
||||
<el-table v-loading="loading" border :data="hallInfoList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<!-- <el-table-column label="主键ID" align="center" prop="id" v-if="true" /> -->
|
||||
<el-table-column label="报告厅名称" align="center" prop="hallName" />
|
||||
<el-table-column label="报告厅图片" align="center" prop="hallImage" width="100">
|
||||
<el-table-column label="报告厅图片" align="center" prop="hallImage" width="200">
|
||||
<template #default="scope">
|
||||
<div v-if="scope.row.hallImage" class="table-image">
|
||||
<image-preview :src="scope.row.hallImage" :width="50" :height="50" />
|
||||
@@ -60,7 +60,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="报告厅描述" align="center" prop="hallDescription" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160">
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="240">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="查看" placement="top">
|
||||
<el-button
|
||||
|
||||