1.施工信息问题修复

This commit is contained in:
cuizhibin 2025-07-03 16:28:21 +08:00
parent 8cba5fe502
commit 3dd13474b6
11 changed files with 175 additions and 46 deletions

View File

@ -0,0 +1,20 @@
package com.dite.znpt.config;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class CustomLocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@Override
public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
String date = p.getText();
return LocalDateTimeUtil.parse(date, FORMATTER);
}
}

View File

@ -9,6 +9,8 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import java.time.LocalDateTime;
/**
* @date 2022/3/20 10:34 上午
* @description:
@ -25,6 +27,7 @@ public class JacksonConfig {
SimpleModule simpleModule = new SimpleModule();
//JSON Long ==> String
simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
simpleModule.addDeserializer(LocalDateTime.class, new CustomLocalDateTimeDeserializer());
objectMapper.registerModule(simpleModule);
return objectMapper;
}

View File

@ -0,0 +1,41 @@
package com.dite.znpt.domain.vo;
import com.dite.znpt.util.ValidationGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
@Data
@ApiModel("缺陷记录列表请求实体")
public class DefectMarkReq implements Serializable {
@Serial
private static final long serialVersionUID = 585419070823466048L;
@ApiModelProperty("图片id")
private String imageId;
@ApiModelProperty("图片集id")
private String collectId;
@NotBlank(groups = {ValidationGroup.Request.class}, message = "模型id不能为空")
@ApiModelProperty("模型id")
private String modelId;
@NotNull(groups = {ValidationGroup.Request.class}, message = "模型置信度不能为空")
@Min(value = 0, groups = {ValidationGroup.Request.class}, message = "模型置信度只能在0-100之间")
@Max(value = 100, groups = {ValidationGroup.Request.class}, message = "模型置信度只能在0-100之间")
@ApiModelProperty("置信度")
private float confThreshold;
@ApiModelProperty("缺陷类型")
private List<String> defectTypeList;
}

View File

@ -0,0 +1,57 @@
package com.dite.znpt.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author huise23
* @date 2025/07/03 16:25
* @Description: 施工信息表请求类
*/
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="TConstruction请求对象", description="施工信息表")
public class TConstructionReq implements Serializable {
@Serial
private static final long serialVersionUID = 583631934062856440L;
@ApiModelProperty("施工id")
private String constructionId;
@ApiModelProperty("项目id")
private String projectId;
@ApiModelProperty("机组id")
private String turbineCode;
@ApiModelProperty("作业开始时间")
private LocalDateTime startTime;
@ApiModelProperty("作业结束时间")
private LocalDateTime endTime;
@ApiModelProperty("温度(℃)")
private Double temperature;
@ApiModelProperty("风速(m/s)")
private Double windSpeed;
@ApiModelProperty("采集图片数量")
private Integer imageCount;
@ApiModelProperty("天气id")
private String weatherCode;
@ApiModelProperty("施工状态")
private String statusId;
@ApiModelProperty("当前时间")
private LocalDateTime createdAt;
}

View File

@ -13,7 +13,7 @@ import java.util.List;
*/
@Getter
public enum DefectTypeEnum {
CRAZE("CRAZE", "合缝开裂"),
CRAZE("BMLW", "合缝开裂"),
ABRASION("ABRASION", "合缝磨损"),
LEATHER_BREAKAGE("LEATHER_BREAKAGE", "蒙皮破损"),
FABRIC_BREAKAGE("FABRIC_BREAKAGE", "布层破损"),

View File

@ -3,6 +3,7 @@ package com.dite.znpt.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dite.znpt.domain.entity.TConstructionEntity;
import com.dite.znpt.domain.vo.TConstructionListReq;
import com.dite.znpt.domain.vo.TConstructionReq;
import com.dite.znpt.domain.vo.TConstructionResp;
import java.util.List;
@ -37,20 +38,20 @@ public interface TConstructionService extends IService<TConstructionEntity> {
/**
* 功能描述新增施工信息
*
* @param tConstruction 施工信息
* @param req 施工信息
* @author huise23
* @date 2025/04/11 23:17
**/
void saveData(TConstructionEntity tConstruction);
void saveData(TConstructionReq req);
/**
* 功能描述更新施工信息
*
* @param tConstruction 施工信息
* @param req 施工信息
* @author huise23
* @date 2025/04/11 23:17
**/
void updateData(TConstructionEntity tConstruction);
void updateData(TConstructionReq req);
/**
* 功能描述删除施工信息

View File

@ -1,15 +1,17 @@
package com.dite.znpt.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dite.znpt.domain.entity.TConstructionEntity;
import com.dite.znpt.domain.vo.TConstructionListReq;
import com.dite.znpt.domain.vo.TConstructionReq;
import com.dite.znpt.domain.vo.TConstructionResp;
import com.dite.znpt.service.TConstructionService;
import com.dite.znpt.mapper.TConstructionMapper;
import org.springframework.stereotype.Service;
import cn.hutool.core.collection.CollUtil;
import lombok.RequiredArgsConstructor;
import com.dite.znpt.service.TConstructionService;
import com.dite.znpt.util.PageUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
@ -60,27 +62,25 @@ public class TConstructionServiceImpl extends ServiceImpl<TConstructionMapper, T
/**
* 功能描述新增施工信息
*
* @param tConstruction 施工信息
* @param req 施工信息
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void saveData(TConstructionEntity tConstruction) {
// todo 校验
save(tConstruction);
public void saveData(TConstructionReq req) {
save(BeanUtil.copyProperties(req, TConstructionEntity.class));
}
/**
* 功能描述更新施工信息
*
* @param tConstruction 施工信息
* @param req 施工信息
* @author huise23
* @date 2025/04/11 23:17
**/
@Override
public void updateData(TConstructionEntity tConstruction) {
// todo 校验
updateById(tConstruction);
public void updateData(TConstructionReq req) {
updateById(BeanUtil.copyProperties(req, TConstructionEntity.class));
}
/**

View File

@ -1,7 +1,5 @@
package com.dite.znpt.util;
import lombok.Data;
/**
* @author Bear.G
* @date 2025/5/19/周一 15:09
@ -11,4 +9,5 @@ import lombok.Data;
public interface ValidationGroup {
interface Insert {} //
interface Update {} //
interface Request {} // 其他类型
}

View File

@ -2,19 +2,25 @@ package com.dite.znpt.web.controller;
import com.dite.znpt.constant.Constants;
import com.dite.znpt.domain.PageResult;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.entity.DefectEntity;
import com.dite.znpt.domain.vo.DefectListReq;
import com.dite.znpt.domain.vo.DefectMarkReq;
import com.dite.znpt.domain.vo.DefectReq;
import com.dite.znpt.domain.vo.DefectResp;
import com.dite.znpt.domain.entity.DefectEntity;
import com.dite.znpt.service.DefectService;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.PageResult;
import com.dite.znpt.service.impl.MultiModelYoloService;
import com.dite.znpt.util.ValidationGroup;
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -30,6 +36,8 @@ import java.util.List;
public class DefectController {
@Resource
private DefectService defectService;
@Autowired
private MultiModelYoloService multiModelYoloService;
@ApiOperation(value = "分页查询缺陷记录列表", httpMethod = "GET")
@GetMapping("/page")
@ -87,5 +95,18 @@ public class DefectController {
}
return Result.okM("导入"+dataList.size()+"条数据");
}
@ApiOperation(value = "单图自动标注缺陷", httpMethod = "POST")
@PostMapping("/run")
public ResponseEntity<String> runBatch(@Validated(ValidationGroup.Request.class) @RequestBody DefectMarkReq markReq,
@RequestParam("outputDir") String outputDir,
@RequestParam("confThreshold") Float confThreshold) {
try {
// multiModelYoloService.runFolderDetection(modelId, inputDir, outputDir, confThreshold);
return ResponseEntity.ok("批量推理完成");
} catch (Exception e) {
return ResponseEntity.status(500).body("处理失败:" + e.getMessage());
}
}
}

View File

@ -13,7 +13,6 @@ import com.dite.znpt.util.ValidationGroup;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -66,18 +65,5 @@ public class ModelConfigController {
modelConfigService.deleteById(modelId);
return Result.ok();
}
@PostMapping("/run")
public ResponseEntity<String> runBatch(@RequestParam("modelId") String modelId,
@RequestParam("inputDir") String inputDir,
@RequestParam("outputDir") String outputDir,
@RequestParam("confThreshold") Float confThreshold) {
try {
multiModelYoloService.runFolderDetection(modelId, inputDir, outputDir, confThreshold);
return ResponseEntity.ok("批量推理完成");
} catch (Exception e) {
return ResponseEntity.status(500).body("处理失败:" + e.getMessage());
}
}
}

View File

@ -2,12 +2,13 @@ package com.dite.znpt.web.controller;
import com.dite.znpt.constant.Constants;
import com.dite.znpt.domain.vo.TConstructionListReq;
import com.dite.znpt.domain.vo.TConstructionResp;
import com.dite.znpt.domain.entity.TConstructionEntity;
import com.dite.znpt.service.TConstructionService;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.PageResult;
import com.dite.znpt.domain.Result;
import com.dite.znpt.domain.entity.TConstructionEntity;
import com.dite.znpt.domain.vo.TConstructionListReq;
import com.dite.znpt.domain.vo.TConstructionReq;
import com.dite.znpt.domain.vo.TConstructionResp;
import com.dite.znpt.service.TConstructionService;
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
@ -21,7 +22,7 @@ import java.util.List;
/**
* @author huise23
* @date 2025/04/11 23:17
* @date 2025/07/03 16:25
*/
@Api(tags = "施工信息")
@RestController
@ -44,15 +45,15 @@ public class TConstructionController {
@ApiOperation(value = "新增施工信息", httpMethod = "POST")
@PostMapping
public Result<Object> add(@RequestBody TConstructionEntity tConstruction) {
tConstructionService.saveData(tConstruction);
public Result<Object> add(@RequestBody TConstructionReq tConstructionReq) {
tConstructionService.saveData(tConstructionReq);
return Result.ok();
}
@ApiOperation(value = "修改施工信息", httpMethod = "PUT")
@PutMapping
public Result<Object> edit(@RequestBody TConstructionEntity tConstruction) {
tConstructionService.updateData(tConstruction);
public Result<Object> edit(@RequestBody TConstructionReq tConstructionReq) {
tConstructionService.updateData(tConstructionReq);
return Result.ok();
}