diff --git a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index 9c86caad8..81a09dc56 100644 --- a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -95,6 +95,11 @@ public interface ErrorCodeConstants { ErrorCode MOLD_RETURN_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, "维保计划不存在"); @@ -107,7 +112,7 @@ public interface ErrorCodeConstants { 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_SCHEMA_NOT_EXISTS = new ErrorCode(5_0092, "检验方案不存在"); ErrorCode ZJ_PRODUCT_NOT_EXISTS = new ErrorCode(5_0093, "检验参数不存在"); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerRespVO.java index 50fb3f205..3f064ea15 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerRespVO.java @@ -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.dvrepair.DvRepairLineDO; 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.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; @@ -127,7 +127,7 @@ public class DeviceLedgerRespVO extends BaseDO { private List beijianList; @Schema(description = "模具列表") - private List moldList; + private List moldList; @Schema(description = "附件地址") @ExcelProperty("附件地址") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/MoldBrandController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/MoldBrandController.java new file mode 100644 index 000000000..9c1bd7166 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/MoldBrandController.java @@ -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 createMoldBrand(@Valid @RequestBody MoldBrandSaveReqVO createReqVO) { + return success(moldBrandService.createMoldBrand(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新模具型号") + @PreAuthorize("@ss.hasPermission('erp:mold-brand:update')") + public CommonResult 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 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 getMoldBrand(@RequestParam("id") Long id) { + MesMoldBrandDO moldBrand = moldBrandService.getMoldBrand(id); + return success(BeanUtils.toBean(moldBrand, MoldBrandRespVO.class)); + } + @GetMapping("/getBrandList") + @Operation(summary = "获得模具型号列表") + public CommonResult> getBrandList(MoldBrandPageReqVO pageReqVO) { + List brandDOList = moldBrandService.selectBy(pageReqVO); + return success(brandDOList); + } + @GetMapping("/page") + @Operation(summary = "获得模具型号分页") + @PreAuthorize("@ss.hasPermission('erp:mold-brand:query')") + public CommonResult> getMoldBrandPage(@Valid MoldBrandPageReqVO pageReqVO) { + PageResult 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 list = moldBrandService.getMoldBrandPage(pageReqVO).getList(); + List moldBrandRespVOS = BeanUtils.toBean(list, MoldBrandRespVO.class); + // 导出 Excel + ExcelUtils.write(response, "模具型号.xls", "数据", MoldBrandRespVO.class, moldBrandRespVOS); + } + + // ==================== 子表(模具) ==================== + @GetMapping("/getMoldList") + @Operation(summary = "获得模具型号") + public CommonResult> getMoldList(MesMoldDO moldDO) { + List doList = moldBrandService.selectBy(moldDO); + return success(doList); + } + + @GetMapping("/getMoldAllList") + @Operation(summary = "获得模具型号") + public CommonResult> getMoldAllList() { + List 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> 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> getMoldList() { + List moldDOList = moldBrandService.getMoldList(); + return success(moldDOList); + } + + @PostMapping("/mold/create") + @Operation(summary = "创建模具") + @PreAuthorize("@ss.hasPermission('erp:mold-brand:create')") + public CommonResult createMold(@Valid @RequestBody MesMoldDO mold) { + return success(moldBrandService.createMold(mold)); + } + + @PutMapping("/mold/update") + @Operation(summary = "更新模具") + @PreAuthorize("@ss.hasPermission('erp:mold-brand:update')") + public CommonResult 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 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 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> getMoldBrandProductPage(PageParam pageReqVO, + @RequestParam("brandId") Long brandId) { + PageResult pageResult = moldBrandService.getMoldBrandProductPage(pageReqVO, brandId); + PageResult 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 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 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 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 getMoldBrandProduct(@RequestParam("id") Long id) { + return success(moldBrandService.getMoldBrandProduct(id)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/MoldController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/MoldController.java new file mode 100644 index 000000000..9cd46dadd --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/MoldController.java @@ -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 createMold(@Valid @RequestBody MoldSaveReqVO createReqVO) { + return success(moldService.createMold(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新模具") + @PreAuthorize("@ss.hasPermission('erp:mold:update')") + public CommonResult 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 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 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> getMoldPage(@Valid MoldPageReqVO pageReqVO) { + PageResult 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 list = moldService.getMoldPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "模具.xls", "数据", MoldRespVO.class, + BeanUtils.toBean(list, MoldRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/enums/OrgTypeStatusEnum.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/enums/OrgTypeStatusEnum.java new file mode 100644 index 000000000..4168438bf --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/enums/OrgTypeStatusEnum.java @@ -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; + } +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldBrandPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldBrandPageReqVO.java new file mode 100644 index 000000000..7e061a684 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldBrandPageReqVO.java @@ -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; +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldBrandRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldBrandRespVO.java new file mode 100644 index 000000000..97813445d --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldBrandRespVO.java @@ -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 +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldBrandSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldBrandSaveReqVO.java new file mode 100644 index 000000000..74a672b8f --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldBrandSaveReqVO.java @@ -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; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldPageReqVO.java new file mode 100644 index 000000000..3a50cd2b0 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldPageReqVO.java @@ -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; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldProductRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldProductRespVO.java new file mode 100644 index 000000000..f07f96338 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldProductRespVO.java @@ -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; +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldRespVO.java new file mode 100644 index 000000000..208d5660d --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldRespVO.java @@ -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; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldSaveReqVO.java new file mode 100644 index 000000000..e5a802900 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/MoldSaveReqVO.java @@ -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; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/OrgTypeConverter.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/OrgTypeConverter.java new file mode 100644 index 000000000..60269dd5d --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mold/vo/OrgTypeConverter.java @@ -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,对应英文字符串 + + /** + * 读取Excel时调用(Excel中的英文/中文 → 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)"); + } + + /** + * 写入Excel时调用(Java对象的英文字符串 → 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; + } +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java index c42384d4d..c67fc1fb6 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java @@ -1,11 +1,11 @@ package cn.iocoder.yudao.module.mes.controller.admin.moldoperate; 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.MoldSaveReqVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; +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.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.DeviceLedgerSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO; @@ -66,7 +66,7 @@ public class MoldOperateController { public CommonResult createMoldOperate(@Valid @RequestBody MoldOperateSaveReqVO createReqVO) { if (Objects.equals(createReqVO.getOperateType(), "1")) { DeviceLedgerDO deviceLedger = deviceLedgerService.getDeviceLedger(createReqVO.getDeviceId()); - MoldDO moldDO = moldService.getMold(createReqVO.getMoldId()); + MesMoldDO moldDO = moldService.getMold(createReqVO.getMoldId()); moldDO.setMachineId(createReqVO.getDeviceId()); moldDO.setMachineName(deviceLedger.getDeviceName()); moldDO.setStatus(0); // 在机 0 在库 1 @@ -76,7 +76,7 @@ public class MoldOperateController { } else { DeviceLedgerDO deviceLedger = deviceLedgerService.getDeviceLedger(createReqVO.getDeviceId()); 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.setMachineName(""); moldDO.setStatus(3); // 在机 0 在库 1 diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/MoldRepairController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/MoldRepairController.java index 137199aa8..134291575 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/MoldRepairController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/MoldRepairController.java @@ -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.util.object.BeanUtils; 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.MoldRepairRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.moldrepair.vo.MoldRepairSaveReqVO; +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.*; 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.service.moldrepair.MoldRepairService; @@ -25,6 +26,9 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.net.URLEncoder; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -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.common.pojo.CommonResult.success; -@Tag(name = "管理后台 - 设备维修记录") +@Tag(name = "管理后台 - 模具维修记录") @RestController @RequestMapping("/mes/mold-repair") @Validated @@ -45,14 +49,14 @@ public class MoldRepairController { private AdminUserApi adminUserApi; @PostMapping("/create") - @Operation(summary = "创建设备维修记录") + @Operation(summary = "创建模具维修记录") @PreAuthorize("@ss.hasPermission('mes:mold-repair:create')") public CommonResult createMoldRepair(@Valid @RequestBody MoldRepairSaveReqVO createReqVO) { return success(moldRepairService.createMoldRepair(createReqVO)); } @PutMapping("/update") - @Operation(summary = "更新设备维修记录") + @Operation(summary = "更新模具维修记录") @PreAuthorize("@ss.hasPermission('mes:mold-repair:update')") public CommonResult updateMoldRepair(@Valid @RequestBody MoldRepairSaveReqVO updateReqVO) { moldRepairService.updateMoldRepair(updateReqVO); @@ -60,7 +64,7 @@ public class MoldRepairController { } @DeleteMapping("/delete") - @Operation(summary = "删除设备维修记录") + @Operation(summary = "删除模具维修记录") @Parameter(name = "ids", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('mes:mold-repair:delete')") public CommonResult deleteMoldRepair(@RequestParam("ids") String ids) { @@ -75,7 +79,7 @@ public class MoldRepairController { } @GetMapping("/get") - @Operation(summary = "获得设备维修记录") + @Operation(summary = "获得模具维修记录") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('mes:mold-repair:query')") public CommonResult getMoldRepair(@RequestParam("id") Long id) { @@ -84,7 +88,7 @@ public class MoldRepairController { } @GetMapping("/page") - @Operation(summary = "获得设备维修记录分页") + @Operation(summary = "获得模具维修记录分页") @PreAuthorize("@ss.hasPermission('mes:mold-repair:query')") public CommonResult> getMoldRepairPage(@Valid MoldRepairPageReqVO pageReqVO) { PageResult pageResult = moldRepairService.getMoldRepairPage(pageReqVO); @@ -93,7 +97,7 @@ public class MoldRepairController { } @GetMapping("/export-excel") - @Operation(summary = "导出设备维修记录 Excel") + @Operation(summary = "导出模具维修记录 Excel") @PreAuthorize("@ss.hasPermission('mes:mold-repair:export')") @ApiAccessLog(operateType = EXPORT) public void exportMoldRepairExcel(@Valid MoldRepairPageReqVO pageReqVO, @@ -114,22 +118,89 @@ public class MoldRepairController { moldSubjectRespVO.setStatusName(moldSubjectRespVO.getStatus() != null ? (moldSubjectRespVO.getStatus() == 0 ? "待完成" : "已完成") : null); } + if (moldSubjectRespVO.getRepairStatus() !=null) { + moldSubjectRespVO.setRepairStatusName(moldSubjectRespVO.getRepairStatus() != null ? + (moldSubjectRespVO.getRepairStatus() == 1 ? "通过" : "不通过") : null); + } } // 导出 Excel - ExcelUtils.write(response, "设备维修记录.xls", "数据", MoldRepairRespVO.class,moldRepairRespVOList); + ExcelUtils.write(response, "模具维修记录.xls", "数据", MoldRepairRespVO.class,moldRepairRespVOList); } - // ==================== 子表(设备维修记录行) ==================== + // ==================== 子表(模具维修记录行) ==================== @GetMapping("/mold-repair-line/list-by-repair-id") - @Operation(summary = "获得设备维修记录行列表") + @Operation(summary = "获得模具维修记录行列表") @Parameter(name = "repairId", description = "维修单ID") @PreAuthorize("@ss.hasPermission('mes:mold-repair:query')") public CommonResult> getMoldRepairLineListByRepairId(@RequestParam("repairId") Long repairId) { return success(moldRepairService.getMoldRepairLineListByRepairId(repairId)); } + @PostMapping("/updateRepairLine") + @Operation(summary = "更新模具维修子表") + @PreAuthorize("@ss.hasPermission('mes:mold-repair:update')") + public CommonResult updateRepairLine(@Valid @RequestBody MoldRepairLineSaveReqVO updateReqVO) { + moldRepairService.updateRepairLine(updateReqVO); + return success(true); + } + + @PutMapping("/updateMoldRepairStatus") + @Operation(summary = "更新模具维修子记录状态") + @PreAuthorize("@ss.hasPermission('mes:mold-repair:update')") + public CommonResult updateMoldRepairStatus(@Valid @RequestBody MoldRepairUpdateReqVO updateReqVO) { + moldRepairService.updateMoldRepairStatus(updateReqVO); + return success(true); + } + + + @PutMapping("/batchUpdate") + @Operation(summary = "批量更新维修检验结果") + @PreAuthorize("@ss.hasPermission('mes:ticket-results:update')") + public CommonResult batchUpdateTicketResults( + @Valid @RequestBody List 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> getRepairListByMoldId(@RequestParam("moldId") Long moldId, + @RequestParam(name = "startTime",required = false) String startTime, + @RequestParam(name = "endTime",required = false) String endTime) { + List 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 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 buildCreatorName(PageResult moldSubjectRespVOPageResult) { for (MoldRepairRespVO moldSubjectRespVO : moldSubjectRespVOPageResult.getList()) { diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/enums/RepairResultEnum.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/enums/RepairResultEnum.java new file mode 100644 index 000000000..3a1737b7b --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/enums/RepairResultEnum.java @@ -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 "未知"; + } +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairLineRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairLineRespVO.java new file mode 100644 index 000000000..adc5bdede --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairLineRespVO.java @@ -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; + + + +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairLineSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairLineSaveReqVO.java new file mode 100644 index 000000000..6513fac8d --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairLineSaveReqVO.java @@ -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; +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairRespVO.java index b9911f351..08eb499d9 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairRespVO.java @@ -109,5 +109,12 @@ public class MoldRepairRespVO { @Schema(description = "关键件Id", example = "你猜") private Long componentId; + @Schema(description = "维修状态 0-待完成 1-通过 2-不通过") + private Integer repairStatus; + + @Schema(description = "维修状态") + @ExcelProperty("维修状态") + private String repairStatusName; + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairUpdateReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairUpdateReqVO.java new file mode 100644 index 000000000..90b93bb4d --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairUpdateReqVO.java @@ -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 updateReqVOList; + +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/MoldRepairTemsController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/MoldRepairTemsController.java index 9998bd5c1..e02e017ef 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/MoldRepairTemsController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/MoldRepairTemsController.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.module.mes.controller.admin.moldrepairtems; 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 javax.annotation.Resource; import org.springframework.validation.annotation.Validated; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldticketmanagement/MoldTicketManagementController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldticketmanagement/MoldTicketManagementController.java index a67dfce9b..1e7c4db94 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldticketmanagement/MoldTicketManagementController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldticketmanagement/MoldTicketManagementController.java @@ -1,8 +1,16 @@ 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.dto.AdminUserRespDTO; +import com.alibaba.excel.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -14,8 +22,12 @@ import io.swagger.v3.oas.annotations.Operation; import javax.validation.constraints.*; import javax.validation.*; import javax.servlet.http.*; +import java.net.URLEncoder; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.io.IOException; +import java.util.stream.Collectors; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -44,6 +56,9 @@ public class MoldTicketManagementController { @Resource private AdminUserApi adminUserApi; + @Resource + private DictDataApi dictDataApi; + @PostMapping("/create") @Operation(summary = "创建工单管理") @PreAuthorize("@ss.hasPermission('mes:mold-ticket-management:create')") @@ -124,4 +139,144 @@ public class MoldTicketManagementController { } 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> getInspectionByMoldId(@RequestParam("moldId") Long moldId, + @RequestParam(name = "startTime",required = false) String startTime, + @RequestParam(name = "endTime",required = false) String endTime) { + List 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 results = moldticketManagementService.getInspectionByMoldId(moldId, startTime, endTime, ids); + + // 转换为VO并处理数据 + List 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> getMaintenanceByMoldId(@RequestParam("moldId") Long moldId, + @RequestParam(name = "startTime",required = false) String startTime, + @RequestParam(name = "endTime",required = false) String endTime) { + List 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 results = moldticketManagementService.getMaintenanceByMoldId(moldId, startTime, endTime, ids); + + // 转换为VO并处理数据 + List 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> getDictData() { + Map> dictData = new HashMap<>(); + + try { + // 获取检验方式字典 + Map inspectionMethodDict = new HashMap<>(); + List 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> dictData = getDictData(); + String methodLabel = dictData.getOrDefault("Inspection_method", Collections.emptyMap()) + .get(record.getInspectionMethod()); + if (StringUtils.isNotBlank(methodLabel)) { + vo.setInspectionMethod(methodLabel); + } + } + + return vo; + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldticketmanagement/vo/MoldTicketManagementPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldticketmanagement/vo/MoldTicketManagementPageReqVO.java index a4afba546..8389b8c0c 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldticketmanagement/vo/MoldTicketManagementPageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldticketmanagement/vo/MoldTicketManagementPageReqVO.java @@ -53,14 +53,11 @@ public class MoldTicketManagementPageReqVO extends PageParam { private String ids; - /** - * 作业开始时间 - */ + @Schema(description = "作业开始时间") private String taskTime; - /** - * 作业结束时间 - */ + @Schema(description = "作业结束时间") private String taskEndTime; + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldticketresults/vo/MoldTicketInspectionExportVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldticketresults/vo/MoldTicketInspectionExportVO.java new file mode 100644 index 000000000..e35c89094 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldticketresults/vo/MoldTicketInspectionExportVO.java @@ -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; + + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/deviceledger/DeviceLedgerDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/deviceledger/DeviceLedgerDO.java index ab7705a57..84e6f3039 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/deviceledger/DeviceLedgerDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/deviceledger/DeviceLedgerDO.java @@ -1,6 +1,6 @@ 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.ErpProductDO; import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; @@ -156,6 +156,6 @@ public class DeviceLedgerDO extends BaseDO { * 模具列表 */ @TableField(exist = false) - private List moldList; + private List moldList; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/mold/MesMoldBrandDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/mold/MesMoldBrandDO.java new file mode 100644 index 000000000..a714cf2b4 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/mold/MesMoldBrandDO.java @@ -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; +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/mold/MesMoldBrandProductDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/mold/MesMoldBrandProductDO.java new file mode 100644 index 000000000..601051e1b --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/mold/MesMoldBrandProductDO.java @@ -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; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/mold/MesMoldDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/mold/MesMoldDO.java new file mode 100644 index 000000000..6ef80b777 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/mold/MesMoldDO.java @@ -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 inspectionList; + + /** + * 保养列表 + */ + @TableField(exist = false) + private List maintainList; + + /** + * 维修列表 + */ + @TableField(exist = false) + private Map> 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; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrepair/MoldRepairDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrepair/MoldRepairDO.java index c40f70bfd..29c7a78af 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrepair/MoldRepairDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrepair/MoldRepairDO.java @@ -114,4 +114,9 @@ public class MoldRepairDO extends BaseDO { */ private Long componentId; + /** + * 维修结果 0-待维修 1-通过 2-不通过 + */ + private Integer repairStatus; + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrepair/MoldRepairLineDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrepair/MoldRepairLineDO.java index aed8c3b19..18379dd3b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrepair/MoldRepairLineDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrepair/MoldRepairLineDO.java @@ -72,4 +72,9 @@ public class MoldRepairLineDO extends BaseDO { */ private String remark; + /** + * 维修结果 0-待维修 1-通过 2-不通过 + */ + private Integer result; + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldticketresults/MoldTicketResultsDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldticketresults/MoldTicketResultsDO.java index 847a6c85d..cec628d8c 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldticketresults/MoldTicketResultsDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldticketresults/MoldTicketResultsDO.java @@ -3,8 +3,6 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults; import lombok.*; import java.util.*; import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @@ -65,4 +63,13 @@ public class MoldTicketResultsDO extends BaseDO { */ private Long moldId; + /** + * 作业时间 + */ + @TableField(exist = false) + private LocalDateTime taskTime; + + @TableField(exist = false) + private String operator; + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/mold/MesMoldBrandMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/mold/MesMoldBrandMapper.java new file mode 100644 index 000000000..9628c4abc --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/mold/MesMoldBrandMapper.java @@ -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 { + + default PageResult selectPage(MoldBrandPageReqVO reqVO) { + + LambdaQueryWrapperX 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 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 selectBy(MoldBrandPageReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .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)); + } +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/mold/MesMoldBrandProductMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/mold/MesMoldBrandProductMapper.java new file mode 100644 index 000000000..31900c68d --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/mold/MesMoldBrandProductMapper.java @@ -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 { + + default PageResult selectPage(PageParam reqVO, Long brandId) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eq(MesMoldBrandProductDO::getBrandId, brandId) + .orderByDesc(MesMoldBrandProductDO::getId)); + } + + default int deleteByBrandId(Long brandId) { + return delete(MesMoldBrandProductDO::getBrandId, brandId); + } + default List selectList(MesMoldBrandProductDO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(MesMoldBrandProductDO::getProductId, reqVO.getProductId()) + .eqIfPresent(MesMoldBrandProductDO::getBrandId, reqVO.getBrandId()) + .orderByDesc(MesMoldBrandProductDO::getId)); + } +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/mold/MesMoldMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/mold/MesMoldMapper.java new file mode 100644 index 000000000..659c99e0d --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/mold/MesMoldMapper.java @@ -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 { + + default PageResult selectPage(PageParam reqVO, Long brandId) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MesMoldDO::getBrandId, brandId) + .orderByDesc(MesMoldDO::getId)); + } + + default int deleteByBrandId(Long brandId) { + return delete(MesMoldDO::getBrandId, brandId); + } + + default List selectBy(MesMoldDO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(MesMoldDO::getCode, reqVO.getCode()) + .likeIfPresent(MesMoldDO::getName, reqVO.getName()) + .eqIfPresent(MesMoldDO::getBrandId, reqVO.getBrandId()) + .orderByDesc(MesMoldDO::getId)); + } + + default List selectBy(Long brandId) { + return selectList(new LambdaQueryWrapperX() + .eq(MesMoldDO::getBrandId, brandId) + .orderByDesc(MesMoldDO::getId)); + } + + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldticketresults/MoldTicketResultsMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldticketresults/MoldTicketResultsMapper.java index 3d1db4254..c2725885d 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldticketresults/MoldTicketResultsMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldticketresults/MoldTicketResultsMapper.java @@ -34,5 +34,7 @@ public interface MoldTicketResultsMapper extends BaseMapperX findByDeviceIdAndPlanType(@Param("deviceId") Long deviceId,@Param("planType") Integer planType); + List findByMoldIdAndPlanType(@Param("moldId") Long moldId, @Param("planType") Integer planType, + @Param("startTime") String startTime, @Param("endTime") String endTime, + @Param("ids") String ids); } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/redis/no/MesNoRedisDAO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/redis/no/MesNoRedisDAO.java index aff79a07e..9b0ec2799 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/redis/no/MesNoRedisDAO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/redis/no/MesNoRedisDAO.java @@ -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_RECORD_NO_PREFIX = "MR-"; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerService.java index 64767d31b..6b05e555a 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerService.java @@ -4,7 +4,7 @@ import java.util.*; import javax.validation.*; import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.*; import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerServiceImpl.java index b8042213b..1c2d44316 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerServiceImpl.java @@ -4,11 +4,11 @@ import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; -import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldBrandDO; +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.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.service.product.ErpProductUnitService; import cn.iocoder.yudao.module.mes.controller.admin.ticketmanagement.enums.PlanTypeEnum; @@ -72,7 +72,7 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService { private ErpProductMapper productMapper; @Resource - private MoldMapper moldMapper; + private MesMoldMapper mesMoldMapper; @Resource private ErpProductUnitService productUnitService; @@ -194,7 +194,7 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService { } //模具列表 - List moldList = new ArrayList<>(); + List moldList = new ArrayList<>(); if (StringUtils.isNotBlank(deviceLedgerDO.getMoldId())) { // 将逗号分隔的字符串转换为Long类型的List List idList = Arrays.stream(deviceLedgerDO.getMoldId().split(",")) @@ -202,7 +202,7 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService { .map(Long::valueOf) .collect(Collectors.toList()); for (Long moldId : idList) { - MoldDO moldDO = moldMapper.selectById(moldId); + MesMoldDO moldDO = mesMoldMapper.selectById(moldId); if(moldDO!=null){ moldList.add(moldDO); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/mold/MoldBrandService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/mold/MoldBrandService.java new file mode 100644 index 000000000..f87d6c2d0 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/mold/MoldBrandService.java @@ -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 selectBy(MoldBrandPageReqVO reqVO); + /** + * 获得模具型号分页 + * + * @param pageReqVO 分页查询 + * @return 模具型号分页 + */ + PageResult getMoldBrandPage(MoldBrandPageReqVO pageReqVO); + default Map getMap(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return new HashMap<>(); + } + return CollectionUtils.convertMap(getList(ids), MesMoldBrandDO::getId); + } + List getList(Collection ids); + // ==================== 子表(模具) ==================== + + /** + * 获得模具分页 + * + * @param pageReqVO 分页查询 + * @param brandId 型号id + * @return 模具分页 + */ + PageResult getMoldPage(PageParam pageReqVO, Long brandId); + + List 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 selectBy(MesMoldDO reqVO); + // ==================== 子表(模具产品) ==================== + + /** + * 获得模具产品分页 + * + * @param pageReqVO 分页查询 + * @param brandId 型号ID + * @return 模具产品分页 + */ + PageResult getMoldBrandProductPage(PageParam pageReqVO, Long brandId); + List buildProduct(List 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 getAllList(); + + + /** + * 获得产品分类列表 + * + * @param ids 编号数组 + * @return 产品分类列表 + */ + List getMoldBrandList(Collection ids); + + /** + * 获得产品分类 Map + * + * @param ids 编号数组 + * @return 产品分类 Map + */ + default Map getMoldBrandMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); + return convertMap(getMoldBrandList(ids), MesMoldBrandDO::getId); + } +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/mold/MoldBrandServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/mold/MoldBrandServiceImpl.java new file mode 100644 index 000000000..2d0122509 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/mold/MoldBrandServiceImpl.java @@ -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 selectBy(MoldBrandPageReqVO reqVO){ + return mesMoldBrandMapper.selectBy(reqVO); + } + + @Override + public PageResult getMoldBrandPage(MoldBrandPageReqVO pageReqVO) { + PageResult pageResult = mesMoldBrandMapper.selectPage(pageReqVO); + return new PageResult<>(buildMoldBrandVOList(pageResult.getList()), pageResult.getTotal()); + } + + private List buildMoldBrandVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + Map 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 getList(Collection ids) { + return mesMoldBrandMapper.selectBatchIds(ids); + } + // ==================== 子表(模具) ==================== + + @Override + public PageResult getMoldPage(PageParam pageReqVO, Long brandId) { + PageResult pageResult = mesMoldMapper.selectPage(pageReqVO, brandId); + return new PageResult<>(buildMoldVOList(pageResult.getList()), pageResult.getTotal()); + } + + @Override + public List getMoldList() { + return mesMoldMapper.selectList(); + } + + private List buildMoldVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + Map 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> 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 inspectionList = moldticketResultsMapper.findByMoldIdAndPlanType(id, MoldPlanTypeEnum.INSPECTION.getCode(),null,null,null); + if(CollectionUtils.isNotEmpty(inspectionList)){ + moldDO.setInspectionList(inspectionList); + } + + //保养列表 + List maintainList = moldticketResultsMapper.findByMoldIdAndPlanType(id, MoldPlanTypeEnum.MAINTENANCE.getCode(),null,null,null); + if(CollectionUtils.isNotEmpty(maintainList)){ + moldDO.setMaintainList(maintainList); + } + + //维修列表 + List moldRepairDOS = moldRepairMapperRepair.selectList( + Wrappers.lambdaQuery() + .eq(MoldRepairDO::getMoldId, id)); + + for (MoldRepairDO moldRepairDO : moldRepairDOS) { + List moldRepairLineDOS = moldRepairLineMapper.selectList(Wrappers.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 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 getMoldBrandProductPage(PageParam pageReqVO, Long brandId) { + return mesMoldBrandProductMapper.selectPage(pageReqVO, brandId); + } + @Override + public List buildProduct(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + Map 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 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 getAllList() { + return mesMoldMapper.selectList(); + } + + @Override + public List getMoldBrandList(Collection 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); + } +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/mold/MoldService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/mold/MoldService.java new file mode 100644 index 000000000..1c07bb51b --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/mold/MoldService.java @@ -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 getMoldPage(MoldPageReqVO pageReqVO); + List getList(Collection ids); + default Map getMap(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return new HashMap<>(); + } + return CollectionUtils.convertMap(getList(ids), MesMoldDO::getId); + } + + /** + * 校验模具们的有效性 + * + * @param ids 编号数组 + * @return 模具列表 + */ + List validMoldList(Collection ids); + + /** + * 获得产品 VO 列表 + * + * @param ids 编号数组 + * @return 产品 VO 列表 + */ + List getMoldVOList(Collection ids); + + /** + * 获得模具 VO Map + * + * @param ids 编号数组 + * @return 模具 VO Map + */ + default Map getMoldVOMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); + return convertMap(getMoldVOList(ids), MoldRespVO::getId); + } + + List buildMoldVOList(List list); +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/mold/MoldServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/mold/MoldServiceImpl.java new file mode 100644 index 000000000..040415cc8 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/mold/MoldServiceImpl.java @@ -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 getMoldPage(MoldPageReqVO pageReqVO) { + return mesMoldMapper.selectPage(pageReqVO, pageReqVO.getBrandId()); + } + @Override + public List getList(Collection ids) { + return mesMoldMapper.selectBatchIds(ids); + } + + @Override + public List validMoldList(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return Collections.emptyList(); + } + return mesMoldMapper.selectBatchIds(ids); + } + + @Override + public List getMoldVOList(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return Collections.emptyList(); + } + List list = mesMoldMapper.selectBatchIds(ids); + return buildMoldVOList(list); + } + + @Override + public List buildMoldVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + return BeanUtils.toBean(list, MoldRespVO.class); + } +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordServiceImpl.java index cf93c01fb..e2e4d980c 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrecord/MoldRecordServiceImpl.java @@ -4,10 +4,10 @@ import cn.hutool.core.collection.CollUtil; 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.erp.dal.dataobject.mold.MoldBrandDO; -import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; -import cn.iocoder.yudao.module.erp.service.mold.MoldBrandService; -import cn.iocoder.yudao.module.erp.service.mold.MoldService; +import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldBrandDO; +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.service.mold.MoldService; 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.MoldRecordSaveReqVO; @@ -129,9 +129,9 @@ public class MoldRecordServiceImpl implements MoldRecordService { Map userMap = userService.getUserMap( convertSet(list, MoldRecordDO::getUserId)); - Map brandMap = moldBrandService.getMap( + Map brandMap = moldBrandService.getMap( convertSet(list, MoldRecordDO::getBrandId)); - Map moldMap = moldService.getMap( + Map moldMap = moldService.getMap( convertSet(list, MoldRecordDO::getMoldId)); Map machineMap = machineComponentService.getMap( diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairService.java index 470374f64..029daf58b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairService.java @@ -1,8 +1,10 @@ package cn.iocoder.yudao.module.mes.service.moldrepair; 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.MoldRepairSaveReqVO; +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.*; 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.mysql.moldrepair.MoldRepairLineMapper; @@ -11,14 +13,14 @@ import javax.validation.Valid; import java.util.List; /** - * 设备维修记录 Service 接口 + * 模具维修记录 Service 接口 * * @author 内蒙必硕 */ public interface MoldRepairService { /** - * 创建设备维修记录 + * 创建模具维修记录 * * @param createReqVO 创建信息 * @return 编号 @@ -26,43 +28,51 @@ public interface MoldRepairService { Long createMoldRepair(@Valid MoldRepairSaveReqVO createReqVO); /** - * 更新设备维修记录 + * 更新模具维修记录 * * @param updateReqVO 更新信息 */ void updateMoldRepair(@Valid MoldRepairSaveReqVO updateReqVO); /** - * 删除设备维修记录 + * 删除模具维修记录 * * @param id 编号 */ void deleteMoldRepair(List idList); /** - * 获得设备维修记录 + * 获得模具维修记录 * * @param id 编号 - * @return 设备维修记录 + * @return 模具维修记录 */ MoldRepairDO getMoldRepair(Long id); /** - * 获得设备维修记录分页 + * 获得模具维修记录分页 * * @param pageReqVO 分页查询 - * @return 设备维修记录分页 + * @return 模具维修记录分页 */ PageResult getMoldRepairPage(MoldRepairPageReqVO pageReqVO); - // ==================== 子表(设备维修记录行) ==================== + // ==================== 子表(模具维修记录行) ==================== /** - * 获得设备维修记录行列表 + * 获得模具维修记录行列表 * * @param repairId 维修单ID - * @return 设备维修记录行列表 + * @return 模具维修记录行列表 */ List getMoldRepairLineListByRepairId(Long repairId); -} \ No newline at end of file + void updateRepairLine(@Valid MoldRepairLineSaveReqVO updateReqVO); + + void batchUpdateTicketResults(@Valid List updateReqVOList); + + void updateMoldRepairStatus(@Valid MoldRepairUpdateReqVO updateReqVO); + + List getRepairListByMoldId(Long moldId, String startTime, String endTime, String ids); +} + diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairServiceImpl.java index 92fcf866d..c6b3cce13 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepair/MoldRepairServiceImpl.java @@ -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.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.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.MoldRepairLineDO; 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.service.moldrepair.MoldRepairService; +import com.alibaba.excel.util.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.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 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 内蒙必硕 */ @@ -53,7 +65,7 @@ public class MoldRepairServiceImpl implements MoldRepairService { ); if (count > 0) { - throw exception(DV_REPAIR_CODE_EXISTS); + throw exception(MOLD_REPAIR_CODE_EXISTS); } // 插入 MoldRepairDO moldRepair = BeanUtils.toBean(createReqVO, MoldRepairDO.class); @@ -79,7 +91,7 @@ public class MoldRepairServiceImpl implements MoldRepairService { ); 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) { 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); } - // ==================== 子表(设备维修记录行) ==================== + // ==================== 子表(模具维修记录行) ==================== @Override public List getMoldRepairLineListByRepairId(Long repairId) { @@ -174,4 +186,233 @@ public class MoldRepairServiceImpl implements MoldRepairService { 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 updateReqVOList) { + if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(updateReqVOList)) { + return; + } + + // 1. 数据验证 + validateBatchUpdateData(updateReqVOList); + + // 2. 批量更新 + List 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 getRepairListByMoldId(Long moldId, String startTime, String endTime, String ids) { + + List moldRepairLineRespVOS = new ArrayList<>(); + + LambdaQueryWrapper wrapper = Wrappers.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 moldRepairDOS = moldRepairMapper.selectList(wrapper); + + for (MoldRepairDO moldRepairDO : moldRepairDOS) { + + LambdaQueryWrapper moldRepairLineDOLambdaQueryWrapper = Wrappers.lambdaQuery() + .eq(MoldRepairLineDO::getRepairId, moldRepairDO.getId()) + .orderByDesc(MoldRepairLineDO::getCreateTime); + + List moldRepairLineDOS = moldRepairLineMapper.selectList(moldRepairLineDOLambdaQueryWrapper); + + if (!moldRepairLineDOS.isEmpty()) { + List 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 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 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 updateReqVOList) { + + + if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(updateReqVOList)) { + return; + } + + Set 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); + } + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsService.java index 6cc2add26..82ee1d370 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsService.java @@ -4,7 +4,7 @@ import java.util.*; import javax.validation.*; 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.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.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsServiceImpl.java index bb121e4da..9936a4609 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsServiceImpl.java @@ -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.dal.dataobject.moldmodel.MoldModelDO; 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.erp.dal.dataobject.mold.MoldBrandDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.mold.MesMoldDO; +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.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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -46,7 +46,7 @@ public class MoldRepairTemsServiceImpl implements MoldRepairTemsService { @Resource - private MoldMapper moldMapper; + private MesMoldMapper mesMoldMapper; @Resource private CriticalComponentMapper criticalComponentMapper; @@ -132,7 +132,7 @@ public class MoldRepairTemsServiceImpl implements MoldRepairTemsService { // @Override // public List getComponentList(Long moldId) { // -// MoldDO moldDO = moldMapper.selectById(moldId); +// MesMoldDO moldDO = mesMoldMapper.selectById(moldId); // if(moldDO == null ){ // throw exception(DEVICE_LEDGER_NOT_EXISTS); // } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldtaskmanagement/MoldTaskManagementServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldtaskmanagement/MoldTaskManagementServiceImpl.java index 81c43e075..022a66488 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldtaskmanagement/MoldTaskManagementServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldtaskmanagement/MoldTaskManagementServiceImpl.java @@ -1,12 +1,12 @@ 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.moldplanmaintenance.MoldPlanMaintenanceDO; 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.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.moldplanmaintenance.MoldPlanMaintenanceMapper; import cn.iocoder.yudao.module.mes.dal.mysql.subjectmoldplan.SubjectMoldPlanMapper; @@ -56,7 +56,7 @@ public class MoldTaskManagementServiceImpl implements MoldTaskManagementService private MoldTicketResultsMapper moldticketResultsMapper; @Resource - private MoldMapper moldMapper; + private MesMoldMapper mesMoldMapper; @Resource private MoldPlanMaintenanceMapper moldplanMaintenanceMapper; @@ -178,7 +178,7 @@ public PageResult getMoldTaskManagementPage(MoldTaskManage for (Long moldId : idList) { MoldTicketManagementDO moldticketManagementDO = new MoldTicketManagementDO(); - MoldDO moldDO = moldMapper.selectById(moldId); + MesMoldDO moldDO = mesMoldMapper.selectById(moldId); moldticketManagementDO.setTaskId(moldtaskManagementDO.getId()); moldticketManagementDO.setPlanNo(generatePrefixedOrderNo()); moldticketManagementDO.setPlanId(moldtaskManagementDO.getProjectForm()); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldticketmanagement/MoldTicketManagementService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldticketmanagement/MoldTicketManagementService.java index 454271fbc..238f9597b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldticketmanagement/MoldTicketManagementService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldticketmanagement/MoldTicketManagementService.java @@ -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.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldticketresults.MoldTicketResultsDO; + /** * 项目方案关联 Service 接口 @@ -53,4 +55,8 @@ public interface MoldTicketManagementService { PageResult getMoldTicketManagementPage(MoldTicketManagementPageReqVO pageReqVO); void batchUpdateJobStatus(@Valid MoldTicketManagementBatchUpdateReqVO reqVO); + + List getInspectionByMoldId(Long id, String startTime, String endTime, String ids); + + List getMaintenanceByMoldId(Long id, String startTime, String endTime, String ids); } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldticketmanagement/MoldTicketManagementServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldticketmanagement/MoldTicketManagementServiceImpl.java index 3b5988428..f4c257b1f 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldticketmanagement/MoldTicketManagementServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldticketmanagement/MoldTicketManagementServiceImpl.java @@ -1,7 +1,19 @@ 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 com.alibaba.excel.util.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -32,6 +44,12 @@ public class MoldTicketManagementServiceImpl implements MoldTicketManagementServ @Resource private MoldTicketManagementMapper moldticketManagementMapper; + @Resource + @Lazy + private MesMoldMapper mesMoldMapper; + @Resource + @Lazy + private MoldTicketResultsMapper moldTicketResultsMapper; @Override public Long createMoldTicketManagement(MoldTicketManagementSaveReqVO createReqVO) { @@ -88,6 +106,32 @@ public class MoldTicketManagementServiceImpl implements MoldTicketManagementServ moldticketManagementMapper.batchUpdateJobStatus(idList, reqVO.getJobStatus()); } + + @Override + public List getInspectionByMoldId(Long id, String startTime, String endTime, String ids) { + MesMoldDO moldDO = mesMoldMapper.selectById(id); + //点检列表 + List inspectionList = moldTicketResultsMapper.findByMoldIdAndPlanType(id, MoldPlanTypeEnum.INSPECTION.getCode(),startTime,endTime,ids); + if(CollectionUtils.isNotEmpty(inspectionList)){ + moldDO.setInspectionList(inspectionList); + } + + return inspectionList; + } + + @Override + public List getMaintenanceByMoldId(Long id,String startTime,String endTime,String ids) { + MesMoldDO moldDO = mesMoldMapper.selectById(id); + + //保养列表 + List inspectionList = moldTicketResultsMapper.findByMoldIdAndPlanType(id, MoldPlanTypeEnum.MAINTENANCE.getCode(),startTime,endTime,ids); + if(CollectionUtils.isNotEmpty(inspectionList)){ + moldDO.setInspectionList(inspectionList); + } + + return inspectionList; + } + /** * 解析逗号分隔的ID字符串 */ diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldticketresults/MoldTicketResultsMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldticketresults/MoldTicketResultsMapper.xml index 17217e3e3..2797b9101 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldticketresults/MoldTicketResultsMapper.xml +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldticketresults/MoldTicketResultsMapper.xml @@ -12,19 +12,33 @@ - \ No newline at end of file +