Merge branch 'plp'

plp
86158 2 weeks ago
commit 46453c9664

@ -112,6 +112,8 @@ public interface ErrorCodeConstants {
ErrorCode ZJ_SCHEMA_NOT_EXISTS = new ErrorCode(5_0092, "检验方案不存在");
ErrorCode ZJ_PRODUCT_NOT_EXISTS = new ErrorCode(5_0093, "检验参数不存在");
ErrorCode ZJ_PRODUCT_RECORD_NOT_EXISTS = new ErrorCode(5_0093, "检验参数不存在");
ErrorCode ZJ_TASK_NOT_EXISTS = new ErrorCode(5_0094, "检验任务不存在");
ErrorCode ZJ_TASK_RESULTS_NOT_EXISTS = new ErrorCode(5_0095, "检验任务-检验结果不存在");

@ -85,6 +85,14 @@ public class ZjSchemaController {
return success(BeanUtils.toBean(pageResult, ZjSchemaRespVO.class));
}
@GetMapping("/list")
@Operation(summary = "获得检验方案列表")
@PreAuthorize("@ss.hasPermission('mes:zj-schema:query')")
public CommonResult<List<ZjSchemaDO>> getZjSchemaList() {
List<ZjSchemaDO> zjSchemaDOList = zjSchemaService.getZjSchemaList();
return success(zjSchemaDOList);
}
@GetMapping("/export-excel")
@Operation(summary = "导出检验方案 Excel")
@PreAuthorize("@ss.hasPermission('mes:zj-schema:export')")

@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.mes.controller.admin.zjtask;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.mes.controller.admin.zjtask.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjtask.ZjTaskDO;
import cn.iocoder.yudao.module.mes.service.zjtask.ZjTaskService;
@Tag(name = "管理后台 - 质量管理-检验任务")
@RestController
@RequestMapping("/mes/zj-task")
@Validated
public class ZjTaskController {
@Resource
private ZjTaskService zjTaskService;
@PostMapping("/create")
@Operation(summary = "创建质量管理-检验任务")
@PreAuthorize("@ss.hasPermission('mes:zj-task:create')")
public CommonResult<Long> createZjTask(@Valid @RequestBody ZjTaskSaveReqVO createReqVO) {
return success(zjTaskService.createZjTask(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新质量管理-检验任务")
@PreAuthorize("@ss.hasPermission('mes:zj-task:update')")
public CommonResult<Boolean> updateZjTask(@Valid @RequestBody ZjTaskSaveReqVO updateReqVO) {
zjTaskService.updateZjTask(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除质量管理-检验任务")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:zj-task:delete')")
public CommonResult<Boolean> deleteZjTask(@RequestParam("id") Long id) {
zjTaskService.deleteZjTask(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得质量管理-检验任务")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:zj-task:query')")
public CommonResult<ZjTaskRespVO> getZjTask(@RequestParam("id") Long id) {
ZjTaskDO zjTask = zjTaskService.getZjTask(id);
return success(BeanUtils.toBean(zjTask, ZjTaskRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得质量管理-检验任务分页")
@PreAuthorize("@ss.hasPermission('mes:zj-task:query')")
public CommonResult<PageResult<ZjTaskRespVO>> getZjTaskPage(@Valid ZjTaskPageReqVO pageReqVO) {
PageResult<ZjTaskDO> pageResult = zjTaskService.getZjTaskPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ZjTaskRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出质量管理-检验任务 Excel")
@PreAuthorize("@ss.hasPermission('mes:zj-task:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportZjTaskExcel(@Valid ZjTaskPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ZjTaskDO> list = zjTaskService.getZjTaskPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "质量管理-检验任务.xls", "数据", ZjTaskRespVO.class,
BeanUtils.toBean(list, ZjTaskRespVO.class));
}
}

@ -0,0 +1,68 @@
package cn.iocoder.yudao.module.mes.controller.admin.zjtask.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 质量管理-检验任务分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ZjTaskPageReqVO extends PageParam {
@Schema(description = "单号")
private String code;
@Schema(description = "名称", example = "王五")
private String name;
@Schema(description = "质检分类", example = "2")
private String type;
@Schema(description = "检验方案id", example = "3630")
private Long schemaId;
@Schema(description = "检验方案名称", example = "赵六")
private String schemaName;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "工单")
private String ticket;
@Schema(description = "工序", example = "1")
private String orgType;
@Schema(description = "负责人id", example = "6442")
private Long managerId;
@Schema(description = "负责人名称", example = "张三")
private String managerName;
@Schema(description = "执行人id", example = "10505")
private Long executorId;
@Schema(description = "执行人名称", example = "王五")
private String executorName;
@Schema(description = "状态", example = "1")
private Integer status;
@Schema(description = "结果")
private String result;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "执行时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] executeTime;
}

@ -0,0 +1,86 @@
package cn.iocoder.yudao.module.mes.controller.admin.zjtask.vo;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 质量管理-检验任务 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ZjTaskRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31746")
@ExcelProperty("ID")
private Long id;
@Schema(description = "单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("单号")
private String code;
@Schema(description = "名称", example = "王五")
// @ExcelProperty("名称")
private String name;
@Schema(description = "质检分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("质检分类")
private String type;
@Schema(description = "检验方案id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3630")
@ExcelProperty("检验方案id")
private Long schemaId;
@Schema(description = "检验方案名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@ExcelProperty("检验方案名称")
private String schemaName;
@Schema(description = "备注", example = "你说的对")
// @ExcelProperty("备注")
private String remark;
@Schema(description = "工单", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("工单")
private String ticket;
@Schema(description = "工序", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("工序")
private String orgType;
@Schema(description = "负责人id", example = "6442")
@ExcelProperty("负责人id")
private Long managerId;
@Schema(description = "负责人名称", example = "张三")
@ExcelProperty("负责人名称")
private String managerName;
@Schema(description = "执行人id", example = "10505")
@ExcelProperty("执行人id")
private Long executorId;
@Schema(description = "执行人名称", example = "王五")
@ExcelProperty("执行人名称")
private String executorName;
@Schema(description = "状态", example = "1")
@ExcelProperty("状态0=未作业1=已作业")
private Integer status;
@Schema(description = "结果")
@ExcelProperty("结果0=待完成1=通过2=不通过)")
private String result;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
@ColumnWidth(20)
private LocalDateTime createTime;
@Schema(description = "执行时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("执行时间")
@ColumnWidth(20)
private LocalDateTime executeTime;
}

@ -0,0 +1,68 @@
package cn.iocoder.yudao.module.mes.controller.admin.zjtask.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
import java.util.*;
import javax.validation.constraints.*;
@Schema(description = "管理后台 - 质量管理-检验任务新增/修改 Request VO")
@Data
public class ZjTaskSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31746")
private Long id;
@Schema(description = "单号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "单号不能为空")
private String code;
@Schema(description = "名称", example = "王五")
private String name;
@Schema(description = "质检分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "质检分类不能为空")
private String type;
@Schema(description = "检验方案id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3630")
@NotNull(message = "检验方案id不能为空")
private Long schemaId;
@Schema(description = "检验方案名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@NotEmpty(message = "检验方案名称不能为空")
private String schemaName;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "工单", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "工单不能为空")
private String ticket;
@Schema(description = "工序", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotEmpty(message = "工序不能为空")
private String orgType;
@Schema(description = "负责人id", example = "6442")
private Long managerId;
@Schema(description = "负责人名称", example = "张三")
private String managerName;
@Schema(description = "执行人id", example = "10505")
private Long executorId;
@Schema(description = "执行人名称", example = "王五")
private String executorName;
@Schema(description = "状态", example = "1")
private Integer status;
@Schema(description = "结果")
private String result;
@Schema(description = "执行时间")
private LocalDateTime executeTime;
}

@ -0,0 +1,139 @@
package cn.iocoder.yudao.module.mes.controller.admin.zjtaskresults;
import cn.iocoder.yudao.module.mes.controller.admin.zjtask.vo.ZjTaskSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjtask.ZjTaskDO;
import cn.iocoder.yudao.module.mes.service.zjtask.ZjTaskService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import java.util.stream.Collectors;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.mes.controller.admin.zjtaskresults.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjtaskresults.ZjTaskResultsDO;
import cn.iocoder.yudao.module.mes.service.zjtaskresults.ZjTaskResultsService;
@Tag(name = "管理后台 - 检验任务-检验结果")
@RestController
@RequestMapping("/mes/zj-task-results")
@Validated
public class ZjTaskResultsController {
@Resource
private ZjTaskResultsService zjTaskResultsService;
@Resource
private ZjTaskService zjTaskService;
@PostMapping("/create")
@Operation(summary = "创建检验任务-检验结果")
@PreAuthorize("@ss.hasPermission('mes:zj-task-results:create')")
public CommonResult<Long> createZjTaskResults(@Valid @RequestBody ZjTaskResultsSaveReqVO createReqVO) {
return success(zjTaskResultsService.createZjTaskResults(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新检验任务-检验结果")
@PreAuthorize("@ss.hasPermission('mes:zj-task-results:update')")
public CommonResult<Boolean> updateZjTaskResults(@Valid @RequestBody ZjTaskResultsSaveReqVO updateReqVO) {
zjTaskResultsService.updateZjTaskResults(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除检验任务-检验结果")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:zj-task-results:delete')")
public CommonResult<Boolean> deleteZjTaskResults(@RequestParam("id") Long id) {
zjTaskResultsService.deleteZjTaskResults(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得检验任务-检验结果")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:zj-task-results:query')")
public CommonResult<ZjTaskResultsRespVO> getZjTaskResults(@RequestParam("id") Long id) {
ZjTaskResultsDO zjTaskResults = zjTaskResultsService.getZjTaskResults(id);
return success(BeanUtils.toBean(zjTaskResults, ZjTaskResultsRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得检验任务-检验结果分页")
@PreAuthorize("@ss.hasPermission('mes:zj-task-results:query')")
public CommonResult<PageResult<ZjTaskResultsRespVO>> getZjTaskResultsPage(@Valid ZjTaskResultsPageReqVO pageReqVO) {
PageResult<ZjTaskResultsDO> pageResult = zjTaskResultsService.getZjTaskResultsPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ZjTaskResultsRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出检验任务-检验结果 Excel")
@PreAuthorize("@ss.hasPermission('mes:zj-task-results:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportZjTaskResultsExcel(@Valid ZjTaskResultsPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ZjTaskResultsDO> list = zjTaskResultsService.getZjTaskResultsPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "检验任务-检验结果.xls", "数据", ZjTaskResultsRespVO.class,
BeanUtils.toBean(list, ZjTaskResultsRespVO.class));
}
@PostMapping("/batch-update")
@Operation(summary = "批量更新检验结果,并联动更新检验任务结果")
public CommonResult<Boolean> batchUpdateZjTaskResults(@Valid @RequestBody ZjTaskResultsBatchUpdateReqVO reqVO) {
// 1. 批量更新检验结果(核心逻辑)
zjTaskResultsService.batchUpdateZjTaskResults(reqVO.getResults());
// 2. 联动更新检验任务的result字段
// 2.1 提取taskId所有元素taskId相同取第一个即可
Long taskId = reqVO.getResults().get(0).getTaskId();
// 2.2 统计当前批次的zjResult状态计算任务result
String taskResult = calculateTaskResult(reqVO.getResults());
// 2.3 调用专用方法仅更新result字段关键修复
zjTaskService.updateZjTaskResultOnly(taskId, taskResult);
return success(true);
}
/**
* result
* zjResult=0 result=0zjResult=1 result=1result=2
*/
private String calculateTaskResult(List<ZjTaskResultsBatchUpdateReqVO.ResultItem> resultItems) {
// 提取所有zjResult
List<Integer> zjResults = resultItems.stream()
.map(ZjTaskResultsBatchUpdateReqVO.ResultItem::getZjResult)
.filter(Objects::nonNull) // 空值过滤
.collect(Collectors.toList());
// 规则判断
if (zjResults.contains(0)) {
return "0"; // 存在待检测任务结果为0
} else if (zjResults.stream().allMatch(r -> r == 1)) {
return "1"; // 全部通过任务结果为1
} else {
return "2"; // 其余情况存在不通过任务结果为2
}
}
}

@ -0,0 +1,36 @@
package cn.iocoder.yudao.module.mes.controller.admin.zjtaskresults.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Schema(description = "管理后台 - 检验任务-检验结果批量更新 Request VO")
@Data
public class ZjTaskResultsBatchUpdateReqVO {
@Schema(description = "批量更新的检验结果列表", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "更新列表不能为空")
@Valid
private List<ResultItem> results;
/**
*
*/
@Data
public static class ResultItem {
@Schema(description = "检验结果ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8755")
private Long id;
@Schema(description = "检验结果 0-待检测 1-检测通过 2-检测不通过", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private Integer zjResult;
@Schema(description = "图片路径", example = "/upload/123.jpg")
private String images;
@Schema(description = "任务ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5389")
private Long taskId;
}
}

@ -0,0 +1,62 @@
package cn.iocoder.yudao.module.mes.controller.admin.zjtaskresults.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 检验任务-检验结果分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ZjTaskResultsPageReqVO extends PageParam {
@Schema(description = "检验类型", example = "2")
private Long zjType;
@Schema(description = "名称", example = "张三")
private String name;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "作业方式")
private String tool;
@Schema(description = "标准值")
private Double standardVal;
@Schema(description = "单位")
private String unit;
@Schema(description = "上限值")
private Double upperVal;
@Schema(description = "下限值")
private Double lowerVal;
@Schema(description = "检验结果 0-待检测 1-检测通过 2-检测不通过")
private Integer zjResult;
@Schema(description = "图片路径")
private String images;
@Schema(description = "检验时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] zjTime;
@Schema(description = "任务id", example = "5389")
private Long taskId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "设备id", example = "23960")
private Long deviceId;
}

@ -0,0 +1,75 @@
package cn.iocoder.yudao.module.mes.controller.admin.zjtaskresults.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 检验任务-检验结果 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ZjTaskResultsRespVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8755")
@ExcelProperty("id")
private Long id;
@Schema(description = "检验类型", example = "2")
@ExcelProperty("检验类型")
private Long zjType;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("名称")
private String name;
@Schema(description = "备注", example = "你说的对")
@ExcelProperty("备注")
private String remark;
@Schema(description = "作业方式")
@ExcelProperty("作业方式")
private String tool;
@Schema(description = "标准值")
@ExcelProperty("标准值")
private Double standardVal;
@Schema(description = "单位")
@ExcelProperty("单位")
private String unit;
@Schema(description = "上限值")
@ExcelProperty("上限值")
private Double upperVal;
@Schema(description = "下限值")
@ExcelProperty("下限值")
private Double lowerVal;
@Schema(description = "检验结果 0-待检测 1-检测通过 2-检测不通过")
@ExcelProperty("检验结果 0-待检测 1-检测通过 2-检测不通过")
private Integer zjResult;
@Schema(description = "图片路径")
@ExcelProperty("图片路径")
private String images;
@Schema(description = "检验时间")
@ExcelProperty("检验时间")
private LocalDateTime zjTime;
@Schema(description = "任务id", example = "5389")
@ExcelProperty("任务id")
private Long taskId;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "设备id", example = "23960")
@ExcelProperty("设备id")
private Long deviceId;
}

@ -0,0 +1,57 @@
package cn.iocoder.yudao.module.mes.controller.admin.zjtaskresults.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 检验任务-检验结果新增/修改 Request VO")
@Data
public class ZjTaskResultsSaveReqVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8755")
private Long id;
@Schema(description = "检验类型", example = "2")
private Long zjType;
@Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@NotEmpty(message = "名称不能为空")
private String name;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "作业方式")
private String tool;
@Schema(description = "标准值")
private Double standardVal;
@Schema(description = "单位")
private String unit;
@Schema(description = "上限值")
private Double upperVal;
@Schema(description = "下限值")
private Double lowerVal;
@Schema(description = "检验结果 0-待检测 1-检测通过 2-检测不通过")
private Integer zjResult;
@Schema(description = "图片路径")
private String images;
@Schema(description = "检验时间")
private LocalDateTime zjTime;
@Schema(description = "任务id", example = "5389")
private Long taskId;
@Schema(description = "设备id", example = "23960")
private Long deviceId;
}

@ -0,0 +1,91 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.zjtask;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* - DO
*
* @author
*/
@TableName("mes_zj_task")
@KeySequence("mes_zj_task_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZjTaskDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
*
*/
private String code;
/**
*
*/
private String name;
/**
*
*/
private String type;
/**
* id
*/
private Long schemaId;
/**
*
*/
private String schemaName;
/**
*
*/
private String remark;
/**
*
*/
private String ticket;
/**
*
*/
private String orgType;
/**
* id
*/
private Long managerId;
/**
*
*/
private String managerName;
/**
* id
*/
private Long executorId;
/**
*
*/
private String executorName;
/**
*
*/
private Integer status;
/**
*
*/
private String result;
/**
*
*/
private LocalDateTime executeTime;
}

@ -0,0 +1,84 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.zjtaskresults;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* - DO
*
* @author
*/
@TableName("mes_zj_task_results")
@KeySequence("mes_zj_task_results_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZjTaskResultsDO extends BaseDO {
/**
* id
*/
@TableId
private Long id;
/**
*
*/
private Long zjType;
/**
*
*/
private String name;
/**
*
*/
private String remark;
/**
*
*/
private String tool;
/**
*
*/
private Double standardVal;
/**
*
*/
private String unit;
/**
*
*/
private Double upperVal;
/**
*
*/
private Double lowerVal;
/**
* 0- 1- 2-
*/
private Integer zjResult;
/**
*
*/
private String images;
/**
*
*/
private LocalDateTime zjTime;
/**
* id
*/
private Long taskId;
/**
* id
*/
private Long deviceId;
}

@ -29,4 +29,15 @@ public interface ZjSchemaMapper extends BaseMapperX<ZjSchemaDO> {
.orderByDesc(ZjSchemaDO::getId));
}
default ZjSchemaDO selectByName(String name) {
return selectOne(new LambdaQueryWrapperX<ZjSchemaDO>()
.eq(ZjSchemaDO::getName, name));
}
default List<ZjSchemaDO> selectByType(String type) {
return selectList(new LambdaQueryWrapperX<ZjSchemaDO>()
.eq(ZjSchemaDO::getType, type)
.orderByAsc(ZjSchemaDO::getId));
}
}

@ -0,0 +1,40 @@
package cn.iocoder.yudao.module.mes.dal.mysql.zjtask;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjtask.ZjTaskDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.zjtask.vo.*;
/**
* - Mapper
*
* @author
*/
@Mapper
public interface ZjTaskMapper extends BaseMapperX<ZjTaskDO> {
default PageResult<ZjTaskDO> selectPage(ZjTaskPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ZjTaskDO>()
.eqIfPresent(ZjTaskDO::getCode, reqVO.getCode())
.likeIfPresent(ZjTaskDO::getName, reqVO.getName())
.eqIfPresent(ZjTaskDO::getType, reqVO.getType())
.eqIfPresent(ZjTaskDO::getSchemaId, reqVO.getSchemaId())
.likeIfPresent(ZjTaskDO::getSchemaName, reqVO.getSchemaName())
.eqIfPresent(ZjTaskDO::getRemark, reqVO.getRemark())
.eqIfPresent(ZjTaskDO::getTicket, reqVO.getTicket())
.eqIfPresent(ZjTaskDO::getOrgType, reqVO.getOrgType())
.eqIfPresent(ZjTaskDO::getManagerId, reqVO.getManagerId())
.likeIfPresent(ZjTaskDO::getManagerName, reqVO.getManagerName())
.eqIfPresent(ZjTaskDO::getExecutorId, reqVO.getExecutorId())
.likeIfPresent(ZjTaskDO::getExecutorName, reqVO.getExecutorName())
.eqIfPresent(ZjTaskDO::getStatus, reqVO.getStatus())
.eqIfPresent(ZjTaskDO::getResult, reqVO.getResult())
.betweenIfPresent(ZjTaskDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ZjTaskDO::getId));
}
}

@ -0,0 +1,39 @@
package cn.iocoder.yudao.module.mes.dal.mysql.zjtaskresults;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjtaskresults.ZjTaskResultsDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.zjtaskresults.vo.*;
/**
* - Mapper
*
* @author
*/
@Mapper
public interface ZjTaskResultsMapper extends BaseMapperX<ZjTaskResultsDO> {
default PageResult<ZjTaskResultsDO> selectPage(ZjTaskResultsPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ZjTaskResultsDO>()
.eqIfPresent(ZjTaskResultsDO::getZjType, reqVO.getZjType())
.likeIfPresent(ZjTaskResultsDO::getName, reqVO.getName())
.eqIfPresent(ZjTaskResultsDO::getRemark, reqVO.getRemark())
.eqIfPresent(ZjTaskResultsDO::getTool, reqVO.getTool())
.eqIfPresent(ZjTaskResultsDO::getStandardVal, reqVO.getStandardVal())
.eqIfPresent(ZjTaskResultsDO::getUnit, reqVO.getUnit())
.eqIfPresent(ZjTaskResultsDO::getUpperVal, reqVO.getUpperVal())
.eqIfPresent(ZjTaskResultsDO::getLowerVal, reqVO.getLowerVal())
.eqIfPresent(ZjTaskResultsDO::getZjResult, reqVO.getZjResult())
.eqIfPresent(ZjTaskResultsDO::getImages, reqVO.getImages())
.betweenIfPresent(ZjTaskResultsDO::getZjTime, reqVO.getZjTime())
.eqIfPresent(ZjTaskResultsDO::getTaskId, reqVO.getTaskId())
.betweenIfPresent(ZjTaskResultsDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(ZjTaskResultsDO::getDeviceId, reqVO.getDeviceId())
.orderByDesc(ZjTaskResultsDO::getId));
}
}

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.mes.service.zjschema;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.mes.controller.admin.zjschema.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjitem.ZjItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjschema.ZjSchemaDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
@ -52,4 +53,6 @@ public interface ZjSchemaService {
*/
PageResult<ZjSchemaDO> getZjSchemaPage(ZjSchemaPageReqVO pageReqVO);
List<ZjSchemaDO> getZjSchemaList();
}

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.mes.service.zjschema;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjitem.ZjItemDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -71,4 +72,9 @@ public class ZjSchemaServiceImpl implements ZjSchemaService {
return zjSchemaMapper.selectPage(pageReqVO);
}
@Override
public List<ZjSchemaDO> getZjSchemaList() {
return zjSchemaMapper.selectList();
}
}

@ -0,0 +1,62 @@
package cn.iocoder.yudao.module.mes.service.zjtask;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.mes.controller.admin.zjtask.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjtask.ZjTaskDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
/**
* - Service
*
* @author
*/
public interface ZjTaskService {
/**
* -
*
* @param createReqVO
* @return
*/
Long createZjTask(@Valid ZjTaskSaveReqVO createReqVO);
/**
* -
*
* @param updateReqVO
*/
void updateZjTask(@Valid ZjTaskSaveReqVO updateReqVO);
/**
* -
*
* @param id
*/
void deleteZjTask(Long id);
/**
* -
*
* @param id
* @return -
*/
ZjTaskDO getZjTask(Long id);
/**
* -
*
* @param pageReqVO
* @return -
*/
PageResult<ZjTaskDO> getZjTaskPage(ZjTaskPageReqVO pageReqVO);
/**
* result
* @param id ID
* @param result 0/1/2
*/
void updateZjTaskResultOnly(Long id, String result);
}

@ -0,0 +1,164 @@
package cn.iocoder.yudao.module.mes.service.zjtask;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjitem.ZjItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjschema.ZjSchemaDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjtaskresults.ZjTaskResultsDO;
import cn.iocoder.yudao.module.mes.dal.mysql.zjitem.ZjItemMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.zjschema.ZjSchemaMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.zjtaskresults.ZjTaskResultsMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.*;
import cn.iocoder.yudao.module.mes.controller.admin.zjtask.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjtask.ZjTaskDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.dal.mysql.zjtask.ZjTaskMapper;
import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.UNAUTHORIZED;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* - Service
*
* @author
*/
@Service
@Validated
public class ZjTaskServiceImpl implements ZjTaskService {
@Resource
private ZjTaskMapper zjTaskMapper;
@Resource
private ZjSchemaMapper zjSchemaMapper;
@Resource
private ZjTaskResultsMapper zjTaskResultsMapper; // 检验结果Mapper
@Resource
private ZjItemMapper zjItemMapper; // 检验项目Mapper用于关联查询方案下的项目
@Override
public Long createZjTask(ZjTaskSaveReqVO createReqVO) {
// 插入
ZjTaskDO zjTask = BeanUtils.toBean(createReqVO, ZjTaskDO.class);
zjTaskMapper.insert(zjTask);
// 2. 新增逻辑根据检验方案关联的项目创建对应的ZjTaskResult记录
// 2.1 查询检验方案(获取关联的检验项目)
ZjSchemaDO schemaDO = zjSchemaMapper.selectById(createReqVO.getSchemaId());
if (schemaDO != null && StringUtils.hasText(schemaDO.getItem())) {
// 2.2 拆分方案关联的项目ID假设item字段存储的是逗号分隔的项目ID如"1,2,3"
String[] itemIds = schemaDO.getItem().split(",");
for (String itemIdStr : itemIds) {
if (!StringUtils.hasText(itemIdStr)) {
continue;
}
Long itemId = Long.valueOf(itemIdStr);
// 2.3 查询检验项目详情
ZjItemDO itemDO = zjItemMapper.selectById(itemId);
if (itemDO == null) {
continue; // 项目不存在则跳过
}
// 2.4 构建检验结果DO关联当前新建的任务ID
ZjTaskResultsDO resultDO = ZjTaskResultsDO.builder()
.zjType(itemDO.getZjType()) // 复用检验项目的类型
.name(itemDO.getName()) // 复用检验项目的名称
.remark(itemDO.getRemark()) // 复用检验项目的备注
.tool(itemDO.getTool()) // 复用检验项目的作业方式
.standardVal(itemDO.getStandardVal()) // 复用检验项目的标准值
.unit(itemDO.getUnit()) // 复用检验项目的单位
.upperVal(itemDO.getUpperVal()) // 复用检验项目的上限值
.lowerVal(itemDO.getLowerVal()) // 复用检验项目的下限值
.zjResult(0) // 初始状态待检测0-待检测 1-通过 2-不通过)
.taskId(zjTask.getId()) // 关联当前新建的检验任务ID
// 设备ID等无默认值的字段可留空后续更新
.build();
// 2.5 插入检验结果记录
zjTaskResultsMapper.insert(resultDO);
}
}
// 返回
return zjTask.getId();
}
@Override
public void updateZjTask(ZjTaskSaveReqVO updateReqVO) {
// 校验存在
validateZjTaskExists(updateReqVO.getId());
// 更新
ZjTaskDO updateObj = BeanUtils.toBean(updateReqVO, ZjTaskDO.class);
zjTaskMapper.updateById(updateObj);
}
@Override
public void deleteZjTask(Long id) {
// 校验存在
validateZjTaskExists(id);
// 删除
zjTaskMapper.deleteById(id);
}
private void validateZjTaskExists(Long id) {
if (zjTaskMapper.selectById(id) == null) {
throw exception(ZJ_TASK_NOT_EXISTS);
}
}
@Override
public ZjTaskDO getZjTask(Long id) {
return zjTaskMapper.selectById(id);
}
@Override
public PageResult<ZjTaskDO> getZjTaskPage(ZjTaskPageReqVO pageReqVO) {
return zjTaskMapper.selectPage(pageReqVO);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateZjTaskResultOnly(Long id, String result) {
// 1. 校验任务存在
ZjTaskDO zjTask = zjTaskMapper.selectById(id);
if (zjTask == null) {
throw exception(ZJ_TASK_NOT_EXISTS);
}
// 2. 获取当前登录用户信息适配实际的LoginUser类结构
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
if (loginUser == null) {
throw exception(UNAUTHORIZED); // 抛出未登录异常,根据业务调整
}
Long currentUserId = loginUser.getId(); // 当前用户ID直接从id字段获取
// 从info集合中获取用户名nickname键兼容空值
String currentUserName = loginUser.getInfo() != null ? loginUser.getInfo().get(LoginUser.INFO_KEY_NICKNAME) : null;
// 3. 构建更新对象,仅更新指定字段
ZjTaskDO updateDO = new ZjTaskDO();
updateDO.setId(id);
updateDO.setResult(result); // 检验结果
updateDO.setStatus(1); // 状态置为1int型
updateDO.setExecuteTime(LocalDateTime.now()); // 执行时间为当前时间推荐用LocalDateTime适配框架时间类型
updateDO.setExecutorId(currentUserId); // 执行人ID当前用户
updateDO.setExecutorName(currentUserName); // 执行人名称(当前用户昵称)
// 4. 执行更新
zjTaskMapper.updateById(updateDO);
}
}

@ -0,0 +1,60 @@
package cn.iocoder.yudao.module.mes.service.zjtaskresults;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.mes.controller.admin.zjtaskresults.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjtaskresults.ZjTaskResultsDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
/**
* - Service
*
* @author
*/
public interface ZjTaskResultsService {
/**
* -
*
* @param createReqVO
* @return
*/
Long createZjTaskResults(@Valid ZjTaskResultsSaveReqVO createReqVO);
/**
* -
*
* @param updateReqVO
*/
void updateZjTaskResults(@Valid ZjTaskResultsSaveReqVO updateReqVO);
/**
* -
*
* @param id
*/
void deleteZjTaskResults(Long id);
/**
* -
*
* @param id
* @return -
*/
ZjTaskResultsDO getZjTaskResults(Long id);
/**
* -
*
* @param pageReqVO
* @return -
*/
PageResult<ZjTaskResultsDO> getZjTaskResultsPage(ZjTaskResultsPageReqVO pageReqVO);
/**
* zjResultimages
*/
void batchUpdateZjTaskResults(List<ZjTaskResultsBatchUpdateReqVO.ResultItem> resultItems);
}

@ -0,0 +1,88 @@
package cn.iocoder.yudao.module.mes.service.zjtaskresults;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.module.mes.controller.admin.zjtaskresults.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjtaskresults.ZjTaskResultsDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.dal.mysql.zjtaskresults.ZjTaskResultsMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* - Service
*
* @author
*/
@Service
@Validated
public class ZjTaskResultsServiceImpl implements ZjTaskResultsService {
@Resource
private ZjTaskResultsMapper zjTaskResultsMapper;
@Override
public Long createZjTaskResults(ZjTaskResultsSaveReqVO createReqVO) {
// 插入
ZjTaskResultsDO zjTaskResults = BeanUtils.toBean(createReqVO, ZjTaskResultsDO.class);
zjTaskResultsMapper.insert(zjTaskResults);
// 返回
return zjTaskResults.getId();
}
@Override
public void updateZjTaskResults(ZjTaskResultsSaveReqVO updateReqVO) {
// 校验存在
validateZjTaskResultsExists(updateReqVO.getId());
// 更新
ZjTaskResultsDO updateObj = BeanUtils.toBean(updateReqVO, ZjTaskResultsDO.class);
zjTaskResultsMapper.updateById(updateObj);
}
@Override
public void deleteZjTaskResults(Long id) {
// 校验存在
validateZjTaskResultsExists(id);
// 删除
zjTaskResultsMapper.deleteById(id);
}
private void validateZjTaskResultsExists(Long id) {
if (zjTaskResultsMapper.selectById(id) == null) {
throw exception(ZJ_TASK_RESULTS_NOT_EXISTS);
}
}
@Override
public ZjTaskResultsDO getZjTaskResults(Long id) {
return zjTaskResultsMapper.selectById(id);
}
@Override
public PageResult<ZjTaskResultsDO> getZjTaskResultsPage(ZjTaskResultsPageReqVO pageReqVO) {
return zjTaskResultsMapper.selectPage(pageReqVO);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void batchUpdateZjTaskResults(List<ZjTaskResultsBatchUpdateReqVO.ResultItem> resultItems) {
// 遍历批量更新每个检验结果仅更新zjResult和images
for (ZjTaskResultsBatchUpdateReqVO.ResultItem item : resultItems) {
ZjTaskResultsDO updateDO = new ZjTaskResultsDO();
updateDO.setId(item.getId());
updateDO.setZjResult(item.getZjResult());
updateDO.setImages(item.getImages());
// 使用mybatis-plus的updateById更新指定字段
zjTaskResultsMapper.updateById(updateDO);
}
}
}

@ -0,0 +1,12 @@
<?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="cn.iocoder.yudao.module.mes.dal.mysql.zjtask.ZjTaskMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,12 @@
<?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="cn.iocoder.yudao.module.mes.dal.mysql.zjtaskresults.ZjTaskResultsMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>
Loading…
Cancel
Save