diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/dataobject/mold/MoldDO.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/dataobject/mold/MoldDO.java index 620e7017b..0c5ac3578 100644 --- a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/dataobject/mold/MoldDO.java +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/dataobject/mold/MoldDO.java @@ -119,4 +119,10 @@ public class MoldDO extends BaseDO { @TableField(exist = false) private String qrcodeUrl; + /** + * 打印模板 + */ + @TableField(exist = false) + private String templateJson; + } \ No newline at end of file diff --git a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/mysql/mold/MoldMapper.java b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/mysql/mold/MoldMapper.java index 10a2335a4..e058ddba3 100644 --- a/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/mysql/mold/MoldMapper.java +++ b/yudao-module-common/yudao-module-common-biz/src/main/java/cn/iocoder/yudao/module/common/dal/mysql/mold/MoldMapper.java @@ -78,4 +78,6 @@ public interface MoldMapper extends BaseMapperX { .eq(MoldDO::getBrandId, brandId) .orderByDesc(MoldDO::getId)); } + + String selectPrintTemplate(); } \ No newline at end of file diff --git a/yudao-module-common/yudao-module-common-biz/src/main/resources/mapper/mold/MoldMapper.xml b/yudao-module-common/yudao-module-common-biz/src/main/resources/mapper/mold/MoldMapper.xml index 7cd5fb701..134dc7a17 100644 --- a/yudao-module-common/yudao-module-common-biz/src/main/resources/mapper/mold/MoldMapper.xml +++ b/yudao-module-common/yudao-module-common-biz/src/main/resources/mapper/mold/MoldMapper.xml @@ -8,5 +8,10 @@ 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - + \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java index 939a4c61b..8cef3a6bf 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/product/ErpProductRespVO.java @@ -99,6 +99,8 @@ public class ErpProductRespVO extends ErpProductDO { // @Schema(description = "关联模具D列表", example = "[11,15,23]") // private List moldIds; + @Schema(description = "打印模板Json", example = "") + private String templateJson; @Schema(description = "关联设备列表") private List devices; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java index a6508130b..33eee95c7 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java @@ -111,4 +111,5 @@ public interface ErpProductMapper extends BaseMapperX { List selectMoldsByProductId(@Param("productId") Long productId); + String selectPrintTemplate(@Param("templateType") Integer templateType); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandServiceImpl.java index ea0ae94fe..c7c6bdd20 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandServiceImpl.java @@ -313,7 +313,12 @@ public class MoldBrandServiceImpl implements MoldBrandService { @Override public MoldDO getMold(Long id, String code) { if (id != null) { - return getMold(id); + MoldDO mold = getMold(id); + if(mold != null ){ + String template = moldMapper.selectPrintTemplate(); + mold.setTemplateJson(template); + } + return mold; } if (StrUtil.isNotBlank(code)) { MoldDO moldDO = moldMapper.selectOne(new LambdaQueryWrapperX() diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java index 8b9e482c4..a21ef1d0c 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java @@ -329,7 +329,18 @@ public class ErpProductServiceImpl implements ErpProductService { @Override public ErpProductRespVO getProduct(Long id, String code) { if (id != null) { - return getProduct(id); + ErpProductRespVO product = getProduct(id); + if (product != null) { + Integer templateType = 0; + if (product.getCategoryId() == 2 ) { + templateType = 1; // 打印模板产品值 + } else if(product.getCategoryId() == 5){ + templateType = 5; // 打印模板备件值 + } + String template = productMapper.selectPrintTemplate(templateType); + product.setTemplateJson(template); + } + return product; } if (StringUtils.isNotBlank(code)) { ErpProductDO product = productMapper.selectOne(new LambdaQueryWrapperX() @@ -339,7 +350,6 @@ public class ErpProductServiceImpl implements ErpProductService { if (product == null) { throw exception(PRODUCT_NOT_EXISTS); } - return getProduct(product.getId()); } throw exception(PRODUCT_NOT_EXISTS); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/product/ErpProductMapper.xml b/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/product/ErpProductMapper.xml index e6c5c1889..af337fa0f 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/product/ErpProductMapper.xml +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/resources/mapper/product/ErpProductMapper.xml @@ -48,6 +48,12 @@ WHERE rel.product_id = #{productId} AND rel.deleted = b'0' + 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 ed9942634..4a508ba1a 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 @@ -200,5 +200,9 @@ public interface ErrorCodeConstants { ErrorCode SCHEDULE_DEVICE_COLLECTION_MAPPING_MISSING = new ErrorCode(100_301_0019, "{}-{},设备未关联采集设备,deviceId={},deviceName={}"); + // ========== 打印模板 相关 100_401_0000 ========== + ErrorCode PRINT_TEMPLATE_NOT_EXISTS = new ErrorCode(100_401_0000, "打印模板不存在"); + ErrorCode PRINT_TEMPLATE_CODE_EXISTS = new ErrorCode(100_401_0001, "打印模板编码已存在,请重新提交"); + ErrorCode PRINT_TEMPLATE_TYPE_EXISTS = new ErrorCode(100_401_0002, "该模板类型已存在打印模板,请勿重复新增"); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/criticalcomponent/CriticalComponentController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/criticalcomponent/CriticalComponentController.java index 4a152a3c4..f0a6a831b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/criticalcomponent/CriticalComponentController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/criticalcomponent/CriticalComponentController.java @@ -81,7 +81,10 @@ public class CriticalComponentController { public CommonResult getCriticalComponent(@RequestParam(value = "id", required = false) Long id, @RequestParam(value = "code", required = false) String code) { CriticalComponentDO criticalComponent = criticalComponentService.getCriticalComponent(id, code); - return success(BeanUtils.toBean(criticalComponent, CriticalComponentRespVO.class)); + CriticalComponentRespVO criticalComponentRespVO = BeanUtils.toBean(criticalComponent, CriticalComponentRespVO.class); + String template = criticalComponentService.selectPrintTemplate(); + criticalComponentRespVO.setTemplateJson(template); + return success(criticalComponentRespVO); } @GetMapping("/page") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/criticalcomponent/vo/CriticalComponentRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/criticalcomponent/vo/CriticalComponentRespVO.java index 4602d5e02..816941cf1 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/criticalcomponent/vo/CriticalComponentRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/criticalcomponent/vo/CriticalComponentRespVO.java @@ -51,4 +51,6 @@ public class CriticalComponentRespVO { @Schema(description = "二维码", example = "2") private String qrcodeUrl; + @Schema(description = "打印模板Json", example = "") + private String templateJson; } \ 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/deviceledger/DeviceLedgerController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/DeviceLedgerController.java index 6f903c13e..7450cf910 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/DeviceLedgerController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/DeviceLedgerController.java @@ -105,6 +105,10 @@ public class DeviceLedgerController { @RequestParam(value = "code", required = false) String code) { DeviceLedgerDO deviceLedger = deviceLedgerService.getDeviceLedger(id, code); DeviceLedgerRespVO respVO = BeanUtils.toBean(deviceLedger, DeviceLedgerRespVO.class); + if(respVO != null ){ + String template = deviceLedgerService.selectPrintTemplate(); + respVO.setTemplateJson(template); + } String qrcodeUrl = qrcodeService.selectQrcodeUrlByIdAndCode(QrcodeBizTypeEnum.EQUIPMENT.getCode(),id,respVO.getDeviceCode()); respVO.setQrcodeUrl(qrcodeUrl); 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 9946a0c19..d97992e55 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 @@ -169,4 +169,7 @@ public class DeviceLedgerRespVO extends BaseDO { @Schema(description = "数据采集产能") private Integer dataCollectionCapacity; + + @Schema(description = "打印模板") + private String templateJson; } \ 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/printtemplate/PrintTemplateController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/printtemplate/PrintTemplateController.java new file mode 100644 index 000000000..77e584d18 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/printtemplate/PrintTemplateController.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.module.mes.controller.admin.printtemplate; + +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + + +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.mes.controller.admin.printtemplate.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.printtemplate.PrintTemplateDO; +import cn.iocoder.yudao.module.mes.service.printtemplate.PrintTemplateService; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +@Tag(name = "管理后台 - 打印模板") +@RestController +@RequestMapping("/mes/print-template") +@Validated +public class PrintTemplateController { + + @Resource + private PrintTemplateService printTemplateService; + + @PostMapping("/create") + @Operation(summary = "创建打印模板") + @PreAuthorize("@ss.hasPermission('mes:print-template:create')") + public CommonResult createPrintTemplate(@Valid @RequestBody PrintTemplateSaveReqVO createReqVO) { + return success(printTemplateService.createPrintTemplate(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新打印模板") + @PreAuthorize("@ss.hasPermission('mes:print-template:update')") + public CommonResult updatePrintTemplate(@Valid @RequestBody PrintTemplateSaveReqVO updateReqVO) { + printTemplateService.updatePrintTemplate(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除打印模板") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:print-template:delete')") + public CommonResult deletePrintTemplate(@RequestParam("id") Long id) { + printTemplateService.deletePrintTemplate(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得打印模板") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:print-template:query')") + public CommonResult getPrintTemplate(@RequestParam("id") Long id) { + PrintTemplateDO printTemplate = printTemplateService.getPrintTemplate(id); + return success(BeanUtils.toBean(printTemplate, PrintTemplateRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得打印模板分页") + @PreAuthorize("@ss.hasPermission('mes:print-template:query')") + public CommonResult> getPrintTemplatePage(@Valid PrintTemplatePageReqVO pageReqVO) { + PageResult pageResult = printTemplateService.getPrintTemplatePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, PrintTemplateRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出打印模板 Excel") + @PreAuthorize("@ss.hasPermission('mes:print-template:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportPrintTemplateExcel(@Valid PrintTemplatePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = printTemplateService.getPrintTemplatePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "打印模板.xls", "数据", PrintTemplateRespVO.class, + BeanUtils.toBean(list, PrintTemplateRespVO.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/printtemplate/vo/PrintTemplatePageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/printtemplate/vo/PrintTemplatePageReqVO.java new file mode 100644 index 000000000..10daacb83 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/printtemplate/vo/PrintTemplatePageReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.mes.controller.admin.printtemplate.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 打印模板分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class PrintTemplatePageReqVO extends PageParam { + + @Schema(description = "模板编码") + private String templateCode; + + @Schema(description = "模板名称", example = "张三") + private String templateName; + + @Schema(description = "模板类型", example = "1") + private Integer templateType; + + @Schema(description = "模板JSON内容(布局、字段、样式等)") + private String templateJson; + + @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; + +} \ 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/printtemplate/vo/PrintTemplateRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/printtemplate/vo/PrintTemplateRespVO.java new file mode 100644 index 000000000..7a706a77d --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/printtemplate/vo/PrintTemplateRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.mes.controller.admin.printtemplate.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 打印模板 Response VO") +@Data +@ExcelIgnoreUnannotated +public class PrintTemplateRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11046") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "模板编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("模板编码") + private String templateCode; + + @Schema(description = "模板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @ExcelProperty("模板名称") + private String templateName; + + @Schema(description = "模板类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("模板类型") + private Integer templateType; + + @Schema(description = "模板JSON内容(布局、字段、样式等)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("模板JSON内容(布局、字段、样式等)") + private String templateJson; + + @Schema(description = "备注", example = "你猜") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "是否启用") + @ExcelProperty("是否启用") + private Boolean isEnable; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + 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/controller/admin/printtemplate/vo/PrintTemplateSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/printtemplate/vo/PrintTemplateSaveReqVO.java new file mode 100644 index 000000000..b56f4d0c8 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/printtemplate/vo/PrintTemplateSaveReqVO.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.mes.controller.admin.printtemplate.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.*; + +@Schema(description = "管理后台 - 打印模板新增/修改 Request VO") +@Data +public class PrintTemplateSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11046") + private Long id; + + @Schema(description = "模板编码,为空时自动生成") + private String templateCode; + + @Schema(description = "模板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") + @NotEmpty(message = "模板名称不能为空") + private String templateName; + + @Schema(description = "模板类型 1-物料产品 2-设备台账 3-关键件 4-模具 5-备件", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "模板类型不能为空") + private Integer templateType; + + @Schema(description = "模板JSON内容(布局、字段、样式等)", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotEmpty(message = "模板JSON内容(布局、字段、样式等)不能为空") + private String templateJson; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "是否启用") + private Boolean isEnable; + +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/printtemplate/vo/PrintTemplateTypeEnum.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/printtemplate/vo/PrintTemplateTypeEnum.java new file mode 100644 index 000000000..95b51a413 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/printtemplate/vo/PrintTemplateTypeEnum.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.mes.controller.admin.printtemplate.vo; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum PrintTemplateTypeEnum { + + MATERIAL_PRODUCT(1), + EQUIPMENT_LEDGER(2), + KEY_COMPONENT(3), + MOLD(4), + SPARE_PARTS(5); + + private final Integer value; + + public static PrintTemplateTypeEnum fromValue(int value) { + for (PrintTemplateTypeEnum type : PrintTemplateTypeEnum.values()) { + if (type.getValue() == value) { + return type; + } + } + throw new IllegalArgumentException("Unknown value: " + value); + } + +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/printtemplate/PrintTemplateDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/printtemplate/PrintTemplateDO.java new file mode 100644 index 000000000..f7374f7e3 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/printtemplate/PrintTemplateDO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.printtemplate; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 打印模板 DO + * + * @author 必硕智能 + */ +@TableName("mes_print_template") +@KeySequence("mes_print_template_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PrintTemplateDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 模板编码 + */ + private String templateCode; + /** + * 模板名称 + */ + private String templateName; + /** + * 模板类型 + */ + private Integer templateType; + /** + * 模板JSON内容(布局、字段、样式等) + */ + private String templateJson; + /** + * 备注 + */ + private String remark; + /** + * 是否启用 + */ + private Boolean isEnable; + +} \ 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/criticalcomponent/CriticalComponentMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/criticalcomponent/CriticalComponentMapper.java index fb07bb3fb..de23bc478 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/criticalcomponent/CriticalComponentMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/criticalcomponent/CriticalComponentMapper.java @@ -48,4 +48,5 @@ public interface CriticalComponentMapper extends BaseMapperX { DeviceLedgerDO selectByIdWithDeleted(@Param("id") Long id); + String selectPrintTemplate(); } \ 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/printtemplate/PrintTemplateMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/printtemplate/PrintTemplateMapper.java new file mode 100644 index 000000000..f9fb47e95 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/printtemplate/PrintTemplateMapper.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.printtemplate; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.mes.dal.dataobject.printtemplate.PrintTemplateDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.mes.controller.admin.printtemplate.vo.*; + +/** + * 打印模板 Mapper + * + * @author 必硕智能 + */ +@Mapper +public interface PrintTemplateMapper extends BaseMapperX { + + default PrintTemplateDO selectByNo(String no) { + return selectOne(PrintTemplateDO::getTemplateCode, no); + } + + default PrintTemplateDO selectByTemplateType(Integer templateType) { + return selectOne(PrintTemplateDO::getTemplateType, templateType); + } + + default PageResult selectPage(PrintTemplatePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(PrintTemplateDO::getTemplateCode, reqVO.getTemplateCode()) + .likeIfPresent(PrintTemplateDO::getTemplateName, reqVO.getTemplateName()) + .eqIfPresent(PrintTemplateDO::getTemplateType, reqVO.getTemplateType()) + .eqIfPresent(PrintTemplateDO::getTemplateJson, reqVO.getTemplateJson()) + .eqIfPresent(PrintTemplateDO::getRemark, reqVO.getRemark()) + .eqIfPresent(PrintTemplateDO::getIsEnable, reqVO.getIsEnable()) + .betweenIfPresent(PrintTemplateDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(PrintTemplateDO::getId)); + } + +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentService.java index 1e9080ac3..bd7edf059 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentService.java @@ -65,4 +65,6 @@ public interface CriticalComponentService { CriticalComponentImportRespVO importCriticalComponentList(List importComponents, boolean isUpdateSupport); void regenerateCode(Long id, String code) throws UnsupportedEncodingException; + + String selectPrintTemplate(); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentServiceImpl.java index cde4bed5f..b0ee0138c 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/criticalcomponent/CriticalComponentServiceImpl.java @@ -358,4 +358,9 @@ public class CriticalComponentServiceImpl implements CriticalComponentService { ); } + + @Override + public String selectPrintTemplate() { + return criticalComponentMapper.selectPrintTemplate(); + } } 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 9859146dc..e8be8169c 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 @@ -92,4 +92,5 @@ public interface DeviceLedgerService { List getDeviceLedgerListByIds(Collection ids); + String selectPrintTemplate(); } 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 bcb8b8595..fddd7fd52 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 @@ -648,4 +648,9 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService { return Collections.emptyList(); } return deviceLedgerMapper.selectBatchIds(ids); } + + @Override + public String selectPrintTemplate() { + return deviceLedgerMapper.selectPrintTemplate(); + } } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/printtemplate/PrintTemplateService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/printtemplate/PrintTemplateService.java new file mode 100644 index 000000000..4678f49d3 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/printtemplate/PrintTemplateService.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.mes.service.printtemplate; + +import java.util.*; +import cn.iocoder.yudao.module.mes.controller.admin.printtemplate.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.printtemplate.PrintTemplateDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +import javax.validation.Valid; + +/** + * 打印模板 Service 接口 + * + * @author 必硕智能 + */ +public interface PrintTemplateService { + + /** + * 创建打印模板 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createPrintTemplate(@Valid PrintTemplateSaveReqVO createReqVO); + + /** + * 更新打印模板 + * + * @param updateReqVO 更新信息 + */ + void updatePrintTemplate(@Valid PrintTemplateSaveReqVO updateReqVO); + + /** + * 删除打印模板 + * + * @param id 编号 + */ + void deletePrintTemplate(Long id); + + /** + * 获得打印模板 + * + * @param id 编号 + * @return 打印模板 + */ + PrintTemplateDO getPrintTemplate(Long id); + + /** + * 获得打印模板分页 + * + * @param pageReqVO 分页查询 + * @return 打印模板分页 + */ + PageResult getPrintTemplatePage(PrintTemplatePageReqVO pageReqVO); + +} \ 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/printtemplate/PrintTemplateServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/printtemplate/PrintTemplateServiceImpl.java new file mode 100644 index 000000000..dec0455c9 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/printtemplate/PrintTemplateServiceImpl.java @@ -0,0 +1,99 @@ +package cn.iocoder.yudao.module.mes.service.printtemplate; + +import cn.iocoder.yudao.module.erp.controller.admin.autocode.util.AutoCodeUtil; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.mes.controller.admin.printtemplate.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.printtemplate.PrintTemplateDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.mes.dal.mysql.printtemplate.PrintTemplateMapper; +import org.apache.commons.lang3.StringUtils; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; + +/** + * 打印模板 Service 实现类 + * + * @author 必硕智能 + */ +@Service +@Validated +public class PrintTemplateServiceImpl implements PrintTemplateService { + + @Resource + private PrintTemplateMapper printTemplateMapper; + @Resource + private AutoCodeUtil autoCodeUtil; + + @Override + public Long createPrintTemplate(PrintTemplateSaveReqVO createReqVO) { + // 插入 + PrintTemplateDO printTemplate = BeanUtils.toBean(createReqVO, PrintTemplateDO.class); + if (printTemplateMapper.selectByTemplateType(printTemplate.getTemplateType()) != null) { + throw exception(PRINT_TEMPLATE_TYPE_EXISTS); + } + if (StringUtils.isEmpty(printTemplate.getTemplateCode())) { + printTemplate.setTemplateCode(autoCodeUtil.genSerialCode("PRINT_TEMPLATE_CODE", null)); + } else { + if (printTemplateMapper.selectByNo(printTemplate.getTemplateCode()) != null) { + throw exception(PRINT_TEMPLATE_CODE_EXISTS); + } + } + printTemplateMapper.insert(printTemplate); + // 返回 + return printTemplate.getId(); + } + + @Override + public void updatePrintTemplate(PrintTemplateSaveReqVO updateReqVO) { + // 校验存在 + validatePrintTemplateExists(updateReqVO.getId()); + // 更新 + PrintTemplateDO updateObj = BeanUtils.toBean(updateReqVO, PrintTemplateDO.class); + PrintTemplateDO typeExists = printTemplateMapper.selectByTemplateType(updateObj.getTemplateType()); + if (typeExists != null && !typeExists.getId().equals(updateObj.getId())) { + throw exception(PRINT_TEMPLATE_TYPE_EXISTS); + } + if (StringUtils.isNotEmpty(updateObj.getTemplateCode())) { + PrintTemplateDO codeExists = printTemplateMapper.selectByNo(updateObj.getTemplateCode()); + if (codeExists != null && !codeExists.getId().equals(updateObj.getId())) { + throw exception(PRINT_TEMPLATE_CODE_EXISTS); + } + } + printTemplateMapper.updateById(updateObj); + } + + @Override + public void deletePrintTemplate(Long id) { + // 校验存在 + validatePrintTemplateExists(id); + // 删除 + printTemplateMapper.deleteById(id); + } + + private void validatePrintTemplateExists(Long id) { + if (printTemplateMapper.selectById(id) == null) { + throw exception(PRINT_TEMPLATE_NOT_EXISTS); + } + } + + @Override + public PrintTemplateDO getPrintTemplate(Long id) { + return printTemplateMapper.selectById(id); + } + + @Override + public PageResult getPrintTemplatePage(PrintTemplatePageReqVO pageReqVO) { + return printTemplateMapper.selectPage(pageReqVO); + } + +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/criticalcomponent/CriticalComponentMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/criticalcomponent/CriticalComponentMapper.xml index ce6df3eaf..90231ffbc 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/criticalcomponent/CriticalComponentMapper.xml +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/criticalcomponent/CriticalComponentMapper.xml @@ -9,4 +9,11 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/deviceledger/DeviceledgerMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/deviceledger/DeviceledgerMapper.xml index 4e462d073..2e707ae3f 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/deviceledger/DeviceledgerMapper.xml +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/deviceledger/DeviceledgerMapper.xml @@ -27,5 +27,10 @@ WHERE id = #{id} LIMIT 1 - + \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/printtemplate/PrintTemplateMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/printtemplate/PrintTemplateMapper.xml new file mode 100644 index 000000000..45fb9e067 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/printtemplate/PrintTemplateMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataSimpleRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataSimpleRespVO.java index 2d7da0014..9098d5330 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataSimpleRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dict/vo/data/DictDataSimpleRespVO.java @@ -24,4 +24,8 @@ public class DictDataSimpleRespVO { @Schema(description = "字典标签(英文)", example = "men") private String labelEn; + + @Schema(description = "备注") + private String remark; + }