fix:修改了模具详情的点检保养维修履历界面

plp
86158 2 months ago
parent 108c207b3d
commit a112373b17

@ -95,6 +95,11 @@ public interface ErrorCodeConstants {
ErrorCode MOLD_RETURN_NOT_EXISTS = new ErrorCode(5_0087, "模具入库不存在"); ErrorCode MOLD_RETURN_NOT_EXISTS = new ErrorCode(5_0087, "模具入库不存在");
ErrorCode MOLD_OPERATE_NOT_EXISTS = new ErrorCode(5_0087, "模具上下模不存在"); ErrorCode MOLD_OPERATE_NOT_EXISTS = new ErrorCode(5_0087, "模具上下模不存在");
ErrorCode MOLD_REPAIR_NOT_EXISTS = new ErrorCode(5_0087, "模具维修记录不存在");
ErrorCode MOLD_REPAIR_CODE_EXISTS = new ErrorCode(5_0087, "模具维修记录编码已存在");
ErrorCode MOLD_REPAIR_LINE_NOT_EXISTS = new ErrorCode(5_0088, "模具维修子表记录不存在");
ErrorCode MOLD_REPAIR_LINE_ID_NOT_EXISTS = new ErrorCode(5_0088, "模具维修子表记录Id为空");
ErrorCode DV_CHECK_NOT_EXISTS = new ErrorCode(5_0087, "维保计划不存在"); ErrorCode DV_CHECK_NOT_EXISTS = new ErrorCode(5_0087, "维保计划不存在");
@ -107,7 +112,7 @@ public interface ErrorCodeConstants {
ErrorCode DV_REPAIR_LINE_ID_NOT_EXISTS = new ErrorCode(5_0088, "设备维修子表记录Id为空"); ErrorCode DV_REPAIR_LINE_ID_NOT_EXISTS = new ErrorCode(5_0088, "设备维修子表记录Id为空");
ErrorCode ZJ_TYPE_NOT_EXISTS = new ErrorCode(5_009, "检验类型不存在"); ErrorCode ZJ_TYPE_NOT_EXISTS = new ErrorCode(5_0090, "检验类型不存在");
ErrorCode ZJ_ITEM_NOT_EXISTS = new ErrorCode(5_0091, "检验项目不存在"); ErrorCode ZJ_ITEM_NOT_EXISTS = new ErrorCode(5_0091, "检验项目不存在");
ErrorCode ZJ_SCHEMA_NOT_EXISTS = new ErrorCode(5_0092, "检验方案不存在"); ErrorCode ZJ_SCHEMA_NOT_EXISTS = new ErrorCode(5_0092, "检验方案不存在");
ErrorCode ZJ_PRODUCT_NOT_EXISTS = new ErrorCode(5_0093, "检验参数不存在"); ErrorCode ZJ_PRODUCT_NOT_EXISTS = new ErrorCode(5_0093, "检验参数不存在");

@ -5,7 +5,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairLineDO; import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.ticketresults.TicketResultsDO; import cn.iocoder.yudao.module.mes.dal.dataobject.ticketresults.TicketResultsDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
@ -127,7 +127,7 @@ public class DeviceLedgerRespVO extends BaseDO {
private List<ErpProductDO> beijianList; private List<ErpProductDO> beijianList;
@Schema(description = "模具列表") @Schema(description = "模具列表")
private List<MoldDO> moldList; private List<MesMoldDO> moldList;
@Schema(description = "附件地址") @Schema(description = "附件地址")
@ExcelProperty("附件地址") @ExcelProperty("附件地址")

@ -0,0 +1,206 @@
package cn.iocoder.yudao.module.mes.controller.admin.mold;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldBrandDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldBrandProductDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import cn.iocoder.yudao.module.mes.service.mold.MoldBrandService;
import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 模具型号")
@RestController("mesMoldBrandController")
@RequestMapping("/mes/mold-brand")
@Validated
public class MoldBrandController {
@Resource
private MoldBrandService moldBrandService;
@PostMapping("/create")
@Operation(summary = "创建模具型号")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:create')")
public CommonResult<Long> createMoldBrand(@Valid @RequestBody MoldBrandSaveReqVO createReqVO) {
return success(moldBrandService.createMoldBrand(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新模具型号")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:update')")
public CommonResult<Boolean> updateMoldBrand(@Valid @RequestBody MoldBrandSaveReqVO updateReqVO) {
moldBrandService.updateMoldBrand(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除模具型号")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('erp:mold-brand:delete')")
public CommonResult<Boolean> deleteMoldBrand(@RequestParam("id") Long id) {
moldBrandService.deleteMoldBrand(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得模具型号")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<MoldBrandRespVO> getMoldBrand(@RequestParam("id") Long id) {
MesMoldBrandDO moldBrand = moldBrandService.getMoldBrand(id);
return success(BeanUtils.toBean(moldBrand, MoldBrandRespVO.class));
}
@GetMapping("/getBrandList")
@Operation(summary = "获得模具型号列表")
public CommonResult<List<MesMoldBrandDO>> getBrandList(MoldBrandPageReqVO pageReqVO) {
List<MesMoldBrandDO> brandDOList = moldBrandService.selectBy(pageReqVO);
return success(brandDOList);
}
@GetMapping("/page")
@Operation(summary = "获得模具型号分页")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<PageResult<MoldBrandRespVO>> getMoldBrandPage(@Valid MoldBrandPageReqVO pageReqVO) {
PageResult<MoldBrandRespVO> pageResult = moldBrandService.getMoldBrandPage(pageReqVO);
return success(pageResult);
}
@GetMapping("/export-excel")
@Operation(summary = "导出模具型号 Excel")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportMoldBrandExcel(@Valid MoldBrandPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<MoldBrandRespVO> list = moldBrandService.getMoldBrandPage(pageReqVO).getList();
List<MoldBrandRespVO> moldBrandRespVOS = BeanUtils.toBean(list, MoldBrandRespVO.class);
// 导出 Excel
ExcelUtils.write(response, "模具型号.xls", "数据", MoldBrandRespVO.class, moldBrandRespVOS);
}
// ==================== 子表(模具) ====================
@GetMapping("/getMoldList")
@Operation(summary = "获得模具型号")
public CommonResult<List<MesMoldDO>> getMoldList(MesMoldDO moldDO) {
List<MesMoldDO> doList = moldBrandService.selectBy(moldDO);
return success(doList);
}
@GetMapping("/getMoldAllList")
@Operation(summary = "获得模具型号")
public CommonResult<List<MesMoldDO>> getMoldAllList() {
List<MesMoldDO> doList = moldBrandService.getAllList();
return success(doList);
}
@GetMapping("/mold/page")
@Operation(summary = "获得模具分页")
@Parameter(name = "brandId", description = "型号id")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<PageResult<MoldRespVO>> getMoldPage(PageParam pageReqVO, @RequestParam(value = "brandId", required = false) Long brandId) {
return success(moldBrandService.getMoldPage(pageReqVO, brandId));
}
@GetMapping("/mold/list")
@Operation(summary = "获得模具列表")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<List<MesMoldDO>> getMoldList() {
List<MesMoldDO> moldDOList = moldBrandService.getMoldList();
return success(moldDOList);
}
@PostMapping("/mold/create")
@Operation(summary = "创建模具")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:create')")
public CommonResult<Long> createMold(@Valid @RequestBody MesMoldDO mold) {
return success(moldBrandService.createMold(mold));
}
@PutMapping("/mold/update")
@Operation(summary = "更新模具")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:update')")
public CommonResult<Boolean> updateMold(@Valid @RequestBody MesMoldDO mold) {
moldBrandService.updateMold(mold);
return success(true);
}
@DeleteMapping("/mold/delete")
@Parameter(name = "id", description = "编号", required = true)
@Operation(summary = "删除模具")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:delete')")
public CommonResult<Boolean> deleteMold(@RequestParam("id") Long id) {
moldBrandService.deleteMold(id);
return success(true);
}
@GetMapping("/mold/get")
@Operation(summary = "获得模具")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<MesMoldDO> getMold(@RequestParam("id") Long id) {
return success(moldBrandService.getMold(id));
}
// ==================== 子表(模具产品) ====================
@GetMapping("/mold-brand-product/page")
@Operation(summary = "获得模具产品分页")
@Parameter(name = "brandId", description = "型号ID")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<PageResult<MoldProductRespVO>> getMoldBrandProductPage(PageParam pageReqVO,
@RequestParam("brandId") Long brandId) {
PageResult<MesMoldBrandProductDO> pageResult = moldBrandService.getMoldBrandProductPage(pageReqVO, brandId);
PageResult<MoldProductRespVO> result = new PageResult<>(moldBrandService.buildProduct(pageResult.getList()),pageResult.getTotal());
return success(result);
}
@PostMapping("/mold-brand-product/create")
@Operation(summary = "创建模具产品")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:create')")
public CommonResult<Long> createMoldBrandProduct(@Valid @RequestBody MesMoldBrandProductDO moldBrandProduct) {
return success(moldBrandService.createMoldBrandProduct(moldBrandProduct));
}
@PutMapping("/mold-brand-product/update")
@Operation(summary = "更新模具产品")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:update')")
public CommonResult<Boolean> updateMoldBrandProduct(@Valid @RequestBody MesMoldBrandProductDO moldBrandProduct) {
moldBrandService.updateMoldBrandProduct(moldBrandProduct);
return success(true);
}
@DeleteMapping("/mold-brand-product/delete")
@Parameter(name = "id", description = "编号", required = true)
@Operation(summary = "删除模具产品")
@PreAuthorize("@ss.hasPermission('erp:mold-brand:delete')")
public CommonResult<Boolean> deleteMoldBrandProduct(@RequestParam("id") Long id) {
moldBrandService.deleteMoldBrandProduct(id);
return success(true);
}
@GetMapping("/mold-brand-product/get")
@Operation(summary = "获得模具产品")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('erp:mold-brand:query')")
public CommonResult<MesMoldBrandProductDO> getMoldBrandProduct(@RequestParam("id") Long id) {
return success(moldBrandService.getMoldBrandProduct(id));
}
}

@ -0,0 +1,94 @@
package cn.iocoder.yudao.module.mes.controller.admin.mold;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import cn.iocoder.yudao.module.mes.service.mold.MoldService;
import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.MoldPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.MoldRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.MoldSaveReqVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 模具")
@RestController("mesMoldController")
@RequestMapping("/mes/mold")
@Validated
public class MoldController {
@Resource
private MoldService moldService;
@PostMapping("/create")
@Operation(summary = "创建模具")
@PreAuthorize("@ss.hasPermission('erp:mold:create')")
public CommonResult<Long> createMold(@Valid @RequestBody MoldSaveReqVO createReqVO) {
return success(moldService.createMold(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新模具")
@PreAuthorize("@ss.hasPermission('erp:mold:update')")
public CommonResult<Boolean> updateMold(@Valid @RequestBody MoldSaveReqVO updateReqVO) {
moldService.updateMold(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除模具")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('erp:mold:delete')")
public CommonResult<Boolean> deleteMold(@RequestParam("id") Long id) {
moldService.deleteMold(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得模具")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('erp:mold:query')")
public CommonResult<MoldRespVO> getMold(@RequestParam("id") Long id) {
MesMoldDO mold = moldService.getMold(id);
return success(BeanUtils.toBean(mold, MoldRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得模具分页")
@PreAuthorize("@ss.hasPermission('erp:mold:query')")
public CommonResult<PageResult<MoldRespVO>> getMoldPage(@Valid MoldPageReqVO pageReqVO) {
PageResult<MesMoldDO> pageResult = moldService.getMoldPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MoldRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出模具 Excel")
@PreAuthorize("@ss.hasPermission('erp:mold:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportMoldExcel(@Valid MoldPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<MesMoldDO> list = moldService.getMoldPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "模具.xls", "数据", MoldRespVO.class,
BeanUtils.toBean(list, MoldRespVO.class));
}
}

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.mes.controller.admin.mold.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum OrgTypeStatusEnum {
zhijiang("zhijiang", "制浆"),
duidie("duidie", "堆叠"),
chengxing("chengxing", "成型"),
honggan("honggan", "烘干"),
zhuanyi("zhuanyi", "转移"),
jiashi("jiashi", "加湿"),
reya("reya", "热压"),
qiebian("qiebian", "切边"),
pinjian("pinjian", "品检"),
dabao("dabao", "打包"),
tiebiao("tiebiao", "贴标"),
sufeng("sufeng", "塑封"),
pinyin("pinyin", "品印");
private final String orgtype;
private final String description;
public static OrgTypeStatusEnum getByCode(String code) {
for (OrgTypeStatusEnum status : values()) {
if (status.getOrgtype().equals(code)) {
return status;
}
}
return null;
}
}

@ -0,0 +1,60 @@
package cn.iocoder.yudao.module.mes.controller.admin.mold.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.math.BigDecimal;
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 MoldBrandPageReqVO extends PageParam {
@Schema(description = "型号编码")
private String code;
@Schema(description = "型号名称", example = "王五")
private String name;
@Schema(description = "规格", example = "2")
private String moldType;
@Schema(description = "产品ID", example = "2336")
private Long productId;
@Schema(description = "预期寿命(小时)")
private BigDecimal useTime;
@Schema(description = "维保模式", example = "2")
private Integer maintainType;
@Schema(description = "维保周期")
private BigDecimal maintainTime;
@Schema(description = "模具系数")
private Long moldSize;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "是否启用")
private Boolean isEnable;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "工序", example = "你说的对")
private String orgType;
@Schema(description = "id集合导出用")
private String ids;
}

@ -0,0 +1,77 @@
package cn.iocoder.yudao.module.mes.controller.admin.mold.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
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.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 模具型号 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MoldBrandRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24140")
@ExcelProperty("ID")
private Long id;
@Schema(description = "型号编码", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("型号编码")
private String code;
@Schema(description = "型号名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@ExcelProperty("型号名称")
private String name;
@Schema(description = "规格", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("规格")
private String moldType;
@Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2336")
private Long productId;
@Schema(description = "产品", requiredMode = Schema.RequiredMode.REQUIRED, example = "2336")
// @ExcelProperty("产品")
private String productName;
@Schema(description = "预期寿命/次")
@ExcelProperty("预期寿命/次")
private BigDecimal useTime;
@Schema(description = "维保模式", example = "2")
// @ExcelProperty(value = "维保模式", converter = DictConvert.class)
@DictFormat("maintain_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer maintainType;
@Schema(description = "维保周期")
// @ExcelProperty("维保周期")
private BigDecimal maintainTime;
@Schema(description = "模穴数", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("模穴数")
private Long moldSize;
@Schema(description = "备注", example = "你说的对")
@ExcelProperty("备注")
private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
// @ExcelProperty("是否启用")
private Boolean isEnable;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
@ColumnWidth(20)
private LocalDateTime createTime;
@Schema(description = "工序", example = "reya")
@ExcelProperty(value = "工序", converter = DictConvert.class)
@DictFormat("mes_org_type")
private String orgType;
// , converter = OrgTypeConverter.class
}

@ -0,0 +1,55 @@
package cn.iocoder.yudao.module.mes.controller.admin.mold.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 模具型号新增/修改 Request VO")
@Data
public class MoldBrandSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24140")
private Long id;
@Schema(description = "型号编码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "型号编码不能为空")
private String code;
@Schema(description = "型号名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
@NotEmpty(message = "型号名称不能为空")
private String name;
@Schema(description = "规格", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "规格不能为空")
private String moldType;
@Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2336")
// @NotNull(message = "产品ID不能为空")
private Long productId;
@Schema(description = "预期寿命(小时)")
private BigDecimal useTime;
@Schema(description = "维保模式", example = "2")
private Integer maintainType;
@Schema(description = "维保周期")
private BigDecimal maintainTime;
@Schema(description = "模穴数", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "模穴数不能为空")
private Long moldSize;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否启用不能为空")
private Boolean isEnable;
@Schema(description = "工序", example = "你说的对")
private String orgType;
}

@ -0,0 +1,69 @@
package cn.iocoder.yudao.module.mes.controller.admin.mold.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.math.BigDecimal;
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 MoldPageReqVO extends PageParam {
@Schema(description = "模具编码")
private String code;
@Schema(description = "模具名称", example = "芋艿")
private String name;
@Schema(description = "单位ID", example = "19527")
private Long unitId;
@Schema(description = "设备ID", example = "24428")
private Long machineId;
@Schema(description = "设备名称", example = "24428")
private String machineName;
@Schema(description = "使用次数/次")
private BigDecimal useTime;
@Schema(description = "入库时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] inTime;
@Schema(description = "状态", example = "1")
private Integer status;
@Schema(description = "模具图片")
private String images;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "是否启用")
private Boolean isEnable;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "型号id", example = "15258")
private Long brandId;
@Schema(description = "id集合导出用")
private String ids;
@Schema(description = "附件地址")
private String fileUrl;
}

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.mes.controller.admin.mold.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 MoldProductRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32278")
@ExcelProperty("ID")
private Long id;
@Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2336")
private Long productId;
@Schema(description = "产品", requiredMode = Schema.RequiredMode.REQUIRED, example = "2336")
@ExcelProperty("产品")
private String productName;
@Schema(description = "备注", example = "你猜")
@ExcelProperty("备注")
private String remark;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "型号id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15258")
@ExcelProperty("型号id")
private Long brandId;
}

@ -0,0 +1,87 @@
package cn.iocoder.yudao.module.mes.controller.admin.mold.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
@Schema(description = "管理后台 - 模具 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MoldRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32278")
@ExcelProperty("ID")
private Long id;
@Schema(description = "模具编码", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("模具编码")
private String code;
@Schema(description = "模具名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("模具名称")
private String name;
@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19527")
private Long unitId;
@Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "个")
// @ExcelProperty("单位")
private String unitName;
@Schema(description = "设备ID", example = "24428")
private Long machineId;
@Schema(description = "设备名称", example = "24428")
@ExcelProperty("使用设备")
private String machineName;
@Schema(description = "使用次数/次")
@ExcelProperty("使用次数/次")
private BigDecimal useTime;
@Schema(description = "入库时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("入库时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
private LocalDateTime inTime;
@Schema(description = "状态", example = "1")
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat("erp_mold_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer status;
@Schema(description = "模具图片")
// @ExcelProperty("模具图片")
private String images;
@Schema(description = "备注", example = "你猜")
@ExcelProperty("备注")
private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
// @ExcelProperty("是否启用")
private Boolean isEnable;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
// @ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "型号id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15258")
private Long brandId;
@Schema(description = "型号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15258")
@ExcelProperty("型号")
private String brandName;
@Schema(description = "附件地址")
@ExcelProperty("附件地址")
private String fileUrl;
}

@ -0,0 +1,60 @@
package cn.iocoder.yudao.module.mes.controller.admin.mold.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 模具新增/修改 Request VO")
@Data
public class MoldSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32278")
private Long id;
@Schema(description = "模具编码", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "模具编码不能为空")
private String code;
@Schema(description = "模具名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "模具名称不能为空")
private String name;
@Schema(description = "单位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19527")
// @NotNull(message = "单位ID不能为空")
private Long unitId;
@Schema(description = "机台ID", example = "24428")
private Long machineId;
@Schema(description = "使用次数/次")
private BigDecimal useTime;
@Schema(description = "入库时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "入库时间不能为空")
private LocalDateTime inTime;
@Schema(description = "状态", example = "1")
private Integer status;
@Schema(description = "模具图片")
private String images;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
// @NotNull(message = "是否启用不能为空")
private Boolean isEnable;
@Schema(description = "型号id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15258")
// @NotNull(message = "型号id不能为空")
private Long brandId;
@Schema(description = "附件地址")
private String fileUrl;
}

@ -0,0 +1,86 @@
package cn.iocoder.yudao.module.mes.controller.admin.mold.vo;
import cn.iocoder.yudao.module.mes.controller.admin.mold.enums.OrgTypeStatusEnum;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import org.springframework.stereotype.Component;
/**
*
*/
@Component("mesOrgTypeConverter")
public class OrgTypeConverter implements Converter<String> { // 泛型改为 String对应英文字符串
/**
* ExcelExcel/ Java
*/
@Override
public String convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
String cellValue = cellData.getStringValue();
if (cellValue == null || cellValue.trim().isEmpty()) {
return null;
}
// 优先匹配中文 → 转换为对应的英文常量名
for (OrgTypeStatusEnum status : OrgTypeStatusEnum.values()) {
if (status.getDescription().equals(cellValue)) { // 注意枚举的描述方法是 getDesc
return status.name(); // 返回枚举的英文常量名(如 IN_USE
}
}
// 匹配英文 → 直接返回兼容Excel中填英文的场景
for (OrgTypeStatusEnum status : OrgTypeStatusEnum.values()) {
if (status.name().equals(cellValue)) {
return cellValue;
}
}
// 无匹配则抛出异常
throw new IllegalArgumentException("设备状态格式错误: " + cellValue + ",仅支持中文(在机/在库/维修中/保养中/报废或英文IN_USE/IN_STOCK/UNDER_REPAIR/UNDER_MAINTENANCE/SCRAPPED");
}
/**
* ExcelJava Excel
*/
@Override
public WriteCellData<?> convertToExcelData(String value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
if (value == null || value.trim().isEmpty()) {
return new WriteCellData<>("");
}
// 根据英文常量名匹配枚举,转换为中文
OrgTypeStatusEnum status = null;
try {
status = OrgTypeStatusEnum.valueOf(value); // 通过英文名称获取枚举
} catch (IllegalArgumentException e) {
// 若英文匹配失败,尝试兜底匹配中文(兼容异常场景)
for (OrgTypeStatusEnum s : OrgTypeStatusEnum.values()) {
if (s.getDescription().equals(value)) {
status = s;
break;
}
}
}
String text = status != null ? status.getDescription() : "未知";
return new WriteCellData<>(text);
}
// 必须实现的接口方法指定转换的Java类型
@Override
public Class<?> supportJavaTypeKey() {
return String.class;
}
// 必须实现的接口方法指定Excel单元格类型
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
}

@ -1,11 +1,11 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldoperate; package cn.iocoder.yudao.module.mes.controller.admin.moldoperate;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO; import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.MoldRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.MoldSaveReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO;
import cn.iocoder.yudao.module.erp.service.mold.MoldService; import cn.iocoder.yudao.module.mes.service.mold.MoldService;
import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.DeviceLedgerRespVO; import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.DeviceLedgerRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.DeviceLedgerSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.DeviceLedgerSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO; import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO;
@ -66,7 +66,7 @@ public class MoldOperateController {
public CommonResult<Long> createMoldOperate(@Valid @RequestBody MoldOperateSaveReqVO createReqVO) { public CommonResult<Long> createMoldOperate(@Valid @RequestBody MoldOperateSaveReqVO createReqVO) {
if (Objects.equals(createReqVO.getOperateType(), "1")) { if (Objects.equals(createReqVO.getOperateType(), "1")) {
DeviceLedgerDO deviceLedger = deviceLedgerService.getDeviceLedger(createReqVO.getDeviceId()); DeviceLedgerDO deviceLedger = deviceLedgerService.getDeviceLedger(createReqVO.getDeviceId());
MoldDO moldDO = moldService.getMold(createReqVO.getMoldId()); MesMoldDO moldDO = moldService.getMold(createReqVO.getMoldId());
moldDO.setMachineId(createReqVO.getDeviceId()); moldDO.setMachineId(createReqVO.getDeviceId());
moldDO.setMachineName(deviceLedger.getDeviceName()); moldDO.setMachineName(deviceLedger.getDeviceName());
moldDO.setStatus(0); // 在机 0 在库 1 moldDO.setStatus(0); // 在机 0 在库 1
@ -76,7 +76,7 @@ public class MoldOperateController {
} else { } else {
DeviceLedgerDO deviceLedger = deviceLedgerService.getDeviceLedger(createReqVO.getDeviceId()); DeviceLedgerDO deviceLedger = deviceLedgerService.getDeviceLedger(createReqVO.getDeviceId());
createReqVO.setMoldId(Long.parseLong(deviceLedger.getMoldId())); createReqVO.setMoldId(Long.parseLong(deviceLedger.getMoldId()));
MoldDO moldDO = moldService.getMold(Long.parseLong(deviceLedger.getMoldId())); MesMoldDO moldDO = moldService.getMold(Long.parseLong(deviceLedger.getMoldId()));
moldDO.setMachineId(0L); moldDO.setMachineId(0L);
moldDO.setMachineName(""); moldDO.setMachineName("");
moldDO.setStatus(3); // 在机 0 在库 1 moldDO.setStatus(3); // 在机 0 在库 1

@ -6,9 +6,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairRespVO; import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairLineSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairUpdateReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairDO; import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairLineDO; import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairLineDO;
import cn.iocoder.yudao.module.mes.service.moldrepair.MoldRepairService; import cn.iocoder.yudao.module.mes.service.moldrepair.MoldRepairService;
@ -25,6 +26,9 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -32,7 +36,7 @@ import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 设备维修记录") @Tag(name = "管理后台 - 模具维修记录")
@RestController @RestController
@RequestMapping("/mes/mold-repair") @RequestMapping("/mes/mold-repair")
@Validated @Validated
@ -45,14 +49,14 @@ public class MoldRepairController {
private AdminUserApi adminUserApi; private AdminUserApi adminUserApi;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建设备维修记录") @Operation(summary = "创建模具维修记录")
@PreAuthorize("@ss.hasPermission('mes:mold-repair:create')") @PreAuthorize("@ss.hasPermission('mes:mold-repair:create')")
public CommonResult<Long> createMoldRepair(@Valid @RequestBody MoldRepairSaveReqVO createReqVO) { public CommonResult<Long> createMoldRepair(@Valid @RequestBody MoldRepairSaveReqVO createReqVO) {
return success(moldRepairService.createMoldRepair(createReqVO)); return success(moldRepairService.createMoldRepair(createReqVO));
} }
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新设备维修记录") @Operation(summary = "更新模具维修记录")
@PreAuthorize("@ss.hasPermission('mes:mold-repair:update')") @PreAuthorize("@ss.hasPermission('mes:mold-repair:update')")
public CommonResult<Boolean> updateMoldRepair(@Valid @RequestBody MoldRepairSaveReqVO updateReqVO) { public CommonResult<Boolean> updateMoldRepair(@Valid @RequestBody MoldRepairSaveReqVO updateReqVO) {
moldRepairService.updateMoldRepair(updateReqVO); moldRepairService.updateMoldRepair(updateReqVO);
@ -60,7 +64,7 @@ public class MoldRepairController {
} }
@DeleteMapping("/delete") @DeleteMapping("/delete")
@Operation(summary = "删除设备维修记录") @Operation(summary = "删除模具维修记录")
@Parameter(name = "ids", description = "编号", required = true) @Parameter(name = "ids", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:mold-repair:delete')") @PreAuthorize("@ss.hasPermission('mes:mold-repair:delete')")
public CommonResult<Boolean> deleteMoldRepair(@RequestParam("ids") String ids) { public CommonResult<Boolean> deleteMoldRepair(@RequestParam("ids") String ids) {
@ -75,7 +79,7 @@ public class MoldRepairController {
} }
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得设备维修记录") @Operation(summary = "获得模具维修记录")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:mold-repair:query')") @PreAuthorize("@ss.hasPermission('mes:mold-repair:query')")
public CommonResult<MoldRepairRespVO> getMoldRepair(@RequestParam("id") Long id) { public CommonResult<MoldRepairRespVO> getMoldRepair(@RequestParam("id") Long id) {
@ -84,7 +88,7 @@ public class MoldRepairController {
} }
@GetMapping("/page") @GetMapping("/page")
@Operation(summary = "获得设备维修记录分页") @Operation(summary = "获得模具维修记录分页")
@PreAuthorize("@ss.hasPermission('mes:mold-repair:query')") @PreAuthorize("@ss.hasPermission('mes:mold-repair:query')")
public CommonResult<PageResult<MoldRepairRespVO>> getMoldRepairPage(@Valid MoldRepairPageReqVO pageReqVO) { public CommonResult<PageResult<MoldRepairRespVO>> getMoldRepairPage(@Valid MoldRepairPageReqVO pageReqVO) {
PageResult<MoldRepairDO> pageResult = moldRepairService.getMoldRepairPage(pageReqVO); PageResult<MoldRepairDO> pageResult = moldRepairService.getMoldRepairPage(pageReqVO);
@ -93,7 +97,7 @@ public class MoldRepairController {
} }
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出设备维修记录 Excel") @Operation(summary = "导出模具维修记录 Excel")
@PreAuthorize("@ss.hasPermission('mes:mold-repair:export')") @PreAuthorize("@ss.hasPermission('mes:mold-repair:export')")
@ApiAccessLog(operateType = EXPORT) @ApiAccessLog(operateType = EXPORT)
public void exportMoldRepairExcel(@Valid MoldRepairPageReqVO pageReqVO, public void exportMoldRepairExcel(@Valid MoldRepairPageReqVO pageReqVO,
@ -114,22 +118,89 @@ public class MoldRepairController {
moldSubjectRespVO.setStatusName(moldSubjectRespVO.getStatus() != null ? moldSubjectRespVO.setStatusName(moldSubjectRespVO.getStatus() != null ?
(moldSubjectRespVO.getStatus() == 0 ? "待完成" : "已完成") : null); (moldSubjectRespVO.getStatus() == 0 ? "待完成" : "已完成") : null);
} }
if (moldSubjectRespVO.getRepairStatus() !=null) {
moldSubjectRespVO.setRepairStatusName(moldSubjectRespVO.getRepairStatus() != null ?
(moldSubjectRespVO.getRepairStatus() == 1 ? "通过" : "不通过") : null);
}
} }
// 导出 Excel // 导出 Excel
ExcelUtils.write(response, "设备维修记录.xls", "数据", MoldRepairRespVO.class,moldRepairRespVOList); ExcelUtils.write(response, "模具维修记录.xls", "数据", MoldRepairRespVO.class,moldRepairRespVOList);
} }
// ==================== 子表(设备维修记录行) ==================== // ==================== 子表(模具维修记录行) ====================
@GetMapping("/mold-repair-line/list-by-repair-id") @GetMapping("/mold-repair-line/list-by-repair-id")
@Operation(summary = "获得设备维修记录行列表") @Operation(summary = "获得模具维修记录行列表")
@Parameter(name = "repairId", description = "维修单ID") @Parameter(name = "repairId", description = "维修单ID")
@PreAuthorize("@ss.hasPermission('mes:mold-repair:query')") @PreAuthorize("@ss.hasPermission('mes:mold-repair:query')")
public CommonResult<List<MoldRepairLineDO>> getMoldRepairLineListByRepairId(@RequestParam("repairId") Long repairId) { public CommonResult<List<MoldRepairLineDO>> getMoldRepairLineListByRepairId(@RequestParam("repairId") Long repairId) {
return success(moldRepairService.getMoldRepairLineListByRepairId(repairId)); return success(moldRepairService.getMoldRepairLineListByRepairId(repairId));
} }
@PostMapping("/updateRepairLine")
@Operation(summary = "更新模具维修子表")
@PreAuthorize("@ss.hasPermission('mes:mold-repair:update')")
public CommonResult<Boolean> updateRepairLine(@Valid @RequestBody MoldRepairLineSaveReqVO updateReqVO) {
moldRepairService.updateRepairLine(updateReqVO);
return success(true);
}
@PutMapping("/updateMoldRepairStatus")
@Operation(summary = "更新模具维修子记录状态")
@PreAuthorize("@ss.hasPermission('mes:mold-repair:update')")
public CommonResult<Boolean> updateMoldRepairStatus(@Valid @RequestBody MoldRepairUpdateReqVO updateReqVO) {
moldRepairService.updateMoldRepairStatus(updateReqVO);
return success(true);
}
@PutMapping("/batchUpdate")
@Operation(summary = "批量更新维修检验结果")
@PreAuthorize("@ss.hasPermission('mes:ticket-results:update')")
public CommonResult<Boolean> batchUpdateTicketResults(
@Valid @RequestBody List<MoldRepairLineSaveReqVO> updateReqVOList) {
moldRepairService.batchUpdateTicketResults(updateReqVOList);
return success(true);
}
@GetMapping("/getRepairListByMoldId")
@Operation(summary = "根据模具Id获得维修历史记录")
@Parameter(name = "moldId", description = "模具Id", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:ticket-management:query')")
public CommonResult<List<MoldRepairLineRespVO>> getRepairListByMoldId(@RequestParam("moldId") Long moldId,
@RequestParam(name = "startTime",required = false) String startTime,
@RequestParam(name = "endTime",required = false) String endTime) {
List<MoldRepairLineRespVO> moldRepairDOList = moldRepairService.getRepairListByMoldId(moldId,startTime,endTime,null);
return success(moldRepairDOList);
}
@GetMapping("/export-repair-excel")
@Operation(summary = "导出维修历史记录 Excel")
@PreAuthorize("@ss.hasPermission('mes:ticket-results:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportRepairExcel(@RequestParam("moldId") Long moldId,
@RequestParam(name = "ids",required = false) String ids,
@RequestParam(name = "startTime",required = false) String startTime,
@RequestParam(name = "endTime",required = false) String endTime,
HttpServletResponse response) throws IOException {
// 查询数据
List<MoldRepairLineRespVO> moldRepairDOList = moldRepairService.getRepairListByMoldId(moldId,startTime,endTime,ids);
// 设置响应头
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode("维修记录.xls", "UTF-8"));
response.setHeader("Content-Encoding", "identity");
// 导出Excel
String fileName = String.format("维修记录_%s.xls", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
ExcelUtils.write(response, fileName, "维修记录", MoldRepairLineRespVO.class, moldRepairDOList);
}
private PageResult<MoldRepairRespVO> buildCreatorName(PageResult<MoldRepairRespVO> moldSubjectRespVOPageResult) { private PageResult<MoldRepairRespVO> buildCreatorName(PageResult<MoldRepairRespVO> moldSubjectRespVOPageResult) {
for (MoldRepairRespVO moldSubjectRespVO : moldSubjectRespVOPageResult.getList()) { for (MoldRepairRespVO moldSubjectRespVO : moldSubjectRespVOPageResult.getList()) {

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

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

@ -0,0 +1,48 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Schema(description = "管理后台 - 模具维修记录子表/修改 Request VO")
@Data
public class MoldRepairLineSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27809")
private Long id;
@Schema(description = "维修单ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long repairId;
@Schema(description = "项目ID")
private Long subjectId;
@Schema(description = "项目编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "6979")
private String subjectCode;
@Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String subjectName;
@Schema(description = "项目类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
private String subjectType;
@Schema(description = "项目内容")
private String subjectContent;
@Schema(description = "标准")
private String subjectStandard;
@Schema(description = "故障描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "1622")
private String malfunction;
@Schema(description = "故障描述资源")
private String malfunctionUrl;
@Schema(description = "维修情况")
private String repairDes;
@Schema(description = "备注")
private String remark;
@Schema(description = "维修结果 0-待维修 1-通过 2-不通过")
private Integer result;
}

@ -109,5 +109,12 @@ public class MoldRepairRespVO {
@Schema(description = "关键件Id", example = "你猜") @Schema(description = "关键件Id", example = "你猜")
private Long componentId; private Long componentId;
@Schema(description = "维修状态 0-待完成 1-通过 2-不通过")
private Integer repairStatus;
@Schema(description = "维修状态")
@ExcelProperty("维修状态")
private String repairStatusName;
} }

@ -0,0 +1,44 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 设备维修更新子记录 Req VO")
@Data
public class MoldRepairUpdateReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27809")
@NotNull
private Long id;
@Schema(description = "报修日期")
@NotNull(message = "报修日期不能为空")
private LocalDateTime requireDate;
@Schema(description = "完成日期")
@NotNull(message = "完成日期不能为空")
private LocalDateTime finishDate;
@Schema(description = "验收日期")
@NotNull(message = "验收日期不能为空")
private LocalDateTime confirmDate;
@Schema(description = "维修结果")
@NotBlank(message = "维修结果不能为空")
private String repairResult;
@Schema(description = "备注")
private String remark;
@Schema(description = "子列表")
@NotNull(message = "子列表不能为空")
private List<MoldRepairLineSaveReqVO> updateReqVOList;
}

@ -1,7 +1,7 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldrepairtems; package cn.iocoder.yudao.module.mes.controller.admin.moldrepairtems;
import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;

@ -1,8 +1,16 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement; package cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement;
import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO; import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.MoldRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldticketresults.vo.MoldTicketInspectionExportVO;
import cn.iocoder.yudao.module.mes.controller.admin.ticketmanagement.enums.InspectionResultEnum;
import cn.iocoder.yudao.module.mes.controller.admin.ticketresults.vo.TicketInspectionExportVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.ticketresults.TicketResultsDO;
import cn.iocoder.yudao.module.system.api.dict.DictDataApi;
import cn.iocoder.yudao.module.system.api.dict.dto.DictDataRespDTO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import com.alibaba.excel.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -14,8 +22,12 @@ import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import javax.validation.*; import javax.validation.*;
import javax.servlet.http.*; import javax.servlet.http.*;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.io.IOException; import java.io.IOException;
import java.util.stream.Collectors;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -44,6 +56,9 @@ public class MoldTicketManagementController {
@Resource @Resource
private AdminUserApi adminUserApi; private AdminUserApi adminUserApi;
@Resource
private DictDataApi dictDataApi;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建工单管理") @Operation(summary = "创建工单管理")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-management:create')") @PreAuthorize("@ss.hasPermission('mes:mold-ticket-management:create')")
@ -124,4 +139,144 @@ public class MoldTicketManagementController {
} }
return moldticketManagementRespVOPageResult; return moldticketManagementRespVOPageResult;
} }
@GetMapping("/getInspectionByMoldId")
@Operation(summary = "根据模具Id获得点检历史记录")
@Parameter(name = "moldId", description = "模具Id", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-management:query')")
public CommonResult< List<MoldTicketResultsDO>> getInspectionByMoldId(@RequestParam("moldId") Long moldId,
@RequestParam(name = "startTime",required = false) String startTime,
@RequestParam(name = "endTime",required = false) String endTime) {
List<MoldTicketResultsDO> moldTicketResultsDOList = moldticketManagementService.getInspectionByMoldId(moldId,startTime,endTime,"");
return success(moldTicketResultsDOList);
}
@GetMapping("/export-excel-inspection")
@Operation(summary = "导出点检历史记录 Excel")
@PreAuthorize("@ss.hasPermission('mes:mold-ticket-results:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportMoldTicketResultsExcel(@RequestParam("moldId") Long moldId,
@RequestParam(name = "ids",required = false) String ids,
@RequestParam(name = "startTime",required = false) String startTime,
@RequestParam(name = "endTime",required = false) String endTime,
HttpServletResponse response) throws IOException {
// 查询数据
List<MoldTicketResultsDO> results = moldticketManagementService.getInspectionByMoldId(moldId, startTime, endTime, ids);
// 转换为VO并处理数据
List<MoldTicketInspectionExportVO> exportVos = results.stream()
.map(this::convertToExportVO)
.collect(Collectors.toList());
// 设置响应头
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode("点检记录.xls", "UTF-8"));
response.setHeader("Content-Encoding", "identity");
// 导出Excel
String fileName = String.format("点检记录_%s.xls", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
ExcelUtils.write(response, fileName, "点检记录", MoldTicketInspectionExportVO.class, exportVos);
}
@GetMapping("/getMaintenanceByMoldId")
@Operation(summary = "根据模具Id获得保养历史记录")
@Parameter(name = "moldId", description = "模具Id", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:mold_ticket-management:query')")
public CommonResult<List<MoldTicketResultsDO>> getMaintenanceByMoldId(@RequestParam("moldId") Long moldId,
@RequestParam(name = "startTime",required = false) String startTime,
@RequestParam(name = "endTime",required = false) String endTime) {
List<MoldTicketResultsDO> moldticketResultsDOList = moldticketManagementService.getMaintenanceByMoldId(moldId,startTime,endTime,"");
return success(moldticketResultsDOList);
}
@GetMapping("/export-excel-maintenance")
@Operation(summary = "导出保养历史记录 Excel")
@PreAuthorize("@ss.hasPermission('mes:mold_ticket-results:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportExcelMaintenance(@RequestParam("moldId") Long moldId,
@RequestParam(name = "ids",required = false) String ids,
@RequestParam(name = "startTime",required = false) String startTime,
@RequestParam(name = "endTime",required = false) String endTime,
HttpServletResponse response) throws IOException {
// 查询数据
List<MoldTicketResultsDO> results = moldticketManagementService.getMaintenanceByMoldId(moldId, startTime, endTime, ids);
// 转换为VO并处理数据
List<MoldTicketInspectionExportVO> exportVos = results.stream()
.map(this::convertToExportVO)
.collect(Collectors.toList());
// 设置响应头
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode("保养记录.xls", "UTF-8"));
response.setHeader("Content-Encoding", "identity");
// 导出Excel
String fileName = String.format("保养记录_%s.xls", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
ExcelUtils.write(response, fileName, "保养记录", MoldTicketInspectionExportVO.class, exportVos);
}
/**
*
*/
private Map<String, Map<String, String>> getDictData() {
Map<String, Map<String, String>> dictData = new HashMap<>();
try {
// 获取检验方式字典
Map<String, String> inspectionMethodDict = new HashMap<>();
List<DictDataRespDTO> inspectionMethods = dictDataApi.getDictDataList("Inspection_method");
for (DictDataRespDTO dict : inspectionMethods) {
inspectionMethodDict.put(dict.getValue(), dict.getLabel());
}
dictData.put("Inspection_method", inspectionMethodDict);
} catch (Exception e) {
throw new RuntimeException("获取字典数据异常:" + e);
}
return dictData;
}
/**
*
*/
private MoldTicketInspectionExportVO convertToExportVO(MoldTicketResultsDO record) {
MoldTicketInspectionExportVO vo = BeanUtils.toBean(record, MoldTicketInspectionExportVO.class);
// 转换检验结果
if (record.getInspectionResult() != null) {
vo.setResult(record.getInspectionResult().equals(InspectionResultEnum.OK.getCode()) ? InspectionResultEnum.OK.getLabel() :
record.getInspectionResult().equals(InspectionResultEnum.NG.getCode()) ? InspectionResultEnum.NG.getLabel() : String.valueOf(record.getInspectionResult()));
}
// 处理操作人信息
if (StringUtils.isNotBlank(record.getOperator())) {
try {
AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(record.getOperator()));
if (user != null) {
vo.setOperator("(" + user.getUsername() + ")" + user.getNickname());
}
} catch (Exception e) {
// 转换失败保持原值
}
}
// 处理检验方式字典
if (StringUtils.isNotBlank(record.getInspectionMethod())) {
Map<String, Map<String, String>> dictData = getDictData();
String methodLabel = dictData.getOrDefault("Inspection_method", Collections.emptyMap())
.get(record.getInspectionMethod());
if (StringUtils.isNotBlank(methodLabel)) {
vo.setInspectionMethod(methodLabel);
}
}
return vo;
}
} }

@ -53,14 +53,11 @@ public class MoldTicketManagementPageReqVO extends PageParam {
private String ids; private String ids;
/** @Schema(description = "作业开始时间")
*
*/
private String taskTime; private String taskTime;
/** @Schema(description = "作业结束时间")
*
*/
private String taskEndTime; private String taskEndTime;
} }

@ -0,0 +1,60 @@
package cn.iocoder.yudao.module.mes.controller.admin.moldticketresults.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.fasterxml.jackson.annotation.JsonFormat;
import 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 lombok.Data;
import java.time.LocalDateTime;
@Data
@ExcelIgnoreUnannotated
public class MoldTicketInspectionExportVO {
// @ExcelProperty("设备编号")
// private String deviceCode;
//
// @ExcelProperty("设备名称")
// private String deviceName;
@ExcelProperty("检验项名称")
private String inspectionItemName;
@ExcelProperty("检验方式")
private String inspectionMethod;
@ExcelProperty("判定基准")
private String judgmentCriteria;
@ExcelProperty("点检时间")
@ColumnWidth(20)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime taskTime;
@ExcelProperty("作业结果")
private String result;
@ExcelProperty("备注")
private String remark;
private Integer inspectionResult;
@ExcelProperty("作业人")
private String operator;
@ExcelProperty("创建时间")
@ColumnWidth(20)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime createTime;
}

@ -1,6 +1,6 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger; package cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO;
@ -156,6 +156,6 @@ public class DeviceLedgerDO extends BaseDO {
* *
*/ */
@TableField(exist = false) @TableField(exist = false)
private List<MoldDO> moldList; private List<MesMoldDO> moldList;
} }

@ -0,0 +1,76 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.mold;
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 java.math.BigDecimal;
/**
* DO
*
* @author
*/
@TableName("erp_mold_brand")
@KeySequence("erp_mold_brand_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MesMoldBrandDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
*
*/
private String code;
/**
*
*/
private String name;
/**
*
*/
private String moldType;
/**
* ID
*/
private Long productId;
/**
* 寿()
*/
private BigDecimal useTime;
/**
*
*
* {@link TODO maintain_type }
*/
private Integer maintainType;
/**
*
*/
private BigDecimal maintainTime;
/**
*
*/
private Long moldSize;
/**
*
*/
private String remark;
/**
*
*/
private Boolean isEnable;
// @Schema(description = "工序", example = "你说的对")
private String orgType;
}

@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.mold;
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.*;
/**
* DO
*
* @author
*/
@TableName("erp_mold_brand_product")
@KeySequence("erp_mold_brand_product_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MesMoldBrandProductDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
* ID
*/
private Long brandId;
/**
* ID
*/
private Long productId;
/**
*
*/
private String remark;
}

@ -0,0 +1,118 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.mold;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
/**
* DO
*
* @author
*/
@TableName("erp_mold")
@KeySequence("erp_mold_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MesMoldDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
*
*/
private String code;
/**
*
*/
private String name;
/**
* ID
*/
private Long unitId;
/**
* ID
*/
private Long machineId;
/**
*
*/
private String machineName;
/**
* 使()
*/
private BigDecimal useTime;
/**
*
*/
private LocalDateTime inTime;
/**
*
*
* {@link TODO erp_mold_status }
*/
private Integer status;
/**
*
*/
private String images;
/**
*
*/
private String remark;
/**
*
*/
private Boolean isEnable;
/**
* id
*/
private Long brandId;
private String fileUrl;
/**
*
*/
@TableField(exist = false)
private List<MoldTicketResultsDO> inspectionList;
/**
*
*/
@TableField(exist = false)
private List<MoldTicketResultsDO> maintainList;
/**
*
*/
@TableField(exist = false)
private Map<String,List<MoldRepairLineDO>> repairList;
@TableField(exist = false)
private String orgType;
@TableField(exist = false)
private Long moldSize;
@TableField(exist = false)
private String brandName;
@TableField(exist = false)
private String moldType;
}

@ -114,4 +114,9 @@ public class MoldRepairDO extends BaseDO {
*/ */
private Long componentId; private Long componentId;
/**
* 0- 1- 2-
*/
private Integer repairStatus;
} }

@ -72,4 +72,9 @@ public class MoldRepairLineDO extends BaseDO {
*/ */
private String remark; private String remark;
/**
* 0- 1- 2-
*/
private Integer result;
} }

@ -3,8 +3,6 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults;
import lombok.*; import lombok.*;
import java.util.*; import java.util.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
@ -65,4 +63,13 @@ public class MoldTicketResultsDO extends BaseDO {
*/ */
private Long moldId; private Long moldId;
/**
*
*/
@TableField(exist = false)
private LocalDateTime taskTime;
@TableField(exist = false)
private String operator;
} }

@ -0,0 +1,72 @@
package cn.iocoder.yudao.module.mes.dal.mysql.mold;
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.mes.controller.admin.mold.vo.MoldBrandPageReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldBrandDO;
import com.alibaba.excel.util.StringUtils;
import org.apache.ibatis.annotations.Mapper;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MesMoldBrandMapper extends BaseMapperX<MesMoldBrandDO> {
default PageResult<MesMoldBrandDO> selectPage(MoldBrandPageReqVO reqVO) {
LambdaQueryWrapperX<MesMoldBrandDO> moldBrandDOLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
moldBrandDOLambdaQueryWrapperX
.eqIfPresent(MesMoldBrandDO::getCode, reqVO.getCode())
.likeIfPresent(MesMoldBrandDO::getName, reqVO.getName())
.eqIfPresent(MesMoldBrandDO::getMoldType, reqVO.getMoldType())
.eqIfPresent(MesMoldBrandDO::getProductId, reqVO.getProductId())
.eqIfPresent(MesMoldBrandDO::getUseTime, reqVO.getUseTime())
.eqIfPresent(MesMoldBrandDO::getMaintainType, reqVO.getMaintainType())
.eqIfPresent(MesMoldBrandDO::getMaintainTime, reqVO.getMaintainTime())
.eqIfPresent(MesMoldBrandDO::getMoldSize, reqVO.getMoldSize())
.eqIfPresent(MesMoldBrandDO::getRemark, reqVO.getRemark())
.eqIfPresent(MesMoldBrandDO::getIsEnable, reqVO.getIsEnable())
.eqIfPresent(MesMoldBrandDO::getOrgType, reqVO.getOrgType())
.betweenIfPresent(MesMoldBrandDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MesMoldBrandDO::getId);
// 单独处理 ids 条件
if (StringUtils.isNotBlank(reqVO.getIds())) {
List<Long> idList = Arrays.stream(reqVO.getIds().split(","))
.map(String::trim)
.map(Long::valueOf)
.collect(Collectors.toList());
moldBrandDOLambdaQueryWrapperX.in(MesMoldBrandDO::getId, idList);
}
return selectPage(reqVO, moldBrandDOLambdaQueryWrapperX);
}
default List<MesMoldBrandDO> selectBy(MoldBrandPageReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<MesMoldBrandDO>()
.eqIfPresent(MesMoldBrandDO::getCode, reqVO.getCode())
.likeIfPresent(MesMoldBrandDO::getName, reqVO.getName())
.eqIfPresent(MesMoldBrandDO::getMoldType, reqVO.getMoldType())
.eqIfPresent(MesMoldBrandDO::getProductId, reqVO.getProductId())
.eqIfPresent(MesMoldBrandDO::getUseTime, reqVO.getUseTime())
.eqIfPresent(MesMoldBrandDO::getMaintainType, reqVO.getMaintainType())
.eqIfPresent(MesMoldBrandDO::getMaintainTime, reqVO.getMaintainTime())
.eqIfPresent(MesMoldBrandDO::getMoldSize, reqVO.getMoldSize())
.eqIfPresent(MesMoldBrandDO::getRemark, reqVO.getRemark())
.eqIfPresent(MesMoldBrandDO::getIsEnable, reqVO.getIsEnable())
.eqIfPresent(MesMoldBrandDO::getOrgType, reqVO.getOrgType())
.betweenIfPresent(MesMoldBrandDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MesMoldBrandDO::getId));
}
}

@ -0,0 +1,35 @@
package cn.iocoder.yudao.module.mes.dal.mysql.mold;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
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.mes.dal.dataobject.mold.MesMoldBrandProductDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MesMoldBrandProductMapper extends BaseMapperX<MesMoldBrandProductDO> {
default PageResult<MesMoldBrandProductDO> selectPage(PageParam reqVO, Long brandId) {
return selectPage(reqVO, new LambdaQueryWrapperX<MesMoldBrandProductDO>()
.eq(MesMoldBrandProductDO::getBrandId, brandId)
.orderByDesc(MesMoldBrandProductDO::getId));
}
default int deleteByBrandId(Long brandId) {
return delete(MesMoldBrandProductDO::getBrandId, brandId);
}
default List<MesMoldBrandProductDO> selectList(MesMoldBrandProductDO reqVO) {
return selectList(new LambdaQueryWrapperX<MesMoldBrandProductDO>()
.eqIfPresent(MesMoldBrandProductDO::getProductId, reqVO.getProductId())
.eqIfPresent(MesMoldBrandProductDO::getBrandId, reqVO.getBrandId())
.orderByDesc(MesMoldBrandProductDO::getId));
}
}

@ -0,0 +1,45 @@
package cn.iocoder.yudao.module.mes.dal.mysql.mold;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
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.mes.dal.dataobject.mold.MesMoldDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MesMoldMapper extends BaseMapperX<MesMoldDO> {
default PageResult<MesMoldDO> selectPage(PageParam reqVO, Long brandId) {
return selectPage(reqVO, new LambdaQueryWrapperX<MesMoldDO>()
.eqIfPresent(MesMoldDO::getBrandId, brandId)
.orderByDesc(MesMoldDO::getId));
}
default int deleteByBrandId(Long brandId) {
return delete(MesMoldDO::getBrandId, brandId);
}
default List<MesMoldDO> selectBy(MesMoldDO reqVO) {
return selectList(new LambdaQueryWrapperX<MesMoldDO>()
.eqIfPresent(MesMoldDO::getCode, reqVO.getCode())
.likeIfPresent(MesMoldDO::getName, reqVO.getName())
.eqIfPresent(MesMoldDO::getBrandId, reqVO.getBrandId())
.orderByDesc(MesMoldDO::getId));
}
default List<MesMoldDO> selectBy(Long brandId) {
return selectList(new LambdaQueryWrapperX<MesMoldDO>()
.eq(MesMoldDO::getBrandId, brandId)
.orderByDesc(MesMoldDO::getId));
}
}

@ -34,5 +34,7 @@ public interface MoldTicketResultsMapper extends BaseMapperX<MoldTicketResultsDO
.orderByDesc(MoldTicketResultsDO::getId)); .orderByDesc(MoldTicketResultsDO::getId));
} }
List<MoldTicketResultsDO> findByDeviceIdAndPlanType(@Param("deviceId") Long deviceId,@Param("planType") Integer planType); List<MoldTicketResultsDO> findByMoldIdAndPlanType(@Param("moldId") Long moldId, @Param("planType") Integer planType,
@Param("startTime") String startTime, @Param("endTime") String endTime,
@Param("ids") String ids);
} }

@ -23,7 +23,7 @@ public class MesNoRedisDAO {
/** /**
* {@link cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO} * {@link cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO}
*/ */
public static final String MOLD_NO_PREFIX = "MUJU-"; public static final String MOLD_NO_PREFIX = "MUJU-";
public static final String MOLD_RECORD_NO_PREFIX = "MR-"; public static final String MOLD_RECORD_NO_PREFIX = "MR-";

@ -4,7 +4,7 @@ import java.util.*;
import javax.validation.*; import javax.validation.*;
import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO; import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.*; import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO; import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO;

@ -4,11 +4,11 @@ import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO; import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandDO; import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldBrandDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
import cn.iocoder.yudao.module.erp.dal.mysql.mold.MoldMapper; import cn.iocoder.yudao.module.mes.dal.mysql.mold.MesMoldMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductMapper; import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductMapper;
import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService; import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService;
import cn.iocoder.yudao.module.mes.controller.admin.ticketmanagement.enums.PlanTypeEnum; import cn.iocoder.yudao.module.mes.controller.admin.ticketmanagement.enums.PlanTypeEnum;
@ -72,7 +72,7 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService {
private ErpProductMapper productMapper; private ErpProductMapper productMapper;
@Resource @Resource
private MoldMapper moldMapper; private MesMoldMapper mesMoldMapper;
@Resource @Resource
private ErpProductUnitService productUnitService; private ErpProductUnitService productUnitService;
@ -194,7 +194,7 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService {
} }
//模具列表 //模具列表
List<MoldDO> moldList = new ArrayList<>(); List<MesMoldDO> moldList = new ArrayList<>();
if (StringUtils.isNotBlank(deviceLedgerDO.getMoldId())) { if (StringUtils.isNotBlank(deviceLedgerDO.getMoldId())) {
// 将逗号分隔的字符串转换为Long类型的List // 将逗号分隔的字符串转换为Long类型的List
List<Long> idList = Arrays.stream(deviceLedgerDO.getMoldId().split(",")) List<Long> idList = Arrays.stream(deviceLedgerDO.getMoldId().split(","))
@ -202,7 +202,7 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService {
.map(Long::valueOf) .map(Long::valueOf)
.collect(Collectors.toList()); .collect(Collectors.toList());
for (Long moldId : idList) { for (Long moldId : idList) {
MoldDO moldDO = moldMapper.selectById(moldId); MesMoldDO moldDO = mesMoldMapper.selectById(moldId);
if(moldDO!=null){ if(moldDO!=null){
moldList.add(moldDO); moldList.add(moldDO);
} }

@ -0,0 +1,176 @@
package cn.iocoder.yudao.module.mes.service.mold;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldBrandDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldBrandProductDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
/**
* Service
*
* @author
*/
public interface MoldBrandService {
/**
*
*
* @param createReqVO
* @return
*/
Long createMoldBrand(@Valid MoldBrandSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateMoldBrand(@Valid MoldBrandSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteMoldBrand(Long id);
/**
*
*
* @param id
* @return
*/
MesMoldBrandDO getMoldBrand(Long id);
List<MesMoldBrandDO> selectBy(MoldBrandPageReqVO reqVO);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<MoldBrandRespVO> getMoldBrandPage(MoldBrandPageReqVO pageReqVO);
default Map<Long, MesMoldBrandDO> getMap(Collection<Long> ids) {
if (CollUtil.isEmpty(ids)) {
return new HashMap<>();
}
return CollectionUtils.convertMap(getList(ids), MesMoldBrandDO::getId);
}
List<MesMoldBrandDO> getList(Collection<Long> ids);
// ==================== 子表(模具) ====================
/**
*
*
* @param pageReqVO
* @param brandId id
* @return
*/
PageResult<MoldRespVO> getMoldPage(PageParam pageReqVO, Long brandId);
List<MesMoldDO> getMoldList();
/**
*
*
* @param mold
* @return
*/
Long createMold(@Valid MesMoldDO mold);
/**
*
*
* @param mold
*/
void updateMold(@Valid MesMoldDO mold);
/**
*
*
* @param id
*/
void deleteMold(Long id);
/**
*
*
* @param id
* @return
*/
MesMoldDO getMold(Long id);
List<MesMoldDO> selectBy(MesMoldDO reqVO);
// ==================== 子表(模具产品) ====================
/**
*
*
* @param pageReqVO
* @param brandId ID
* @return
*/
PageResult<MesMoldBrandProductDO> getMoldBrandProductPage(PageParam pageReqVO, Long brandId);
List<MoldProductRespVO> buildProduct(List<MesMoldBrandProductDO> list);
/**
*
*
* @param moldBrandProduct
* @return
*/
Long createMoldBrandProduct(@Valid MesMoldBrandProductDO moldBrandProduct);
/**
*
*
* @param moldBrandProduct
*/
void updateMoldBrandProduct(@Valid MesMoldBrandProductDO moldBrandProduct);
/**
*
*
* @param id
*/
void deleteMoldBrandProduct(Long id);
/**
*
*
* @param id
* @return
*/
MesMoldBrandProductDO getMoldBrandProduct(Long id);
List<MesMoldDO> getAllList();
/**
*
*
* @param ids
* @return
*/
List<MesMoldBrandDO> getMoldBrandList(Collection<Long> ids);
/**
* Map
*
* @param ids
* @return Map
*/
default Map<Long, MesMoldBrandDO> getMoldBrandMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getMoldBrandList(ids), MesMoldBrandDO::getId);
}
}

@ -0,0 +1,312 @@
package cn.iocoder.yudao.module.mes.service.mold;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.*;
import cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement.enums.MoldPlanTypeEnum;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldBrandDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldBrandProductDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
import cn.iocoder.yudao.module.mes.dal.mysql.mold.MesMoldBrandMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.mold.MesMoldBrandProductMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.mold.MesMoldMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.moldrepair.MoldRepairLineMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.moldrepair.MoldRepairMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.moldticketresults.MoldTicketResultsMapper;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.*;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service("mesMoldBrandService")
@Validated
public class MoldBrandServiceImpl implements MoldBrandService {
@Resource
private MesMoldBrandMapper mesMoldBrandMapper;
@Resource
private MesMoldMapper mesMoldMapper;
@Resource
private MoldRepairMapper moldRepairMapperRepair;
@Resource
private MoldRepairLineMapper moldRepairLineMapper;
@Resource
private MoldTicketResultsMapper moldticketResultsMapper;
@Resource
private ErpProductUnitService productUnitService;
@Resource
private ErpProductService productService;
@Override
public Long createMoldBrand(MoldBrandSaveReqVO createReqVO) {
// 插入
MesMoldBrandDO moldBrand = BeanUtils.toBean(createReqVO, MesMoldBrandDO.class);
mesMoldBrandMapper.insert(moldBrand);
// 返回
return moldBrand.getId();
}
@Override
public void updateMoldBrand(MoldBrandSaveReqVO updateReqVO) {
// 校验存在
validateMoldBrandExists(updateReqVO.getId());
// 更新
MesMoldBrandDO updateObj = BeanUtils.toBean(updateReqVO, MesMoldBrandDO.class);
mesMoldBrandMapper.updateById(updateObj);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteMoldBrand(Long id) {
// 校验存在
validateMoldBrandExists(id);
// 删除
mesMoldBrandMapper.deleteById(id);
// 删除子表
deleteMoldByBrandId(id);
}
private void validateMoldBrandExists(Long id) {
if (mesMoldBrandMapper.selectById(id) == null) {
throw exception(MOLD_BRAND_NOT_EXISTS);
}
}
@Override
public MesMoldBrandDO getMoldBrand(Long id) {
return mesMoldBrandMapper.selectById(id);
}
@Override
public List<MesMoldBrandDO> selectBy(MoldBrandPageReqVO reqVO){
return mesMoldBrandMapper.selectBy(reqVO);
}
@Override
public PageResult<MoldBrandRespVO> getMoldBrandPage(MoldBrandPageReqVO pageReqVO) {
PageResult<MesMoldBrandDO> pageResult = mesMoldBrandMapper.selectPage(pageReqVO);
return new PageResult<>(buildMoldBrandVOList(pageResult.getList()), pageResult.getTotal());
}
private List<MoldBrandRespVO> buildMoldBrandVOList(List<MesMoldBrandDO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
Map<Long, ErpProductDO> map = productService.getProductMap(
convertSet(list, MesMoldBrandDO::getProductId));
return BeanUtils.toBean(list, MoldBrandRespVO.class, item -> {
MapUtils.findAndThen(map, item.getProductId(),
product -> item.setProductName(product.getName()));
});
}
@Override
public List<MesMoldBrandDO> getList(Collection<Long> ids) {
return mesMoldBrandMapper.selectBatchIds(ids);
}
// ==================== 子表(模具) ====================
@Override
public PageResult<MoldRespVO> getMoldPage(PageParam pageReqVO, Long brandId) {
PageResult<MesMoldDO> pageResult = mesMoldMapper.selectPage(pageReqVO, brandId);
return new PageResult<>(buildMoldVOList(pageResult.getList()), pageResult.getTotal());
}
@Override
public List<MesMoldDO> getMoldList() {
return mesMoldMapper.selectList();
}
private List<MoldRespVO> buildMoldVOList(List<MesMoldDO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
Map<Long, ErpProductUnitDO> unitMap = productUnitService.getProductUnitMap(
convertSet(list, MesMoldDO::getUnitId));
return BeanUtils.toBean(list, MoldRespVO.class, product -> {
MapUtils.findAndThen(unitMap, product.getUnitId(),
unit -> product.setUnitName(unit.getName()));
});
}
@Override
public Long createMold(MesMoldDO mold) {
mesMoldMapper.insert(mold);
return mold.getId();
}
@Override
public void updateMold(MesMoldDO mold) {
// 校验存在
validateMoldExists(mold.getId());
// 更新
mesMoldMapper.updateById(mold);
}
@Override
public void deleteMold(Long id) {
// 校验存在
validateMoldExists(id);
// 删除
mesMoldMapper.deleteById(id);
}
@Override
public MesMoldDO getMold(Long id) {
MesMoldDO moldDO = mesMoldMapper.selectById(id);
Map<String,List<MoldRepairLineDO>> moldRepairDOMap=new HashMap<>();
// 关联查询品牌表并补充字段
if (moldDO != null && moldDO.getBrandId() != null) {
MesMoldBrandDO moldBrandDO = mesMoldBrandMapper.selectById(moldDO.getBrandId());
if (moldBrandDO != null) {
moldDO.setBrandName(moldBrandDO.getName()); // 品牌名称
moldDO.setMoldType(moldBrandDO.getMoldType()); // 模具类型
moldDO.setMoldSize(moldBrandDO.getMoldSize()); // 模具尺寸
moldDO.setOrgType(moldBrandDO.getOrgType()); // 组织类型
}
}
//点检列表
List<MoldTicketResultsDO> inspectionList = moldticketResultsMapper.findByMoldIdAndPlanType(id, MoldPlanTypeEnum.INSPECTION.getCode(),null,null,null);
if(CollectionUtils.isNotEmpty(inspectionList)){
moldDO.setInspectionList(inspectionList);
}
//保养列表
List<MoldTicketResultsDO> maintainList = moldticketResultsMapper.findByMoldIdAndPlanType(id, MoldPlanTypeEnum.MAINTENANCE.getCode(),null,null,null);
if(CollectionUtils.isNotEmpty(maintainList)){
moldDO.setMaintainList(maintainList);
}
//维修列表
List<MoldRepairDO> moldRepairDOS = moldRepairMapperRepair.selectList(
Wrappers.<MoldRepairDO>lambdaQuery()
.eq(MoldRepairDO::getMoldId, id));
for (MoldRepairDO moldRepairDO : moldRepairDOS) {
List<MoldRepairLineDO> moldRepairLineDOS = moldRepairLineMapper.selectList(Wrappers.<MoldRepairLineDO>lambdaQuery()
.eq(MoldRepairLineDO::getRepairId, moldRepairDO.getId())
.orderByDesc(MoldRepairLineDO::getCreateTime));
if (!moldRepairLineDOS.isEmpty()) {
// 修复JSON序列化null Key问题保持原有风格的极简处理
String repairName = moldRepairDO.getRepairName();
if (repairName == null || repairName.trim().isEmpty()) {
repairName = "维修单-" + moldRepairDO.getId();
}
moldRepairDOMap.put(repairName, moldRepairLineDOS);
}
}
if(CollectionUtils.isNotEmpty(moldRepairDOMap)){
moldDO.setRepairList(moldRepairDOMap);
}
return moldDO;
}
@Override
public List<MesMoldDO> selectBy(MesMoldDO reqVO){
return mesMoldMapper.selectBy(reqVO);
}
private void validateMoldExists(Long id) {
if (mesMoldMapper.selectById(id) == null) {
throw exception(MOLD_NOT_EXISTS);
}
}
private void deleteMoldByBrandId(Long brandId) {
mesMoldMapper.deleteByBrandId(brandId);
}
// ==================== 子表(模具产品) ====================
@Resource
private MesMoldBrandProductMapper mesMoldBrandProductMapper;
@Override
public PageResult<MesMoldBrandProductDO> getMoldBrandProductPage(PageParam pageReqVO, Long brandId) {
return mesMoldBrandProductMapper.selectPage(pageReqVO, brandId);
}
@Override
public List<MoldProductRespVO> buildProduct(List<MesMoldBrandProductDO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
Map<Long, ErpProductDO> map = productService.getProductMap(
convertSet(list, MesMoldBrandProductDO::getProductId));
return BeanUtils.toBean(list, MoldProductRespVO.class, item -> {
MapUtils.findAndThen(map, item.getProductId(),
product -> item.setProductName(product.getName()));
});
}
@Override
public Long createMoldBrandProduct(MesMoldBrandProductDO moldBrandProduct) {
MesMoldBrandProductDO resVo = new MesMoldBrandProductDO().setBrandId(moldBrandProduct.getBrandId())
.setProductId(moldBrandProduct.getProductId());
List<MesMoldBrandProductDO> list = mesMoldBrandProductMapper.selectList(resVo);
if(list!=null && list.size()>0){
throw exception(MOLD_BRAND_PRODUCT_EXISTS);
}
mesMoldBrandProductMapper.insert(moldBrandProduct);
return moldBrandProduct.getId();
}
@Override
public void updateMoldBrandProduct(MesMoldBrandProductDO moldBrandProduct) {
// 校验存在
validateMoldBrandProductExists(moldBrandProduct.getId());
// 更新
mesMoldBrandProductMapper.updateById(moldBrandProduct);
}
@Override
public void deleteMoldBrandProduct(Long id) {
// 校验存在
validateMoldBrandProductExists(id);
// 删除
mesMoldBrandProductMapper.deleteById(id);
}
@Override
public MesMoldBrandProductDO getMoldBrandProduct(Long id) {
return mesMoldBrandProductMapper.selectById(id);
}
@Override
public List<MesMoldDO> getAllList() {
return mesMoldMapper.selectList();
}
@Override
public List<MesMoldBrandDO> getMoldBrandList(Collection<Long> ids) {
return mesMoldBrandMapper.selectBatchIds(ids);
}
private void validateMoldBrandProductExists(Long id) {
if (mesMoldBrandProductMapper.selectById(id) == null) {
throw exception(MOLD_BRAND_PRODUCT_NOT_EXISTS);
}
}
private void deleteMoldBrandProductByBrandId(Long brandId) {
mesMoldBrandProductMapper.deleteByBrandId(brandId);
}
}

@ -0,0 +1,99 @@
package cn.iocoder.yudao.module.mes.service.mold;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.MoldPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.MoldRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.MoldSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
/**
* Service
*
* @author
*/
public interface MoldService {
/**
*
*
* @param createReqVO
* @return
*/
Long createMold(@Valid MoldSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateMold(@Valid MoldSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteMold(Long id);
/**
*
*
* @param id
* @return
*/
MesMoldDO getMold(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<MesMoldDO> getMoldPage(MoldPageReqVO pageReqVO);
List<MesMoldDO> getList(Collection<Long> ids);
default Map<Long, MesMoldDO> getMap(Collection<Long> ids) {
if (CollUtil.isEmpty(ids)) {
return new HashMap<>();
}
return CollectionUtils.convertMap(getList(ids), MesMoldDO::getId);
}
/**
*
*
* @param ids
* @return
*/
List<MesMoldDO> validMoldList(Collection<Long> ids);
/**
* VO
*
* @param ids
* @return VO
*/
List<MoldRespVO> getMoldVOList(Collection<Long> ids);
/**
* VO Map
*
* @param ids
* @return VO Map
*/
default Map<Long, MoldRespVO> getMoldVOMap(Collection<Long> ids) {
if(ids.isEmpty())return new HashMap<>();
return convertMap(getMoldVOList(ids), MoldRespVO::getId);
}
List<MoldRespVO> buildMoldVOList(List<MesMoldDO> list);
}

@ -0,0 +1,104 @@
package cn.iocoder.yudao.module.mes.service.mold;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.MoldPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.MoldRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.mold.vo.MoldSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import cn.iocoder.yudao.module.mes.dal.mysql.mold.MesMoldMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.MOLD_NOT_EXISTS;
/**
* Service
*
* @author
*/
@Service("mesMoldService")
@Validated
public class MoldServiceImpl implements MoldService {
@Resource
private MesMoldMapper mesMoldMapper;
@Override
public Long createMold(MoldSaveReqVO createReqVO) {
// 插入
MesMoldDO mold = BeanUtils.toBean(createReqVO, MesMoldDO.class);
mesMoldMapper.insert(mold);
// 返回
return mold.getId();
}
@Override
public void updateMold(MoldSaveReqVO updateReqVO) {
// 校验存在
validateMoldExists(updateReqVO.getId());
// 更新
MesMoldDO updateObj = BeanUtils.toBean(updateReqVO, MesMoldDO.class);
mesMoldMapper.updateById(updateObj);
}
@Override
public void deleteMold(Long id) {
// 校验存在
validateMoldExists(id);
// 删除
mesMoldMapper.deleteById(id);
}
private void validateMoldExists(Long id) {
if (mesMoldMapper.selectById(id) == null) {
throw exception(MOLD_NOT_EXISTS);
}
}
@Override
public MesMoldDO getMold(Long id) {
return mesMoldMapper.selectById(id);
}
@Override
public PageResult<MesMoldDO> getMoldPage(MoldPageReqVO pageReqVO) {
return mesMoldMapper.selectPage(pageReqVO, pageReqVO.getBrandId());
}
@Override
public List<MesMoldDO> getList(Collection<Long> ids) {
return mesMoldMapper.selectBatchIds(ids);
}
@Override
public List<MesMoldDO> validMoldList(Collection<Long> ids) {
if (CollUtil.isEmpty(ids)) {
return Collections.emptyList();
}
return mesMoldMapper.selectBatchIds(ids);
}
@Override
public List<MoldRespVO> getMoldVOList(Collection<Long> ids) {
if (CollUtil.isEmpty(ids)) {
return Collections.emptyList();
}
List<MesMoldDO> list = mesMoldMapper.selectBatchIds(ids);
return buildMoldVOList(list);
}
@Override
public List<MoldRespVO> buildMoldVOList(List<MesMoldDO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
return BeanUtils.toBean(list, MoldRespVO.class);
}
}

@ -4,10 +4,10 @@ import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandDO; import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldBrandDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import cn.iocoder.yudao.module.erp.service.mold.MoldBrandService; import cn.iocoder.yudao.module.mes.service.mold.MoldBrandService;
import cn.iocoder.yudao.module.erp.service.mold.MoldService; import cn.iocoder.yudao.module.mes.service.mold.MoldService;
import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordRespVO; import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.moldrecord.vo.MoldRecordSaveReqVO;
@ -129,9 +129,9 @@ public class MoldRecordServiceImpl implements MoldRecordService {
Map<Long, AdminUserDO> userMap = userService.getUserMap( Map<Long, AdminUserDO> userMap = userService.getUserMap(
convertSet(list, MoldRecordDO::getUserId)); convertSet(list, MoldRecordDO::getUserId));
Map<Long, MoldBrandDO> brandMap = moldBrandService.getMap( Map<Long, MesMoldBrandDO> brandMap = moldBrandService.getMap(
convertSet(list, MoldRecordDO::getBrandId)); convertSet(list, MoldRecordDO::getBrandId));
Map<Long, MoldDO> moldMap = moldService.getMap( Map<Long, MesMoldDO> moldMap = moldService.getMap(
convertSet(list, MoldRecordDO::getMoldId)); convertSet(list, MoldRecordDO::getMoldId));
Map<Long, MachineComponentDO> machineMap = machineComponentService.getMap( Map<Long, MachineComponentDO> machineMap = machineComponentService.getMap(

@ -1,8 +1,10 @@
package cn.iocoder.yudao.module.mes.service.moldrepair; package cn.iocoder.yudao.module.mes.service.moldrepair;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairLineSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairUpdateReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairDO; import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairLineDO; import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.moldrepair.MoldRepairLineMapper; import cn.iocoder.yudao.module.mes.dal.mysql.moldrepair.MoldRepairLineMapper;
@ -11,14 +13,14 @@ import javax.validation.Valid;
import java.util.List; import java.util.List;
/** /**
* Service * Service
* *
* @author * @author
*/ */
public interface MoldRepairService { public interface MoldRepairService {
/** /**
* *
* *
* @param createReqVO * @param createReqVO
* @return * @return
@ -26,43 +28,51 @@ public interface MoldRepairService {
Long createMoldRepair(@Valid MoldRepairSaveReqVO createReqVO); Long createMoldRepair(@Valid MoldRepairSaveReqVO createReqVO);
/** /**
* *
* *
* @param updateReqVO * @param updateReqVO
*/ */
void updateMoldRepair(@Valid MoldRepairSaveReqVO updateReqVO); void updateMoldRepair(@Valid MoldRepairSaveReqVO updateReqVO);
/** /**
* *
* *
* @param id * @param id
*/ */
void deleteMoldRepair(List<Long> idList); void deleteMoldRepair(List<Long> idList);
/** /**
* *
* *
* @param id * @param id
* @return * @return
*/ */
MoldRepairDO getMoldRepair(Long id); MoldRepairDO getMoldRepair(Long id);
/** /**
* *
* *
* @param pageReqVO * @param pageReqVO
* @return * @return
*/ */
PageResult<MoldRepairDO> getMoldRepairPage(MoldRepairPageReqVO pageReqVO); PageResult<MoldRepairDO> getMoldRepairPage(MoldRepairPageReqVO pageReqVO);
// ==================== 子表(设备维修记录行) ==================== // ==================== 子表(模具维修记录行) ====================
/** /**
* *
* *
* @param repairId ID * @param repairId ID
* @return * @return
*/ */
List<MoldRepairLineDO> getMoldRepairLineListByRepairId(Long repairId); List<MoldRepairLineDO> getMoldRepairLineListByRepairId(Long repairId);
void updateRepairLine(@Valid MoldRepairLineSaveReqVO updateReqVO);
void batchUpdateTicketResults(@Valid List<MoldRepairLineSaveReqVO> updateReqVOList);
void updateMoldRepairStatus(@Valid MoldRepairUpdateReqVO updateReqVO);
List<MoldRepairLineRespVO> getRepairListByMoldId(Long moldId, String startTime, String endTime, String ids);
} }

@ -2,22 +2,34 @@ package cn.iocoder.yudao.module.mes.service.moldrepair;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodel.DeviceModelDO; import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.enums.RepairResultEnum;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairLineRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairLineSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairUpdateReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.devicetype.DeviceTypeDO; import cn.iocoder.yudao.module.mes.controller.admin.ticketresults.enums.JobResultEnum;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairDO; import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairLineDO; import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepair.MoldRepairLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.moldrepair.MoldRepairLineMapper; import cn.iocoder.yudao.module.mes.dal.mysql.moldrepair.MoldRepairLineMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.moldrepair.MoldRepairMapper; import cn.iocoder.yudao.module.mes.dal.mysql.moldrepair.MoldRepairMapper;
import cn.iocoder.yudao.module.mes.service.moldrepair.MoldRepairService; import cn.iocoder.yudao.module.mes.service.moldrepair.MoldRepairService;
import com.alibaba.excel.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -29,7 +41,7 @@ import cn.iocoder.yudao.framework.common.exception.ServiceException;
/** /**
* Service * Service
* *
* @author * @author
*/ */
@ -53,7 +65,7 @@ public class MoldRepairServiceImpl implements MoldRepairService {
); );
if (count > 0) { if (count > 0) {
throw exception(DV_REPAIR_CODE_EXISTS); throw exception(MOLD_REPAIR_CODE_EXISTS);
} }
// 插入 // 插入
MoldRepairDO moldRepair = BeanUtils.toBean(createReqVO, MoldRepairDO.class); MoldRepairDO moldRepair = BeanUtils.toBean(createReqVO, MoldRepairDO.class);
@ -79,7 +91,7 @@ public class MoldRepairServiceImpl implements MoldRepairService {
); );
if (count > 0) { if (count > 0) {
throw exception(DV_REPAIR_CODE_EXISTS); throw exception(MOLD_REPAIR_CODE_EXISTS);
} }
// 更新 // 更新
@ -106,7 +118,7 @@ public class MoldRepairServiceImpl implements MoldRepairService {
private void validateMoldRepairExists(Long id) { private void validateMoldRepairExists(Long id) {
if (moldRepairMapper.selectById(id) == null) { if (moldRepairMapper.selectById(id) == null) {
throw exception(DV_REPAIR_NOT_EXISTS); throw exception(MOLD_REPAIR_NOT_EXISTS);
} }
} }
@ -120,7 +132,7 @@ public class MoldRepairServiceImpl implements MoldRepairService {
return moldRepairMapper.selectPage(pageReqVO); return moldRepairMapper.selectPage(pageReqVO);
} }
// ==================== 子表(设备维修记录行) ==================== // ==================== 子表(模具维修记录行) ====================
@Override @Override
public List<MoldRepairLineDO> getMoldRepairLineListByRepairId(Long repairId) { public List<MoldRepairLineDO> getMoldRepairLineListByRepairId(Long repairId) {
@ -174,4 +186,233 @@ public class MoldRepairServiceImpl implements MoldRepairService {
moldRepairLineMapper.deleteByRepairId(repairId); moldRepairLineMapper.deleteByRepairId(repairId);
} }
@Override
public void updateRepairLine(MoldRepairLineSaveReqVO updateReqVO) {
// 校验存在
validateMoldRepairLineExists(updateReqVO.getId());
// 更新
MoldRepairLineDO updateObj = BeanUtils.toBean(updateReqVO, MoldRepairLineDO.class);
moldRepairLineMapper.updateById(updateObj);
}
@Override
public void batchUpdateTicketResults(List<MoldRepairLineSaveReqVO> updateReqVOList) {
if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(updateReqVOList)) {
return;
}
// 1. 数据验证
validateBatchUpdateData(updateReqVOList);
// 2. 批量更新
List<MoldRepairLineDO> updateList = new ArrayList<>();
LocalDateTime now = LocalDateTime.now();
for (MoldRepairLineSaveReqVO vo : updateReqVOList) {
// 转换为DO
MoldRepairLineDO updateDO = BeanUtils.toBean(vo, MoldRepairLineDO.class);
updateDO.setUpdateTime(now);
updateList.add(updateDO);
}
// 3. 执行批量更新
moldRepairLineMapper.updateBatch(updateList);
//4. 判断是否全部已检验
handleInspectionResult(updateReqVOList);
}
@Override
public void updateMoldRepairStatus(MoldRepairUpdateReqVO updateReqVO) {
MoldRepairDO moldRepairDO = moldRepairMapper.selectById(updateReqVO.getId());
if ( moldRepairDO == null) {
throw exception(MOLD_REPAIR_NOT_EXISTS);
}
moldRepairDO.setRequireDate(updateReqVO.getRequireDate());
moldRepairDO.setFinishDate(updateReqVO.getFinishDate());
moldRepairDO.setConfirmDate(updateReqVO.getConfirmDate());
moldRepairDO.setRepairResult(updateReqVO.getRepairResult());
moldRepairMapper.updateById(moldRepairDO);
batchUpdateTicketResults(updateReqVO.getUpdateReqVOList());
}
@Override
public List<MoldRepairLineRespVO> getRepairListByMoldId(Long moldId, String startTime, String endTime, String ids) {
List<MoldRepairLineRespVO> moldRepairLineRespVOS = new ArrayList<>();
LambdaQueryWrapper<MoldRepairDO> wrapper = Wrappers.<MoldRepairDO>lambdaQuery()
.eq(MoldRepairDO::getMoldId, moldId);
// 处理开始时间
if (StringUtils.isNotBlank(startTime)) {
try {
LocalDateTime parseToLocalDateTime = parseToLocalDateTime(startTime);
wrapper.ge(MoldRepairDO::getFinishDate, parseToLocalDateTime);
} catch (Exception e) {
log.error("开始时间格式错误: {}, 异常: {}", startTime, e.getMessage(), e);
}
}
// 处理结束时间
if (StringUtils.isNotBlank(endTime)) {
try {
LocalDateTime parseToLocalDateTime = parseToLocalDateTime(endTime);
wrapper.le(MoldRepairDO::getFinishDate, parseToLocalDateTime);
} catch (Exception e) {
log.error("结束时间格式错误: {}, 异常: {}", startTime, e.getMessage(), e);
}
}
List<MoldRepairDO> moldRepairDOS = moldRepairMapper.selectList(wrapper);
for (MoldRepairDO moldRepairDO : moldRepairDOS) {
LambdaQueryWrapper<MoldRepairLineDO> moldRepairLineDOLambdaQueryWrapper = Wrappers.<MoldRepairLineDO>lambdaQuery()
.eq(MoldRepairLineDO::getRepairId, moldRepairDO.getId())
.orderByDesc(MoldRepairLineDO::getCreateTime);
List<MoldRepairLineDO> moldRepairLineDOS = moldRepairLineMapper.selectList(moldRepairLineDOLambdaQueryWrapper);
if (!moldRepairLineDOS.isEmpty()) {
List<MoldRepairLineRespVO> moldRepairLineRespVOList = moldRepairLineDOS.stream()
.map(doItem -> {
MoldRepairLineRespVO vo = new MoldRepairLineRespVO();
BeanUtils.copyProperties(doItem, vo);
vo.setRepairCode(moldRepairDO.getRepairCode());
vo.setRepairName(moldRepairDO.getRepairName());
vo.setFinishDate(moldRepairDO.getFinishDate());
// 设置维修结果描述
vo.setRepairResult(RepairResultEnum.getDescByCode(doItem.getResult()));
return vo;
})
.collect(Collectors.toList());
moldRepairLineRespVOS.addAll(moldRepairLineRespVOList);
}
}
// 在最终结果上过滤ids
if (StringUtils.isNotBlank(ids)) {
List<Long> idList = Arrays.stream(ids.split(","))
.map(String::trim)
.filter(StringUtils::isNotBlank)
.map(Long::valueOf)
.collect(Collectors.toList());
if (!idList.isEmpty()) {
moldRepairLineRespVOS = moldRepairLineRespVOS.stream()
.filter(vo -> idList.contains(vo.getId())) // 假设vo有getId()方法
.collect(Collectors.toList());
}
}
return moldRepairLineRespVOS;
}
private LocalDateTime parseToLocalDateTime(String timeStr) {
if (StringUtils.isBlank(timeStr)) {
return null;
}
timeStr = timeStr.trim();
try {
// 尝试解析 yyyy-MM-dd HH:mm:ss
if (timeStr.length() == 19) {
return LocalDateTime.parse(timeStr,
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
// 尝试解析 yyyy-MM-dd
else if (timeStr.length() == 10) {
return LocalDate.parse(timeStr,
DateTimeFormatter.ofPattern("yyyy-MM-dd"))
.atStartOfDay();
}
// 尝试解析 yyyy/MM/dd HH:mm:ss
else if (timeStr.contains("/")) {
return LocalDateTime.parse(timeStr.replace("/", "-"),
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
// 尝试ISO格式
else {
return LocalDateTime.parse(timeStr,
DateTimeFormatter.ISO_LOCAL_DATE_TIME);
}
} catch (Exception e) {
throw new IllegalArgumentException("时间格式不支持: " + timeStr, e);
}
}
private void handleInspectionResult(List<MoldRepairLineSaveReqVO> updateReqVOList) {
if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(updateReqVOList)) {
return;
}
// 检查是否有未填写的
boolean hasPending = updateReqVOList.stream()
.anyMatch(vo -> vo.getResult() == null || vo.getResult().equals(JobResultEnum.PENDING.getCode()));
if (hasPending) {
return;
}
MoldRepairDO moldRepairDO = moldRepairMapper.selectById(updateReqVOList.get(0).getRepairId());
if (moldRepairDO == null ){
throw exception(MOLD_REPAIR_NOT_EXISTS);
}
//设置为已完成
moldRepairDO.setStatus(JobResultEnum.PASS.getCode());
// 检查是否有不通过的
boolean hasFail = updateReqVOList.stream()
.anyMatch(vo -> vo.getResult() != null && vo.getResult().equals(JobResultEnum.FAIL.getCode()));
if (hasFail) {
moldRepairDO.setRepairStatus(JobResultEnum.FAIL.getCode());
} else {
moldRepairDO.setRepairStatus(JobResultEnum.PASS.getCode());
}
moldRepairMapper.updateById(moldRepairDO);
}
private void validateBatchUpdateData(List<MoldRepairLineSaveReqVO> updateReqVOList) {
if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(updateReqVOList)) {
return;
}
Set<Long> idSet = new HashSet<>();
for (int i = 0; i < updateReqVOList.size(); i++) {
MoldRepairLineSaveReqVO vo = updateReqVOList.get(i);
// 验证ID不能为空
if (vo.getId() == null) {
throw exception(MOLD_REPAIR_LINE_ID_NOT_EXISTS);
}
idSet.add(vo.getId());
// 调用单个验证逻辑
validateMoldRepairLineExists(vo.getId());
}
}
private void validateMoldRepairLineExists(Long id) {
if (moldRepairLineMapper.selectById(id) == null) {
throw exception(MOLD_REPAIR_LINE_NOT_EXISTS);
}
}
} }

@ -4,7 +4,7 @@ import java.util.*;
import javax.validation.*; import javax.validation.*;
import cn.iocoder.yudao.module.mes.controller.admin.moldrepairtems.vo.*; import cn.iocoder.yudao.module.mes.controller.admin.moldrepairtems.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepairtems.MoldRepairTemsDO; import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepairtems.MoldRepairTemsDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageParam;

@ -3,10 +3,10 @@ package cn.iocoder.yudao.module.mes.service.moldrepairtems;
//import cn.iocoder.yudao.module.iot.controller.admin.mold.vo.LineMoldRespVO; //import cn.iocoder.yudao.module.iot.controller.admin.mold.vo.LineMoldRespVO;
//import cn.iocoder.yudao.module.iot.dal.dataobject.moldmodel.MoldModelDO; //import cn.iocoder.yudao.module.iot.dal.dataobject.moldmodel.MoldModelDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandDO; import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldBrandDO;
import cn.iocoder.yudao.module.mes.dal.mysql.criticalcomponent.CriticalComponentMapper; import cn.iocoder.yudao.module.mes.dal.mysql.criticalcomponent.CriticalComponentMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.mold.MoldMapper; import cn.iocoder.yudao.module.mes.dal.mysql.mold.MesMoldMapper;
import cn.iocoder.yudao.module.mes.service.moldrepairtems.MoldRepairTemsService; import cn.iocoder.yudao.module.mes.service.moldrepairtems.MoldRepairTemsService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -46,7 +46,7 @@ public class MoldRepairTemsServiceImpl implements MoldRepairTemsService {
@Resource @Resource
private MoldMapper moldMapper; private MesMoldMapper mesMoldMapper;
@Resource @Resource
private CriticalComponentMapper criticalComponentMapper; private CriticalComponentMapper criticalComponentMapper;
@ -132,7 +132,7 @@ public class MoldRepairTemsServiceImpl implements MoldRepairTemsService {
// @Override // @Override
// public List<CriticalComponentDO> getComponentList(Long moldId) { // public List<CriticalComponentDO> getComponentList(Long moldId) {
// //
// MoldDO moldDO = moldMapper.selectById(moldId); // MesMoldDO moldDO = mesMoldMapper.selectById(moldId);
// if(moldDO == null ){ // if(moldDO == null ){
// throw exception(DEVICE_LEDGER_NOT_EXISTS); // throw exception(DEVICE_LEDGER_NOT_EXISTS);
// } // }

@ -1,12 +1,12 @@
package cn.iocoder.yudao.module.mes.service.moldtaskmanagement; package cn.iocoder.yudao.module.mes.service.moldtaskmanagement;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldsubject.MoldSubjectDO; import cn.iocoder.yudao.module.mes.dal.dataobject.moldsubject.MoldSubjectDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldplanmaintenance.MoldPlanMaintenanceDO; import cn.iocoder.yudao.module.mes.dal.dataobject.moldplanmaintenance.MoldPlanMaintenanceDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.subjectmoldplan.SubjectMoldPlanDO; import cn.iocoder.yudao.module.mes.dal.dataobject.subjectmoldplan.SubjectMoldPlanDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketmanagement.MoldTicketManagementDO; import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketmanagement.MoldTicketManagementDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO; import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO;
import cn.iocoder.yudao.module.erp.dal.mysql.mold.MoldMapper; import cn.iocoder.yudao.module.mes.dal.mysql.mold.MesMoldMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.moldsubject.MoldSubjectMapper; import cn.iocoder.yudao.module.mes.dal.mysql.moldsubject.MoldSubjectMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.moldplanmaintenance.MoldPlanMaintenanceMapper; import cn.iocoder.yudao.module.mes.dal.mysql.moldplanmaintenance.MoldPlanMaintenanceMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.subjectmoldplan.SubjectMoldPlanMapper; import cn.iocoder.yudao.module.mes.dal.mysql.subjectmoldplan.SubjectMoldPlanMapper;
@ -56,7 +56,7 @@ public class MoldTaskManagementServiceImpl implements MoldTaskManagementService
private MoldTicketResultsMapper moldticketResultsMapper; private MoldTicketResultsMapper moldticketResultsMapper;
@Resource @Resource
private MoldMapper moldMapper; private MesMoldMapper mesMoldMapper;
@Resource @Resource
private MoldPlanMaintenanceMapper moldplanMaintenanceMapper; private MoldPlanMaintenanceMapper moldplanMaintenanceMapper;
@ -178,7 +178,7 @@ public PageResult<MoldTaskManagementDO> getMoldTaskManagementPage(MoldTaskManage
for (Long moldId : idList) { for (Long moldId : idList) {
MoldTicketManagementDO moldticketManagementDO = new MoldTicketManagementDO(); MoldTicketManagementDO moldticketManagementDO = new MoldTicketManagementDO();
MoldDO moldDO = moldMapper.selectById(moldId); MesMoldDO moldDO = mesMoldMapper.selectById(moldId);
moldticketManagementDO.setTaskId(moldtaskManagementDO.getId()); moldticketManagementDO.setTaskId(moldtaskManagementDO.getId());
moldticketManagementDO.setPlanNo(generatePrefixedOrderNo()); moldticketManagementDO.setPlanNo(generatePrefixedOrderNo());
moldticketManagementDO.setPlanId(moldtaskManagementDO.getProjectForm()); moldticketManagementDO.setPlanId(moldtaskManagementDO.getProjectForm());

@ -6,6 +6,8 @@ import cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketmanagement.MoldTicketManagementDO; import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketmanagement.MoldTicketManagementDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO;
/** /**
* Service * Service
@ -53,4 +55,8 @@ public interface MoldTicketManagementService {
PageResult<MoldTicketManagementDO> getMoldTicketManagementPage(MoldTicketManagementPageReqVO pageReqVO); PageResult<MoldTicketManagementDO> getMoldTicketManagementPage(MoldTicketManagementPageReqVO pageReqVO);
void batchUpdateJobStatus(@Valid MoldTicketManagementBatchUpdateReqVO reqVO); void batchUpdateJobStatus(@Valid MoldTicketManagementBatchUpdateReqVO reqVO);
List<MoldTicketResultsDO> getInspectionByMoldId(Long id, String startTime, String endTime, String ids);
List<MoldTicketResultsDO> getMaintenanceByMoldId(Long id, String startTime, String endTime, String ids);
} }

@ -1,7 +1,19 @@
package cn.iocoder.yudao.module.mes.service.moldticketmanagement; package cn.iocoder.yudao.module.mes.service.moldticketmanagement;
import cn.iocoder.yudao.module.mes.controller.admin.ticketmanagement.enums.PlanTypeEnum;
import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO;
import cn.iocoder.yudao.module.mes.dal.mysql.mold.MesMoldMapper;
import cn.iocoder.yudao.module.mes.controller.admin.moldticketmanagement.enums.MoldPlanTypeEnum;
import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.ticketresults.TicketResultsDO;
import cn.iocoder.yudao.module.mes.dal.mysql.deviceledger.DeviceLedgerMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.moldticketresults.MoldTicketResultsMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.ticketresults.TicketResultsMapper;
import cn.iocoder.yudao.module.mes.service.moldticketmanagement.MoldTicketManagementService; import cn.iocoder.yudao.module.mes.service.moldticketmanagement.MoldTicketManagementService;
import com.alibaba.excel.util.StringUtils; import com.alibaba.excel.util.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -32,6 +44,12 @@ public class MoldTicketManagementServiceImpl implements MoldTicketManagementServ
@Resource @Resource
private MoldTicketManagementMapper moldticketManagementMapper; private MoldTicketManagementMapper moldticketManagementMapper;
@Resource
@Lazy
private MesMoldMapper mesMoldMapper;
@Resource
@Lazy
private MoldTicketResultsMapper moldTicketResultsMapper;
@Override @Override
public Long createMoldTicketManagement(MoldTicketManagementSaveReqVO createReqVO) { public Long createMoldTicketManagement(MoldTicketManagementSaveReqVO createReqVO) {
@ -88,6 +106,32 @@ public class MoldTicketManagementServiceImpl implements MoldTicketManagementServ
moldticketManagementMapper.batchUpdateJobStatus(idList, reqVO.getJobStatus()); moldticketManagementMapper.batchUpdateJobStatus(idList, reqVO.getJobStatus());
} }
@Override
public List<MoldTicketResultsDO> getInspectionByMoldId(Long id, String startTime, String endTime, String ids) {
MesMoldDO moldDO = mesMoldMapper.selectById(id);
//点检列表
List<MoldTicketResultsDO> inspectionList = moldTicketResultsMapper.findByMoldIdAndPlanType(id, MoldPlanTypeEnum.INSPECTION.getCode(),startTime,endTime,ids);
if(CollectionUtils.isNotEmpty(inspectionList)){
moldDO.setInspectionList(inspectionList);
}
return inspectionList;
}
@Override
public List<MoldTicketResultsDO> getMaintenanceByMoldId(Long id,String startTime,String endTime,String ids) {
MesMoldDO moldDO = mesMoldMapper.selectById(id);
//保养列表
List<MoldTicketResultsDO> inspectionList = moldTicketResultsMapper.findByMoldIdAndPlanType(id, MoldPlanTypeEnum.MAINTENANCE.getCode(),startTime,endTime,ids);
if(CollectionUtils.isNotEmpty(inspectionList)){
moldDO.setInspectionList(inspectionList);
}
return inspectionList;
}
/** /**
* ID * ID
*/ */

@ -12,19 +12,33 @@
<select id="findByMoldIdAndPlanType" <select id="findByMoldIdAndPlanType"
resultType="cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO"> resultType="cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO">
SELECT SELECT
mtr.* mtr.*,
mtm.task_time,
CONCAT( '(', su.username, ')', su.nickname) as operator
from from
besure.mes_mold_ticket_results mtr besure.mes_mold_ticket_results mtr
left join besure.mes_mold_ticket_management mtm on mtm.id = mtr.management_id left join besure.mes_mold_ticket_management mtm on mtm.id = mtr.management_id
left join besure.system_users su on mtm.operator = su.id
WHERE 1=1 WHERE 1=1
<!-- 必填条件 --> <!-- ID集合过滤 -->
<if test="ids != null and ids != ''">
and mtr.id in
<foreach item="id" collection="ids.split(',')" open="(" separator="," close=")">
#{id}
</foreach>
</if>
<if test="moldId != null and moldId != ''"> <if test="moldId != null and moldId != ''">
and mtr.mold_id = #{moldId} and mtr.mold_id = #{moldId}
</if> </if>
<if test="planType != null and planType != ''"> <if test="planType != null and planType != ''">
and mtm.plan_type= #{planType} and mtm.plan_type= #{planType}
</if> </if>
order by mtr.create_time desc <!-- 点检时间范围过滤 -->
<if test="startTime != null">
and mtm.task_time &gt;= #{startTime}
</if>
<if test="endTime != null">
and mtm.task_time &lt;= #{endTime}
</if>
</select> </select>
</mapper> </mapper>
Loading…
Cancel
Save