yaowanxin
2025-09-18 3fa3e998525799948fdf5fb27aa9bf3f1d5cbc66
设备管理-备件管理,缺陷管理接口,修改设备报修管理
已添加14个文件
已修改3个文件
544 ■■■■■ 文件已修改
src/main/java/com/ruoyi/collaborativeApproval/pojo/DutyPlan.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/controller/DeviceDefectRecordController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/controller/DeviceRepairController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/dto/DeviceDefectRecordDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/mapper/DeviceDefectRecordMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/pojo/DeviceDefectRecord.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/service/DeviceDefectRecordService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/service/impl/DeviceDefectRecordServiceImpl.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsController.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsDto.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SpareParts.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsServiceImpl.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/device/DeviceDefectRecordMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/measuringinstrumentledger/SparePartsMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/pojo/DutyPlan.java
@@ -91,6 +91,31 @@
    @TableField(value = "tags",typeHandler = ListToStringTypeHandler.class,jdbcType = JdbcType.VARCHAR)
    private List<String> tags;
    /**
     * åˆ›å»ºè€…
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    /**
     * ä¿®æ”¹äºº
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    /**
     * ç§Ÿæˆ·ID
     */
    @TableField(fill = FieldFill.INSERT)
src/main/java/com/ruoyi/device/controller/DeviceDefectRecordController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.device.dto.DeviceDefectRecordDto;
import com.ruoyi.device.dto.DeviceRepairDto;
import com.ruoyi.device.pojo.DeviceDefectRecord;
import com.ruoyi.device.pojo.DeviceLedger;
import com.ruoyi.device.pojo.DeviceRepair;
import com.ruoyi.device.service.DeviceDefectRecordService;
import com.ruoyi.framework.web.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@Api(tags = "设备缺陷记录管理")
@RequestMapping("/defect")
@RestController
public class DeviceDefectRecordController {
    @Autowired
    private DeviceDefectRecordService deviceDefectRecordService;
    @ApiModelProperty("设备缺陷记录列表")
    @GetMapping("/page")
    public AjaxResult page(Page page , DeviceDefectRecordDto deviceDefectRecordDto) {
        return AjaxResult.success(deviceDefectRecordService.listPage(page,deviceDefectRecordDto));
    }
    @ApiModelProperty("设备id查询设备缺陷记录列表")
    @GetMapping("/find/{deviceLedgerId}")
    public AjaxResult find(@PathVariable Long deviceLedgerId) {
        DeviceDefectRecordDto deviceDefectRecordDto = new DeviceDefectRecordDto();
        deviceDefectRecordDto.setDeviceLedgerId(deviceLedgerId);
        return AjaxResult.success(deviceDefectRecordService.listPage(new Page<>(1,-1),deviceDefectRecordDto));
    }
    @PostMapping("/add")
    @ApiModelProperty("添加设备缺陷记录")
    public AjaxResult add(@RequestBody DeviceDefectRecord deviceDefectRecord) {
        return AjaxResult.success(deviceDefectRecordService.add(deviceDefectRecord));
    }
    @PostMapping("/update")
    @ApiModelProperty("修改设备缺陷记录")
    public AjaxResult update(@RequestBody DeviceDefectRecord deviceDefectRecord) {
        return AjaxResult.success(deviceDefectRecordService.updateByDDR(deviceDefectRecord));
    }
    @DeleteMapping("/delete")
    @ApiModelProperty("删除设备缺陷记录")
    public AjaxResult delete(@PathVariable Long id) {
        return AjaxResult.success(deviceDefectRecordService.removeById(id));
    }
}
src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
@@ -37,9 +37,6 @@
    @PostMapping()
    @ApiModelProperty("添加设备报修")
    public AjaxResult add( @RequestBody DeviceRepair deviceRepair) {
        DeviceLedger byId = deviceLedgerService.getById(deviceRepair.getDeviceLedgerId());
        deviceRepair.setDeviceName(byId.getDeviceName());
        deviceRepair.setDeviceModel(byId.getDeviceModel());
        return deviceRepairService.saveDeviceRepair(deviceRepair);
    }
src/main/java/com/ruoyi/device/dto/DeviceDefectRecordDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.DeviceDefectRecord;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class DeviceDefectRecordDto extends DeviceDefectRecord {
    @ApiModelProperty("设备名称")
    private String deviceName;
    @ApiModelProperty("设备型号")
    private String deviceModel;
}
src/main/java/com/ruoyi/device/mapper/DeviceDefectRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.device.dto.DeviceDefectRecordDto;
import com.ruoyi.device.pojo.DeviceDefectRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface DeviceDefectRecordMapper extends BaseMapper<DeviceDefectRecord> {
    IPage<DeviceDefectRecordDto> listPage(Page page,@Param("deviceDefectRecordDto") DeviceDefectRecordDto deviceDefectRecordDto);
}
src/main/java/com/ruoyi/device/pojo/DeviceDefectRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Data
@TableName("device_defect_record")
public class DeviceDefectRecord {
    @ApiModelProperty("设备缺陷记录id")
    private Long id;
    @ApiModelProperty("设备台账id")
    private Long deviceLedgerId;
    @ApiModelProperty("缺陷描述")
    private String defectDescription;
    @ApiModelProperty("状态")
    private String status;
    @ApiModelProperty("消除时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime eliminateTime;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("更新人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("租户id")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
src/main/java/com/ruoyi/device/service/DeviceDefectRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.dto.DeviceDefectRecordDto;
import com.ruoyi.device.pojo.DeviceDefectRecord;
public interface DeviceDefectRecordService extends IService<DeviceDefectRecord> {
    IPage<DeviceDefectRecordDto> listPage(Page page, DeviceDefectRecordDto deviceDefectRecordDto);
    boolean updateByDDR(DeviceDefectRecord deviceDefectRecord);
    boolean add(DeviceDefectRecord deviceDefectRecord);
}
src/main/java/com/ruoyi/device/service/impl/DeviceDefectRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.dto.DeviceDefectRecordDto;
import com.ruoyi.device.mapper.DeviceDefectRecordMapper;
import com.ruoyi.device.pojo.DeviceDefectRecord;
import com.ruoyi.device.pojo.DeviceRepair;
import com.ruoyi.device.service.DeviceDefectRecordService;
import com.ruoyi.device.service.IDeviceRepairService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.Date;
@Service
@Transactional(rollbackFor = Exception.class)
public class DeviceDefectRecordServiceImpl extends ServiceImpl<DeviceDefectRecordMapper, DeviceDefectRecord> implements DeviceDefectRecordService {
    @Autowired
    private DeviceDefectRecordMapper deviceDefectRecordMapper;
    @Autowired
    private IDeviceRepairService deviceRepairService;
    @Override
    public IPage<DeviceDefectRecordDto> listPage(Page page, DeviceDefectRecordDto deviceDefectRecordDto) {
        return deviceDefectRecordMapper.listPage(page, deviceDefectRecordDto);
    }
    @Override
    public boolean add(DeviceDefectRecord deviceDefectRecord) {
        String status = deviceDefectRecord.getStatus();
        if (status.equals("严重缺陷")) {
            DeviceRepair deviceRepair = new DeviceRepair();
            deviceRepair.setDeviceLedgerId(deviceDefectRecord.getDeviceLedgerId());
            deviceRepair.setRemark(deviceDefectRecord.getDefectDescription());
            //获取当前登录用户
            deviceRepair.setRepairName(SecurityUtils.getUsername());
            deviceRepair.setRepairTime(new Date());
            deviceRepairService.saveDeviceRepair(deviceRepair);
            return deviceDefectRecordMapper.insert(deviceDefectRecord) > 0;
        } else if (status.equals("一般缺陷")) {
            return deviceDefectRecordMapper.insert(deviceDefectRecord) > 0;
        }
        return false;
    }
    @Override
    public boolean updateByDDR(DeviceDefectRecord deviceDefectRecord) {
        String status = deviceDefectRecord.getStatus();
        if (status.equals("严重缺陷")) {
//            deviceDefectRecord.setStatus("正常");
//            deviceDefectRecord.setEliminateTime(LocalDateTime.now());
            throw new RuntimeException("严重缺陷-设备维修后更新为正常状态");
        } else if (status.equals("一般缺陷")) {
            deviceDefectRecord.setStatus("正常");
        }
        deviceDefectRecord.setEliminateTime(LocalDateTime.now());
        return updateById(deviceDefectRecord);
    }
}
src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
@@ -5,10 +5,16 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.device.dto.DeviceDefectRecordDto;
import com.ruoyi.device.dto.DeviceRepairDto;
import com.ruoyi.device.execl.DeviceRepairExeclDto;
import com.ruoyi.device.mapper.DeviceDefectRecordMapper;
import com.ruoyi.device.mapper.DeviceRepairMapper;
import com.ruoyi.device.pojo.DeviceDefectRecord;
import com.ruoyi.device.pojo.DeviceLedger;
import com.ruoyi.device.pojo.DeviceRepair;
import com.ruoyi.device.service.DeviceDefectRecordService;
import com.ruoyi.device.service.IDeviceLedgerService;
import com.ruoyi.device.service.IDeviceRepairService;
import com.ruoyi.framework.web.domain.AjaxResult;
import lombok.AllArgsConstructor;
@@ -26,10 +32,12 @@
@Slf4j
public class DeviceRepairServiceImpl extends ServiceImpl<DeviceRepairMapper, DeviceRepair> implements IDeviceRepairService {
    @Autowired
    private DeviceDefectRecordService deviceDefectRecordService;
    @Autowired
    private DeviceRepairMapper deviceRepairMapper;
    @Autowired
    private IDeviceLedgerService deviceLedgerService;
    @Override
    public IPage<DeviceRepairDto> queryPage(Page page, DeviceRepairDto deviceRepairDto) {
@@ -38,6 +46,9 @@
    @Override
    public AjaxResult saveDeviceRepair(DeviceRepair deviceRepair) {
        DeviceLedger byId = deviceLedgerService.getById(deviceRepair.getDeviceLedgerId());
        deviceRepair.setDeviceName(byId.getDeviceName());
        deviceRepair.setDeviceModel(byId.getDeviceModel());
        boolean save = this.save(deviceRepair);
        if (save){
            return AjaxResult.success();
@@ -48,6 +59,18 @@
    @Override
    public AjaxResult updateDeviceRepair(DeviceRepair deviceRepair) {
        if (this.updateById(deviceRepair)) {
            Long id = deviceRepair.getId();
            //
            DeviceDefectRecordDto deviceDefectRecordDto = new DeviceDefectRecordDto();
            deviceDefectRecordDto.setDeviceLedgerId(id);
            deviceDefectRecordDto.setStatus("严重缺陷");
            List<DeviceDefectRecordDto> records = deviceDefectRecordService.listPage(new Page<>(1, -1), deviceDefectRecordDto).getRecords();
            if (!records.isEmpty()){
                records.forEach(deviceDefectRecord -> {
                    deviceDefectRecord.setStatus("正常");
                    deviceDefectRecordService.updateByDDR(deviceDefectRecord);
                });
            }
            return AjaxResult.success();
        }
        return AjaxResult.error();
src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.ruoyi.measuringinstrumentledger.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.measuringinstrumentledger.dto.SparePartsDto;
import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord;
import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
import com.ruoyi.measuringinstrumentledger.service.SparePartsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/spareParts")
@Api(tags = "备件分类接口")
public class SparePartsController {
    @Autowired
    private SparePartsService sparePartsService;
    @GetMapping("/getTree")
    @ApiOperation("备件分类-树结构")
    public AjaxResult getTree(){
        List<SparePartsDto> tree = sparePartsService.getTree();
        return AjaxResult.success(tree);
    }
    @GetMapping("/listPage")
    @ApiOperation("备件分类-分页查询")
    public AjaxResult listPage(Page page, SpareParts spareParts){
        IPage<SparePartsDto> listPage = sparePartsService.listPage(page, spareParts);
        return AjaxResult.success(listPage);
    }
//    @GetMapping("/list")
//    @ApiOperation("备件分类-查询所有")
//    public AjaxResult list(){
//        return AjaxResult.success(sparePartsService.list());
//    }
    @PostMapping("/add")
    @ApiOperation("备件分类-添加")
    @Log(title = "备件分类-添加", businessType = BusinessType.INSERT)
    public AjaxResult add(@RequestBody SpareParts spareParts){
        return AjaxResult.success(sparePartsService.save(spareParts));
    }
    @PostMapping("/update")
    @ApiOperation("备件分类-更新")
    @Log(title = "备件分类-更新", businessType = BusinessType.UPDATE)
    public AjaxResult update(@RequestBody SpareParts spareParts){
        return AjaxResult.success(sparePartsService.updateById(spareParts));
    }
    @DeleteMapping("/delete/{id}")
    @ApiOperation("备件分类-删除")
    @Log(title = "备件分类-删除", businessType = BusinessType.DELETE)
    public AjaxResult delete(@PathVariable Long id){
        return AjaxResult.success(sparePartsService.removeById(id));
    }
}
src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.ruoyi.measuringinstrumentledger.dto;
import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
import lombok.Data;
import java.util.List;
@Data
public class SparePartsDto extends SpareParts {
    /**
     * å¤‡ä»¶åˆ†ç±»çˆ¶åç§°
     */
    private String parentName;
    private List<SparePartsDto> children;
}
src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.measuringinstrumentledger.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.measuringinstrumentledger.dto.SparePartsDto;
import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
import io.lettuce.core.dynamic.annotation.Param;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SparePartsMapper extends BaseMapper<SpareParts> {
    IPage<SparePartsDto> listPage(Page page,@Param("spareParts") SpareParts spareParts);
}
src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SpareParts.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.ruoyi.measuringinstrumentledger.pojo;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Data
@TableName("spare_parts")
public class SpareParts {
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * å¤‡ä»¶åˆ†ç±»åç§°
     */
    private String name;
    /**
     * å¤‡ä»¶åˆ†ç±»ç¼–号
     */
    private String sparePartsNo;
    /**
     * å¤‡ä»¶çˆ¶id
     */
    private Long parentId;
    /**
     * å¤‡ä»¶çŠ¶æ€
     */
    private String status;
    /**
     * å¤‡ä»¶åˆ†ç±»æè¿°
     */
    private String description;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty("创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("更新人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("租户id")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.measuringinstrumentledger.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.measuringinstrumentledger.dto.SparePartsDto;
import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
import java.util.List;
public interface SparePartsService extends IService<SpareParts> {
    IPage<SparePartsDto> listPage(Page page, SpareParts spareParts);
    List<SparePartsDto> getTree();
}
src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.ruoyi.measuringinstrumentledger.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.measuringinstrumentledger.dto.SparePartsDto;
import com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper;
import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
import com.ruoyi.measuringinstrumentledger.service.SparePartsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class SparePartsServiceImpl extends ServiceImpl<SparePartsMapper, SpareParts> implements SparePartsService {
    @Autowired
    private SparePartsMapper sparePartsMapper;
    @Override
    public IPage<SparePartsDto> listPage(Page page, SpareParts spareParts) {
        return sparePartsMapper.listPage(page,spareParts);
    }
    @Override
    public List<SparePartsDto> getTree() {
        SpareParts spareParts = new SpareParts();
        IPage<SparePartsDto> sparePartsDtoIPage = sparePartsMapper.listPage(new Page<>(1, -1), spareParts);
        List<SparePartsDto> records = sparePartsDtoIPage.getRecords();
        return buildTree(records);
    }
    /**
     * å°†æ‰å¹³ç»“构数据转换为树形结构
     * @param flatData æ‰å¹³èŠ‚ç‚¹åˆ—è¡¨
     * @return æ ‘形结构根节点列表
     */
    public static List<SparePartsDto> buildTree(List<SparePartsDto> flatData) {
        List<SparePartsDto> result = new ArrayList<>();
        if (flatData == null || flatData.isEmpty()) {
            return result;  // ç©ºè¾“入直接返回空列表
        }
        // 1. åˆ›å»ºèŠ‚ç‚¹æ˜ å°„è¡¨ï¼Œå­˜å‚¨æ‰€æœ‰èŠ‚ç‚¹å¹¶åˆå§‹åŒ–å­èŠ‚ç‚¹åˆ—è¡¨
        Map<Long, SparePartsDto> nodeMap = new HashMap<>();
        for (SparePartsDto node : flatData) {
            // ç¡®ä¿å­èŠ‚ç‚¹åˆ—è¡¨åˆå§‹åŒ–(避免空指针异常)
            if (node.getChildren() == null) {
                node.setChildren(new ArrayList<>());
            }
            nodeMap.put(node.getId(), node);
        }
        // 2. æž„建树形结构
        for (SparePartsDto node : flatData) {
            Long parentId = node.getParentId();
            if (parentId == null || !nodeMap.containsKey(parentId)) {
                // æ— çˆ¶èŠ‚ç‚¹æˆ–çˆ¶èŠ‚ç‚¹ä¸å­˜åœ¨ï¼Œä½œä¸ºæ ¹èŠ‚ç‚¹
                result.add(node);
            } else {
                // æœ‰çˆ¶èŠ‚ç‚¹ï¼Œæ·»åŠ åˆ°çˆ¶èŠ‚ç‚¹çš„å­èŠ‚ç‚¹åˆ—è¡¨
                SparePartsDto parentNode = nodeMap.get(parentId);
                parentNode.getChildren().add(node);
            }
        }
        return result;
    }
}
src/main/resources/mapper/device/DeviceDefectRecordMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
<?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="com.ruoyi.device.mapper.DeviceDefectRecordMapper">
    <select id="listPage" resultType="com.ruoyi.device.dto.DeviceDefectRecordDto">
        select ddr.*,dl.device_name,dl.device_model
        from device_defect_record ddr
        left join device_ledger dl on ddr.device_ledger_id = dl.id
        <where>
            1=1
            <if test="deviceDefectRecordDto.deviceLedgerId != null">
                and ddr.device_ledger_id = #{deviceDefectRecordDto.deviceLedgerId}
            </if>
            <if test="deviceDefectRecordDto.deviceName != null and deviceDefectRecordDto.deviceName != ''">
                and dl.device_name like concat('%',#{deviceDefectRecordDto.deviceName},'%')
            </if>
            <if test="deviceDefectRecordDto.status != null">
                and ddr.status = #{deviceDefectRecordDto.status}
            </if>
        </where>
    </select>
</mapper>
src/main/resources/mapper/measuringinstrumentledger/SparePartsMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<?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="com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper">
    <select id="listPage" resultType="com.ruoyi.measuringinstrumentledger.dto.SparePartsDto">
        select sp.*,sp1.name as parentName from spare_parts sp
        left join spare_parts sp1 on sp1.id = sp.parent_id
        <where>
            <if test="spareParts.name != null">
                and name like concat('%',#{spareParts.name},'%')
            </if>
        </where>
    </select>
</mapper>