feat:完成 1、点检列表、导出。2、保养列表、导出。3、维修列表、导出。4、关键件导出 5、备件导出。

plp
HuangHuiKang 2 weeks ago
parent 642fbaea46
commit 0f4126a59c

@ -29,6 +29,10 @@ public class DeviceModelAttributeRespVO {
@ExcelProperty("点位类型")
private String attributeType;
@Schema(description = "类型名称", example = "1")
@ExcelProperty("类型名称")
private String typeName;
@Schema(description = "数据类型", example = "2")
@ExcelProperty("数据类型")
private String dataType;

@ -11,6 +11,9 @@ import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.io.IOException;
import java.util.stream.Collectors;
@ -106,4 +109,23 @@ public class CriticalComponentController {
BeanUtils.toBean(list, CriticalComponentRespVO.class));
}
@GetMapping("/export-device-component")
@Operation(summary = "根据设备Id导出设备关键件 Excel")
@PreAuthorize("@ss.hasPermission('mes:critical-component:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportDeviceComponent(@RequestParam(name = "id") Long id,
HttpServletResponse response) throws IOException {
List<CriticalComponentExcelVO> list = criticalComponentService.exportDeviceComponent(id);
// 设置响应头
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode("设备关键件.xls", "UTF-8"));
response.setHeader("Content-Encoding", "identity");
String fileName = String.format("设备关键件_%s.xls", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
// 导出 Excel
ExcelUtils.write(response, fileName, "数据", CriticalComponentExcelVO.class,list);
}
}

@ -0,0 +1,44 @@
package cn.iocoder.yudao.module.mes.controller.admin.criticalcomponent.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 设备关键件导出实体类 Resp VO")
@Data
@ExcelIgnoreUnannotated
public class CriticalComponentExcelVO {
@Schema(description = "主键ID")
private Long id;
@Schema(description = "编码")
@ExcelProperty("编码")
private String code;
@Schema(description = "名称")
@ExcelProperty("名称")
private String name;
@Schema(description = "描述")
@ExcelProperty("描述")
private String description;
@Schema(description = "备注")
@ExcelProperty("备注")
private String remark;
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
@ColumnWidth(20)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
}

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.mes.controller.admin.deviceledger;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.utils.ResumeNameUtils;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
@ -14,6 +15,9 @@ import io.swagger.v3.oas.annotations.Operation;
import javax.validation.*;
import javax.servlet.http.*;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.io.IOException;
import java.util.stream.Collectors;
@ -139,4 +143,21 @@ public class DeviceLedgerController {
}
@GetMapping("/export-spare-based")
@Operation(summary = "根据设备Id导出备件")
@PreAuthorize("@ss.hasPermission('mes:device-ledger:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportSpareBased(@RequestParam(name = "id") Long id,
HttpServletResponse response) throws IOException {
List<ErpProductVO> list = deviceLedgerService.exportSpareBased(id);
// 设置响应头
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode("备件.xls", "UTF-8"));
response.setHeader("Content-Encoding", "identity");
String fileName = String.format("备件_%s.xls", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
// 导出 Excel
ExcelUtils.write(response, fileName, "数据", ErpProductVO.class,list);
}
}

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 设备备件导出 Resp VO")
@Data
@ExcelIgnoreUnannotated
public class ErpProductVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24467")
private Long id;
@Schema(description = "编码")
@ExcelProperty("编码")
private String barCode;
@Schema(description = "名称")
@ExcelProperty("名称")
private String name;
@Schema(description = "描述")
@ExcelProperty("描述")
private String subCategoryName;
@Schema(description = "单位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "8869")
private Long unitId;
@Schema(description = "单位")
@ExcelProperty("单位")
private String unitName;
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
@ColumnWidth(20)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
}

@ -7,9 +7,11 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.*;
import cn.iocoder.yudao.module.mes.controller.admin.ticketresults.vo.TicketInspectionExportVO;
import cn.iocoder.yudao.module.mes.controller.admin.ticketresults.vo.TicketResultsSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.ticketresults.TicketResultsDO;
import cn.iocoder.yudao.module.mes.service.dvrepair.DvRepairService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
@ -24,6 +26,9 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@ -160,6 +165,43 @@ public class DvRepairController {
return success(true);
}
@GetMapping("/getRepairListByDeviceId")
@Operation(summary = "根据设备Id获得维修历史记录")
@Parameter(name = "deviceId", description = "设备Id", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:ticket-management:query')")
public CommonResult<List<DvRepairLineRespVO>> getRepairListByDeviceId(@RequestParam("deviceId") Long deviceId,
@RequestParam(name = "startTime",required = false) String startTime,
@RequestParam(name = "endTime",required = false) String endTime) {
List<DvRepairLineRespVO> dvRepairDOList = dvRepairService.getRepairListByDeviceId(deviceId,startTime,endTime,null);
return success(dvRepairDOList);
}
@GetMapping("/export-repair-excel")
@Operation(summary = "导出维修历史记录 Excel")
@PreAuthorize("@ss.hasPermission('mes:ticket-results:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportRepairExcel(@RequestParam("deviceId") Long deviceId,
@RequestParam(name = "ids",required = false) String ids,
@RequestParam(name = "startTime",required = false) String startTime,
@RequestParam(name = "endTime",required = false) String endTime,
HttpServletResponse response) throws IOException {
// 查询数据
List<DvRepairLineRespVO> dvRepairDOList = dvRepairService.getRepairListByDeviceId(deviceId,startTime,endTime,ids);
// 设置响应头
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode("维修记录.xls", "UTF-8"));
response.setHeader("Content-Encoding", "identity");
// 导出Excel
String fileName = String.format("维修记录_%s.xls", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
ExcelUtils.write(response, fileName, "维修记录", DvRepairLineRespVO.class, dvRepairDOList);
}
private PageResult<DvRepairRespVO> buildCreatorName(PageResult<DvRepairRespVO> dvSubjectRespVOPageResult) {
for (DvRepairRespVO dvSubjectRespVO : dvSubjectRespVOPageResult.getList()) {
if (dvSubjectRespVO.getAcceptedBy() !=null) {

@ -0,0 +1,38 @@
package cn.iocoder.yudao.module.mes.controller.admin.dvrepair.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
*
*/
@Getter
@AllArgsConstructor
public enum RepairResultEnum {
PENDING(0, "待维修"),
PASS(1, "OK"),
FAIL(2, "NG");
private final Integer code;
private final String desc;
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
public static String getDescByCode(Integer code) {
if (code == null) {
return "";
}
for (RepairResultEnum value : values()) {
if (value.code.equals(code)) {
return value.desc;
}
}
return "未知";
}
}

@ -0,0 +1,59 @@
package cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 设备维修记录 Resp VO")
@Data
@ExcelIgnoreUnannotated
public class DvRepairLineRespVO {
@Schema(description = "项目行Id")
private Long id;
@Schema(description = "维修单编号")
@ExcelProperty("维修单编号")
private String repairCode;
@Schema(description = "维修单名称")
@ExcelProperty("维修单名称")
private String repairName;
@Schema(description = "维修完成日期")
@ExcelProperty("维修完成日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime finishDate;
@Schema(description = "项目编码")
@ExcelProperty("项目编码")
private String subjectCode;
@Schema(description = "项目名称")
@ExcelProperty("项目名称")
private String subjectName;
@Schema(description = "项目内容")
@ExcelProperty("项目内容")
private String subjectContent;
@Schema(description = "备注")
@ExcelProperty("备注")
private String remark;
@Schema(description = "维修结果 0-待维修 1-通过 2-不通过")
private Integer result;
@Schema(description = "维修结果")
@ExcelProperty("维修结果")
private String repairResult;
}

@ -156,7 +156,7 @@ public class TicketManagementController {
return success(ticketResultsDOList);
}
@GetMapping("/exportExcelInspection")
@GetMapping("/export-excel-inspection")
@Operation(summary = "导出点检历史记录 Excel")
@PreAuthorize("@ss.hasPermission('mes:ticket-results:export')")
@ApiAccessLog(operateType = EXPORT)
@ -199,7 +199,7 @@ public class TicketManagementController {
}
@GetMapping("/exportExcelMaintenance")
@GetMapping("/export-excel-maintenance")
@Operation(summary = "导出保养历史记录 Excel")
@PreAuthorize("@ss.hasPermission('mes:ticket-results:export')")
@ApiAccessLog(operateType = EXPORT)

@ -73,7 +73,7 @@ public class DvRepairLineDO extends BaseDO {
private String remark;
/**
*
* 0- 1- 2-
*/
private Integer result;

@ -53,4 +53,7 @@ public interface CriticalComponentService {
PageResult<CriticalComponentDO> getCriticalComponentPage(CriticalComponentPageReqVO pageReqVO);
List<CriticalComponentDO> getCriticalComponentList();
List<CriticalComponentExcelVO> exportDeviceComponent(Long id);
}

@ -161,4 +161,33 @@ public class CriticalComponentServiceImpl implements CriticalComponentService {
return criticalComponentMapper.selectList();
}
@Override
public List<CriticalComponentExcelVO> exportDeviceComponent(Long id) {
DeviceLedgerDO deviceLedgerDO = deviceLedgerMapper.selectById(id);
if (deviceLedgerDO == null){
throw exception(DEVICE_LEDGER_EXISTS);
}
if (StringUtils.isBlank(deviceLedgerDO.getComponentId())){
return new ArrayList<>();
}
// 将逗号分隔的字符串转换为Long类型的List
List<Long> idList = Arrays.stream(deviceLedgerDO.getComponentId().split(","))
.map(String::trim) // 去除可能存在的空格
.map(Long::valueOf)
.collect(Collectors.toList());
if (idList.isEmpty()) {
return new ArrayList<>();
}
// 查询关键组件信息
List<CriticalComponentDO> componentList = criticalComponentMapper.selectList(
Wrappers.<CriticalComponentDO>lambdaQuery()
.in(CriticalComponentDO::getId, idList)
.orderByDesc(CriticalComponentDO::getCreateTime)
);
return BeanUtils.toBean(componentList,CriticalComponentExcelVO.class);
}
}

@ -5,6 +5,7 @@ import javax.validation.*;
import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -76,4 +77,5 @@ public interface DeviceLedgerService {
}
List<ErpProductVO> exportSpareBased(Long id);
}

@ -3,12 +3,14 @@ package cn.iocoder.yudao.module.mes.service.deviceledger;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
import cn.iocoder.yudao.module.erp.dal.mysql.mold.MoldMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductMapper;
import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService;
import cn.iocoder.yudao.module.mes.controller.admin.ticketmanagement.enums.PlanTypeEnum;
import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO;
@ -38,6 +40,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.dal.mysql.deviceledger.DeviceLedgerMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
@ -71,6 +74,9 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService {
@Resource
private MoldMapper moldMapper;
@Resource
private ErpProductUnitService productUnitService;
@Override
public Long createDeviceLedger(DeviceLedgerSaveReqVO createReqVO) {
@ -241,5 +247,39 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService {
return BeanUtils.toBean(list, DeviceLedgerRespVO.class);
}
@Override
public List<ErpProductVO> exportSpareBased(Long id) {
DeviceLedgerDO deviceLedgerDO = deviceLedgerMapper.selectById(id);
if (deviceLedgerDO == null){
throw exception(DEVICE_LEDGER_EXISTS);
}
List<ErpProductDO> beijianList = new ArrayList<>();
if (StringUtils.isNotBlank(deviceLedgerDO.getBeijianId())) {
// 将逗号分隔的字符串转换为Long类型的List
List<Long> idList = Arrays.stream(deviceLedgerDO.getBeijianId().split(","))
.map(String::trim) // 去除可能存在的空格
.map(Long::valueOf)
.collect(Collectors.toList());
for (Long beijianId : idList) {
ErpProductDO beijianDO = productMapper.selectById(beijianId);
if(beijianDO!=null){
beijianList.add(beijianDO);
}
}
}
Map<Long, ErpProductUnitDO> unitMap = productUnitService.getProductUnitMap(
convertSet(beijianList, ErpProductDO::getUnitId));
List<ErpProductVO> erpProductVOList = BeanUtils.toBean(beijianList, ErpProductVO.class, product -> {
MapUtils.findAndThen(unitMap, product.getUnitId(),
unit -> product.setUnitName(unit.getName()));
});
return erpProductVOList;
}
}

@ -1,10 +1,7 @@
package cn.iocoder.yudao.module.mes.service.dvrepair;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepairLineSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepairPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepairSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepirUpdateReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairLineDO;
@ -71,4 +68,6 @@ public interface DvRepairService {
void batchUpdateTicketResults(@Valid List<DvRepairLineSaveReqVO> updateReqVOList);
void updateDvRepairStatus(@Valid DvRepirUpdateReqVO updateReqVO);
List<DvRepairLineRespVO> getRepairListByDeviceId(Long deviceId, String startTime, String endTime,String ids);
}

@ -5,10 +5,8 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodel.DeviceModelDO;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepairLineSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepairPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepairSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.DvRepirUpdateReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.enums.RepairResultEnum;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.*;
import cn.iocoder.yudao.module.mes.controller.admin.ticketresults.enums.JobResultEnum;
import cn.iocoder.yudao.module.mes.controller.admin.ticketresults.vo.TicketResultsSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.devicetype.DeviceTypeDO;
@ -18,18 +16,21 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.ticketmanagement.TicketManagem
import cn.iocoder.yudao.module.mes.dal.dataobject.ticketresults.TicketResultsDO;
import cn.iocoder.yudao.module.mes.dal.mysql.dvrepair.DvRepairLineMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.dvrepair.DvRepairMapper;
import com.alibaba.excel.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_MODEL_CODE_EXISTS;
@ -42,6 +43,7 @@ import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
*/
@Service
@Validated
@Slf4j
public class DvRepairServiceImpl implements DvRepairService {
@Resource
@ -191,6 +193,115 @@ public class DvRepairServiceImpl implements DvRepairService {
}
@Override
public List<DvRepairLineRespVO> getRepairListByDeviceId(Long deviceId, String startTime, String endTime,String ids) {
List<DvRepairLineRespVO> dvRepairLineRespVOS = new ArrayList<>();
LambdaQueryWrapper<DvRepairDO> wrapper = Wrappers.<DvRepairDO>lambdaQuery()
.eq(DvRepairDO::getDeviceId, deviceId);
// 处理开始时间
if (StringUtils.isNotBlank(startTime)) {
try {
LocalDateTime parseToLocalDateTime = parseToLocalDateTime(startTime);
wrapper.ge(DvRepairDO::getFinishDate, parseToLocalDateTime);
} catch (Exception e) {
log.error("开始时间格式错误: {}, 异常: {}", startTime, e.getMessage(), e);
}
}
// 处理结束时间
if (StringUtils.isNotBlank(endTime)) {
try {
LocalDateTime parseToLocalDateTime = parseToLocalDateTime(endTime);
wrapper.le(DvRepairDO::getFinishDate, parseToLocalDateTime);
} catch (Exception e) {
log.error("结束时间格式错误: {}, 异常: {}", startTime, e.getMessage(), e);
}
}
List<DvRepairDO> dvRepairDOS = dvRepairMapper.selectList(wrapper);
for (DvRepairDO dvRepairDO : dvRepairDOS) {
LambdaQueryWrapper<DvRepairLineDO> dvRepairLineDOLambdaQueryWrapper = Wrappers.<DvRepairLineDO>lambdaQuery()
.eq(DvRepairLineDO::getRepairId, dvRepairDO.getId())
.orderByDesc(DvRepairLineDO::getCreateTime);
List<DvRepairLineDO> dvRepairLineDOS = dvRepairLineMapper.selectList(dvRepairLineDOLambdaQueryWrapper);
if (!dvRepairLineDOS.isEmpty()) {
List<DvRepairLineRespVO> dvRepairLineRespVOList = dvRepairLineDOS.stream()
.map(doItem -> {
DvRepairLineRespVO vo = new DvRepairLineRespVO();
BeanUtils.copyProperties(doItem, vo);
vo.setRepairCode(dvRepairDO.getRepairCode());
vo.setRepairName(dvRepairDO.getRepairName());
vo.setFinishDate(dvRepairDO.getFinishDate());
// 设置维修结果描述
vo.setRepairResult(RepairResultEnum.getDescByCode(doItem.getResult()));
return vo;
})
.collect(Collectors.toList());
dvRepairLineRespVOS.addAll(dvRepairLineRespVOList);
}
}
// 在最终结果上过滤ids
if (StringUtils.isNotBlank(ids)) {
List<Long> idList = Arrays.stream(ids.split(","))
.map(String::trim)
.filter(StringUtils::isNotBlank)
.map(Long::valueOf)
.collect(Collectors.toList());
if (!idList.isEmpty()) {
dvRepairLineRespVOS = dvRepairLineRespVOS.stream()
.filter(vo -> idList.contains(vo.getId())) // 假设vo有getId()方法
.collect(Collectors.toList());
}
}
return dvRepairLineRespVOS;
}
private LocalDateTime parseToLocalDateTime(String timeStr) {
if (StringUtils.isBlank(timeStr)) {
return null;
}
timeStr = timeStr.trim();
try {
// 尝试解析 yyyy-MM-dd HH:mm:ss
if (timeStr.length() == 19) {
return LocalDateTime.parse(timeStr,
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
// 尝试解析 yyyy-MM-dd
else if (timeStr.length() == 10) {
return LocalDate.parse(timeStr,
DateTimeFormatter.ofPattern("yyyy-MM-dd"))
.atStartOfDay();
}
// 尝试解析 yyyy/MM/dd HH:mm:ss
else if (timeStr.contains("/")) {
return LocalDateTime.parse(timeStr.replace("/", "-"),
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
// 尝试ISO格式
else {
return LocalDateTime.parse(timeStr,
DateTimeFormatter.ISO_LOCAL_DATE_TIME);
}
} catch (Exception e) {
throw new IllegalArgumentException("时间格式不支持: " + timeStr, e);
}
}
private void handleInspectionResult(List<DvRepairLineSaveReqVO> updateReqVOList) {
if (CollectionUtils.isEmpty(updateReqVOList)) {

Loading…
Cancel
Save