4.21冲刺记录和课下作业

典型用户:吴小石头(设备台账管理场景)

类别 详情
名字 吴小石头
性别、年龄 男,20岁
职业 帮父亲做石头生意,兼管设备台账(客服设备、消防设备方向)管理
收入 收入上交父亲,参与设备管理工作无额外独立收入
知识层次和能力 河曲村农机技校毕业,会基础电脑操作,可通过简单培训掌握设备台账系统基础功能,能上网、聊天、游戏
生活/工作情况 日常帮父亲做石头生意,工作之余常泡在顶球网吧,需利用网吧电脑完成设备台账(客服、消防设备)的信息维护,如回答买家设备相关疑问、更新设备资料等
动机、目的、困难 希望通过管好设备台账,助力石头生意拓展,早日盖房独立;困难在于要快速熟悉客服、消防设备台账管理逻辑,扩大石头生意销路,让更多人了解设备关联业务
用户偏好 上网、游戏、交友,愿在网吧环境用轻松方式(如边玩游戏边抽空处理)管理设备台账
用户比例 此类兼顾家族生意、需用基础系统管理设备的年轻群体,在相关小生意从业者中占比待调研(可后续根据业务覆盖范围统计 )
典型场景 ①在顶球网吧,收到买家关于客服/消防设备关联石头产品的咨询,需查询设备台账(如设备适配石头规格、过往故障维修对产品影响等)回答疑问 ②定期(如每周)抽时间登录系统,更新客服、消防设备台账里的设备履历、变更记录(因石头生意中设备使用、调配产生的变动)
典型描述 “我不在顶球网吧,就在去顶球网吧的路上,顺道把客服和消防设备台账的事儿也处理处理,让买石头的人更放心!”

今日全力投入故障销号模块后端接口开发,实现了设备故障从处理到销号的核心业务逻辑。当现场工程师点击 “已完成” 后,故障状态能够自动变更为待销号,并将审核任务按照班组长、工区长的顺序自动推送。同时,完成了审核人员查看故障处理全流程记录接口的开发,包括接单时间、关单时间、故障描述等信息的获取。​
在开发过程中,任务推送的顺序逻辑出现错误,导致审核任务推送混乱,通过仔细检查代码逻辑,调整任务推送的优先级设置,解决了该问题。此外,在获取现场照片信息时,由于照片存储路径设计不合理,导致无法正确读取照片,重新规划照片存储路径和读取方式后得以解决。目前,故障销号模块后端接口的核心功能已初步实现,明日将继续完善接口功能,并开始开发前端页面。
package com.example.devicemanagesystem.entity;

import lombok.Getter;

import java.util.Date;

public class InspectionPhoto {
private Long photoId;
@Getter
private Long taskId;
@Getter
private String photoUrl;
@Getter
private String photoType;
@Getter
private Date uploadTime;
@Getter
private String watermarkInfo;
private Boolean isApproved;
@Getter
private String rejectReason;
@Getter
private Integer fileSize;
@Getter
private String fileMd5;
@Getter
private Date createTime;

public void setPhotoId(Long photoId) {
    this.photoId = photoId;
}

public void setTaskId(Long taskId) {
    this.taskId = taskId;
}

public void setPhotoUrl(String photoUrl) {
    this.photoUrl = photoUrl;
}

public void setPhotoType(String photoType) {
    this.photoType = photoType;
}

public void setUploadTime(Date uploadTime) {
    this.uploadTime = uploadTime;
}

public void setWatermarkInfo(String watermarkInfo) {
    this.watermarkInfo = watermarkInfo;
}

public Boolean getIsApproved() {
    return isApproved;
}

public void setIsApproved(Boolean approved) {
    isApproved = approved;
}

public void setRejectReason(String rejectReason) {
    this.rejectReason = rejectReason;
}

public void setFileSize(Integer fileSize) {
    this.fileSize = fileSize;
}

public void setFileMd5(String fileMd5) {
    this.fileMd5 = fileMd5;
}

public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}

public Long getPhotoId() {
    return photoId;
}

public Long getTaskId() {
    return taskId;
}

public String getPhotoUrl() {
    return photoUrl;
}

public String getPhotoType() {
    return photoType;
}

public Date getUploadTime() {
    return uploadTime;
}

public String getWatermarkInfo() {
    return watermarkInfo;
}

public Boolean getApproved() {
    return isApproved;
}

public String getRejectReason() {
    return rejectReason;
}

public Integer getFileSize() {
    return fileSize;
}

public String getFileMd5() {
    return fileMd5;
}

public Date getCreateTime() {
    return createTime;
}

}
package com.example.devicemanagesystem.entity;

import lombok.Data;

import java.util.Date;

@Data
public class InspectionTask {
private Long taskId;
private Long deviceId;
private String inspectorId;
private Date orderTime;
private Date closeTime;
private String status;
private String inspectionItems;
private String inspectionRecords;
private String deviceStatus;
private String remarks;
private Boolean teamLeaderApproval;
private Boolean sectionLeaderApproval;
private Boolean stationLeaderApproval;
private String stationLeaderSignature;
private Integer satisfactionScore;
private Date createdAt;
private Date updatedAt;

// 关联的设备信息
private Device device;

public Long getTaskId() {
    return taskId;
}

public void setTaskId(Long taskId) {
    this.taskId = taskId;
}

public Long getDeviceId() {
    return deviceId;
}

public void setDeviceId(Long deviceId) {
    this.deviceId = deviceId;
}

public String getInspectorId() {
    return inspectorId;
}

public void setInspectorId(String inspectorId) {
    this.inspectorId = inspectorId;
}

public Date getOrderTime() {
    return orderTime;
}

public void setOrderTime(Date orderTime) {
    this.orderTime = orderTime;
}

public Date getCloseTime() {
    return closeTime;
}

public void setCloseTime(Date closeTime) {
    this.closeTime = closeTime;
}

public String getStatus() {
    return status;
}

public void setStatus(String status) {
    this.status = status;
}

public String getInspectionItems() {
    return inspectionItems;
}

public void setInspectionItems(String inspectionItems) {
    this.inspectionItems = inspectionItems;
}

public String getInspectionRecords() {
    return inspectionRecords;
}

public void setInspectionRecords(String inspectionRecords) {
    this.inspectionRecords = inspectionRecords;
}

public String getDeviceStatus() {
    return deviceStatus;
}

public void setDeviceStatus(String deviceStatus) {
    this.deviceStatus = deviceStatus;
}

public String getRemarks() {
    return remarks;
}

public void setRemarks(String remarks) {
    this.remarks = remarks;
}

public Boolean getTeamLeaderApproval() {
    return teamLeaderApproval;
}

public void setTeamLeaderApproval(Boolean teamLeaderApproval) {
    this.teamLeaderApproval = teamLeaderApproval;
}

public Boolean getSectionLeaderApproval() {
    return sectionLeaderApproval;
}

public void setSectionLeaderApproval(Boolean sectionLeaderApproval) {
    this.sectionLeaderApproval = sectionLeaderApproval;
}

public Boolean getStationLeaderApproval() {
    return stationLeaderApproval;
}

public void setStationLeaderApproval(Boolean stationLeaderApproval) {
    this.stationLeaderApproval = stationLeaderApproval;
}

public String getStationLeaderSignature() {
    return stationLeaderSignature;
}

public void setStationLeaderSignature(String stationLeaderSignature) {
    this.stationLeaderSignature = stationLeaderSignature;
}

public Integer getSatisfactionScore() {
    return satisfactionScore;
}

public void setSatisfactionScore(Integer satisfactionScore) {
    this.satisfactionScore = satisfactionScore;
}

public Date getCreatedAt() {
    return createdAt;
}

public void setCreatedAt(Date createdAt) {
    this.createdAt = createdAt;
}

public Date getUpdatedAt() {
    return updatedAt;
}

public void setUpdatedAt(Date updatedAt) {
    this.updatedAt = updatedAt;
}

public Device getDevice() {
    return device;
}

public void setDevice(Device device) {
    this.device = device;
}

}
package com.example.devicemanagesystem.controller;

import com.example.devicemanagesystem.config.ApiResponse;
import com.example.devicemanagesystem.entity.FaultTask;
import com.example.devicemanagesystem.service.FaultTaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/api/fault-tasks")
public class FaultTaskController {

@Autowired
private FaultTaskService faultTaskService;

/**
 * 创建故障单
 */
@PostMapping
public ApiResponse<FaultTask> createFaultTask(@RequestBody FaultTask faultTask) {
    return ApiResponse.success(faultTaskService.createFaultTask(faultTask));
}

/**
 * 获取设备的故障单列表
 */
@GetMapping("/device/{deviceId}")
public ApiResponse<List<FaultTask>> getFaultTasksByDevice(@PathVariable Long deviceId) {
    return ApiResponse.success(faultTaskService.getFaultTasksByDeviceId(deviceId));
}

/**
 * 获取故障单详情
 */
@GetMapping("/{id}")
public ApiResponse<FaultTask> getFaultTaskById(@PathVariable Long id) {
    return ApiResponse.success(faultTaskService.getFaultTaskById(id));
}

/**
 * 更新故障单状态
 */
@PutMapping("/{id}/status")
public ApiResponse<Boolean> updateFaultTaskStatus(
        @PathVariable Long id,
        @RequestParam String status
) {
    return ApiResponse.success(faultTaskService.updateFaultTaskStatus(id, status));
}

/**
 * 获取当前用户的待处理故障单
 */
@GetMapping("/pending")
public ApiResponse<List<FaultTask>> getPendingFaultTasks(
        @RequestParam String inspectorId
) {
    return ApiResponse.success(faultTaskService.getPendingFaultTasksByInspector(inspectorId));
}

/**
 * 班组长验收故障单
 */
@PostMapping("/{id}/approve-by-team-leader")
public ApiResponse<Boolean> approveByTeamLeader(
        @PathVariable Long id,
        @RequestBody Map<String, Object> request
) {
    boolean approved = Boolean.parseBoolean(request.getOrDefault("approved", "false").toString());
    String comments = request.getOrDefault("comments", "").toString();

    return ApiResponse.success(faultTaskService.approveByTeamLeader(id, approved, comments));
}
/**
 * 工区长验收故障单
 */
@PostMapping("/{id}/approve-by-section-leader")
public ApiResponse<Boolean> approveBySectionLeader(
        @PathVariable Long id,
        @RequestBody Map<String, Object> request
) {
    boolean approved = Boolean.parseBoolean(request.getOrDefault("approved", "false").toString());
    String comments = request.getOrDefault("comments", "").toString();

    return ApiResponse.success(faultTaskService.approveBySectionLeader(id, approved, comments));
}

/**
 * 主管验收故障单
 */
@PostMapping("/{id}/approve-by-station-leader")
public ApiResponse<Boolean> approveByStationLeader(
        @PathVariable Long id,
        @RequestBody Map<String, Object> request
) {
    boolean approved = Boolean.parseBoolean(request.getOrDefault("approved", "false").toString());
    String comments = request.getOrDefault("comments", "").toString();
    Integer satisfactionScore = request.containsKey("satisfactionScore") ?
            Integer.parseInt(request.get("satisfactionScore").toString()) : null;
    String signature = request.getOrDefault("signature", "").toString();

    return ApiResponse.success(faultTaskService.approveByStationLeader(id, approved, comments, satisfactionScore, signature));
}

/**
 * 根据状态获取故障单列表
 */
@GetMapping("/status/{status}")
public ApiResponse<List<FaultTask>> getFaultTasksByStatus(@PathVariable String status) {
    return ApiResponse.success(faultTaskService.getFaultTasksByStatus(status));
}

}

posted @ 2025-04-21 20:56  李蕊lr  阅读(5)  评论(0)    收藏  举报