diff --git a/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java b/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java index 81767415..871fba13 100644 --- a/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java +++ b/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java @@ -51,6 +51,8 @@ public interface ErrorCodeConstants { ErrorCode EQUIP_MAINTENANCE_RECORD_NOT_EXISTS = new ErrorCode(1_001_014, "设备维保记录不存在"); ErrorCode SC_EQUIPMENT_NOT_EXISTS = new ErrorCode(1_001_015, "数采设备表不存在"); ErrorCode SYSTEM_PARAMETERS_NOT_EXISTS = new ErrorCode(1_001_016, "系统参数设置不存在"); + ErrorCode PROCESS_NOT_EXISTS = new ErrorCode(1_001_017, "工艺路线不存在"); + ErrorCode PROCESS_DETAIL_NOT_EXISTS = new ErrorCode(1_001_018, "工艺路线明细不存在"); /*********组织架构************/ ErrorCode WORKSHOP_NOT_EXISTS = new ErrorCode(1_002_001, "车间不存在"); diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/ProcessController.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/ProcessController.java new file mode 100644 index 00000000..9941e24a --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/ProcessController.java @@ -0,0 +1,95 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.process; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.biz.controller.admin.process.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.process.ProcessDO; +import com.chanko.yunxi.mes.module.biz.service.process.ProcessService; + +@Tag(name = "管理后台 - 工艺路线") +@RestController +@RequestMapping("/biz/process") +@Validated +public class ProcessController { + + @Resource + private ProcessService processService; + + @PostMapping("/create") + @Operation(summary = "创建工艺路线") + @PreAuthorize("@ss.hasPermission('biz:process:create')") + public CommonResult createProcess(@Valid @RequestBody ProcessSaveReqVO createReqVO) { + return success(processService.createProcess(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工艺路线") + @PreAuthorize("@ss.hasPermission('biz:process:update')") + public CommonResult updateProcess(@Valid @RequestBody ProcessSaveReqVO updateReqVO) { + processService.updateProcess(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工艺路线") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('biz:process:delete')") + public CommonResult deleteProcess(@RequestParam("id") Long id) { + processService.deleteProcess(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工艺路线") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('biz:process:query')") + public CommonResult getProcess(@RequestParam("id") Long id) { + ProcessDO process = processService.getProcess(id); + return success(BeanUtils.toBean(process, ProcessRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工艺路线分页") + @PreAuthorize("@ss.hasPermission('biz:process:query')") + public CommonResult> getProcessPage(@Valid ProcessPageReqVO pageReqVO) { + PageResult pageResult = processService.getProcessPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProcessRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工艺路线 Excel") + @PreAuthorize("@ss.hasPermission('biz:process:export')") + @OperateLog(type = EXPORT) + public void exportProcessExcel(@Valid ProcessPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = processService.getProcessPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "工艺路线.xls", "数据", ProcessRespVO.class, + BeanUtils.toBean(list, ProcessRespVO.class)); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessPageReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessPageReqVO.java new file mode 100644 index 00000000..3a8ef499 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessPageReqVO.java @@ -0,0 +1,34 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.process.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.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 ProcessPageReqVO extends PageParam { + + @Schema(description = "自增字段,唯一") + private Long id; + + @Schema(description = "工艺路线编号") + private String code; + + @Schema(description = "工艺路线名称,唯一") + private String name; + + @Schema(description = "状态,1表示正常,2表示禁用") + private Integer status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessRespVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessRespVO.java new file mode 100644 index 00000000..abb3655f --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessRespVO.java @@ -0,0 +1,39 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.process.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; +import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 工艺路线 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProcessRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "工艺路线编号") + @ExcelProperty("工艺路线编号") + private String code; + + @Schema(description = "工艺路线名称,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工艺路线名称,唯一") + private String name; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "状态,1表示正常,2表示禁用", converter = DictConvert.class) + @DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessSaveReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessSaveReqVO.java new file mode 100644 index 00000000..9edeb81e --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/process/vo/ProcessSaveReqVO.java @@ -0,0 +1,27 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.process.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; + +@Schema(description = "管理后台 - 工艺路线新增/修改 Request VO") +@Data +public class ProcessSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + + @Schema(description = "工艺路线编号") + private String code; + + @Schema(description = "工艺路线名称,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工艺路线名称,唯一不能为空") + private String name; + + @Schema(description = "状态,1表示正常,2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "状态,1表示正常,2表示禁用不能为空") + private Integer status; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/ProcessDetailController.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/ProcessDetailController.java new file mode 100644 index 00000000..0f479513 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/ProcessDetailController.java @@ -0,0 +1,95 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.processdetail; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.biz.controller.admin.processdetail.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.processdetail.ProcessDetailDO; +import com.chanko.yunxi.mes.module.biz.service.processdetail.ProcessDetailService; + +@Tag(name = "管理后台 - 工艺路线明细") +@RestController +@RequestMapping("/biz/process-detail") +@Validated +public class ProcessDetailController { + + @Resource + private ProcessDetailService processDetailService; + + @PostMapping("/create") + @Operation(summary = "创建工艺路线明细") + @PreAuthorize("@ss.hasPermission('biz:process-detail:create')") + public CommonResult createProcessDetail(@Valid @RequestBody ProcessDetailSaveReqVO createReqVO) { + return success(processDetailService.createProcessDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工艺路线明细") + @PreAuthorize("@ss.hasPermission('biz:process-detail:update')") + public CommonResult updateProcessDetail(@Valid @RequestBody ProcessDetailSaveReqVO updateReqVO) { + processDetailService.updateProcessDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工艺路线明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('biz:process-detail:delete')") + public CommonResult deleteProcessDetail(@RequestParam("id") Long id) { + processDetailService.deleteProcessDetail(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工艺路线明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('biz:process-detail:query')") + public CommonResult getProcessDetail(@RequestParam("id") Long id) { + ProcessDetailDO processDetail = processDetailService.getProcessDetail(id); + return success(BeanUtils.toBean(processDetail, ProcessDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工艺路线明细分页") + @PreAuthorize("@ss.hasPermission('biz:process-detail:query')") + public CommonResult> getProcessDetailPage(@Valid ProcessDetailPageReqVO pageReqVO) { + PageResult pageResult = processDetailService.getProcessDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProcessDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工艺路线明细 Excel") + @PreAuthorize("@ss.hasPermission('biz:process-detail:export')") + @OperateLog(type = EXPORT) + public void exportProcessDetailExcel(@Valid ProcessDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = processDetailService.getProcessDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "工艺路线明细.xls", "数据", ProcessDetailRespVO.class, + BeanUtils.toBean(list, ProcessDetailRespVO.class)); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailPageReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailPageReqVO.java new file mode 100644 index 00000000..c9ed1607 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailPageReqVO.java @@ -0,0 +1,40 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.processdetail.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.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 ProcessDetailPageReqVO extends PageParam { + + @Schema(description = "自增字段,唯一") + private Long id; + + @Schema(description = "工序id") + private Long procedureId; + + @Schema(description = "工序顺序号") + private Integer procedureSort; + + @Schema(description = "生产设备id") + private Long procedureEquipId; + + @Schema(description = "明细类型:1为工序,2为产品") + private Integer type; + + @Schema(description = "产品id(物料)") + private Long materialId; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailRespVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailRespVO.java new file mode 100644 index 00000000..fdeaee9d --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailRespVO.java @@ -0,0 +1,44 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.processdetail.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +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 ProcessDetailRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "工序id") + @ExcelProperty("工序id") + private Long procedureId; + + @Schema(description = "工序顺序号") + @ExcelProperty("工序顺序号") + private Integer procedureSort; + + @Schema(description = "生产设备id") + @ExcelProperty("生产设备id") + private Long procedureEquipId; + + @Schema(description = "明细类型:1为工序,2为产品") + @ExcelProperty("明细类型:1为工序,2为产品") + private Integer type; + + @Schema(description = "产品id(物料)") + @ExcelProperty("产品id(物料)") + private Long materialId; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailSaveReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailSaveReqVO.java new file mode 100644 index 00000000..bbd4b241 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdetail/vo/ProcessDetailSaveReqVO.java @@ -0,0 +1,31 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.processdetail.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; + +@Schema(description = "管理后台 - 工艺路线明细新增/修改 Request VO") +@Data +public class ProcessDetailSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + + @Schema(description = "工序id") + private Long procedureId; + + @Schema(description = "工序顺序号") + private Integer procedureSort; + + @Schema(description = "生产设备id") + private Long procedureEquipId; + + @Schema(description = "明细类型:1为工序,2为产品") + private Integer type; + + @Schema(description = "产品id(物料)") + private Long materialId; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/process/ProcessDO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/process/ProcessDO.java new file mode 100644 index 00000000..dbf96874 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/process/ProcessDO.java @@ -0,0 +1,45 @@ +package com.chanko.yunxi.mes.module.biz.dal.dataobject.process; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 工艺路线 DO + * + * @author 管理员 + */ +@TableName("base_process") +@KeySequence("base_process_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProcessDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 工艺路线编号 + */ + private String code; + /** + * 工艺路线名称,唯一 + */ + private String name; + /** + * 状态,1表示正常,2表示禁用 + * + * 枚举 {@link TODO infra_boolean_string 对应的类} + */ + private Integer status; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/processdetail/ProcessDetailDO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/processdetail/ProcessDetailDO.java new file mode 100644 index 00000000..ca965766 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/processdetail/ProcessDetailDO.java @@ -0,0 +1,51 @@ +package com.chanko.yunxi.mes.module.biz.dal.dataobject.processdetail; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 工艺路线明细 DO + * + * @author 管理员 + */ +@TableName("base_process_detail") +@KeySequence("base_process_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProcessDetailDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 工序id + */ + private Long procedureId; + /** + * 工序顺序号 + */ + private Integer procedureSort; + /** + * 生产设备id + */ + private Long procedureEquipId; + /** + * 明细类型:1为工序,2为产品 + */ + private Integer type; + /** + * 产品id(物料) + */ + private Long materialId; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/process/ProcessMapper.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/process/ProcessMapper.java new file mode 100644 index 00000000..7b8cf04e --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/process/ProcessMapper.java @@ -0,0 +1,30 @@ +package com.chanko.yunxi.mes.module.biz.dal.mysql.process; + +import java.util.*; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.process.ProcessDO; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.biz.controller.admin.process.vo.*; + +/** + * 工艺路线 Mapper + * + * @author 管理员 + */ +@Mapper +public interface ProcessMapper extends BaseMapperX { + + default PageResult selectPage(ProcessPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProcessDO::getId, reqVO.getId()) + .eqIfPresent(ProcessDO::getCode, reqVO.getCode()) + .likeIfPresent(ProcessDO::getName, reqVO.getName()) + .eqIfPresent(ProcessDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(ProcessDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProcessDO::getId)); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/processdetail/ProcessDetailMapper.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/processdetail/ProcessDetailMapper.java new file mode 100644 index 00000000..6e85d4cb --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/processdetail/ProcessDetailMapper.java @@ -0,0 +1,32 @@ +package com.chanko.yunxi.mes.module.biz.dal.mysql.processdetail; + +import java.util.*; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.processdetail.ProcessDetailDO; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.biz.controller.admin.processdetail.vo.*; + +/** + * 工艺路线明细 Mapper + * + * @author 管理员 + */ +@Mapper +public interface ProcessDetailMapper extends BaseMapperX { + + default PageResult selectPage(ProcessDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProcessDetailDO::getId, reqVO.getId()) + .eqIfPresent(ProcessDetailDO::getProcedureId, reqVO.getProcedureId()) + .eqIfPresent(ProcessDetailDO::getProcedureSort, reqVO.getProcedureSort()) + .eqIfPresent(ProcessDetailDO::getProcedureEquipId, reqVO.getProcedureEquipId()) + .eqIfPresent(ProcessDetailDO::getType, reqVO.getType()) + .eqIfPresent(ProcessDetailDO::getMaterialId, reqVO.getMaterialId()) + .betweenIfPresent(ProcessDetailDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ProcessDetailDO::getId)); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessService.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessService.java new file mode 100644 index 00000000..75302642 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessService.java @@ -0,0 +1,55 @@ +package com.chanko.yunxi.mes.module.biz.service.process; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.biz.controller.admin.process.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.process.ProcessDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 工艺路线 Service 接口 + * + * @author 管理员 + */ +public interface ProcessService { + + /** + * 创建工艺路线 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProcess(@Valid ProcessSaveReqVO createReqVO); + + /** + * 更新工艺路线 + * + * @param updateReqVO 更新信息 + */ + void updateProcess(@Valid ProcessSaveReqVO updateReqVO); + + /** + * 删除工艺路线 + * + * @param id 编号 + */ + void deleteProcess(Long id); + + /** + * 获得工艺路线 + * + * @param id 编号 + * @return 工艺路线 + */ + ProcessDO getProcess(Long id); + + /** + * 获得工艺路线分页 + * + * @param pageReqVO 分页查询 + * @return 工艺路线分页 + */ + PageResult getProcessPage(ProcessPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessServiceImpl.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessServiceImpl.java new file mode 100644 index 00000000..3ae33c7c --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/process/ProcessServiceImpl.java @@ -0,0 +1,74 @@ +package com.chanko.yunxi.mes.module.biz.service.process; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.chanko.yunxi.mes.module.biz.controller.admin.process.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.process.ProcessDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.biz.dal.mysql.process.ProcessMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.biz.enums.ErrorCodeConstants.*; + +/** + * 工艺路线 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class ProcessServiceImpl implements ProcessService { + + @Resource + private ProcessMapper processMapper; + + @Override + public Long createProcess(ProcessSaveReqVO createReqVO) { + // 插入 + ProcessDO process = BeanUtils.toBean(createReqVO, ProcessDO.class); + processMapper.insert(process); + // 返回 + return process.getId(); + } + + @Override + public void updateProcess(ProcessSaveReqVO updateReqVO) { + // 校验存在 + validateProcessExists(updateReqVO.getId()); + // 更新 + ProcessDO updateObj = BeanUtils.toBean(updateReqVO, ProcessDO.class); + processMapper.updateById(updateObj); + } + + @Override + public void deleteProcess(Long id) { + // 校验存在 + validateProcessExists(id); + // 删除 + processMapper.deleteById(id); + } + + private void validateProcessExists(Long id) { + if (processMapper.selectById(id) == null) { + throw exception(PROCESS_NOT_EXISTS); + } + } + + @Override + public ProcessDO getProcess(Long id) { + return processMapper.selectById(id); + } + + @Override + public PageResult getProcessPage(ProcessPageReqVO pageReqVO) { + return processMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailService.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailService.java new file mode 100644 index 00000000..1ee86729 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailService.java @@ -0,0 +1,55 @@ +package com.chanko.yunxi.mes.module.biz.service.processdetail; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.biz.controller.admin.processdetail.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.processdetail.ProcessDetailDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 工艺路线明细 Service 接口 + * + * @author 管理员 + */ +public interface ProcessDetailService { + + /** + * 创建工艺路线明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProcessDetail(@Valid ProcessDetailSaveReqVO createReqVO); + + /** + * 更新工艺路线明细 + * + * @param updateReqVO 更新信息 + */ + void updateProcessDetail(@Valid ProcessDetailSaveReqVO updateReqVO); + + /** + * 删除工艺路线明细 + * + * @param id 编号 + */ + void deleteProcessDetail(Long id); + + /** + * 获得工艺路线明细 + * + * @param id 编号 + * @return 工艺路线明细 + */ + ProcessDetailDO getProcessDetail(Long id); + + /** + * 获得工艺路线明细分页 + * + * @param pageReqVO 分页查询 + * @return 工艺路线明细分页 + */ + PageResult getProcessDetailPage(ProcessDetailPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailServiceImpl.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailServiceImpl.java new file mode 100644 index 00000000..053c0b8e --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/processdetail/ProcessDetailServiceImpl.java @@ -0,0 +1,74 @@ +package com.chanko.yunxi.mes.module.biz.service.processdetail; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.chanko.yunxi.mes.module.biz.controller.admin.processdetail.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.processdetail.ProcessDetailDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.biz.dal.mysql.processdetail.ProcessDetailMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.biz.enums.ErrorCodeConstants.*; + +/** + * 工艺路线明细 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class ProcessDetailServiceImpl implements ProcessDetailService { + + @Resource + private ProcessDetailMapper processDetailMapper; + + @Override + public Long createProcessDetail(ProcessDetailSaveReqVO createReqVO) { + // 插入 + ProcessDetailDO processDetail = BeanUtils.toBean(createReqVO, ProcessDetailDO.class); + processDetailMapper.insert(processDetail); + // 返回 + return processDetail.getId(); + } + + @Override + public void updateProcessDetail(ProcessDetailSaveReqVO updateReqVO) { + // 校验存在 + validateProcessDetailExists(updateReqVO.getId()); + // 更新 + ProcessDetailDO updateObj = BeanUtils.toBean(updateReqVO, ProcessDetailDO.class); + processDetailMapper.updateById(updateObj); + } + + @Override + public void deleteProcessDetail(Long id) { + // 校验存在 + validateProcessDetailExists(id); + // 删除 + processDetailMapper.deleteById(id); + } + + private void validateProcessDetailExists(Long id) { + if (processDetailMapper.selectById(id) == null) { + throw exception(PROCESS_DETAIL_NOT_EXISTS); + } + } + + @Override + public ProcessDetailDO getProcessDetail(Long id) { + return processDetailMapper.selectById(id); + } + + @Override + public PageResult getProcessDetailPage(ProcessDetailPageReqVO pageReqVO) { + return processDetailMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/process/ProcessMapper.xml b/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/process/ProcessMapper.xml new file mode 100644 index 00000000..f1121840 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/process/ProcessMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/processdetail/ProcessDetailMapper.xml b/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/processdetail/ProcessDetailMapper.xml new file mode 100644 index 00000000..bedf7fea --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/processdetail/ProcessDetailMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/mes-server/src/api/biz/process/index.ts b/mes-server/src/api/biz/process/index.ts new file mode 100644 index 00000000..52ae50e3 --- /dev/null +++ b/mes-server/src/api/biz/process/index.ts @@ -0,0 +1,38 @@ +import request from '@/config/axios' + +export interface ProcessVO { + id: number + code: string + name: string + status: number +} + +// 查询工艺路线分页 +export const getProcessPage = async (params) => { + return await request.get({ url: `/biz/process/page`, params }) +} + +// 查询工艺路线详情 +export const getProcess = async (id: number) => { + return await request.get({ url: `/biz/process/get?id=` + id }) +} + +// 新增工艺路线 +export const createProcess = async (data: ProcessVO) => { + return await request.post({ url: `/biz/process/create`, data }) +} + +// 修改工艺路线 +export const updateProcess = async (data: ProcessVO) => { + return await request.put({ url: `/biz/process/update`, data }) +} + +// 删除工艺路线 +export const deleteProcess = async (id: number) => { + return await request.delete({ url: `/biz/process/delete?id=` + id }) +} + +// 导出工艺路线 Excel +export const exportProcess = async (params) => { + return await request.download({ url: `/biz/process/export-excel`, params }) +} \ No newline at end of file diff --git a/sql/v1.0.0/2.business/1.structure.sql b/sql/v1.0.0/2.business/1.structure.sql index dbeac7f8..7cb36e89 100644 --- a/sql/v1.0.0/2.business/1.structure.sql +++ b/sql/v1.0.0/2.business/1.structure.sql @@ -192,3 +192,35 @@ CREATE TABLE `base_system_parameters` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB COMMENT='系统参数设置表'; +drop table if exists `base_process`; +CREATE TABLE `base_process` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增字段,唯一', + `code` varchar(64) COLLATE DEFAULT NULL COMMENT '工艺路线编号', + `name` varchar(64) COLLATE NOT NULL COMMENT '工艺路线名称,唯一', + `status` tinyint(1) NOT NULL COMMENT '状态,1表示正常,2表示禁用', + `creator` varchar(64) COLLATE DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) COLLATE DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '租户编号', + PRIMARY KEY (`id`) +) ENGINE=InnoDB COMMENT='工艺路线表'; + +drop table if exists `base_process_detail`; +CREATE TABLE `base_process_detail` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增字段,唯一', + `procedure_id` bigint(20) DEFAULT NULL COMMENT '工序id', + `procedure_sort` int(11) DEFAULT NULL COMMENT '工序顺序号', + `procedure_equip_id` bigint(20) DEFAULT NULL COMMENT '生产设备id', + `type` int(11) DEFAULT NULL COMMENT '明细类型:1为工序,2为产品', + `material_id` bigint(20) DEFAULT NULL COMMENT '产品id(物料)', + `creator` varchar(64) COLLATE DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) COLLATE DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '租户编号', + PRIMARY KEY (`id`) +) ENGINE=InnoDB COMMENT='工艺路线明细表'; +