维修工单添加提交处理接口,详情接口

This commit is contained in:
zjf committed 2025-11-10 15:42:30 +08:00
1 parent 207d90b48a
commit 5fbb2c9b94
3 files changed
+97 -6

No files matched your search

@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.admin.api.feign.RemoteDictService;
@@ -24,7 +25,10 @@ import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import com.bsd.pjcloud.integrated.dto.MaintenanceOrderAppCreateDTO;
import com.bsd.pjcloud.integrated.dto.MaintenanceOrderHandleDTO;
import com.bsd.pjcloud.integrated.vo.maintenance.MaintenanceOrderScreenVo;
import com.bsd.pjcloud.integrated.vo.maintenance.app.MaintenanceOrderAppDetailVo;
import com.bsd.pjcloud.integrated.vo.maintenance.app.MaintenanceOrderAppListVo;
import com.bsd.pjcloud.integrated.vo.MaintenanceTypeVO;
import com.bsd.pjcloud.admin.api.entity.SysDictItem;
@@ -34,6 +38,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.time.LocalDateTime;
/**
* 维修工单主表
@@ -64,6 +69,7 @@ public class MaintenanceOrderController {
public R getMaintenanceOrderPage(@ParameterObject Page page, @ParameterObject MaintenanceOrderEntity maintenanceOrder) {
LambdaQueryWrapper<MaintenanceOrderEntity> wrapper = Wrappers.lambdaQuery();
wrapper.eq(StrUtil.isNotBlank(maintenanceOrder.getTitle()),MaintenanceOrderEntity::getTitle,maintenanceOrder.getTitle());
wrapper.orderByDesc(MaintenanceOrderEntity::getCreateTime);
return R.ok(maintenanceOrderService.page(page, wrapper));
}
@@ -158,13 +164,22 @@ public class MaintenanceOrderController {
* @return R
*/
@GetMapping("/app/my")
@Operation(summary = "App端-我的维修分页列表", description = "App端用户分页查询自己的维修单")
@Operation(summary = "App端-我的维修分页列表", description = "App端用户分页查询自己的维修单,按创建时间倒序")
// @PreAuthorize("@pms.hasPermission('integrated_maintenanceOrder_view')")
public R myMaintenanceOrders(@ParameterObject Page page) {
public R<IPage<MaintenanceOrderAppListVo>> myMaintenanceOrders(@ParameterObject Page page) {
Long userId = SecurityUtils.getUser().getId();
LambdaQueryWrapper<MaintenanceOrderEntity> wrapper = Wrappers.lambdaQuery();
wrapper.eq(MaintenanceOrderEntity::getUserId, userId);
return R.ok(maintenanceOrderService.page(page, wrapper));
wrapper.orderByDesc(MaintenanceOrderEntity::getCreateTime); // 按创建时间倒序,最新的在第一条
IPage<MaintenanceOrderEntity> entityPage = maintenanceOrderService.page(page, wrapper);
// 转换为VO
IPage<MaintenanceOrderAppListVo> voPage = entityPage.convert(entity ->
BeanUtils.toBean(entity, MaintenanceOrderAppListVo.class)
);
return R.ok(voPage);
}
/**
@@ -173,15 +188,18 @@ public class MaintenanceOrderController {
* @return R
*/
@GetMapping("/app/my/{id}")
@Operation(summary = "App端-我的维修单详情", description = "App端用户查看自己维修单详情")
@Operation(summary = "App端-我的维修单详情", description = "App端用户查看自己维修单详情,包含处理说明和处理图片")
// @PreAuthorize("@pms.hasPermission('integrated_maintenanceOrder_view')")
public R myMaintenanceOrderDetail(@PathVariable("id") Long id) {
public R<MaintenanceOrderAppDetailVo> myMaintenanceOrderDetail(@PathVariable("id") Long id) {
Long userId = SecurityUtils.getUser().getId();
MaintenanceOrderEntity entity = maintenanceOrderService.getById(id);
if (entity == null || !Objects.equals(entity.getUserId(), userId)) {
return R.failed("无权查看该维修单");
}
return R.ok(entity);
// 转换为VO
MaintenanceOrderAppDetailVo vo = BeanUtils.toBean(entity, MaintenanceOrderAppDetailVo.class);
return R.ok(vo);
}
/**
@@ -233,4 +251,49 @@ public class MaintenanceOrderController {
return R.ok(voList);
}
/**
* 后台处理维修工单(支持填写处理情况和图片URL)
* @param dto 处理工单DTO
* @return R
*/
@Operation(summary = "后台处理维修工单", description = "后台管理员处理工单,可填写处理说明和图片URL")
@SysLog("后台处理维修工单")
@PostMapping("/handle")
@PreAuthorize("@pms.hasPermission('integrated_maintenanceOrder_edit')")
public R handleMaintenanceOrder(@RequestBody MaintenanceOrderHandleDTO dto) {
// 查询工单
MaintenanceOrderEntity entity = maintenanceOrderService.getById(dto.getId());
if (entity == null) {
return R.failed("工单不存在");
}
// 更新工单信息
if (StrUtil.isNotBlank(dto.getHandleRemark())) {
entity.setHandleRemark(dto.getHandleRemark());
}
if (StrUtil.isNotBlank(dto.getHandlePicUrl())) {
// 如果已有图片,追加新图片(用逗号分隔)
String existingPics = entity.getHandlePicUrl();
if (StrUtil.isNotBlank(existingPics)) {
entity.setHandlePicUrl(existingPics + "," + dto.getHandlePicUrl());
} else {
entity.setHandlePicUrl(dto.getHandlePicUrl());
}
}
if (StrUtil.isNotBlank(dto.getStatus())) {
entity.setStatus(dto.getStatus());
}
// 设置处理时间和处理人
entity.setHandleTime(LocalDateTime.now());
entity.setHandleBy(SecurityUtils.getUser().getUsername());
boolean success = maintenanceOrderService.updateById(entity);
if (success) {
return R.ok("工单处理成功");
} else {
return R.failed("工单处理失败");
}
}
}
@@ -140,4 +140,28 @@ public class MaintenanceOrderEntity extends Model<MaintenanceOrderEntity> {
*/
@Schema(description="维修类型")
private Long maintainType;
/**
* 处理说明/回复内容
*/
@Schema(description="处理说明/回复内容")
private String handleRemark;
/**
* 处理图片(多个图片URL,逗号分隔)
*/
@Schema(description="处理图片(多个用逗号分隔)")
private String handlePicUrl;
/**
* 处理时间
*/
@Schema(description="处理时间")
private LocalDateTime handleTime;
/**
* 处理人
*/
@Schema(description="处理人")
private String handleBy;
}
@@ -22,5 +22,9 @@
<result property="delFlag" column="del_flag"/>
<result property="tenantId" column="tenant_id"/>
<result property="maintainType" column="maintain_type"/>
<result property="handleRemark" column="handle_remark"/>
<result property="handlePicUrl" column="handle_pic_url"/>
<result property="handleTime" column="handle_time"/>
<result property="handleBy" column="handle_by"/>
</resultMap>
</mapper>