Merge branch 'plp' of F:\JavaProject\besure_server with conflicts.

plp
86158 2 months ago
parent ff8e320ff6
commit e0dccb5183

@ -0,0 +1,36 @@
package cn.iocoder.yudao.module.erp.controller.admin.moldrepair.enums;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
*
*/
@Getter
@AllArgsConstructor
public enum MoldRecordStatusEnum {
PENDING(0, "待完成"),
COMPLETED(1, "已完成"),
// 可以根据需要添加其他状态
CANCELED(2, "已取消");
@JsonValue
private final Integer code;
private final String name;
@JsonCreator
public static MoldRecordStatusEnum getByCode(Integer code) {
if (code == null) {
return null;
}
for (MoldRecordStatusEnum status : MoldRecordStatusEnum.values()) {
if (status.getCode().equals(code)) {
return status;
}
}
return null;
}
}

@ -0,0 +1,78 @@
package cn.iocoder.yudao.module.erp.controller.admin.moldrepair.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
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 MoldRepairPageReqVO extends PageParam {
@Schema(description = "维修单编号")
private String repairCode;
@Schema(description = "维修单名称", example = "王五")
private String repairName;
@Schema(description = "模具ID", example = "6979")
private Long moldId;
@Schema(description = "模具编码")
private String moldCode;
@Schema(description = "模具名称", example = "张三")
private String moldName;
@Schema(description = "品牌")
private String moldBrand;
@Schema(description = "规格型号")
private String moldSpec;
@Schema(description = "模具类型", example = "1622")
private Long moldTypeId;
@Schema(description = "报修日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] requireDate;
@Schema(description = "完成日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] finishDate;
@Schema(description = "验收日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] confirmDate;
@Schema(description = "维修结果")
private String repairResult;
@Schema(description = "维修人员")
private String acceptedBy;
@Schema(description = "验收人员")
private String confirmBy;
@Schema(description = "单据状态0-待完成 1-已完成", example = "1")
private Integer status;
@Schema(description = "备注")
private String remark;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "ids集合导出用")
private String ids;
}

@ -0,0 +1,110 @@
package cn.iocoder.yudao.module.erp.controller.admin.moldrepair.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 模具维修记录 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MoldRepairRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27809")
// @ExcelProperty("ID")
private Long id;
@Schema(description = "维修单编号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("维修单编号")
private String repairCode;
@Schema(description = "维修单名称", example = "王五")
@ExcelProperty("维修单名称")
private String repairName;
@Schema(description = "模具ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6979")
// @ExcelProperty("模具ID")
private Long moldId;
@Schema(description = "模具编码", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("模具编码")
private String moldCode;
@Schema(description = "模具名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("模具名称")
private String moldName;
@Schema(description = "品牌")
// @ExcelProperty("品牌")
private String moldBrand;
@Schema(description = "规格型号")
// @ExcelProperty("规格型号")
private String moldSpec;
@Schema(description = "模具类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1622")
// @ExcelProperty(value = "模具类型", converter = DictConvert.class)
// @DictFormat("mes_machine_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Long moldTypeId;
@Schema(description = "报修日期")
@ExcelProperty("报修日期")
@ColumnWidth(20)
private LocalDateTime requireDate;
@Schema(description = "完成日期")
@ExcelProperty("完成日期")
@ColumnWidth(20)
private LocalDateTime finishDate;
@Schema(description = "验收日期")
@ExcelProperty("验收日期")
@ColumnWidth(20)
private LocalDateTime confirmDate;
@Schema(description = "维修结果")
@ExcelProperty("维修结果")
private String repairResult;
@Schema(description = "维修人员")
@ExcelProperty("维修人员")
private String acceptedBy;
@Schema(description = "验收人员")
@ExcelProperty("验收人员")
private String confirmBy;
@Schema(description = "单据状态", example = "1")
@ExcelProperty(value = "单据状态 0-待完成 1-已完成")
@DictFormat("mes_mold_record_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer status;
@Schema(description = "单据状态", example = "1")
@ExcelProperty(value = "单据状态 0-待完成 1-已完成")
@DictFormat("mes_mold_record_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private String statusName;
@Schema(description = "备注", example = "你猜")
@ExcelProperty("备注")
private String remark;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
@ColumnWidth(20)
private LocalDateTime createTime;
@Schema(description = "模具类型 1-模具 2-关键件", example = "你猜")
private Integer deviceType;
@Schema(description = "模具Id", example = "你猜")
private Long deviceId;
@Schema(description = "关键件Id", example = "你猜")
private Long componentId;
}

@ -0,0 +1,83 @@
package cn.iocoder.yudao.module.erp.controller.admin.moldrepair.vo;
import cn.iocoder.yudao.module.erp.dal.dataobject.moldrepair.MoldRepairLineDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 模具维修记录新增/修改 Request VO")
@Data
public class MoldRepairSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27809")
private Long id;
@Schema(description = "维修单编号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "维修单编号不能为空")
private String repairCode;
@Schema(description = "维修单名称", example = "王五")
private String repairName;
@Schema(description = "模具ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6979")
// @NotNull(message = "模具ID不能为空")
private Long moldId;
@Schema(description = "模具编码", requiredMode = Schema.RequiredMode.REQUIRED)
// @NotEmpty(message = "模具编码不能为空")
private String moldCode;
@Schema(description = "模具名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
// @NotEmpty(message = "模具名称不能为空")
private String moldName;
@Schema(description = "品牌")
private String moldBrand;
@Schema(description = "规格型号")
private String moldSpec;
@Schema(description = "模具类型-待用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1622")
// @NotNull(message = "模具类型不能为空")
private Long moldTypeId;
@Schema(description = "报修日期")
private LocalDateTime requireDate;
@Schema(description = "完成日期")
private LocalDateTime finishDate;
@Schema(description = "验收日期")
private LocalDateTime confirmDate;
@Schema(description = "维修结果")
private String repairResult;
@Schema(description = "维修人员")
private String acceptedBy;
@Schema(description = "验收人员")
private String confirmBy;
@Schema(description = "单据状态", example = "1")
private String status;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "模具维修记录行列表")
private List<MoldRepairLineDO> moldRepairLines;
@Schema(description = "模具类型 1-模具 2-关键件")
private Integer deviceType;
@Schema(description = "模具Id")
private Long deviceId;
@Schema(description = "关键件Id")
private Long componentId;
}

@ -0,0 +1,87 @@
package cn.iocoder.yudao.module.erp.controller.admin.moldticketmanagement.enums;
import lombok.Getter;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* 1- 2-
*/
@Getter
public enum MoldPlanTypeEnum {
INSPECTION(1, "点检"),
MAINTENANCE(2, "保养");
private final Integer code;
private final String description;
MoldPlanTypeEnum(Integer code, String description) {
this.code = code;
this.description = description;
}
/**
* code
*/
public static MoldPlanTypeEnum getByCode(Integer code) {
if (code == null) {
return null;
}
for (MoldPlanTypeEnum type : values()) {
if (type.getCode().equals(code)) {
return type;
}
}
return null;
}
/**
* code
*/
public static String getDescriptionByCode(Integer code) {
MoldPlanTypeEnum type = getByCode(code);
return type != null ? type.getDescription() : "未知";
}
/**
* code
*/
public static boolean isValidCode(Integer code) {
return getByCode(code) != null;
}
/**
* code
*/
public static List<Integer> getAllCodes() {
return Arrays.stream(values())
.map(MoldPlanTypeEnum::getCode)
.collect(Collectors.toList());
}
/**
*
*/
public static List<String> getAllDescriptions() {
return Arrays.stream(values())
.map(MoldPlanTypeEnum::getDescription)
.collect(Collectors.toList());
}
/**
* code
*/
public static Map<Integer, String> getCodeDescriptionMap() {
Map<Integer, String> map = new LinkedHashMap<>();
for (MoldPlanTypeEnum type : values()) {
map.put(type.getCode(), type.getDescription());
}
return map;
}
}

@ -0,0 +1,20 @@
package cn.iocoder.yudao.module.erp.controller.admin.moldticketmanagement.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
// 1. 新增请求VO
@Data
public class MoldTicketManagementBatchUpdateReqVO {
@Schema(description = "工单ID列表用逗号分隔", example = "1,2,3")
@NotBlank(message = "工单ID不能为空")
private String ids;
@Schema(description = "作业状态", example = "2")
@NotNull(message = "作业状态不能为空")
private Integer jobStatus ; // 默认值为2
}

@ -0,0 +1,63 @@
package cn.iocoder.yudao.module.erp.controller.admin.moldticketmanagement.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
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 MoldTicketManagementPageReqVO extends PageParam {
@Schema(description = "项目ID", example = "21368")
private Long taskId;
@Schema(description = "方案ID", example = "20459")
private Long planId;
@Schema(description = "单号")
private String planNo;
@Schema(description = "设备名称", example = "张三")
private String moldName;
@Schema(description = "类型(1-点检 2-保养)", example = "2")
private String planType;
@Schema(description = "计划配置名称", example = "赵六")
private String configName;
@Schema(description = "作业状态", example = "1")
private Integer jobStatus;
@Schema(description = "作业结果")
private String jobResult;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "id集合导出用")
private String ids;
/**
*
*/
private String taskTime;
/**
*
*/
private String taskEndTime;
}

@ -0,0 +1,91 @@
package cn.iocoder.yudao.module.erp.controller.admin.moldticketmanagement.vo;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 项目方案关联 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MoldTicketManagementRespVO extends BaseDO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6566")
@ExcelProperty("id")
private Long id;
@Schema(description = "任务Id", example = "21368")
// @ExcelProperty("项目ID")
private Long taskId;
@Schema(description = "方案ID", example = "20459")
// @ExcelProperty("方案ID")
private Long planId;
@Schema(description = "单号")
@ExcelProperty("单号")
private String planNo;
@Schema(description = "设备名称", example = "张三")
@ExcelProperty("设备名称")
private String moldName;
@Schema(description = "类型", example = "2")
@ExcelProperty("类型")
private String planType;
@Schema(description = "计划配置名称", example = "赵六")
@ExcelProperty("计划配置名称")
private String configName;
@Schema(description = "作业状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("作业状态")
private Integer jobStatus;
@Schema(description = "作业结果")
@ExcelProperty("作业结果")
private Integer jobResult;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime taskTime;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime taskEndTime;
@Schema(description = "创建人名字")
@ExcelProperty("创建人名字")
private String creatorName;
@Schema(description = "作业人")
private String operator;
@Schema(description = "作业人名称")
@ExcelProperty("作业人名称")
private String operatorName;
}

@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.erp.controller.admin.moldticketmanagement.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 项目方案关联新增/修改 Request VO")
@Data
public class MoldTicketManagementSaveReqVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6566")
private Long id;
@Schema(description = "项目ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21368")
@NotNull(message = "项目ID不能为空")
private Long subjectId;
@Schema(description = "方案ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20459")
@NotNull(message = "方案ID不能为空")
private Long planId;
@Schema(description = "单号")
private String planNo;
@Schema(description = "设备名称", example = "张三")
private String moldName;
@Schema(description = "类型", example = "2")
private String planType;
@Schema(description = "计划配置名称", example = "赵六")
private String configName;
@Schema(description = "作业状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "作业状态不能为空")
private Integer jobStatus;
@Schema(description = "作业结果")
private Integer jobResult;
}

@ -0,0 +1,109 @@
package cn.iocoder.yudao.module.erp.controller.admin.moldticketresults.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
*
*/
@Getter
@AllArgsConstructor
public enum MoldJobResultEnum {
/**
*
*/
PENDING(0, "待完成"),
/**
*
*/
PASS(1, "通过"),
/**
*
*/
FAIL(2, "不通过");
/**
*
*/
private final Integer code;
/**
*
*/
private final String description;
/**
*
*/
public static MoldJobResultEnum getByCode(Integer code) {
if (code == null) {
return null;
}
for (MoldJobResultEnum status : values()) {
if (status.getCode().equals(code)) {
return status;
}
}
return null;
}
/**
*
*/
public static boolean isValidCode(Integer code) {
return getByCode(code) != null;
}
/**
*
*/
public static List<Integer> getAllCodes() {
return Arrays.stream(values())
.map(MoldJobResultEnum::getCode)
.collect(Collectors.toList());
}
/**
*
*/
public static List<String> getAllDescriptions() {
return Arrays.stream(values())
.map(MoldJobResultEnum::getDescription)
.collect(Collectors.toList());
}
/**
*
*/
public boolean isPending() {
return this == PENDING;
}
/**
*
*/
public boolean isPass() {
return this == PASS;
}
/**
*
*/
public boolean isFail() {
return this == FAIL;
}
/**
*
*/
public boolean isCompleted() {
return this == PASS || this == FAIL;
}
}

@ -0,0 +1,49 @@
package cn.iocoder.yudao.module.erp.controller.admin.moldticketresults.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
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 MoldTicketResultsPageReqVO extends PageParam {
@Schema(description = "检验项名称", example = "赵六")
private String inspectionItemName;
@Schema(description = "检验方式")
private String inspectionMethod;
@Schema(description = "判定基准")
private String judgmentCriteria;
@Schema(description = "检验结果 0-待检测 1-检测通过 2-检测不通过")
private Integer inspectionResult;
@Schema(description = "图片路径")
private String images;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "检验时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] inspectionTime;
@Schema(description = "工单管理Id")
private Long managementId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,56 @@
package cn.iocoder.yudao.module.erp.controller.admin.moldticketresults.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 工单检验结果 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MoldTicketResultsRespVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30557")
@ExcelProperty("id")
private Long id;
@Schema(description = "检验项名称", example = "赵六")
@ExcelProperty("检验项名称")
private String inspectionItemName;
@Schema(description = "检验方式")
@ExcelProperty("检验方式")
private String inspectionMethod;
@Schema(description = "判定基准")
@ExcelProperty("判定基准")
private String judgmentCriteria;
@Schema(description = "检验结果 0-待检测 1-检测通过 2-检测不通过")
@ExcelProperty("检验结果 0-待检测 1-检测通过 2-检测不通过")
private Integer inspectionResult;
@Schema(description = "图片路径")
@ExcelProperty("图片路径")
private String images;
@Schema(description = "备注", example = "你说的对")
@ExcelProperty("备注")
private String remark;
@Schema(description = "检验时间")
@ExcelProperty("检验时间")
private LocalDateTime inspectionTime;
@Schema(description = "工单管理Id")
private Long managementId;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "模具Id")
private Long moldId;
}

@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.erp.controller.admin.moldticketresults.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 工单检验结果新增/修改 Request VO")
@Data
public class MoldTicketResultsSaveReqVO {
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30557")
private Long id;
@Schema(description = "检验项名称", example = "赵六")
private String inspectionItemName;
@Schema(description = "工单管理Id")
private Long managementId;
@Schema(description = "检验方式")
private String inspectionMethod;
@Schema(description = "判定基准")
private String judgmentCriteria;
@Schema(description = "检验结果 0-待检测 1-检测通过 2-检测不通过")
private Integer inspectionResult;
@Schema(description = "图片路径")
private String images;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "检验时间")
private LocalDateTime inspectionTime;
@Schema(description = "检验人")
private String inspector;
}

@ -0,0 +1,117 @@
package cn.iocoder.yudao.module.erp.dal.dataobject.moldrepair;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import org.apache.ibatis.type.Alias;
import java.time.LocalDateTime;
/**
* DO
*
* @author
*/
@TableName("mes_mold_repair")
@KeySequence("mes_mold_repair_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Alias("ErpMoldRepairDO")
public class MoldRepairDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
*
*/
private String repairCode;
/**
*
*/
private String repairName;
/**
* ID
*/
private Long moldId;
/**
*
*/
private String moldCode;
/**
*
*/
private String moldName;
/**
*
*/
private String moldBrand;
/**
*
*/
private String moldSpec;
/**
*
*
* {@link TODO mes_machine_type }
*/
private Long moldTypeId;
/**
*
*/
private LocalDateTime requireDate;
/**
*
*/
private LocalDateTime finishDate;
/**
*
*/
private LocalDateTime confirmDate;
/**
*
*/
private String repairResult;
/**
*
*/
private String acceptedBy;
/**
*
*/
private String confirmBy;
/**
* 0- 1-
*
* {@link TODO mes_mold_record_status }
*/
private Integer status;
/**
*
*/
private String remark;
/**
* 1- 2-
*/
private Integer moldType;
/**
* Id
*/
private Long deviceId;
/**
* Id
*/
private Long componentId;
}

@ -0,0 +1,76 @@
package cn.iocoder.yudao.module.erp.dal.dataobject.moldrepair;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import org.apache.ibatis.type.Alias;
/**
* DO
*
* @author
*/
@TableName("mes_mold_repair_line")
@KeySequence("mes_mold_repair_line_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Alias("ErpMoldRepairLineDO")
public class MoldRepairLineDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
* ID
*/
private Long repairId;
/**
* ID
*/
private Long subjectId;
/**
*
*/
private String subjectCode;
/**
*
*/
private String subjectName;
/**
*
*/
private String subjectType;
/**
*
*/
private String subjectContent;
/**
*
*/
private String subjectStandard;
/**
*
*/
private String malfunction;
/**
*
*/
private String malfunctionUrl;
/**
*
*/
private String repairDes;
/**
*
*/
private String remark;
}

@ -0,0 +1,70 @@
package cn.iocoder.yudao.module.erp.dal.dataobject.moldticketresults;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import org.apache.ibatis.type.Alias;
import java.time.LocalDateTime;
/**
* DO
*
* @author
*/
@TableName("mes_mold_ticket_results")
@KeySequence("mes_mold_ticket_results_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Alias("ErpMoldTicketResultsDO")
public class MoldTicketResultsDO extends BaseDO {
/**
* id
*/
@TableId
private Long id;
/**
*
*/
private String inspectionItemName;
/**
*
*/
private String inspectionMethod;
/**
*
*/
private String judgmentCriteria;
/**
* 0- 1- 2-
*/
private Integer inspectionResult;
/**
*
*/
private String images;
/**
*
*/
private String remark;
/**
*
*/
private LocalDateTime inspectionTime;
/**
*
*/
private Long managementId;
/**
* id
*/
private Long moldId;
}

@ -0,0 +1,27 @@
package cn.iocoder.yudao.module.erp.dal.mysql.moldrepair;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.erp.dal.dataobject.moldrepair.MoldRepairLineDO;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* Mapper
*
* @author
*/
@Mapper
@Repository("erpMoldRepairLineMapper")
public interface MoldRepairLineMapper extends BaseMapperX<MoldRepairLineDO> {
default List<MoldRepairLineDO> selectListByRepairId(Long repairId) {
return selectList(MoldRepairLineDO::getRepairId, repairId);
}
default int deleteByRepairId(Long repairId) {
return delete(MoldRepairLineDO::getRepairId, repairId);
}
}

@ -0,0 +1,61 @@
package cn.iocoder.yudao.module.erp.dal.mysql.moldrepair;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.erp.controller.admin.moldrepair.vo.MoldRepairPageReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.moldrepair.MoldRepairDO;
import com.alibaba.excel.util.StringUtils;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* Mapper
*
* @author
*/
@Mapper
@Repository("erpMoldRepairMapper")
public interface MoldRepairMapper extends BaseMapperX<MoldRepairDO> {
default PageResult<MoldRepairDO> selectPage(MoldRepairPageReqVO reqVO) {
LambdaQueryWrapperX<MoldRepairDO> moldRepairDOLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
moldRepairDOLambdaQueryWrapperX
.eqIfPresent(MoldRepairDO::getRepairCode, reqVO.getRepairCode())
.likeIfPresent(MoldRepairDO::getRepairName, reqVO.getRepairName())
.eqIfPresent(MoldRepairDO::getMoldId, reqVO.getMoldId())
.eqIfPresent(MoldRepairDO::getMoldCode, reqVO.getMoldCode())
.likeIfPresent(MoldRepairDO::getMoldName, reqVO.getMoldName())
.eqIfPresent(MoldRepairDO::getMoldBrand, reqVO.getMoldBrand())
.eqIfPresent(MoldRepairDO::getMoldSpec, reqVO.getMoldSpec())
.eqIfPresent(MoldRepairDO::getMoldTypeId, reqVO.getMoldTypeId())
.betweenIfPresent(MoldRepairDO::getRequireDate, reqVO.getRequireDate())
.betweenIfPresent(MoldRepairDO::getFinishDate, reqVO.getFinishDate())
.betweenIfPresent(MoldRepairDO::getConfirmDate, reqVO.getConfirmDate())
.eqIfPresent(MoldRepairDO::getRepairResult, reqVO.getRepairResult())
.eqIfPresent(MoldRepairDO::getAcceptedBy, reqVO.getAcceptedBy())
.eqIfPresent(MoldRepairDO::getConfirmBy, reqVO.getConfirmBy())
.eqIfPresent(MoldRepairDO::getStatus, reqVO.getStatus())
.eqIfPresent(MoldRepairDO::getRemark, reqVO.getRemark())
.betweenIfPresent(MoldRepairDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MoldRepairDO::getCreateTime);
// 单独处理 ids 条件
if (StringUtils.isNotBlank(reqVO.getIds())) {
List<Long> idList = Arrays.stream(reqVO.getIds().split(","))
.map(String::trim)
.map(Long::valueOf)
.collect(Collectors.toList());
moldRepairDOLambdaQueryWrapperX.in(MoldRepairDO::getId, idList);
}
return selectPage(reqVO,moldRepairDOLambdaQueryWrapperX );
}
}

@ -0,0 +1,38 @@
package cn.iocoder.yudao.module.erp.dal.mysql.moldticketresults;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.erp.controller.admin.moldticketresults.vo.MoldTicketResultsPageReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.moldticketresults.MoldTicketResultsDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* Mapper
*
* @author
*/
@Mapper
@Repository("erpMoldTicketResultsMapper")
public interface MoldTicketResultsMapper extends BaseMapperX<MoldTicketResultsDO> {
default PageResult<MoldTicketResultsDO> selectPage(MoldTicketResultsPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MoldTicketResultsDO>()
.likeIfPresent(MoldTicketResultsDO::getInspectionItemName, reqVO.getInspectionItemName())
.eqIfPresent(MoldTicketResultsDO::getInspectionMethod, reqVO.getInspectionMethod())
.eqIfPresent(MoldTicketResultsDO::getJudgmentCriteria, reqVO.getJudgmentCriteria())
.eqIfPresent(MoldTicketResultsDO::getInspectionResult, reqVO.getInspectionResult())
.eqIfPresent(MoldTicketResultsDO::getImages, reqVO.getImages())
.eqIfPresent(MoldTicketResultsDO::getRemark, reqVO.getRemark())
.betweenIfPresent(MoldTicketResultsDO::getInspectionTime, reqVO.getInspectionTime())
.eqIfPresent(MoldTicketResultsDO::getManagementId, reqVO.getManagementId())
.betweenIfPresent(MoldTicketResultsDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MoldTicketResultsDO::getId));
}
List<MoldTicketResultsDO> findByMoldIdAndPlanType(@Param("moldId") Long moldId,@Param("planType") Integer planType);
}

@ -0,0 +1,30 @@
<?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.erp.dal.mysql.moldticketresults.MoldTicketResultsMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<select id="findByMoldIdAndPlanType"
resultType="cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO">
SELECT
mtr.*
from
besure.mes_mold_ticket_results mtr
left join besure.mes_mold_ticket_management mtm on mtm.id = mtr.management_id
WHERE 1=1
<!-- 必填条件 -->
<if test="moldId != null and moldId != ''">
and mtr.mold_id = #{moldId}
</if>
<if test="planType != null and planType != ''">
and mtm.plan_type= #{planType}
</if>
order by mtr.create_time desc
</select>
</mapper>

@ -95,6 +95,7 @@ public CommonResult<PageResult<RecipeRespVO>> getRecipePage(@Valid RecipePageReq
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<RecipeDO> list = recipeService.getRecipePage(pageReqVO).getList(); List<RecipeDO> list = recipeService.getRecipePage(pageReqVO).getList();
PageResult<RecipeDO> pageResult = recipeService.getRecipePage(pageReqVO);
// 导出 Excel // 导出 Excel
ExcelUtils.write(response, "配方管理主.xls", "数据", RecipeRespVO.class, ExcelUtils.write(response, "配方管理主.xls", "数据", RecipeRespVO.class,
BeanUtils.toBean(list, RecipeRespVO.class)); BeanUtils.toBean(list, RecipeRespVO.class));

@ -15,19 +15,25 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
@ToString(callSuper = true) @ToString(callSuper = true)
public class RecipePageReqVO extends PageParam { public class RecipePageReqVO extends PageParam {
@Schema(description = "配方名称", example = "李四") @Schema(description = "配方名称", example = "赵六")
private String name; private String name;
@Schema(description = "配方编码") @Schema(description = "配方编码")
private String recipeCode; private String recipeCode;
@Schema(description = "关联配方类型", example = "2") @Schema(description = "配方类型(关联配方类型表code", example = "2")
private String recipeType; private String recipeType;
@Schema(description = "关联产品名字", example = "赵六") @Schema(description = "关联产品名称", example = "李四")
private String productName; private String productName;
@Schema(description = "关联设备名字", example = "赵六") @Schema(description = "关联设备ID关联iot_device.id", example = "14725")
private Long machineId;
@Schema(description = "关联设备编码(冗余字段)")
private String machineCode;
@Schema(description = "关联设备名称(冗余字段)", example = "芋艿")
private String machineName; private String machineName;
@Schema(description = "配方描述") @Schema(description = "配方描述")
@ -43,8 +49,4 @@ public class RecipePageReqVO extends PageParam {
@Schema(description = "数据单位") @Schema(description = "数据单位")
private String dataUnit; private String dataUnit;
// 新增多选导出的ids字段逗号分隔的id字符串如"1,2,3"
@Schema(description = "多选导出ID集合逗号分隔", example = "1,2,3")
private String ids;
} }

@ -12,11 +12,11 @@ import com.alibaba.excel.annotation.*;
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
public class RecipeRespVO { public class RecipeRespVO {
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "631") @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6587")
// @ExcelProperty("主键ID") @ExcelProperty("主键ID")
private Long id; private Long id;
@Schema(description = "配方名称", example = "李四") @Schema(description = "配方名称", example = "赵六")
@ExcelProperty("配方名称") @ExcelProperty("配方名称")
private String name; private String name;
@ -24,36 +24,40 @@ public class RecipeRespVO {
@ExcelProperty("配方编码") @ExcelProperty("配方编码")
private String recipeCode; private String recipeCode;
@Schema(description = "关联配方类型", example = "2") @Schema(description = "配方类型(关联配方类型表code", example = "2")
@ExcelProperty("配方类型") @ExcelProperty("配方类型关联配方类型表code")
private String recipeType; private String recipeType;
@Schema(description = "关联产品名字", example = "赵六") @Schema(description = "关联产品名称", example = "李四")
@ExcelProperty("关联产品") @ExcelProperty("关联产品名称")
private String productName; private String productName;
@Schema(description = "关联设备名字", example = "赵六") @Schema(description = "关联设备ID关联iot_device.id", example = "14725")
@ExcelProperty("关联设备") @ExcelProperty("关联设备ID关联iot_device.id")
private Long machineId;
@Schema(description = "关联设备编码(冗余字段)")
@ExcelProperty("关联设备编码(冗余字段)")
private String machineCode;
@Schema(description = "关联设备名称(冗余字段)", example = "芋艿")
@ExcelProperty("关联设备名称(冗余字段)")
private String machineName; private String machineName;
@Schema(description = "配方描述") @Schema(description = "配方描述")
@ExcelProperty("备注") @ExcelProperty("配方描述")
private String recipeDesc; private String recipeDesc;
@Schema(description = "是否启用0-禁用1-启用)", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "是否启用0-禁用1-启用)", requiredMode = Schema.RequiredMode.REQUIRED)
// @ExcelProperty("是否启用0-禁用1-启用)") @ExcelProperty("是否启用0-禁用1-启用)")
private Boolean isEnable; private Boolean isEnable;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
// @ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
@Schema(description = "数据单位") @Schema(description = "数据单位")
// @ExcelProperty("数据单位") @ExcelProperty("数据单位")
private String dataUnit; private String dataUnit;
@Schema(description = "关联设备ID", example = "1001")
// @ExcelProperty("关联设备ID")
private Long deviceId;
} }

@ -1,16 +1,13 @@
package cn.iocoder.yudao.module.iot.dal.mysql.recipe; package cn.iocoder.yudao.module.iot.dal.mysql.recipe;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import com.alibaba.excel.util.StringUtils;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
//import cn.iocoder.yudao.framework.common.util.StringUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.iot.dal.dataobject.recipe.RecipeDO; import cn.iocoder.yudao.module.iot.dal.dataobject.recipe.RecipeDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.iot.controller.admin.recipe.vo.RecipePageReqVO; import cn.iocoder.yudao.module.iot.controller.admin.recipe.vo.*;
/** /**
* Mapper * Mapper
@ -21,33 +18,19 @@ import cn.iocoder.yudao.module.iot.controller.admin.recipe.vo.RecipePageReqVO;
public interface RecipeMapper extends BaseMapperX<RecipeDO> { public interface RecipeMapper extends BaseMapperX<RecipeDO> {
default PageResult<RecipeDO> selectPage(RecipePageReqVO reqVO) { default PageResult<RecipeDO> selectPage(RecipePageReqVO reqVO) {
// 1. 先创建查询条件对象 return selectPage(reqVO, new LambdaQueryWrapperX<RecipeDO>()
LambdaQueryWrapperX<RecipeDO> queryWrapper = new LambdaQueryWrapperX<RecipeDO>()
// 原有所有查询条件(保留不变)
.likeIfPresent(RecipeDO::getName, reqVO.getName()) .likeIfPresent(RecipeDO::getName, reqVO.getName())
.likeIfPresent(RecipeDO::getRecipeCode, reqVO.getRecipeCode()) .eqIfPresent(RecipeDO::getRecipeCode, reqVO.getRecipeCode())
.eqIfPresent(RecipeDO::getRecipeType, reqVO.getRecipeType()) .eqIfPresent(RecipeDO::getRecipeType, reqVO.getRecipeType())
.likeIfPresent(RecipeDO::getProductName, reqVO.getProductName()) .likeIfPresent(RecipeDO::getProductName, reqVO.getProductName())
.eqIfPresent(RecipeDO::getMachineId, reqVO.getMachineId())
.eqIfPresent(RecipeDO::getMachineCode, reqVO.getMachineCode())
.likeIfPresent(RecipeDO::getMachineName, reqVO.getMachineName()) .likeIfPresent(RecipeDO::getMachineName, reqVO.getMachineName())
.eqIfPresent(RecipeDO::getRecipeDesc, reqVO.getRecipeDesc()) .eqIfPresent(RecipeDO::getRecipeDesc, reqVO.getRecipeDesc())
.eqIfPresent(RecipeDO::getIsEnable, reqVO.getIsEnable()) .eqIfPresent(RecipeDO::getIsEnable, reqVO.getIsEnable())
.betweenIfPresent(RecipeDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(RecipeDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(RecipeDO::getDataUnit, reqVO.getDataUnit()) .eqIfPresent(RecipeDO::getDataUnit, reqVO.getDataUnit())
.orderByDesc(RecipeDO::getId); .orderByDesc(RecipeDO::getId));
// 2. 新增处理ids多选导出条件和参考代码逻辑一致
if (StringUtils.isNotBlank(reqVO.getIds())) {
// 将逗号分隔的ids字符串转为Long类型的List
List<Long> idList = Arrays.stream(reqVO.getIds().split(","))
.map(String::trim) // 去除空格,避免空字符导致转换失败
.map(Long::valueOf) // 转为Long类型
.collect(Collectors.toList());
// 添加idIn条件只查询指定ids的记录
queryWrapper.in(RecipeDO::getId, idList);
}
// 3. 执行分页查询
return selectPage(reqVO, queryWrapper);
} }
} }

@ -1,16 +1,11 @@
package cn.iocoder.yudao.module.iot.dal.mysql.recipetype; package cn.iocoder.yudao.module.iot.dal.mysql.recipetype;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.module.iot.controller.admin.recipe.vo.RecipePageReqVO;
import com.alibaba.excel.util.StringUtils;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.iot.dal.dataobject.recipe.RecipeDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.recipetype.RecipeTypeDO; import cn.iocoder.yudao.module.iot.dal.dataobject.recipetype.RecipeTypeDO;
import com.alibaba.excel.util.StringUtils;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.iot.controller.admin.recipetype.vo.*; import cn.iocoder.yudao.module.iot.controller.admin.recipetype.vo.*;
@ -19,71 +14,18 @@ import cn.iocoder.yudao.module.iot.controller.admin.recipetype.vo.*;
* *
* @author * @author
*/ */
//@Mapper
//public interface RecipeTypeMapper extends BaseMapperX<RecipeTypeDO> {
//
// default PageResult<RecipeTypeDO> selectPage(RecipeTypePageReqVO reqVO) {
// LambdaQueryWrapperX<RecipeTypeDO> queryWrapper = new LambdaQueryWrapperX<RecipeTypeDO>()
//// return selectPage(reqVO, new LambdaQueryWrapperX<RecipeTypeDO>()
// .eqIfPresent(RecipeTypeDO::getCode, reqVO.getCode())
// .likeIfPresent(RecipeTypeDO::getName, reqVO.getName())
// .eqIfPresent(RecipeTypeDO::getProcess, reqVO.getProcess())
// .eqIfPresent(RecipeTypeDO::getRemark, reqVO.getRemark())
// .eqIfPresent(RecipeTypeDO::getSort, reqVO.getSort())
// .betweenIfPresent(RecipeTypeDO::getCreateTime, reqVO.getCreateTime())
// .orderByDesc(RecipeTypeDO::getId);
//
// // 新增处理ids多选导出条件
// if (StringUtils.isNotBlank(reqVO.getIds())) {
// List<Long> idList = Arrays.stream(reqVO.getIds().split(","))
// .map(String::trim)
// .map(Long::valueOf)
// .collect(Collectors.toList());
// queryWrapper.in(RecipeTypeDO::getId, idList);
// }
//
// return selectPage(reqVO, queryWrapper);
//
//
// }
//
//}
@Mapper @Mapper
public interface RecipeTypeMapper extends BaseMapperX<RecipeTypeDO> { public interface RecipeTypeMapper extends BaseMapperX<RecipeTypeDO> {
// 原有selectPage方法保留不动
default PageResult<RecipeTypeDO> selectPage(RecipeTypePageReqVO reqVO) { default PageResult<RecipeTypeDO> selectPage(RecipeTypePageReqVO reqVO) {
LambdaQueryWrapperX<RecipeTypeDO> queryWrapper = buildQueryWrapper(reqVO); return selectPage(reqVO, new LambdaQueryWrapperX<RecipeTypeDO>()
return selectPage(reqVO, queryWrapper);
}
// 新增selectList方法复用查询条件仅查全部列表解决Service报错
default List<RecipeTypeDO> selectList(RecipeTypePageReqVO reqVO) {
LambdaQueryWrapperX<RecipeTypeDO> queryWrapper = buildQueryWrapper(reqVO);
return selectList(queryWrapper); // 调用BaseMapperX的selectList方法
}
// 抽取通用查询条件构造方法(复用,避免代码重复)
default LambdaQueryWrapperX<RecipeTypeDO> buildQueryWrapper(RecipeTypePageReqVO reqVO) {
LambdaQueryWrapperX<RecipeTypeDO> queryWrapper = new LambdaQueryWrapperX<RecipeTypeDO>()
.eqIfPresent(RecipeTypeDO::getCode, reqVO.getCode()) .eqIfPresent(RecipeTypeDO::getCode, reqVO.getCode())
.likeIfPresent(RecipeTypeDO::getName, reqVO.getName()) .likeIfPresent(RecipeTypeDO::getName, reqVO.getName())
.eqIfPresent(RecipeTypeDO::getProcess, reqVO.getProcess()) .eqIfPresent(RecipeTypeDO::getProcess, reqVO.getProcess())
.eqIfPresent(RecipeTypeDO::getRemark, reqVO.getRemark()) .eqIfPresent(RecipeTypeDO::getRemark, reqVO.getRemark())
.eqIfPresent(RecipeTypeDO::getSort, reqVO.getSort()) .eqIfPresent(RecipeTypeDO::getSort, reqVO.getSort())
.betweenIfPresent(RecipeTypeDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(RecipeTypeDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(RecipeTypeDO::getId); .orderByDesc(RecipeTypeDO::getId));
// 处理ids多选导出条件复用原有逻辑
if (StringUtils.isNotBlank(reqVO.getIds())) {
List<Long> idList = Arrays.stream(reqVO.getIds().split(","))
.map(String::trim)
.map(Long::valueOf)
.collect(Collectors.toList());
queryWrapper.in(RecipeTypeDO::getId, idList);
}
return queryWrapper;
} }
} }

@ -1,129 +1,21 @@
//package cn.iocoder.yudao.module.iot.service.recipe;
//
//import cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants;
//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.iot.controller.admin.recipe.vo.*;
//import cn.iocoder.yudao.module.iot.dal.dataobject.recipe.RecipeDO;
//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.iot.dal.mysql.recipe.RecipeMapper;
//import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper;
//
//import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
//import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*;
//
//import cn.iocoder.yudao.framework.common.exception.ServiceException;
//import cn.hutool.core.util.StrUtil;
//import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
//import cn.iocoder.yudao.framework.common.exception.ServiceException;
//
//import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO; // 引入现有DeviceDO
//import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper; // 引入现有DeviceMapper
//
///**
// * 配方管理主 Service 实现类
// *
// * @author 内蒙必硕
// */
//@Service
//@Validated
//public class RecipeServiceImpl implements RecipeService {
//
// @Resource
// private RecipeMapper recipeMapper;
//
//// @Override
//// public Long createRecipe(RecipeSaveReqVO createReqVO) {
//// // 插入
//// RecipeDO recipe = BeanUtils.toBean(createReqVO, RecipeDO.class);
//// recipeMapper.insert(recipe);
//// // 返回
//// return recipe.getId();
//// }
//@Override
//public Long createRecipe(RecipeSaveReqVO createReqVO) {
// String recipeCode = createReqVO.getRecipeCode();
//
// // 1. 校验recipeCode不为空使用新增的RECIPE_CODE_EMPTY错误码
// if (StrUtil.isBlank(recipeCode)) {
// throw new ServiceException(ErrorCodeConstants.RECIPE_CODE_EMPTY);
// }
//
// // 2. 校验recipeCode是否重复使用新增的RECIPE_CODE_DUPLICATE错误码
// boolean exists = recipeMapper.exists(
// new LambdaQueryWrapperX<RecipeDO>().eq(RecipeDO::getRecipeCode, recipeCode)
// );
// if (exists) {
// throw new ServiceException(ErrorCodeConstants.RECIPE_CODE_DUPLICATE);
// }
//
// // ========== 原有逻辑保持不变 ==========
// RecipeDO recipe = BeanUtils.toBean(createReqVO, RecipeDO.class);
// recipeMapper.insert(recipe);
// return recipe.getId();
//}
//
// @Override
// public void updateRecipe(RecipeSaveReqVO updateReqVO) {
// // 校验存在
// validateRecipeExists(updateReqVO.getId());
// // 更新
// RecipeDO updateObj = BeanUtils.toBean(updateReqVO, RecipeDO.class);
// recipeMapper.updateById(updateObj);
// }
//
// @Override
// public void deleteRecipe(Long id) {
// // 校验存在
// validateRecipeExists(id);
// // 删除
// recipeMapper.deleteById(id);
// }
//
// private void validateRecipeExists(Long id) {
// if (recipeMapper.selectById(id) == null) {
// throw exception(RECIPE_NOT_EXISTS);
// }
// }
//
// @Override
// public RecipeDO getRecipe(Long id) {
// return recipeMapper.selectById(id);
// }
//
//}
package cn.iocoder.yudao.module.iot.service.recipe; package cn.iocoder.yudao.module.iot.service.recipe;
import cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants;
import cn.iocoder.yudao.module.iot.controller.admin.recipe.vo.RecipePageReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.recipe.vo.RecipeRespVO;
import cn.iocoder.yudao.module.iot.controller.admin.recipe.vo.RecipeSaveReqVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.recipe.RecipeDO;
import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper;
import cn.iocoder.yudao.module.iot.dal.mysql.recipe.RecipeMapper;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.hutool.core.util.StrUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import cn.iocoder.yudao.module.iot.controller.admin.recipe.vo.*;
import cn.iocoder.yudao.module.iot.dal.dataobject.recipe.RecipeDO;
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.iot.dal.mysql.recipe.RecipeMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.RECIPE_NOT_EXISTS; import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*;
/** /**
* Service * Service
@ -136,37 +28,30 @@ public class RecipeServiceImpl implements RecipeService {
@Resource @Resource
private RecipeMapper recipeMapper; private RecipeMapper recipeMapper;
@Resource
private DeviceMapper deviceMapper; // 注入现有DeviceMapper
// ========== 原有方法保持不变 ==========
@Override @Override
public Long createRecipe(RecipeSaveReqVO createReqVO) { public Long createRecipe(RecipeSaveReqVO createReqVO) {
String recipeCode = createReqVO.getRecipeCode(); // 插入
if (StrUtil.isBlank(recipeCode)) {
throw new ServiceException(ErrorCodeConstants.RECIPE_CODE_EMPTY);
}
boolean exists = recipeMapper.exists(
new LambdaQueryWrapperX<RecipeDO>().eq(RecipeDO::getRecipeCode, recipeCode)
);
if (exists) {
throw new ServiceException(ErrorCodeConstants.RECIPE_CODE_DUPLICATE);
}
RecipeDO recipe = BeanUtils.toBean(createReqVO, RecipeDO.class); RecipeDO recipe = BeanUtils.toBean(createReqVO, RecipeDO.class);
recipeMapper.insert(recipe); recipeMapper.insert(recipe);
// 返回
return recipe.getId(); return recipe.getId();
} }
@Override @Override
public void updateRecipe(RecipeSaveReqVO updateReqVO) { public void updateRecipe(RecipeSaveReqVO updateReqVO) {
// 校验存在
validateRecipeExists(updateReqVO.getId()); validateRecipeExists(updateReqVO.getId());
// 更新
RecipeDO updateObj = BeanUtils.toBean(updateReqVO, RecipeDO.class); RecipeDO updateObj = BeanUtils.toBean(updateReqVO, RecipeDO.class);
recipeMapper.updateById(updateObj); recipeMapper.updateById(updateObj);
} }
@Override @Override
public void deleteRecipe(Long id) { public void deleteRecipe(Long id) {
// 校验存在
validateRecipeExists(id); validateRecipeExists(id);
// 删除
recipeMapper.deleteById(id); recipeMapper.deleteById(id);
} }
@ -186,65 +71,4 @@ public class RecipeServiceImpl implements RecipeService {
return recipeMapper.selectPage(pageReqVO); return recipeMapper.selectPage(pageReqVO);
} }
// ========== 新增带deviceId的方法改为public供Controller直接调用 ==========
/**
* deviceId
*/
public PageResult<RecipeRespVO> getRecipePageWithDeviceId(RecipePageReqVO pageReqVO) {
// 1. 查询配方分页数据
PageResult<RecipeDO> recipePage = recipeMapper.selectPage(pageReqVO);
List<RecipeDO> recipeList = recipePage.getList();
if (recipeList.isEmpty()) {
return PageResult.empty(recipePage.getTotal());
}
// 2. 提取所有machineName批量查询deviceId避免N+1查询
List<String> machineNames = recipeList.stream()
.map(RecipeDO::getMachineName)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.toList());
// 调用现有DeviceMapper查询设备名称->ID映射
List<DeviceDO> deviceList = deviceMapper.selectList(
new LambdaQueryWrapperX<DeviceDO>().in(DeviceDO::getDeviceName, machineNames)
);
// 构建设备名称到ID的映射处理重复名称取第一个
Map<String, Long> deviceName2IdMap = new HashMap<>();
for (DeviceDO device : deviceList) {
deviceName2IdMap.putIfAbsent(device.getDeviceName(), device.getId());
}
// 3. 转换为VO并设置deviceId
List<RecipeRespVO> respVOList = new ArrayList<>();
for (RecipeDO recipe : recipeList) {
RecipeRespVO respVO = BeanUtils.toBean(recipe, RecipeRespVO.class);
// 根据machineName关联设置deviceId
respVO.setDeviceId(deviceName2IdMap.get(recipe.getMachineName()));
respVOList.add(respVO);
}
return new PageResult<>(respVOList, recipePage.getTotal());
}
/**
* deviceId
*/
public RecipeRespVO getRecipeWithDeviceId(Long id) {
RecipeDO recipe = getRecipe(id);
if (recipe == null) {
return null;
}
RecipeRespVO respVO = BeanUtils.toBean(recipe, RecipeRespVO.class);
// 关联查询deviceId
if (recipe.getMachineName() != null) {
DeviceDO device = deviceMapper.selectOne(
new LambdaQueryWrapperX<DeviceDO>().eq(DeviceDO::getDeviceName, recipe.getMachineName())
);
if (device != null) {
respVO.setDeviceId(device.getId());
}
}
return respVO;
}
} }
Loading…
Cancel
Save